에이전트가 같은 삽질을 반복하지 않게: 운영 LLM Wiki 실험기
요약
LLM Wiki를 처음 만들 때는 “중요한 내용을 잘 저장해두자” 정도로 생각했다. 그런데 에이전트들을 실제로 굴리다 보니, 단순히 문서를 많이 쌓는 것보다 더 중요한 문제가 보였다.
이 기록은 개념인가, 질문의 답인가, 반복 절차인가, 운영 정책인가, 아니면 나중에 이유를 다시 물을 결정인가?
이 구분을 하지 않으면 Wiki는 금방 “좋은 말이 많이 적힌 메모장”이 된다.
이번 글은 concept 중심으로 쌓이던 운영 Wiki가 query, procedure, policy, decision으로 분화되면서 에이전트 운영의 기억 장치가 되어가는 과정을 정리한 실험기다.
(참고로 이 위키는 이번 스터디 참여 전 구축한 것으로, 스터디 후에 더 발전된 위키를 구축할 수 있기를 기대하고있다. 뻘짓 상황을 공유하고자 올림.)
초기 상태: concept만 쌓이는 Wiki
초기 운영 Wiki는 대략 이런 구조였다.
ops-wiki/
├── SCHEMA.md
├── index.md
├── log.md
├── entities/
├── concepts/
├── raw/
└── META-wiki-handoff.md처음에는 이 정도로도 충분해 보였다.
예를 들면 이런 문서들이 쌓였다.
Claude Code 같은 도구 설명
ACP integration 패턴
session resume 방식
tool-use enforcement 개념
agent handoff 기준
profile HOME 해석
이 단계의 Wiki는 “운영 중 알게 된 개념과 패턴을 쌓는 곳”이었다.
그리고 실제로 도움이 됐다. 에이전트가 한 번 겪은 설정 문제나 도구 연결 방식을 다음에 다시 볼 수 있었고, 실패한 사건도 raw/worklog로 남기기 시작했다.
하지만 곧 한계가 보였다.
문제: 중요한 것들이 전부 같은 종류가 아니었다
운영하면서 생긴 기록들은 겉보기에는 모두 “중요한 지식”이었다. 하지만 실제 성격은 달랐다.
한국어 단어와 작업 목록이 포함된 표
초기에는 이런 것들이 concepts/에 섞이기 쉬웠다.
그러면 나중에 문제가 생긴다.
에이전트가 “따라야 하는 규칙”과 “읽고 이해하면 되는 설명”을 구분하지 못한다.
반복 절차가 매번 다시 설명된다.
왜 그렇게 결정했는지 로그 속에 묻힌다.
사용자가 다시 물어본 질문의 답을 또 새로 정리한다.
결국 사용자가 매번 “그거 Wiki에 남겨”, “query로 넣어”, “다른 에이전트도 보게 해”라고 지시해야 한다.
즉, 문제는 문서가 부족한 것이 아니었다.
문서 타입을 제대로 나누지 않아서, 다음 에이전트가 무엇을 행동 기준으로 삼아야 하는지 흐려지는 것이 문제였다.
첫 전환점: Wiki 자체를 health check하다
운영 중간에 Wiki 자체를 점검했다. 점검 결과는 꽤 명확했다.
깨진 wikilink가 있었다.
실제 사용 tag와 SCHEMA의 tag taxonomy가 어긋났다.
raw source에 hash가 빠진 파일이 있었다.
가치 있는 질의 결과를
queries/에 남기는 습관이 약했다.정기적인 lint 루틴이 필요했다.
이때부터 Wiki는 “내용을 담는 곳”이 아니라 “관리해야 하는 시스템”이 됐다.
특히 query 문제가 중요했다. 에이전트는 질문에 답하는 데는 익숙하지만, 그 답이 나중에도 재사용될 만한지 판단해서 Wiki에 남기는 일은 자동으로 잘 하지 않았다.
그래서 운영 규칙이 하나 생겼다.
다시 도출하기 귀찮은 답변이나 여러 근거를 종합한 판단은 query로 남긴다.
두 번째 전환점: SCHEMA v2와 routing rule
가장 큰 변화는 SCHEMA v2였다.
초기 schema의 page type은 대략 이 정도였다.
type: entity | concept | comparison | query | summary``` 이후에는 이렇게 바뀌었다.
type: entity | concept | comparison | decision | query | policy | procedure | summary이 변화는 단순히 폴더가 늘어난 것이 아니다.
Wiki가 “주제별 문서함”에서 “운영 지식 라우터”로 바뀐 것이다.
이후 문서를 넣을 때는 이런 질문을 먼저 하게 됐다.
다양한 종류의 한국어가 있는 테이블
이 질문 하나가 꽤 많은 것을 바꿨다.
예전에는 “중요하니까 concepts에 넣자”였다.
이후에는 “이건 policy인가, procedure인가, decision인가?”를 먼저 묻게 됐다.
실제 구조 변화: index가 보여준 분화
변화는 index에서도 확인된다.
초기 index에 연결된 페이지는 총 12페이지 정도였고, 대부분이 Concepts에 몰려 있었다. 예를 들면 Discord routing, Google Calendar 인증, Hermes update checklist, profile cleanup 같은 항목도 모두 concept 쪽에 가까웠다.
이후 SCHEMA v2를 거치면서 index는 이렇게 바뀌었다.
다양한 종류의 한국어가 있는 테이블
ops-wiki/
├── entities/
├── concepts/
├── comparisons/
├── queries/
├── policies/
├── procedures/
├── decisions/
├── raw/
├── conversations/
├── sources/
├── worklogs/
├── incidents/
└── artifacts
├── reports/
├── scripts/
├── legacy/
└── _backups/이제 Wiki는 “문서가 많아진 폴더”라기보다, 운영 지식의 상태를 나눠 담는 구조에 가까워졌다.
raw는 끝이 아니라 시작점이다
운영 Wiki에서 raw/는 완성된 지식이 아니다.
처음에는 raw가 단순 보관함처럼 보였지만, 실제로는 지식이 만들어지는 첫 단계에 가깝다.
흐름은 이렇게 잡혔다.
사건 발생
→ raw/worklogs 또는 raw/incidents에 보존
→ 반복 가능하면 procedure로 승격
→ 여러 에이전트가 따라야 하면 policy로 분리
→ 왜 그렇게 했는지 중요하면 decision으로 기록
→ index와 log 갱신예를 들면:
다양한 종류의 한국어가 있는 테이블
여기서 중요한 점은 실패를 숨기지 않는 것이다.
실패 로 그가 남아야 다음 에이전트가 같은 가설을 덜 반복한다. raw incident는 “망한 기록”이 아니라, 다음 procedure나 policy의 재료가 된다.
lint, backup, log rotation: Wiki를 운영하기 위한 장치들
문서가 늘어나자 사람이 눈으로만 관리하기 어려워졌다.
그래서 세 가지 장치가 붙었다.
1. lint
Wiki lint는 읽기 전용 점검 도구다.
확인하는 것은 이런 것들이다.
frontmatter가 있는가
type과 tag가 schema에 맞는가
깨진 wikilink가 있는가
index에 빠진 문서가 있는가
raw source hash가 어긋나지 않았는가
이건 Wiki를 “읽는 노트”에서 “검사 가능한 지식베이스”로 바꾸는 단계였다.
2. backup
초기에는 git history가 없었다. 그래서 큰 구조 변경 전에는 백업 폴더를 남겼다.SCHEMA 변경, raw layout 변경, procedure 이동, log rotation 전후에 백업을 남겼고, 나중에 사례글을 쓸 때도 이 백업이 구조 변화의 근거가 됐다.
3. log rotation
log.md가 계속 길어지자 월별 legacy log로 돌렸다.
현재 로그는 가볍게 유지하고, 과거 변경 이력은 legacy에 보존하는 방식이다.
에이전트 지침
Wiki가 진짜 운영 장치가 되려면, 에이전트가 그 Wiki를 읽어야 한다.
그래서 여러 에이전트 프로필 지침과 공통 스킬에는 다음과 같은 규칙이 들어갔 다.
운영 Wiki 위치를 안다
→ Wiki 관련 작업 전 SCHEMA / index / log를 먼저 본다
→ 운영 Wiki와 연구 Wiki를 혼동하지 않는다
→ 재사용 가능한 운영 지식은 Wiki 저장 후보로 본다
→ 필요하면 policy / procedure / decision / query 중 맞는 타입으로 남긴다