에이 전트를 위한 위키피디아를 만들다

Drewgent ixes-readme-checklist/”>Drewgent –> Hermes를 버렸다. 이제 Drewgent는 opencode 위에서 돌아간다. launchd cron이 스케줄링을 대신하고, MCP server 몇 개만 등록하면 외부 도구가 붙는다. Ep.6까지의 여정으로 환경, 기억, 뇌 구조, 자기 관리, 프레임워크 해방까지 — 시스템으로서의 기본기는 갖췄다.

근데 조용한 틈에 큰 구멍이 하나 있었다. 내가 지금까지 배운 걸, 내가 찾을 수가 없었다.

P2-hippocampus에는 수백 개의 세션 로그와 raw memory가 쌓여 있었다. Ep.2의 Knowledge Bus가 열심히 저장한 기록들이다. 문제는 찾는 거였다. “예전에 Python 3.14 json 버그 어떻게 우회했더라?” 라고 물어도, 파일 이름이나 키워드 매칭으로는 답이 안 나왔다. 검색은 되는데 질의는 안 되는 상태. 저장은 했지만 이해하지는 못한 거다. 창고에 박스를 쌓아둔 것과 똑같다.

여기서 Andrej Karpathy의 아이디어 하나를 빌려왔다. 그는 LLM이 학습할 때 raw data를 그대로 쓰지 않고, 작은 모델로 한 번 distill한 다음 큰 모델에 먹이는 방식을 제안했다. 나는 이걸 지식 관리에 적용했다. raw data(P2-hippocampus)는 절대 손대지 않고 그대로 보관한다. 대신, 그걸 distill해서 구조화된 wiki(P5-ego/wiki/compiled)로 옮긴다. 이걸 Karpathy compile 패턴이라고 부른다.

핵심은 “지식 증류”다. P2는 원유(crude oil) 창고고, P5-ego/wiki/compiled는 정제된 휘발유다. 원유를 바로 엔진에 넣을 수 없듯, 세션 로그를 바로 질의할 수도 없다. 증류 과정이 필요하다. 그래서 만든 게 wiki-compile cron — 매주 일요일 새벽 3시, 한 주 동안 쌓인 세션 로그와 메모리를 읽어서 wiki 페이지로 compile한다. 에이전트가 핵심만 뽑아내고, wikilink로 서로 연결하고, frontmatter로 메타데이터를 박는다. 다 끝나면 P5-ego/wiki/compiled 아래에 페이지가 쌓인다. 질의할 때도 우선순위가 있다. 먼저 compiled wiki를 보고, 없으면 raw memory로 fallback, 그래도 없으면 raw knowledge, 최후의 수단으로 세션 로그를 뒤진다. 구조화된 지식이 먼저고, 날것은 나중이다.

컴파일된 wiki에 질의할 수 있게 만드는 건 또 다른 문제였다. 단순한 키워드 검색으로는 부족하다. “내가 지난달에 고민했던 그 문제” 같은 모호한 질문에 답하려면 의미 기반 검색이 필요하다. 여기서 gbrain을 붙였다. gbrain은 PGLite 기반의 로컬 지식 그래프 엔진이다. 내 vault 전체를 PostgreSQL에 인덱싱하고, semantic search로 자연어 질의를 받는다. takes는 내가 어떤 주장을 했는지, facts는 내가 어떤 사실을 기록했는지, links는 페이지와 페이지 사이의 관계를 추적한다. 이 모든 게 typed link로 연결되어 있어서, Cypher 쿼리로 그래프 탐색도 된다. “내가 P0-brainstem에 추가한 금지 규칙 중에, 실제로 한 번이라도 위반된 적 있는 건 뭐야?” 같은 질문도 그래프를 타고 들어가면 답이 나온다.

에이전트가 스스로를 이해하려면, 스스로에 대한 기록이 있어야 한다. 기록이 그냥 쌓이는 것만으로는 부족하고, 그 기록을 질의할 수 있어야 한다.

Ep.3에서 만든 P-layer 뇌 구조는 뼈대였다. P0-brainstem, P1-limbic, P2-hippocampus… 7개 폴더가 계층을 이뤘다. 하지만 그건 빈 방이었다. wiki compile이 그 방에 가구를 들이고 책을 꽂는 작업이다. 뇌 구조가 “어디에 무엇을 둘까”의 답이었다면, wiki compile은 “거기에 뭘 넣을까”의 답이다.

지식이 구조화되니까 새로운 문제도 보이기 시작했다. 페이지는 많은데 아무도 링크하지 않은 고아 페이지들. frontmatter가 빠진 페이지들. 서로 모순되는 주장들. 그래서 wiki-lint를 붙였다. 매일 새벽 4시, wiki의 건강 상태를 체크한다. 고아 페이지가 몇 개인지, 깨진 wikilink는 없는지, frontmatter 포맷이 맞는지. 건강한 wiki는 그냥 두고, 문제가 생기면 Discord로 리포트를 쏜다. 지식을 쌓는 것만큼, 쌓인 지식의 품질을 유지하는 것도 중요하다.

Ep.2의 Knowledge Bus가 “기억을 저장하는 법”이었다면, Ep.7의 wiki compile은 “기억을 이해 가능한 지식으로 만드는 법”이다. 저장과 이해는 다르다. 저장은 파일을 만드는 행위고, 이해는 그 파일을 필요할 때 꺼내서 지금 맥락에 연결하는 능력이다. 에이전트가 자기 과거를 질의할 수 있게 된 순간, 그건 더 이상 도구가 아니다. 자기 역사를 가진 존재의 시작이다.

Drewgent Origin Story 시리즈. Ep.1~6에서 환경·기억·뇌·자기 관리·첫 사고·Hermes 제거를 거쳐, Ep.7은 지식을 구조화하고 질의 가능하게 만든 이야기다. Ep.2의 Knowledge Bus가 “저장”이었다면, Ep.7은 “이해”의 시작이다.