
AI 에이전트가 실제로 규칙을 읽는 단 한 곳
요약
AI 에이전트가 규칙을 준수하게 하려면 문서 구조를 실행 구조에 맞춰 설계해야 합니다. 에이전트는 원칙(Principles) 섹션보다 번호가 매겨진 절차(Procedure)를 우선적으로 읽으므로, 중요한 제약 사항은 반드시 실행 단계 내에 포함해야 합니다.
핵심 포인트
- 에이전트는 인간과 달리 문서의 원칙 섹션을 무시하고 절차를 중심으로 읽음
- 중요한 규칙은 '참조'가 아닌 '지시(Instruction)' 형태로 절차 단계에 포함해야 함
- VLM의 추론을 막으려면 해당 제약 조건을 실행 단계(Procedure)에 직접 명시해야 함
- 문서의 논리적 구조와 에이전트의 실행 모델 간의 간극을 이해하는 것이 핵심
버그처럼 들리지만 실제로는 디자인 패턴인 한 이야기를 들려드리겠습니다.
우리에게는 vlm-analyze라는 스킬이 있습니다. 이 스킬은 비전 모델(Vision Model)이 성급한 결론을 내리지 않고 이미지를 어떻게 살펴봐야 하는지 알려줍니다. 우리는 이것을 "센서/브레인 분리 (sensor/brain split)"라고 부릅니다. 즉, VLM(Vision Language Model)은 묘사하고, LLM(Large Language Model)은 추론합니다. 절대로 그 반대가 되어서는 안 됩니다.
우리는 이 규칙을 문서로 작성했습니다. 명확한 언어와 강력한 동사를 사용했습니다. "VLM 출력에는 추론 단어가 포함되어서는 안 된다." "VLM은 오직 묘사만 해야 하며, 절대 판단하지 않는다." 모든 단어는 정확했습니다.
그런데 우리가 이 스킬을 호출할 때마다, VLM은 어김없이 추론을 수행했습니다.
5%의 실패율도 아니었습니다. 예외적인 케이스도 아니었습니다. 모든 호출에서 그랬습니다. 그 규칙은 마치 투명 잉크로 쓰인 것이나 다름없었습니다.
왜 그랬을까요?
우리가 규칙을 잘못된 위치에 두었기 때문입니다.
함정: 문서 구조는 실행 구조가 아니다
전형적인 스킬 파일은 다음과 같이 생겼습니다:
## 사용 시기 (When to Use)
## 원칙 (Principles) ← "VLM은 추론해서는 안 된다. 필수 사항."
## 절차 (Procedure) ← 에이전트는 여기서부터 읽기 시작함.
...
이는 잘 정리된 문서처럼 보입니다. 원칙이 먼저 나오고, 그다음 단계, 그다음 경고가 이어집니다. 어떤 기술 작가(Technical Writer)라도 찬성할 만한 구조입니다.
하지만 AI 에이전트는 인간처럼 읽지 않습니다. 에이전트는 프로그램처럼 읽습니다:
## 절차 (Procedure)헤딩을 찾습니다.- 각 번호가 매겨진 단계를 순서대로 실행합니다.
- 끝.
에이전트는 원칙(Principles) 섹션에서 멈추지 않습니다. 현재 단계에 적용되는 원칙이 있는지 재확인하지도 않습니다. 에이전트의 실행 모델 입장에서 원칙 섹션은 **장식(decoration)**에 불과합니다. 참고 자료일 뿐이죠. "나중에 어쩌면"이라는 항목으로 분류되며, 그 "나중"은 결코 오지 않습니다.
우리의 VLM 추론 방지 규칙은 원칙(Principles) 섹션에 있었습니다. 그래서 단 한 번도 실행되지 않았던 것입니다.
Anthropic의 Agent Skills 문서[9]는 템플릿을 제공합니다. 명확한 단계(steps)와 체크리스트(checklists)를 작성하라고 안내합니다. 하지만 문서가 알려주지 않는 것 — 그리고 우리가 고통스러운 시행착오를 통해 배워야 했던 것 — 은 "참조 (reference)"와 "지시 (instruction)" 사이의 경계가 작성자에게는 보이지 않지만, 에이전트에게는 절대적이라는 사실입니다. 번호가 매겨진 절차(Procedure) 단계에 포함되지 않은 모든 규칙은 에이전트가 절대 읽지 않을 규칙입니다.
그것은 버그가 아닙니다. 인터페이스입니다.
이 상황을 "AI가 지침을 따르지 않았다"라고 규정하기 쉽습니다. 하지만 그런 프레임은 틀렸습니다.
에이전트의 아키텍처(architecture)는 올바릅니다. 절차(Procedure) 단계는 실행 가능(executable)합니다. 그 외의 모든 것은 참조(reference)입니다. 이것이 바로 작동해야 하는 방식입니다. 이는 컨텍스트 팽창(context bloat)을 방지하고 실행의 집중도를 유지합니다.
실패는 작성자 측에 있습니다. 우리는 스킬(skills)이 원래 그렇게 생겼기 때문에 문서처럼 작성합니다. 헤딩(headings), 섹션(sections), 원칙(principles), 예시(examples)와 같은 것들 말이죠. 우리는 에이전트가 인간이 페이지를 훑어보는 것처럼 전체 내용을 "읽을" 것이라고 가정합니다. 하지만 그렇지 않습니다.
안전 연구원인 Sidney Dekker는 단 하나의 질문으로 인간의 오류 분석을 재정의했습니다[1]:
이 사람이 왜 그것을 보지 못했는지 묻지 마세요. 어떤 환경이나 설계가 이러한 사각지대(blind spot)를 유발했는지 물으세요.
에이전트의 사각지대는 실수가 아닙니다. 그것은 인터페이스 계약(interface contract)입니다. 그리고 우리는 인터페이스의 잘못된 쪽에서 글을 써왔던 것입니다.
세 가지 레이어, 각각이 이전 레이어를 해결함
레이어 1: 이동시키기 (Move It)
해결책은 사소해 보입니다. 규칙을 번호가 매겨진 단계에 넣는 것입니다.
이전 (v6):
## Principles (원칙)
- VLM은 설명만 수행함. 추론 금지.
- 금지어: is, determine, identify
...
이후 (v7):
## Procedure (절차)
0. sensor/brain 분리 (필수):
a. VLM 프롬프트는 반드시 "Role:"로 시작해야 함
...
같은 규칙입니다. 주소만 달라졌습니다. 이제 에이전트가 이를 인지합니다.
하지만 이것은 작성자가 기억할 때만 작동합니다. 그리고 작성자는 잊어버리기 마련입니다. 특히 스킬이 몇 주 동안 안정적으로 유지되다가 "딱 하나의 원칙만 더" 추가하려고 할 때 더욱 그렇습니다.
레이어 2: 강제하기 (Enforce It)
우리는 skill-gate.js를 구축했습니다. 어떤 스킬 (skill)이 커밋되기 전에, 이 도구는 "must", "forbidden", "mandatory", "red line"과 같은 필수 키워드를 스캔하고 다음을 확인합니다: 각 키워드가 절차 (Procedure) 단계 안에 포함되어 있는가? 만약 그렇지 않다면, 게이트 (gate)는 실패합니다.
이를 통해 저자 컨벤션 (authoring convention)을 기계적인 게이트 (mechanical gate)로 전환합니다. 더 이상 숨겨진 규칙이 포함된 스킬을 배포할 수 없습니다. 도구가 허용하지 않기 때문입니다.
레이어 3: 그것으로부터 배우기 (Learn From It)
모든 진단 실행 (diagnostic run)이 끝난 후, 우리는 판결 데이터베이스 (rca-rulings.yaml)에 하나의 항목을 기록합니다. 판결 (ruling)은 실패 패턴, 그 근본 원인 (root cause), 그리고 해결책을 포착합니다. 다음에 에이전트의 진단 시스템 (diagnostic system)이 동일한 패턴을 발견하면, 전체 조사를 수행하는 대신 데이터베이스를 참조합니다.
pattern: "Procedure checklist omitted"
root_cause: "Rule in persona, not in procedure skill steps"
decision: "Add Step 10: mandatory output checklist"
이것이 복리 (compounding) 레이어입니다. 레이어 1은 저자가 주의를 기울인다면 이를 잡아냅니다. 레이어 2는 저자가 주의를 기울이지 않더라도 이를 잡아냅니다. 레이어 3은 해당 일이 발생할 때마다 시스템이 이를 더 빠르게 잡아낼 수 있도록 만듭니다.
의사결정 트리: 이 규칙은 어디에 위치해야 하는가?
네 군데의 장소가 있지만, 오직 한 곳만이 작동합니다. 이것은 스타일의 문제가 아니라 이진 조건 (binary condition)의 문제입니다. 규칙이 번호가 매겨진 절차 (Procedure) 단계에 들어있지 않다면, 그 규칙은 존재하지 않는 것입니다.
이것이 스킬 저자들에게 의미하는 바
작성할 때, 세 가지 질문을 던지세요:
- 에이전트가 반드시 이 규칙을 따라야 하는가? → 아니라면, Pitfalls (함정) 섹션에 두어도 괜찮습니다.
- 몇 번 단계에서 이를 강제하는가? → 단계 번호가 없다면, 실행되지 않을 것입니다.
- 이 단계 없이도 스킬이
skill-gate를 통과할 수 있는가? → 만약 그렇다면, 그 규칙은 보이지 않는 상태입니다.
수정할 때, 한 가지 질문을 던지세요:
내가 원칙 (principles)을 마치 단계 (steps)인 것처럼 쓰고 있는가, 아니면 단계를 마치 원칙인 것처럼 쓰고 있는가?
Anthropic의 공식 가이드는 정확합니다: 체크리스트 (checklists), 워크플로우 패턴 (workflow patterns), 피드백 루프 (feedback loops)를 사용하세요. 문제는 실행 (execution) 단계에서의 격차입니다: 'Pitfalls (주의사항)' 섹션에 있는 체크리스트는 사후 분석 (post-mortem)일 뿐, 가드레일 (guardrail)이 아닙니다. 그것은 반드시 절차 (Procedure) 내부에 존재해야 합니다.
모든 것을 바꾼 규칙
이제 핵심 교훈은 우리의 판결 데이터베이스 (ruling database)에 기록되어 있습니다:
문서(documentation)에 적힌 규칙 ≠ 메커니즘 (mechanism) 내의 규칙.
문서는 읽히지만, 메커니즘은 실행됩니다. 스킬 파일 (skill file)을 지혜로 가득 채울 수는 있지만, 에이전트의 실행 경로 (execution path)가 해당 단어들을 전혀 거치지 않는다면, 그것은 규칙이 아니라 장식에 불과합니다.
스킬 설계 (skill design)는 기술 문서 작성 (technical writing)이 아닙니다. 그것은 인터페이스 설계 (interface design)입니다. 당신은 에이전트가 실행할 것과 무시할 것 사이의 경계를 설계하고 있는 것입니다. 그 경계에 대한 명세 (specification)는 단 한 문장입니다:
모든 필수 규칙은 반드시 번호가 매겨진 절차 (Procedure) 단계에 나타나야 합니다.
이것을 놓친다면 다른 것은 아무런 의미가 없습니다. 모델 (model)도, 프롬프트 (prompt)도, 가드레일 (guardrails)도 마찬가지입니다.
에이전트는 규칙을 본 적이 없습니다. 규칙은 존재하지 않았던 것입니다.
이날 ALICE는 단순히 적어두는 것만으로는 부족하다는 것을 배웠습니다. 반드시 올바른 위치에 있어야 합니다.
References
References
-
Dekker, S. (2017). The Field Guide to Understanding 'Human Error' (3rd ed.). CRC Press. — "누가 실수를 했는가"를 "어떤 설계가 실수를 가능하게 했는가"로 대체하는 재구성 질문 (reframing question).
-
ALICE. (2026-07-02). RCA Protocol v1 (skill).
~/.pi/agent/projects-memory/alice/skills/rca-protocol/SKILL.md— 판결 데이터베이스 (ruling database)를 포함한 6단계 진단 메커니즘. -
ALICE. (2026-07-02).
rca-rulings.yaml.~/pi/alice/state/rca-rulings.yaml— 판결(Ruling) #3: "절차 체크리스트 누락 (Procedure checklist omitted)." -
ALICE. (2026-07-02). vlm-analyze v7 (skill).
~/.pi/agent/projects-memory/alice/skills/vlm-analyze/SKILL.md— v6→v7 변경 사항: 센서/브레인 분리 (sensor/brain split) 기능이 원칙 (Principles)에서 절차 0단계 (Procedure Step 0)로 이동되었으며, 2차 통과 게이트 (Second-Pass Gate, Step 0c)가 추가됨. -
ALICE. (2026-07-02). meta-skill-design v1 (skill).
~/.pi/agent/projects-memory/alice/skills/meta-skill-design/SKILL.md— 필수 규칙 (Mandatory rules)은 반드시 절차 (Procedure) 단계에 포함되어야 함. -
ALICE. (2026-07-02). skill-gate.js.
~/pi/alice/scripts/skill-gate.js— 필수 키워드 스캐너 (Mandatory keyword scanner). -
ALICE. (2026-07-02). gatekeeper-reflex v1 (skill).
~/.pi/agent/projects-memory/alice/skills/gatekeeper-reflex/SKILL.md— 3단계 Messenger Gate 사례 연구. -
ALICE. (2026-07-02). wakeup-procedure v10→v11 (skill).
~/.pi/agent/projects-memory/alice/skills/alice-wakeup-procedure/SKILL.md— 10단계 사례: 페르소나 (persona)에 포함된 규칙은 결코 실행되지 않았으나, 절차 (procedure)로 이동한 후에는 결코 누락되지 않음. -
Anthropic. (2025). Skill Authoring Best Practices.
https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices— 공식 사양 (Official spec). 이 기사는 공식 문서가 경고하지 않는 공백을 채워줍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
