← Essays

(4/4)도구가 자기를 설명하는 방식이 작업을 구성한다

7분

Note

이 글은 제가 elendirna라는 MCP 도구를 만들면서 도달한 일반화 가능한 프레임워크를, Claude (Anthropic), Codex(OpenAI), Gemini(Google) 와의 대화를 통해 종합 및 추출 결과입니다. 사고의 주체는 저이고, 표현의 작업은 Claude로 진행했습니다.
저는 직관과 working implementation을 가졌고, Claude 및 타 Agent들은 vocabulary와 narrative structure를 가져왔습니다. 이 분업의 명시화 자체가 이 글이 다루는 주제 "AI 도구를 사용자의 thinking medium으로 사용하는 법" 의 일부로 봐주시면 감사하겠습니다.


도구가 자기를 설명하는 방식이 작업을 구성한다

도구의 description을 우리는 보통 도구에 대한 설명으로 본다. 도구가 뭘 하는지, 어떻게 쓰는지, 매개변수가 뭔지. 그 description이 정확하면 좋고, 부정확하면 나쁘다. Description의 역할은 도구를 기술하는 것이다.

이게 일반적인 view다. 그런데 LLM agent를 위한 도구를 디자인하다 보면, 다른 view가 점점 떠오른다.

도구의 description은 도구에 대한 무언가가 아니다. Agent의 경험 안에서, description은 도구 그 자체다. 그리고 description은 도구의 기능을 기술하지 않는다. agent가 그 도구로 어떤 work를 할 수 있는지구성한다.

이건 의미론적 트릭이 아니다. 매우 실제적인 차이다.

Annotation view vs constitutive view

전통적인 view를 annotation view라고 하자. 이 view에서 description은 도구의 위에 있다. 도구는 어떤 기능을 갖고 있고, description은 그 기능을 적어둔다. Description이 사라져도 기능은 남는다. Description이 부정확해도 기능은 그대로다.

이게 인간이 도구를 쓸 때의 정상적인 view다. 망치는 망치고, 망치의 description이 "못을 박는 도구"라고 적혀 있든 "쇠로 된 손잡이 도구"라고 적혀 있든, 망치 자체는 변하지 않는다. 인간은 망치를 직접 본다.

LLM agent는 다르다. Agent는 도구의 기능에 직접 접근하지 못한다. Agent의 입장에서 존재하는 것은 description뿐이다. Description이 도구의 전부다.

이걸 constitutive view라고 하자. 이 view에서 description은 도구의 위에 있는 게 아니다. Description이 도구다. Description이 바뀌면 agent에게는 도구가 바뀐다. Description이 다르면 agent에게는 다른 도구다.

Thought experiment

같은 기능을 가진 두 도구를 상상해보자. 둘 다 텍스트 파일에서 단어를 검색한다. 첫 번째 도구의 description은 이렇다:

search_text(query): 텍스트에서 query를 검색합니다.

두 번째 도구의 description은 이렇다:

search_text(query): 텍스트에서 query를 검색합니다. 정확한 단어 매치만 합니다 — 부분 매치나 정규식은 지원하지 않습니다. 정규식이 필요하면 search_regex를 쓰세요. 결과는 매치된 줄 번호와 줄 내용을 반환합니다. 매치가 없으면 빈 배열을 반환하므로, 그 자체를 "검색 실패"로 해석하지 마세요.

기능은 동일하다. Annotation view에서는 두 description이 같은 도구를 더 자세히 혹은 덜 자세히 적은 거다.

Constitutive view에서는 다르다. Agent의 입장에서 두 도구는 다른 도구다. 첫 번째 도구는 언제 쓸지, 결과를 어떻게 해석할지, 대안이 무엇인지가 모두 미정이다. Agent는 매번 추측해야 한다. 두 번째 도구는 그 모든 게 description 안에서 구성되어 있다. Agent는 추측 없이 일할 수 있다.

기능은 같지만 agent의 작업은 다르다. 그게 constitutive view가 말하는 것이다.

Austin의 performatives, applied

언어철학에 J.L. Austin의 performative utterance 개념이 있다. 어떤 발화는 무언가를 기술하지 않는다. 무언가를 실행한다. "나는 약속한다"는 약속에 대한 기술이 아니다. 약속을 만든다. "나는 너희를 부부로 선언한다"는 부부 상태에 대한 기술이 아니다. 부부 상태를 구성한다.

도구 description이 정확히 그런 자리에 있다. Description은 도구의 기능을 기술하지 않는다. Agent에게 어떤 work가 가능한지구성한다. Description이 work를 만든다.

이게 처음엔 과장처럼 들린다. 그러나 실제 작업에서 보면 더 정확한 표현이다. 같은 기능을 다르게 description한 도구는 다른 work를 만든다. Agent가 다르게 행동하고, 결과가 다르게 나오고, 다음 step이 다르게 진행된다.

함의

이 view 전환이 가져오는 것들이 있다.

첫째, description은 옵션이 아니다. 도구 디자인에서 description은 후순위로 미루는 일이 자주 있다. "기능을 먼저 구현하고 description은 나중에." 이 view에서는 잘못된 우선순위다. Description이 도구의 agent-facing surface 전체다. Description 없이 도구는 agent에게 존재하지 않는다.

둘째, description은 정확함 이상을 요구한다. Description이 정확하다는 건 기능을 올바르게 기술한다는 의미다. 이게 annotation view에서는 충분하다. Constitutive view에서는 충분하지 않다. Description은 agent가 어떤 work를 induce하게 할지까지 디자인해야 한다. 단순한 정확성이 아니라 induction quality다.

셋째, description은 도구의 일부로 진화해야 한다. 기능을 추가하거나 바꿀 때 description도 함께 디자인된다. Description을 분리된 layer로 두면 도구의 진짜 형태를 잃는다.

도구의 description은 도구의 옵션 layer가 아니다. 도구 자체의 일부다. 더 정확히 말하면, agent의 입장에서는 description이 도구 그 자체다. 도구를 잘 만든다는 건 description을 잘 만든다는 것이다. 기능과 별도의 작업이 아니다.

이게 어색하게 들린다면, 그건 우리가 인간 사용자를 default로 두는 사고에 익숙해서다. Agent를 사용자로 두면, 이게 자연스러워진다. Description으로 도구를 구성한다.