중앙 지침 파일을 243줄까지 불렸다가 77줄로 깎았다.
그 사이에 메모리 시스템을 하나 만들고 하나를 골랐다.
깎으면서 배운 것은 지침을 더 잘 쓰는 법이 아니었다.
문제
에이전트는 세션이 닫히는 순간 그 세션을 통째로 잃는다.
처음에 내가 고른 해법은 지침 파일이었다.
적는 정밀도를 올리면 풀리는 문제라고 봤다.
지침이 길어질수록 모델은 앞쪽을 흘렸고 없는 사실을 지어내는 일이 늘었다.
넉 달 동안 나는 그 파일을 계속 고쳤다.
고칠수록 나빠지는 것이 보이는데도 다른 수를 몰랐다.
1. 세션이 닫힌다. 기억이 사라진다.
2. 지침에 더 적는다. 파일이 길어진다.
3. 앞쪽이 밀려난다. 없는 사실이 는다.
4. 다시 1로 돌아간다.문제는 지침의 품질이 아니었다. 지침을 메모리로 쓰고 있었다는 뜻이다.
지침은 매 세션 앞에 통째로 실리는 상수다.
길어지면 그만큼 다른 것이 밀려난다.
메모리는 쓰이고 지워지고 필요할 때만 불려 나오는 상태다.
상수 자리에 상태를 밀어 넣으면 둘 다 망가진다.
지침은 부풀고 기억은 여전히 남지 않는다.
만들어보기 전에는 무엇이 없는지 몰랐다
그래서 직접 만들었다.
문서 322개와 훅 25개와 학습 항목 409건이 쌓였다.
구조는 단순했다. 세션이 남긴 것을 파일로 떨구고 훅이 그 파일을 다시 지침에 실어 준다.
반년을 굴리고 남은 것은 완성된 시스템이 아니라 두 개의 상처다.
생산자와 소비자가 같은 파일을 두고 싸운다
인덱스를 만드는 쪽과 그 인덱스를 읽어 본문에 링크를 심는 쪽이 같은 파일을 두고 싸웠다.
한쪽이 정리해 놓으면 다른 쪽이 저장소 전역을 다시 오염시켰다.
11줄이면 끝났어야 할 커밋이 57줄로 기록된 날 이걸 알았고 정본은 손으로 복원해야 했다.
막을 자리가 없었다.
생산자와 소비자가 계약을 지키는지 검사하는 강제 지점이 시스템 안에 없었다.
문서로 적은 규칙은 확률로 지켜진다
규칙을 문서에 적어 두면 지켜질 때도 있고 안 지켜질 때도 있었다.
같은 위반을 다섯 번 다시 잡았고 다섯 번 다 지침에 더 강하게 적었다.
훅으로 옮겨 실패 코드로 즉시 막자 그 재발이 멈췄다.
규칙은 적어서 지켜지지 않는다. 막혀서 지켜진다.
만들어본 눈이 고르는 눈이 된다
5월에 제조업 기반 중견기업의 인공지능 전환 조직에 들어갔다.
팀 단위 작업 기억이 필요했고 바퀴를 다시 만들 시간은 없었다.
자작 대신 오픈소스를 채택했다.
직전 반년의 경험은 여기서 만드는 손이 아니라 고르는 눈으로 쓰였다.
고르면서 먼저 본 것은 기능 목록이 아니었다.
누가 기록을 쓰고 누가 읽는지, 그 계약을 어디서 막느냐를 봤다.
| 앞에서 겪은 것 | 고를 때 본 기준 |
|---|---|
| 지침이 길어지면 기억이 밀려난다 | 저장과 조회가 지침 밖에서 도는가 |
| 생산자와 소비자가 같은 파일을 두고 싸운다 | 그 계약을 막는 자리가 제품 안에 있는가 |
| 문서로 적은 규칙은 확률로 지켜진다 | 형식과 실패 판정을 서버가 거절하는가 |
그러고도 내가 채택 근거로 적은 것은 자동 요약과 의미 기반 검색이었다.
둘 다 그 제품의 간판이었고 나는 간판을 재보지 않은 채 팀 표준으로 세웠다.
고르는 눈까지는 됐다.
재는 눈은 아직 아니었다.
채택 근거는 한 주 만에 반증됐다
재현율 15.6%
기록이 211건 쌓인 시점에 카테고리 단위 질의의 재현율을 쟀다. 15.6%였다.
뱅크가 커질수록 숫자는 나빠졌다.
실제로 굴러가던 것은 단순 적재와 목록 조회와 태그였다.
간판이 아니라 뒷문이 일하고 있었다.
그 숫자를 보면 검색 품질을 탓하고 임베딩 교체로 손이 간다.
나도 처음에는 그렇게 읽었다.
| 채택 근거로 적은 것 | 실제로 짐을 진 것 |
|---|---|
| 자동 요약 | 단순 적재 |
| 의미 기반 검색 | 목록 조회와 태그 |
0.45가 가리킨 것은 검색이 아니었다
임베딩을 갈아 끼우기 전에 보고서 한 편을 놓고 항목을 손으로 대조했다. 활동 재현율은 0.45였다.
채점에서 빠진 22건을 전부 다시 펼쳐 봤다.
대부분은 내가 임원 보고에서 일부러 뺀 항목이었고 진짜 누락은 한 건이었다.
0.45는 검색 품질이 아니라 분모의 문제였다.
고칠 것은 검색기가 아니라 무엇이 보고에 오를 항목인지를 가르는 분류기였다.
숫자 하나를 두고 고칠 대상이 통째로 바뀌는 자리가 여기다.
결정 규칙을 먼저 얼린다
임베딩 비교 실험은 유의 수준과 최소 표본을 실험 전에 얼려 놓고 열었다.
결과가 표본 미달로 나왔을 때 나는 규칙을 손대지 않고 결론 없음으로 닫았다.
채택 근거가 무너지는 자리에서 규칙을 고치면 계측은 그때부터 의견이 된다.
결론
지금 내 메모리는 두 겹이다.
세션 옆에 붙는 파일 메모리는 자작 시절 구조가 그대로 남았다.
교차 세션 기록은 게이트웨이 뒤의 뱅크가 맡는다.
자작을 버리고 갈아탄 것이 아니라 역할을 나눴다.
형식과 실패 판정은 서버가 막는다.
그래서 같은 말을 지침에서 뺐다.
세션 로컬 파일 메모리 자동 로드 빠름 이 세션의 상태
게이트웨이 뒤의 뱅크 교차 런타임 영속 정책 강제지침이 다시 짧아진 이유가 이것이다. 무게가 문장에서 코드로 옮겨 갔다.
검색 재정렬에 55.8초 걸리던 것을 2초 아래로 내린 일도 같은 계열이다.
사람이 기다리지 못하는 기능은 운용되지 않는다.
한 번 내린 판정도 계측이 바뀌면 뒤집힌다. 자동 요약을 끄기로 한 결정은 여름에 근거를 새로 재서 되돌렸다.
메모리 시스템의 값은 무엇을 저장하느냐가 아니라 무엇이 강제되느냐에서 나온다.
메모리는 기능이 아니라 운용이다.
한계·재검토 트리거
2026-09 기준 / 재검토 트리거: 기록 1,000건 규모에서 카테고리 질의 재현율을 다시 재 15.6%가 회복되거나, 자동 요약이 만든 파생 기록이 원본 기록을 검색에서 밀어내는 사례가 관측되면 이 글의 판정을 다시 연다.
참고
이 글은 논증순으로 재구성했다.
같은 기간의 시간순 기록은 서사 시리즈에 있다.
- 커리어 전환기 1편 - 자작 메모리를 만들던 넉 달
- 커리어 전환기 2편 - 오픈소스를 채택하고 재현율을 재던 5월