운영 규칙을 에이전트에게 넣는 법
규칙집을 통째로 매번 읽히지 않고도, 필요한 순간에 필요한 만큼만 꺼내 쓰게 만드는 설계 패턴 — 상시(코어)·상황(전문)·경위 3층 + 트리거 라우팅.
- 상시 로드는 얇게, 상황별 본문은 트리거로 그때 불러오는 3층 구조
- "이 상황이면 이 규칙" 트리거표를 만드는 법
- 문서로만 존재하는 권고형 규칙과, 자동으로 걸러내는 강제형 훅의 차이
- 이 구조가 흔히 깨지는 지점(함정) 5가지
왜 규칙을 통째로 매번 읽히면 안 되나
가장 단순한 접근은 "규칙을 전부 적어서 세션이 시작할 때마다 통째로 읽힌다"입니다. 처음 규칙이 몇 개 안 될 때는 잘 됩니다. 문제는 규칙이 쌓일수록입니다.
규칙이 쌓일수록 상시 주입 분량이 늘어나, 매 턴 쓸 수 있는 예산(컨텍스트)을 규칙 그 자체가 잠식합니다. 정작 작업에 쓸 여유가 줄어듭니다.
규칙이 많아지면 지금 상황에 어떤 규칙이 해당하는지 에이전트가 놓칩니다. "있는데 안 걸리는" 규칙이 늘어나, 규칙집은 커지는데 실제 준수율은 그대로거나 떨어집니다.
3층 구조 — 상시 · 상황 · 경위
규칙을 "얼마나 자주 읽히는가" 기준으로 세 층으로 나눕니다. 층이 다르면 담아도 되는 분량과 상세도도 달라집니다.
트리거 문구 + 핵심 행동을 5~7줄로 압축합니다. 세션이 시작될 때마다 항상 붙는 부분이라, 여기 넣는 만큼 매 턴 비용이 듭니다. 그래서 "무엇을 조심해야 하는지"만 담고, "왜·어떻게"는 다음 층으로 미룹니다.
트리거가 매치된 그 턴에 한해서만 통째로 불러 적용합니다. 예외 조건·경계 사례·근거까지 자세히 적어도 괜찮습니다 — 트리거가 안 걸리면 애초에 안 읽히니까요.
이 규칙이 왜 생겼는지, 과거에 무엇이 깨져서 이 조항이 붙었는지를 기록합니다. 평소엔 안 읽지만, "왜 이 규칙이지?"를 물을 때 추적할 수 있게 남겨 둡니다.
| 층 | 예시 경로(가상) | 언제 읽히나 |
|---|---|---|
| 코어 | rules/search.md | 세션마다 항상 |
| 전문 | rules-full/search.md | "검색 실행 직전" 트리거 매치 시, 그 턴만 |
| 경위 | decision-log/search-tuning.md | 필요할 때 수동 조회(평소엔 안 읽음) |
트리거표 — "이 상황이면 이 규칙"
코어 요약만으로는 "지금 어떤 전문 문서를 읽어야 하는지"를 알 수 없습니다. 그래서 상황과 규칙 파일을 잇는 트리거표(라우팅 인덱스)를 하나 둡니다. 매 응답 전에 이 표를 훑고, 걸리는 행이 있으면 그때 전문을 불러옵니다.
| 트리거 (이 상황이면) | 규칙 파일(예시) | 핵심 1줄 |
|---|---|---|
| 외부 채널에 응답을 보내려 함 | rules/comms.md | 정해진 발신 경로로만 — 화면 출력은 도달이 아니다 |
| 파일을 고친 뒤 "고쳤다"고 말하기 직전 | rules/code-quality.md | 재현 → 수정 → 증명 3단계를 거친다 |
| 검색이 실패했거나 빈손으로 돌아왔을 때 | rules/search.md | 같은 질의 반복 대신 표현을 바꿔 한 번 더 |
| 매 단계 확인을 묻고 싶을 때 | rules/autonomy.md | 파괴적·비가역적이 아니면 스스로 판단해 진행 |
권고형 규칙 vs 강제형 훅
트리거표가 잘 설계돼도 결국은 에이전트의 자체 판단(권고형, soft)에 기댑니다. 압박이 크거나 맥락이 복잡한 상황에서는 규칙을 알아도 놓칠 수 있습니다. 그래서 놓치면 대가가 큰 소수의 규칙은 문서가 아니라 훅(hook, 특정 시점에 자동으로 끼어드는 검사기)으로 감싸 강제합니다.
장점 — 유연하고 예외 판단이 가능합니다. 단점 — 압박·피로 상황에서 특히 놓칠 수 있습니다.
장점 — 기계적으로 걸려 놓칠 수 없습니다. 단점 — 유연성이 떨어져, 정말 필요한 예외까지 막힐 수 있습니다(별도 예외 통로가 필요).
훅은 보통 세 시점 중 하나에서 끼어듭니다.
흔한 함정 5가지
한 장 요약
① 3층 분리 — 상시는 얇게(비용), 상황은 트리거로(적용), 경위는 보관만(추적).
② 트리거는 상황 문구로 — 규칙 이름이 아니라 "이럴 때"로 색인해야 매칭됩니다.
③ 강제는 소수에만 — 놓치면 대가가 큰 것만 훅으로 감싸고, 나머지는 판단에 맡깁니다.
④ 정기 점검 — stale·죽은 포인터·비대해진 코어는 저절로 안 고쳐집니다.
내용 = 일반화된 설계 패턴(특정 시스템의 이름·좌표는 예시로만 표기)