훅(hook)을 이용해 AI 에이전트의 지식을 자동 추출하는 시스템 구축 및 실패 경험
요약
본 글은 AI 에이전트의 세션별 경험과 지식을 자동으로 추출하고 구조화하여 장기 기억으로 고정하는 시스템 구축 과정을 다룹니다. '깨달음 추출', '지식 노트', '색인 및 가치 원칙', '행동 규범' 등 단계적 프로세스를 통해 대화를 체계적인 지식 자산으로 변환시키는 방법을 제시합니다.
핵심 포인트
- 세션별 경험 소실 문제를 해결하기 위해 자동화된 지식 고정화 시스템을 구축함.
- 대화 로그에서 깨달음을 추출할 때 5가지 관찰 축(마찰, 잘된 점 등)을 고정하여 일관성을 확보함.
- 지식을 '1 파일 = 1 지식' 단위로 세분화하고 확신도 부여를 통해 정보 누락을 방지함.
- 월별 배치 작업을 통해 최종적으로 에이전트의 행동 자체를 변화시키는 행동 규범을 생성하는 것이 목표임.
Claude Code에 '장기적으로 가치 있는 지식을 추출하라'고 요청하고, 세션마다 자동으로 기록하게 하는 시스템을 1개월간 운영했습니다.
그 시스템과 결과물, 그리고 중단하기까지의 과정을 작성합니다.
리포지토리는 공개했지만, 개발을 중단했기 때문에 아카이브 처리했습니다.
경험을 자동적으로 남기고 싶다
Claude Code를 매일 사용하다 보면, 세션마다 얻은 경험이 사라집니다.
작업 패턴, 자신의 선호도, 지적한 교훈, 기술적인 판단 등을 다음 세션에서는 처음부터 다시 설명해야 합니다.
사람의 기억에서도 그 자리에서의 단기 기억은 시간이 지나면서 소실됩니다.
다만 일부는 '기억의 고정화(memory consolidation)'라는 과정을 거쳐 장기 기억이 되고 이후 행동을 형성합니다.
에이전트에게는 이 고정화에 해당하는 과정이 없습니다.
CLAUDE.md나 메모 파일에 손으로 적으면 경험은 남습니다.
다만, 무엇을 남길지 판단하여 쓰는 작업은 저에게 의존합니다.
작업 도중에 멈춰 서서 '이것은 남겨야 한다'고 판단하는 운영 방식은 저의 경우 지속되지 않았습니다.
계속하지 못하는 원인이 인간의 판단에 있다면, 그 판단을 인간으로부터 분리하고 고정화에 해당하는 과정을 자동으로 일으키면 된다고 생각했습니다.
판단을 모두 LLM에게 맡기다
그래서 무엇을 남길지 판단하는 것부터, 남긴 것을 행동 규범으로 정리하는 것까지, 모든 것을 LLM에게 맡기는 시스템을 만들었습니다.
지식 기록의 저장소는 Obsidian Vault입니다.
세션 중 대화를 단기 기억으로, 구조화된 지식을 장기 기억으로 간주하여 고정화 과정을 단계별로 재현했습니다.
처리는 '깨달음 추출(気づきの抽出)', '지식 노트', '색인 및 가치 원칙', '행동 규범' 순서로 단계를 쌓아 대화를 조금씩 구조화하고, 마지막 단계에서 에이전트의 행동을 변화시키는 형태로 만들었습니다.
모든 단계는 해당 단계에 주어진 재료만 보고 LLM이 한 번에 판단합니다.
이전 단계의 출력이 다음 단계의 입력이 되며, 중간에 제가 확인할 곳은 없습니다.
깨달음 추출
세션 종료 시의 훅(hook)을 통해 대화 로그에서 깨달음을 만들고, 이를 다음 세션 시작 시 주입되는 주의사항으로 사용하도록 했습니다.
대화에서 무엇을 가져올지는 5가지 관찰 축으로 정했습니다.
기대한 결과와 실제 차이, 판단과 그 이유, 지시의 불일치 등 마찰(friction), 잘된 점, 반복하는 행동의 5가지입니다.
축을 고정한 이유는 '깨달음'을 LLM의 자유로운 해석에 맡기지 않고, 수집 대상을 통일하기 위함이었습니다.
지식 노트
일별 배치(daily batch)를 통해 깨달음으로부터 1 파일 = 1 지식 노트를 만들고, 상위 단계의 재료와 제가 다시 읽어볼 자산으로 사용하도록 했습니다.
1 파일 = 1 지식으로 나눈 이유는 LLM이 정리하는 과정에서 정보를 누락하지 않기 위함입니다.
먼저 세부 단위로 남겨두고, 정리 작업은 다음 단계부터 진행합니다.
같은 지식이 다른 세션에서도 나오면, 기존의 지식 노트에 근거를 추가하고 확신도를 3단계로 올리도록 했습니다.
1회만 나온 지식은 확신도가 낮은 상태로 남아 나중에 구별할 수 있을 것이라 예상했습니다.
색인 및 가치 원칙
주간 배치(weekly batch)를 통해 지식 노트에서 주제별 색인과 가치 원칙을 만들었습니다.
색인은 증가하는 지식 노트를 찾는 입구로 사용하도록 했습니다.
가치 원칙은 여러 지식 노트에 공통되는 생각을 추출한 것으로, 행동 규범의 재료로 사용되도록 했습니다.
행동 규범
월별 배치(monthly batch)를 통해 가치 원칙에서 행동 규범을 만들고, CLAUDE.md에 작성하여 매 세션 에이전트에게 주어지는 지시사항으로 사용하도록 했습니다.
축적된 경험이 최종적으로 에이전트의 행동 자체를 변화시키는 것을 목표로 한 단계입니다.
발생한 일
이 시스템을 4월 중순부터 5월 초까지 운영하자, 지식 노트가 387건 만들어졌습니다.
1건씩 열어보아도 모두 규칙의 형태를 하고 있지만, 근거를 추적해보면 규칙이라고 부르기 어려운 것들이 많이 포함되어 있었습니다.
내용과 운용을 확인한 결과, 다음 5가지 문제가 발견되었습니다.
일지 속 독백이 지식이 되다
가장 먼저 눈에 들어온 것은 '의욕을 내면 태스크는 금방 끝난다'라는 지식 노트였습니다.
근거를 추적해보니, 2023년 6월의 제 일지에 있는 '의욕 내면 바로네'라는 한 줄이었습니다.
날짜별 노트가 놓인 폴더는 2023년부터 사용하던 손글씨 일지였습니다.
일별 배치 LLM은 에이전트와의 작업 기록과 저의 독백을 구분하지 않고 읽었습니다.
387건 중 156건은 2026년 이전의 일지만을 근거로 하고 있었습니다.
한 번의 사건이 규칙이 되다
근거가 1건뿐인 지식 노트는 총 387건 중 202건 있었습니다.
한 번 일어난 일이 그날 바로 규칙으로 작성되었습니다.
예를 들어, '모호한 지시에는 조사하지 말고 확인을 받는다'와 '명백한 결함은 확인 없이 즉시 수정한다'는 각각 다른 날의 1회성 사건에서 만들어졌으며 서로 연결되어 나열되어 있었습니다.
어느 것을 우선할지는 어느 쪽에도 쓰여 있지 않았습니다.
중요도의 차이가 붙지 않았다
근거의 수와 별개로, 지식 노트들 간의 무게감도 일정하지 않았습니다.
'GitHub API에서 다운로드에는 curl -L이 필수'와 '크리에이터일지라도'가 같은 형식으로 같은 폴더에 나열되어 있었습니다.
지식 노트 어디에도 어느 쪽이 중요한지 보여주는 정보는 없었습니다.
자기 평가만 남았다
깨달음의 내용에도 편향이 있었습니다.
관찰 축 중 하나로 '잘된 것'을 두었더니, 기록된 것은 '테스트 전원 통과', '한 번 승인으로 완료'와 같은 작업에 대한 자기 평가였습니다.
깨달음을 작성한 것은 그 작업을 마친 에이전트 본인이었습니다.
오류를 아무도 알아차리지 못했다
지금까지의 4가지는 지식 노트를 사용했더라면 초기에 눈에 띄었을 것입니다.
하지만 이 상태로 한 달 동안 인지하지 못했습니다.
세션 시작 시 hook이 주입한 것은 직전 깨달음을 일정 글자 수만큼 앞에서 잘라낸 것뿐이었습니다.
지식 노트와 가치 원칙을 세션 중에 참조하는 경로는 만들지 않았습니다.
지식 노트, 색인, 가치 원칙은 에이전트에게 단 한 번도 전달되지 않은 것이 됩니다.
에이전트도 저도 지식 노트를 읽지 않아 오류를 발견할 기회가 없었습니다.
5월 초에 중단했습니다.
발생 이유
5가지 문제는 지식 노트를 만들 당시의 문제와, 만든 후에 고칠 수 없었던 문제로 나뉩니다.
처음 4가지가 전자에 해당하고, 5번째가 후자에 해당합니다.
판단의 장에 필요한 정보가 없다
만들 당시의 4가지는 모두 판단하는 LLM의 손안에 없었던 것에 대응했습니다.
일지 속 독백이 지식이 된 것은 입력이 어디서 왔는지 전달하지 않았기 때문입니다.
한 번의 사건이 규칙이 된 것은 그날의 노트만 전달했기 때문입니다.
중요도의 차이가 붙지 않은 것은 다른 지식을 전달하지 않았기 때문입니다.
자기 평가가 남은 것은 작업을 한 본인에게 평가를 쓰게 하고, 작업 밖에서 보는 시점을 판단의 장에 두지 않았기 때문입니다.
지식으로 사용 가능한 것은 출처가 확실하고, 시간을 거쳐 반복되며, 다른 것보다 중요하다고 알려진 주장입니다.
출처, 반복, 중요도의 차이는 한 번의 대화 로그를 한 번 읽는 판단의 장에는 갖춰지지 않습니다.
LLM은 판단의 장에 없는 정보를 보충할 수 없습니다.
판단의 결과만 남는다
만든 후에 고칠 수 없었던 것은 판단의 결과만 기록으로 남았기 때문입니다.
지식 노트에서 원래 대화로 돌아갈 방법이 없고, 지식 노트를 사용하는 경로도 없었기에 오류를 확인할 기회가 없었습니다.
판단의 장에서 잘못된 결과는 그대로 기록으로 고정되었습니다.
결론
LLM의 판단만으로는 지식이 되지 않는다
만들 때 정보가 부족하고, 만든 후에 고칠 방법도 없는 이상, 추출 프롬프트를 개선해도 해결되지 않는다고 판단했습니다.
LLM의 판단만으로 대화를 지식 문서로 만드는 것은 정확도가 아니라 구조적인 측면에서 성립하지 않습니다.
다음 회차
판단을 그 자리에서 확정 짓지 않기
성립시키려면 두 가지 방향이 있습니다.
판단에 필요한 정보를 판단의 장에 모으거나, 판단의 결과를 그 자리에서 확정하지 않고 나중에 고칠 수 있도록 하는 것입니다.
다음으로 만든 시스템에서는 후자를 선택했습니다.
생로그를 1차 증거로 모두 남기고, LLM의 추출물로부터 반드시 원문으로 돌아갈 수 있게 하며, 제가 승인한 것만 사용합니다.
그 이야기는 다음 글에 쓰겠습니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기