π§© Runtime Snapshots #18 - ꡬ쑰νλ λ°νμ μΈμ§ (Runtime Perception): μμ΄μ νΈμκ² λΆμ‘±ν κ³μΈ΅
μμ½
λΈλΌμ°μ μμ΄μ νΈκ° κ²ͺλ μ€ν¨μ κ·Όλ³Έ μμΈμ΄ λͺ¨λΈμ μ±λ₯ λΆμ‘±μ΄ μλ, μλͺ»λ λ°μ΄ν° νν(representation)μ μμμ μ§μ ν©λλ€. μ€ν¬λ¦°μ·, μ κ·Όμ± νΈλ¦¬, DOMλ§μΌλ‘λ μμ΄μ νΈκ° μ€μ μΉ μ ν리μΌμ΄μ μ λμ μΈ μνλ₯Ό μ¨μ ν μΈμ§νκΈ° μ΄λ ΅λ€λ μ μ κ°μ‘°ν©λλ€.
ν΅μ¬ ν¬μΈνΈ
- μμ΄μ νΈ μ€ν¨μ μ£Όλ μμΈμ λͺ¨λΈ κ²°ν¨λ³΄λ€ λΆμ μ ν νλ©΄ λ°μ΄ν° μ λ¬μ μμ
- μ€ν¬λ¦°μ·, μ κ·Όμ± νΈλ¦¬, DOMμ μ ν리μΌμ΄μ μ μμ ν μνλ₯Ό λλ³νμ§ λͺ»ν¨
- LLMμ μΈκ°μ²λΌ λ λλ§λ νμ΄μ§μ λ§₯λ½μ μ°μμ±μ μλμΌλ‘ νμ νμ§ λͺ»ν¨
- μ±κ³΅μ μΈ μμ΄μ νΈλ₯Ό μν΄μλ νλ μ§μ μ μ νν 'λ°νμ μΈμ§' ννμ΄ νμμ μ
μ§λ μΈ λ²μ Runtime Snapshots ν¬μ€νΈλ νλμ μ€νμ μμμμ΅λλ€. #15μμλ λΉμ μ μμ΄μ νΈκ° λμ΄ λ©μ΄ μμΌλ©° λκ³Ό μμ΄ νμνλ€κ³ λ§νμ΅λλ€. #16μμλ μμ΄μ νΈκ° λ³Ό μ μλ μΈ κ°μ§ λ°©λ²μΈ μκ° (vision), μ κ·Όμ± νΈλ¦¬ (accessibility tree), κ·Έλ¦¬κ³ λ°νμ μΈμ§ (runtime perception)λ₯Ό λͺ μνμ΅λλ€. #17μμλ λ μ΄μμ μμ΄μ νΈκ° λμΌν λΌμ΄λΈ λΈλΌμ°μ 곡κ°μ 곡μ ν λ μ΄λ€ μΌμ΄ λ°μνλμ§ λ¬Όμμ΅λλ€. μ΄λ² ν¬μ€νΈλ μ΄ λͺ¨λ κ²μ λ°λ°λ₯μ μλ, μ΄μ ν¬μ€νΈλ€μ΄ λ΅μ΄ μ ν΄μ Έ μλ€κ³ κ°μ νλ μ§λ¬ΈμΌλ‘ λ€μ΄κ°λλ€: μμ΄μ νΈκ° νλνκΈ° μ§μ 0.5μ΄ λμ μ€μ λ‘ λ¬΄μμ μΈμ§νλκ°?
μ무λ μΈκΈνμ§ μλ λΉλμΉμ±
λλΆλΆμ λΈλΌμ°μ μμ΄μ νΈ μ€ν¨λ λͺ¨λΈμ μ€ν¨λ‘ λΆλ₯λ©λλ€. λͺ¨λΈμ΄ μλͺ»λ λ²νΌμ ν΄λ¦νκ±°λ, λ©λ΄λ₯Ό λμ³€κ±°λ, μλͺ»λ νλλ₯Ό μ±μ κ±°λ, νμ΄μ§κ° λ‘λλμ§ μμλλ° λ‘λλμλ€κ³ μκ°νκ±°λ, UIκ° λ³κ²½λμμ λ 볡ꡬνμ§ λͺ»ν κ²½μ°μ λλ€. λλ‘λ κ·Έ μ§λ¨μ΄ λ§μ μλ μμ΅λλ€. νμ§λ§ μ’ μ’ λͺ¨λΈμ μλͺ»λ νλ©΄ (surface)μ μ λ¬λ°κ³ κ·Έλ‘λΆν° μΆλ‘ νλλ‘ μꡬλ°μ κ²μ λλ€.
μ¬κΈ°μ μλ΅λλ λΆλΆμ΄ μμ΅λλ€: μμ΄μ νΈλ μ¬λμ΄ μ€ν¨νλ λ°©μκ³Όλ λ€λ₯΄κ² μ€ν¨ν©λλ€. λΉμ μ νμ μ΄κ³ νμ΄μ§κ° λͺ μμ μΌλ‘ λ§νμ§ μλ λͺ¨λ κ²λ€μ μ‘°μ©ν 보μν©λλ€. ν΄λ¦νμ§ μμ νμ μ²λ¦¬λ λ²νΌ, κΈ°λ€λ €μΌ ν¨μ μλ €μ£Όλ μ¬μ ν λμκ°κ³ μλ μ€νΌλ (spinner), μλμ μλ μμκ° μμ§ νμ±νλμ§ μμμμ μ μ μκ² ν΄μ£Όλ νμ΄μ§ μμ λͺ¨λ¬ (modal) κ°μ κ²λ€ λ§μ΄μ£ . λΉμ μ λ λλ§λ νμ΄μ§λ₯Ό λ°λΌλ³΄λ μΈκ°μΌλ‘μ μ΄λ¬ν μ°μμ±μ 곡μ§λ‘ μ»μ΅λλ€. LLMμ κ·Έ μ€ μ΄λ κ²λ 곡μ§λ‘ μ»μ§ λͺ»ν©λλ€. LLMμ μ°λ¦¬κ° μ λ¬ν΄ μ£Όλ νν (representation)λ§μ μ νν μ λ¬λ°μΌλ©°, κ·Έ μΈμλ μ무κ²λ μ»μ§ λͺ»ν©λλ€. λ°λΌμ νν (representation)μ΄ κ²μμ μ λΆμ λλ€.
μΈ κ°μ§ νλ©΄, κ·Έ μ€ μ΄λ κ²λ μ ν리μΌμ΄μ μ΄ μλλ€
λΈλΌμ°μ λ μ€ν¬λ¦°μ·λ μλκ³ , μ κ·Όμ± νΈλ¦¬ (accessibility tree)λ μλλ©°, κ°κ³΅λμ§ μμ DOM (raw DOM)λ μλλλ€. κ·Έκ²λ€μ μ ν리μΌμ΄μ μ 'λ·° (views)'μΌ λΏμ λλ€. μ μ©νκΈ΄ νμ§λ§, μ¬μ ν λ·°μ λΆκ³Όν©λλ€. λͺ¨λΈμκ² ν½μ μ μ£Όλ©΄ μΈνμΌλ‘λΆν° μνλ₯Ό μΆλ‘ ν©λλ€. μ λ²νΌμ΄ λΉνμ±νλ κ²μΈμ§, μλλ©΄ κ·Έλ₯ νμμΈ κ²μΈμ§ λ§μ΄μ£ . λͺ¨λΈμκ² μ κ·Όμ± νΈλ¦¬λ₯Ό μ£Όλ©΄ 보쑰 κΈ°μ (assistive technology)μ μν΄ κ΅¬μΆλ ꡬ쑰λ₯Ό μ½κ² λλλ°, νλμ μΉ μ±λ€μ μ΄λ₯Ό λΆμμ νκ±°λ μΌκ΄μ± μκ² μ±μ°λ κ²½μ°κ° λ§μ΅λλ€. λͺ¨λΈμκ² κ°κ³΅λμ§ μμ DOMμ μ£Όλ©΄ λͺ¨λΈμ μ 보μ νμμ λΉ μ Έλ²λ¦½λλ€. νλ μμν¬μ μμ¬ (framework residue), μ€λλ λ Έλ (stale nodes), μ¨κ²¨μ§ λΈλμΉ (hidden branches), μμ±λ μλ³μ (generated identifiers), μ€λ³΅λ ν μ€νΈ, λ§ν¬μ μλ μ‘΄μ¬νμ§λ§ μ¬μ©μμ νμ¬ κ²½νμλ μ‘΄μ¬νμ§ μλ μμλ€κΉμ§ λ§μ λλ€.
λ¬Έμ λ μ΄λ¬ν νλ©΄λ€μ΄ μΈλͺ¨μλ€λ κ²μ΄ μλλλ€. κ·Έκ²λ€μ μ μ©ν©λλ€. λ¬Έμ λ κ·Έμ€ μ΄λ κ²λ μ ν리μΌμ΄μ κ·Έ μ체λ μλλΌλ μ μ λλ€. λΆμ‘±ν κ²μ μμ΄μ νΈκ° νλν΄μΌ νλ λ°λ‘ κ·Έ μκ°, λΌμ΄λΈ νμ΄μ§λ‘λΆν° ꡬμΆλ νν (representation)μ λλ€.
λλ½λ κ³μΈ΅μλ μ΄λ¦μ΄ μμ΅λλ€
κ·Έ κ³μΈ΅μ λ°λ‘ ꡬ쑰νλ λ°νμ μΈμ§ (structured runtime perception)μ λλ€. (#16μμλ μ΄λ₯Ό λ°νμ ꡬ쑰μ μΈμ§ (runtime structural perception)λΌκ³ λΆλ μΌλ, μ΄ν μ΄ λͺ μΉμΌλ‘ μ μ°©λμμ΅λλ€.) ꡬ쑰νλ λ°νμ μ€λ μ· (structured runtime snapshot)μ μ‘μ 루ν (action loop)κ° μ€μ λ‘ λμ§λ μ§λ¬Έλ€μ λ΅ν©λλ€. 'μ§κΈ λΉμ₯ 무μμ λ³Ό μ μλκ°?', 'μ§κΈ λΉμ₯ 무μμ λν΄ νλν μ μλκ°?', '무μμ΄ λΉνμ±νλμκ±°λ, μ¨κ²¨μ‘κ±°λ, κ°λ €μ‘κ±°λ, λ‘λ© μ€μ΄κ±°λ, μ€λλμλκ°?', 'λ€μ μ‘μ μ΄νμλ μ μ§λ μμμ μλ³μ (element identities)λ 무μμΈκ°?', 'μ΄λ€ ν μ€νΈκ° μμ (task)μ΄κ³ μ΄λ€ κ²μ΄ λ΄λΉκ²μ΄μ (nav), ν¬λ‘¬(chrome), νλ μμν¬ μμ¬μΈκ°?', 'λ§μ§λ§ λ¨κ³ μ΄ν 무μμ΄ λ³νλκ°?'
ꡬ체μ μΌλ‘, μ΄λ HTMLμ΄ λ§νλ κ²κ³Ό νμ΄μ§μ μ€μ μν μ¬μ΄μ κ°κ·Ήμ λ©μμ€λλ€:
form#login (action=/auth)
input[email] "user@example.com"
input[password] required
...
λΉνμ±νλ μ μΆ(submit) λ²νΌκ³Ό μμ§ λ³΄μ΄μ§ μλ μλ¬λ λ€μ λμμ΄ μ€μ λ‘ ν¨κ³Όλ₯Ό κ±°λ μ μμμ§λ₯Ό κ²°μ νλ λ°λ‘ κ·Έλ¬ν μ’ λ₯μ μνμ λλ€. μ΄λ¬ν μνλ€μ ν½μ λ¨μλ‘λ λͺ¨νΈνκ³ , μμ μ κ·Όμ±(accessibility) λ·°μμλ λΆμμ νκ±°λ μ λ’°ν μ μλ κ²½μ°κ° λ§μΌλ©°, κ°κ³΅λμ§ μμ DOM(Document Object Model)μμλ μ‘΄μ¬νμ§λ§ λ Έμ΄μ¦κ° μ¬ν©λλ€. E2LLMμμ μ¬μ©νλ SiFR(Structured Interface Representation, ꡬ쑰νλ μΈν°νμ΄μ€ νν)μ λͺ¨λ κ΄λ ¨ λ Έλμ μ κ·Όν μ μλλ‘ ν΄λΉ μνλ₯Ό μμΆνμ¬ μ λ¬νλ―λ‘, λͺ¨λΈμ΄ μλνλ μμλ₯Ό μ νν μ§μΉν μ μμ΅λλ€. μ΄κ²μ΄ λ°λ‘ "λͺ¨λΈμ΄ νμ΄μ§λ₯Ό 보μλ€"μ "λͺ¨λΈμ΄ μ¬μ© κ°λ₯ν μν νν(state representation)μ μ λ¬λ°μλ€" μ¬μ΄μ μ€μ§μ μΈ μ°¨μ΄μ λλ€.
λΈλΌμ°μ μΈμ μ΄ μ€μν μ΄μ
ꡬ쑰νλ λ°νμ μΈμ§(Structured runtime perception)λ μ¬μ©μμ μ€μ λΈλΌμ°μ μΈμ κ³Ό λλν μ€νλ©λλ€. μ¦, μ΄λ―Έ μΈμ¦λμκ³ μ¬μ©μκ° μ΄λ―Έ 보μ ν κ²κ³Ό λμΌν κΆν λ° μ μ½ μ‘°κ±΄μ κ°μ§ μ€μ μΈμ μ λλ€. μ΄κ²μ΄ μ€μν μ΄μ λ λ§μ μ€μν μ ν리μΌμ΄μ λ€μ΄ μ¬μ©μκ° μννκ³ μ νλ μμ μ λν΄ κΉλν APIλ₯Ό μ 곡νμ§ μκΈ° λλ¬Έμ λλ€. μλ₯Ό λ€μ΄ μν ν¬νΈ, μ λΆ ν¬νΈ, λ΄λΆ λꡬ, λ κ±°μ κ΄λ¦¬ ν¨λ(admin panels), λ‘κ·ΈμΈ λ€μ μν¬νλ‘μ° μν(workflow state)κ° μ¨κ²¨μ§ SaaS λμ보λ λ±μ΄ μ΄μ ν΄λΉν©λλ€. μ΄λ¬ν νκ²½μμλ λΆλ¦¬λ λ΄ κ³μ μ΄λ λ‘κ·Έμμλ μνμ μλ‘μ΄ λΈλΌμ°μ λ λμΌν μ ν리μΌμ΄μ μνκ° μλλλ€. μμ΄μ νΈκ° μ μ©ν λ€μ λ¨κ³ μ μμ νκΈ° μν΄μλ, λͺ μμ μΌλ‘ κΆνμ΄ λΆμ¬λ μΈμ λ΄μμ μ¬μ©μκ° μ€μ λ‘ λ³΄κ³ μλ μνλ₯Ό μΈμ§ν΄μΌ ν©λλ€. μ΄κ²μ νΈμ κΈ°λ₯μ λ¬Έμ κ° μλλΌ, "μμ μ μλν μ μλκ°"μ "κ΄λ ¨ νμ΄μ§λ₯Ό μ ν λ³Ό μ μλκ°"μ μ°¨μ΄μ λλ€.
λ Όλ¬Έμμ μ¦κ±°λ‘
μ¬λ¬ κ²μλ¬Όμμ μ΄ λ΄μ©μ μν€ν μ²μ κ΄ν κ²μ΄μμΌλ―λ‘, λͺ ννκ² νμ¬ μμΉλ₯Ό μ€λͺ ν©λλ€. κΈ°λ° κΈ°μ (substrate)μ μ€μκ°μΌλ‘ μλνλ©°, E2LLMμ λΈλΌμ°μ νμ₯ νλ‘κ·Έλ¨κ³Ό MCP λꡬλ₯Ό ν΅ν΄ ꡬ쑰νλ λΈλΌμ°μ μνλ₯Ό λ ΈμΆν©λλ€. κ΄λ ¨ λ¬Έμλ e2llm.com/docs/mcp-toolsμμ νμΈν μ μμ΅λλ€. κ³΅κ° μΉ΄ν κ³ λ¦¬μ μ¦κ±° νλ©΄(evidence surface)μ insitu.im/e2llm λ° insitu.im/e2llm/evidenceμ μμΌλ©°, Runtime Snapshots μΈλ±μ€λ insitu.im/e2llm/runtime-snapshotsμμ νμΈν μ μμ΅λλ€. λ€μ μ€λ μ·μ μ΄ μ리μ¦κ° ꡬμΆν΄ μ¨ λΆλΆμ λλ€. APIκ° μλ μ¬μ΄νΈμμ μ€μ μμ μ μννλ ꡬ쑰νλ λ°νμ μΈμ§(structured runtime perception)μ λν μ 체 μν¬μ€λ£¨λ₯Ό μμλΆν° λκΉμ§ λ€λ£° κ²μ΄λ©°, μ¬κΈ°μ μ΄λ €μμ κ²ͺλ μ§μ λ ν¬ν¨ν©λλ€.
λͺ¨λΈμ΄ μλ κ²½κ³ (The boundary, not the model)
λ€μ λΈλΌμ°μ μλν λ¬Όκ²°μ λ¨μν λ λμ λͺ¨λΈλ§μΌλ‘ μ μλμ§ μμ κ²μ λλ€. μμ΄μ νΈκ° νλνκΈ° μ μ 무μμ μ μ μλλ‘ νμ©νλμ§, μ¦ λ λμ μΈμ§ κ²½κ³(perception boundaries)μ μν΄ μ μλ κ²μ λλ€. μ€ν¬λ¦°μ·μ μ μ©νκ³ , μ κ·Όμ± νΈλ¦¬(accessibility trees)λ μ μ©νλ©°, DOMλ μ μ©ν©λλ€. νμ§λ§ μ€μ λΈλΌμ°μ μΈμ λ΄μμ μλνλ μμ΄μ νΈλ λ ꡬ체μ μΈ κ²μ΄ νμν©λλ€. μ¦, νμ΄μ§κ° νμ¬ μ΄λ€ μνμΈμ§, 무μμ μ§κΈ νλν μ μλμ§, κ·Έλ¦¬κ³ μ΄μ λ¨κ³ μ΄νλ‘ λ¬΄μμ΄ λ³κ²½λμλμ§μ λν ꡬ쑰νλ ννμ λλ€. μ΄κ²μ΄ μ κ° κ΄μ¬μ κ°λ λ²μ£Όμ λλ€. 'νμ΄μ§λ₯Ό 보λ AI'κ° μλλλ€. ꡬ쑰νλ λ°νμ μΈμ§: λΈλΌμ°μ μμ΄μ νΈλ€μ΄ λΆμ‘±ν λ μ΄μ΄μ λλ€.
μ΄κ²μ Runtime Snapshots μ리μ¦μ 18λ²μ§Έ λΆλΆμΌλ‘, ꡬ쑰νλ λΈλΌμ°μ λ°μ΄ν°κ° μννΈμ¨μ΄λ₯Ό ꡬμΆνκ³ ν μ€νΈνλ©° λ°°ν¬νλ λ°©μμ μ΄λ»κ² λ³νμν€λμ§ νꡬν©λλ€. #16μμλ μΈ κ°μ§ μν€ν μ²λ₯Ό λͺ λͺ νκ³ ; #17μμλ μ΄λ€μ΄ μΈμ μ 곡μ νλλ‘ λ§λ€μμ΅λλ€. μ΄λ² κΈμ κ·Έλ€ μ€ μ΄λ€ κ²μ΄ νλνκΈ° μ μ 무μμ μΈμ§νλμ§μ κ΄ν κ²μ λλ€.
λΈλΌμ°μ μμ΄μ νΈλ₯Ό ꡬμΆνκ±°λ μ¬μ©ν΄ λ³Έ μ μ΄ μλ€λ©΄, μ΄λμ κ°μ₯ λ¨Όμ μ€ν¨νμ΅λκΉ: μΈμ§(perception), κ³ν(planning), μλλ©΄ νλ(action)μ λκΉ?
AI μλ μμ± μ½ν μΈ
λ³Έ μ½ν μΈ λ Dev.to AI tagμ μλ¬Έμ AIκ° μλμΌλ‘ μμ½Β·λ²μΒ·λΆμν κ²μ λλ€. μ μ μκΆμ μμ μμμκ² μμΌλ©°, μ νν λ΄μ©μ λ°λμ μλ¬Έμ νμΈν΄ μ£ΌμΈμ.
μλ¬Έ λ°λ‘κ°κΈ°