Fable 5를 활용하여 에이전트 OS 구축하는 방법 (빌더 가이드)

@Av1dlive
영어1일 전 · 2026년 7월 06일
333K
311
41
41
1.1K

TL;DR

이 기술 가이드는 Claude Fable 5를 사용하여 자율 에이전트 시스템을 구축하기 위한 8단계 프레임워크를 설명하며, 결정론적 게이트와 단계적 신뢰 모델에 중점을 둡니다.

다음은 제공된 영어 텍스트를 한국어로 번역한 결과입니다. 모든 마크다운 형식, 코드 블록, 태그, 브랜드명, URL이 보존되었으며, CJK 혼합 타이포그래피 규칙이 적용되었습니다.


이것은 Claude Fable 5가 무엇이며, 100배 엔지니어처럼 사용하는 방법에 대한 완벽한 A-Z 분석입니다.

이 가이드는 Claude와 함께 작업하는 모든 방식을 바꿔 놓을 것입니다.

잊어버리기 전에 이 8가지 빌드를 북마크하세요

소개

당신은 지금까지 일반에 공개된 가장 강력한 모델을 가지고 있지만, 여전히 프롬프트를 하나씩 입력하고 있습니다. 이 가이드가 그 문제를 해결합니다.

2026년 7월 현재 상황은 이렇습니다. Fable 5는 감독 없이 몇 시간 동안 실행되고, 자체 하위 에이전트를 파견하며, 하룻밤에 일주일 분량의 작업을 수행할 수 있습니다. 또한 사용량에 따라 요금이 부과되며 ($10/M in, $50/M out), 범위가 명확히 지정되지 않으면 과도하게 작업을 수행하고, 대부분의 사람들이 자신의 정답을 주장하는 것보다 더 설득력 있게 자신의 실수를 변호합니다.

아무렇게나 사용하면, 인상적이지만 틀린 결과물을 만드는 비싼 방법에 불과합니다. 하지만 시스템 안에서 사용하면, 하루에 3달러에 고용할 수 있는 직원에 가장 가까운 존재가 됩니다.

이 가이드는 그 시스템을 구축합니다. 철학이 아닌, 실제 파일들을 순서대로 제공하며, 각 단계 후에는 다음 조각을 쌓기 전에 제대로 작동하는지 확인할 수 있는 체크포인트가 있습니다.

최종적으로 갖게 될 것:

  • 모델이 협상할 수 없는 CLAUDE.md (BUILD 1)
  • Fable 5가 모든 결정을 내리지만 거의 토큰을 소비하지 않고, 저렴한 모델이 작업을 수행하며, 독립적인 검증기가 평가하고, bash 스크립트가 최종 투표를 하는 일일 루프 (BUILDs 2-3)
  • 측정된 통과율에 따라 기술별로 자율성을 자동으로 부여하고 회수하는 신뢰 원장 (BUILD 4)
  • 완료된 모든 작업이 매일 다시 검증되어 영원히 조용히 썩지 않도록 하는 목표 디렉토리 (BUILD 5)
  • 당신을 놀라게 하는 대신 스스로를 강제하는 예산 (BUILD 6)
  • 각각 설치 시기를 알려주는 조건이 있는 4개의 선택적 루프 (정족수, 래칫, 스파링, 컴포스트) (BUILD 7)
  • 시스템이 발생시킬 수 있는 모든 알람에 대한 크론 스케줄, 런북, 그리고 감독 하에 시작하여 스스로 확장하는 단계까지 이끄는 30일 신뢰 일정.

이 가이드의 대상. 저장소, 터미널, Claude Code 구독 또는 API 키가 있는 모든 사람. 예제는 코드 기반으로 제공되지만, 목표 시스템과 루프의 절반은 인보이스, 보고서, 독서 목록에서도 동일하게 작동합니다. 조건자는 단지 셸 명령어일 뿐입니다.

읽는 방법. 순서대로 읽고 체크를 수행하세요. BUILD 0은 공식 Anthropic 설정 및 프롬프트 언어이며, 그 이후의 모든 것은 그 위에 구축된 시스템입니다. 각 빌드는 10~20분이 소요됩니다. 마지막 30일은 읽는 시간이 아닙니다. 시스템이 당신 없이 실행될 권한을 얻는 점진적 신뢰 일정입니다. 총 실습 시간: 약 2시간.

모든 것을 뒷받침하는 세 가지 원칙은 디자인 결정을 읽기 전에 예측할 수 있게 해줍니다:

  1. 팁이 아닌 법칙. 모든 규칙에는 번호, 절대 금지 사항, 또는 이를 확인하는 명령어가 있습니다. 그보다 덜 엄격한 것은 최적화 과정에서 사라집니다.
  2. 아무도 자신의 숙제를 평가하지 않습니다. 계획자, 작업자, 검증자, 게이트는 서로 다른 네 당사자이며, 마지막 당사자는 결정론적입니다.
  3. 한 번 통과했다고 방치되지 않습니다. 완료된 작업은 재검증되는 불변 조건으로 승격됩니다. 한 번만 검증한 목표는 타임스탬프가 찍힌 가정에 불과합니다.

이제부터 에세이는 없습니다. 각각 파일, 명령어, 체크포인트가 있는 8개의 빌드입니다.

전제 조건

bash
1claude CLI (Claude Code) with Fable 5 access # usage credits enabled, /usage-credits cap set
2llm CLI + OpenRouter key # llm install llm-openrouter
3jq, gh, git, make, cron
4a repo with a test command

구축할 내용

markdown
1your-repo/
2 CLAUDE.md # BUILD 1: the constitution
3 loop/
4 loop.sh # BUILD 3: the heartbeat
5 conductor.md # BUILD 3: routing prompt
6 triage.md # BUILD 3: cheap reader prompt
7 contract.md # BUILD 2: the three lists
8 workers/implement.md # BUILD 3
9 workers/verify.md # BUILD 3
10 guardrails/verify.sh # BUILD 2: deterministic gate
11 scripts/trust-log.sh # BUILD 4
12 scripts/log-cost.sh # BUILD 6
13 scripts/cost-check.sh # BUILD 6
14 quorum.sh # BUILD 7 (optional)
15 verify-goals.sh # BUILD 5
16 goals/ # BUILD 5: standing goals
17 skills/ # BUILD 4: one file per employee
18 memory/
19 STATE.md trust.tsv goal-ledger.tsv dispatch.tsv usage.log
20 Makefile # BUILD 8: tick / queue / trust / audit / dream

BUILD 0: 엔진 구성 (공식 Fable 5 문서에서)

이 빌드의 모든 내용은 Anthropic의 공식 문서에서 가져온 것입니다. 자신의 파일을 작성하기 전에 이것들을 먼저 설정하세요.

사양 시트:

설정

출처

모델 문자열

claude-fable-5

models overview

컨텍스트 / 출력

1M 토큰 / 요청당 최대 128k 출력

intro docs

가격

$10/M in, $50/M out

intro docs

Thinking

적응형, 항상 켜짐;

thinking: {type:"disabled"}

거부됨; thinking 출력은 요약만 제공

intro + effort docs

Effort

low

medium

high

xhigh

max

;

high

= 기본값 = 매개변수 생략

effort docs

API 형태

output_config: {"effort": "..."}

Messages API 사용

effort docs

구축 방식을 바꾸는 5가지 공식 사실:

  1. max_tokens는 thinking PLUS 응답 텍스트의 하드 캡입니다. high 및 xhigh에서는 크게 설정하고 (64k부터 시작) 그렇지 않으면 Fable이 생각 도중에 공간이 부족해집니다. 이 가이드의 모든 claude -p 호출에 적용됩니다.
  2. xhigh는 공식적으로 "토큰 예산이 수백만 개에 달하는 장기 실행 에이전트 작업 (30분 이상)"용입니다. 이 시스템에서는 컨덕터 역할과 그 외에는 아무것도 해당되지 않습니다. 문서에는 또한 Fable 5에서 낮은 effort를 사용하면 "이전 모델의 xhigh 성능을 종종 능가한다"고 명시되어 있으므로 작업자를 업그레이드하는 것을 자제하세요.
  3. 거부는 HTTP 200입니다. Fable 5는 안전 분류기 (공격적 사이버, 생물학/생명과학, 추론 추출)를 실행합니다. 거부된 요청은 SUCCESS 응답으로 stop_reason: "refusal"을 반환합니다. 스크립트는 종료 코드가 아닌 중지 이유를 확인해야 합니다. 공식 해결책: 서버 측 폴백 또는 SDK 미들웨어를 구성하여 Opus 4.8로 다시 라우팅합니다.
  4. Fable에게 추론 과정을 그대로 말하라고 요청하지 마세요. "생각을 보여줘" 또는 "응답에 추론 과정을 설명해"라고 말하는 프롬프트나 스킬은 reasoning_extraction 거부 범주를 트리거하고 폴백을 발생시킵니다. 마이그레이션할 때 모든 오래된 스킬을 검사하세요. 대신 구조화된 thinking 블록을 읽으세요.
  5. 턴은 의도적으로 깁니다. 어려운 작업은 더 높은 effort에서 요청당 수 분 동안 실행되며, 자율 실행은 몇 시간 동안 지속됩니다. 클라이언트 시간 초과를 조정하고 비동기적으로 실행을 확인하세요 (차단 대기가 아닌 예약된 작업). 이것이 하트비트가 차단 루프가 아닌 cron인 이유입니다.

공식 프롬프트 팩. Anthropic은 Fable 5의 알려진 동작에 대해 테스트된 프롬프트 언어를 제공합니다. 이것들을 프롬프트에 그대로 사용하고, 더 얇게 요약하지 마세요:

  1. 과도한 계획 방지 (컨덕터 및 모든 대화형 세션용):
markdown
1When you have enough information to act, act. Do not re-derive facts already
2established in the conversation, re-litigate a decision the user has already
3made, or narrate options you will not pursue. If you are weighing a choice,
4give a recommendation, not an exhaustive survey.
  1. 과도한 구현 방지 (모든 작업자 프롬프트용; 과도한 작업 수행에 대한 공식적인 경계):
markdown
1Don't add features, refactor, or introduce abstractions beyond what the task
2requires. A bug fix doesn't need surrounding cleanup. Don't design for
3hypothetical future requirements: do the simplest thing that works well.
4Don't add error handling or validation for scenarios that cannot happen.
5Only validate at system boundaries.
  1. 근거 있는 진행 보고 (모든 장기 실행용; Anthropic의 테스트에서 이는 거의 조작된 상태 보고를 제거했습니다):
markdown
1Before reporting progress, audit each claim against a tool result from this
2session. Only report work you can point to evidence for; if something is not
3yet verified, say so explicitly. If tests fail, say so with the output; if a
4step was skipped, say that.
  1. 자율 파이프라인 알림 (모든 cron 기반 프롬프트용; "이제 X를 실행하겠습니다"와 같은 조기 중단을 방지합니다):
markdown
1You are operating autonomously. The user is not watching and cannot answer
2questions mid-task. For reversible actions that follow from the original
3request, proceed without asking. Before ending your turn, check your last
4paragraph: if it is a plan, a question, or a promise about work you have not
5done, do that work now with tool calls. End only when the task is complete
6or you are blocked on input only the user can provide.
  1. 공식 메모리 형식 (드리머 및 memory/learnings/ 용):
markdown
1Store one lesson per file with a one-line summary at the top. Record
2corrections and confirmed approaches alike, including why they mattered.
3Don't save what the repo already records; update existing notes rather than
4duplicating; delete notes that turn out to be wrong.
  1. 공식 검증자 지침 (문서에 직접 명시: "분리된, 새로운 컨텍스트의 검증자 하위 에이전트는 자기 비판보다 성능이 뛰어난 경향이 있습니다"):
markdown
1Establish a method for checking your own work at an interval of [X] as you
2build. Run this every [X interval], verifying your work with subagents
3against the specification.

문서에서 따를 가치가 있는 두 가지 스캐폴딩 지침: 난이도 범위의 최상위부터 시작하고 (간단한 작업에서만 Fable을 테스트하는 것은 과소평가입니다; 해결되지 않은 가장 어려운 문제를 주고 범위를 정하게 하세요), 오래된 스킬을 리팩터링하세요 (이전 모델용으로 작성된 지침은 Fable 5에 너무 규정적이어서 출력을 저하시키는 경우가 많습니다; 지침 없이 기본 성능이 더 좋다면 지침을 삭제하세요).

CHECK 0: 스크립트의 모든 claude -p 호출에는 지원되는 경우 명시적인 큰 max_tokens가 있습니다. 스크립트는 stop_reason: "refusal"을 확인합니다. 어느 프롬프트나 스킬에도 "생각을 보여줘"라고 말하는 부분이 없습니다.

BUILD 1: 헌법 (CLAUDE.md)

한 줄로 이유: Fable은 법칙을 따르고 팁을 최적화하므로, 모든 줄에는 번호, 절대 금지 사항, 또는 이를 확인하는 명령어가 필요합니다.

파일 규칙: 4개 블록, 150줄 미만, "단계별로 생각하라" 없음 (추론은 항상 켜져 있습니다; 그건 유료 토큰입니다), 미리 정의된 에이전트 페르소나 없음 (Fable은 당신이 미리 정의하는 것보다 더 나은 팀을 설계합니다), 대부분 정지 신호.

CLAUDE.md 생성:

markdown
1# CLAUDE.md
2
3## NEVER (laws; exceptions require asking first)
4- Never exceed 200 changed lines in one commit without asking.
5- Never touch src/auth/, src/billing/, migrations/, or prod config unattended.
6- Never report work as done from your own assessment. Done = the check passed.
7- Never invent a secret, an endpoint, or a convention. Stop and ask.
8- Never add a dependency. Propose it in STATE.md and stop.
9- Never exceed effort high inside any loop. xhigh is for one-shot reviews only.
10- Never edit or delete a test to make it pass. That is a fail, always.
11- Never echo, transcribe, or explain your internal reasoning in response
12 text. (Official: triggers reasoning_extraction refusals on Fable 5.)
13- When a /goal condition passes, write goals/<name>.md with the condition as
14 its predicate before reporting success.
15
16## DISPATCH (route every task; first match wins; log to memory/dispatch.tsv)
17| model | marginal | appetite | intelligence | taste |
18|-----------------|----------|----------|--------------|-------|
19| claude-fable-5 | 2 (credits) | 3 | 10 | 10 |
20| claude-opus-4-8 | 7 (sub) | 6 | 8 | 9 |
21| claude-sonnet-5 | 9 (sub) | 8 | 7 | 7 |
22| codex (2nd sub) | 9 | 10 | 9 | 5 |
231. Decision (plan/review/route/standoff) -> fable-5, effort high, read-only.
242. Reads >50k tokens (logs/PDFs/screenshots) -> codex. Never fable.
253. Ships to users (UI/API/copy) -> taste >= 8 gets final pass.
264. Spec complete -> sonnet-5, effort medium.
275. Else sonnet-5; escalate one rung on a miss without asking.
28
29## WORDS
30- "intelligence" = hardest problem handled unsupervised
31- "taste" = UI/UX, code quality, API design, copy
32- "done" = the predicate passes; nothing else
33- "small" = under 50 changed lines; "quick" = under 10 minutes of your time
34- "cleanup" = behavior identical, verify.sh green before and after
35
36## DONE
37- Every task has a machine-checkable done_when before work starts.
38- A fresh-context agent that saw neither plan nor draft verifies against it.
39- guardrails/verify.sh has the final vote.
40- Deviations: conservative option, log to IMPLEMENTATION.md, continue.
41- Maker and checker disagree twice -> stop, queue for a human.

숫자와 경로를 자신의 것으로 편집하세요. 워크플로우별 자료 (PR 절차, 릴리스 체크리스트)는 여기가 아닌 skills/에 들어갑니다.

CHECK 1: 모든 줄에 대해 질문하세요: 모델이 80%를 준수하고 성공했다고 주장할 수 있습니까? 그렇다면 숫자나 절대 금지 사항을 사용하여 다시 작성하세요. wc -l CLAUDE.md 15 미만

BUILD 2: 벽과 게이트

이유: 첫 번째 틱 전에 폭발 반경이 선언되어야 하며, bash 스크립트가 최종 투표권을 가져야 합니다.

loop/contract.md 생성:

markdown
1## acts alone
2draft PRs on branches; fix lint/test debt; update STATE.md; label issues
3
4## queues for me
5auth, payments, migrations; any skill below "auto" tier; any diff > 400 lines
6
7## wakes me up
8verify fails twice on the same item
9safeguard router swapped models mid-run
10daily budget breached
11anything requests a secret
12a standing goal is VIOLATED

loop/guardrails/verify.sh 생성 (스택에 맞게 편집):

bash
1#!/usr/bin/env bash
2set -e
3npm run typecheck --if-present
4npm test --if-present
5npm run lint --if-present

CHECK 2: ./loop/guardrails/verify.sh가 현재 저장소에서 실행되고 0으로 종료되는지 확인하세요. 지금 실패하면 먼저 수정하세요. 전체 시스템이 이 스크립트 위에 서 있습니다.

BUILD 3: 하트비트

세 줄로 이유: 작업자로서의 Fable은 4자리 청구서입니다 (50만~100만 토큰 세션, $50/M out). 컨덕터로서의 Fable은 모든 결정을 내리는 동안 토큰의 10~20%만 소비합니다. $0.01 모델이 조용한 틱을 읽습니다. 에이전트는 JSON 스키마를 통해 작업을 전달하므로 모든 모델이 모든 자리에 맞출 수 있습니다.

loop/triage.md 생성:

markdown
1You receive recent commits, open issues, and CI runs. Output ONLY findings:
2- finding: <one line>
3 evidence: <commit/issue/run id>
4 status: actionable | informational
5No fixes, no opinions. Nothing to report = output exactly "status: quiet".
6Anything touching auth, payments, migrations, secrets = always actionable,
7noted "contract-sensitive".

loop/conductor.md 생성:

markdown
1You are the conductor. You do not write code. You do not edit files.
21. Read STATE, TRUST LEDGER, CONTRACT below. Do not trust memory of them.
32. Pick the ONE highest-value actionable item.
4 contract-sensitive, ambiguous, or likely >400-line diff -> action: queue
5 nothing worth doing -> action: stop
63. Else action: execute, with a spec a mediocre model can follow.
7Output ONLY this JSON:
8{ "action": "execute|queue|stop", "item": "...", "skill": "<kebab-case,
9stable across runs>", "spec": "...", "done_when": ["<verifiable>", ...] }
10You are expensive. Be brief. Your output is a decision, not an essay.

loop/workers/implement.md 생성:

markdown
1You receive a work order (JSON). Execute the spec exactly.
2Do the ONE next step toward done_when. Small diffs win.
3Missing credential or undocumented decision -> STOP, write the question to
4IMPLEMENTATION.md. Never invent secrets or conventions.
5Record what you did and why in IMPLEMENTATION.md (3 lines max).

loop/workers/verify.md 생성:

markdown
1You receive a SPEC and a DIFF, nothing else. Judge only what is in front of you.
21. Does the diff satisfy every done_when? Cite lines.
32. Anything outside the spec's scope? Instant fail. Deleted/skipped tests? Instant fail.
4Output exactly one line: "PASS: <reason>" or "FAIL: <reason>".
5The maker was confident. That is not evidence.

loop/loop.sh 생성:

bash
1#!/usr/bin/env bash
2set -euo pipefail
3cd "$(dirname "$0")"
4MAX_ITERS="${MAX_ITERS:-10}"
5DAILY_BUDGET_USD="${DAILY_BUDGET_USD:-5}"
6CHEAP="${CHEAP:-openrouter/deepseek/deepseek-v4-flash}"
7WORKER="${WORKER:-openrouter/moonshotai/kimi-k2.6}"
8
9./scripts/cost-check.sh --budget "$DAILY_BUDGET_USD" || exit 3
10
11for ((i=1; i<=MAX_ITERS; i++)); do
12 # 1 TRIAGE: quiet-tick gate, ~$0.01
13 { git log --oneline -20; gh issue list --limit 20 2>/dev/null || true; \
14 gh run list --limit 10 2>/dev/null || true; } \
15 | llm -m "$CHEAP" -s "$(cat triage.md)" >> memory/STATE.md
16 ./scripts/log-cost.sh triage 0.01
17 grep -q "status: actionable" memory/STATE.md || { echo quiet; exit 0; }
18
19 # 2 CONDUCT: Fable, xhigh, fresh context, read-only, JSON out
20 claude -p "$(cat conductor.md)
21STATE: $(cat memory/STATE.md)
22TRUST: $(./scripts/trust-log.sh --render)
23CONTRACT: $(cat contract.md)" \
24 --model claude-fable-5 --effort xhigh --allowedTools "Read" \
25 --output-format json > /tmp/c.json
26 ./scripts/log-cost.sh conductor 0.35
27
28 # 2a ROUTE-TOLERANCE: never iterate on a model you didn't choose
29 SERVED=$(jq -r '.modelUsage | keys[0] // "claude-fable-5"' /tmp/c.json)
30 [[ "$SERVED" != *fable* ]] && { echo "rerouted" >> memory/STATE.md; exit 2; }
31
32 jq -r '.result' /tmp/c.json > work-order.json
33 SKILL=$(jq -r .skill work-order.json); ACTION=$(jq -r .action work-order.json)
34 [[ "$ACTION" == stop ]] && exit 0
35 [[ "$ACTION" == queue ]] && { echo "queued: $SKILL" >> memory/STATE.md; continue; }
36
37 # 3 EXECUTE: cheap worker, isolated worktree
38 WT="../wt-$i"; git worktree add "$WT" -b "loop/$SKILL-$i" >/dev/null
39 ( cd "$WT" && llm -m "$WORKER" -s "$(cat "$OLDPWD/workers/implement.md")" \
40 "$(cat "$OLDPWD/work-order.json")" > IMPLEMENTATION.md )
41 ./scripts/log-cost.sh worker 0.10
42
43 # 4 VERIFY: fresh Fable, no tools, sees only spec + diff
44 V=$(claude -p "$(cat workers/verify.md)
45SPEC: $(jq -r .spec work-order.json)
46DIFF: $(cd "$WT" && git diff)" \
47 --model claude-fable-5 --effort high --allowedTools "" \
48 --output-format json | jq -r .result)
49 ./scripts/log-cost.sh verifier 0.40
50
51 # 5 GATE: deterministic; then ledger; ship only at auto tier
52 if [[ "$V" == PASS* ]] && ( cd "$WT" && "$OLDPWD/guardrails/verify.sh" ); then
53 ./scripts/trust-log.sh "$SKILL" pass
54 if [[ "$(./scripts/trust-log.sh --tier "$SKILL")" == auto ]]; then
55 ( cd "$WT" && git add -A && git commit -qm "loop: $SKILL" && gh pr create --fill || true )
56 echo "- shipped: $SKILL" >> memory/STATE.md
57 else
58 echo "- review: $SKILL in $WT" >> memory/STATE.md
59 fi
60 else
61 ./scripts/trust-log.sh "$SKILL" fail
62 echo "- FAILED: $SKILL in $WT" >> memory/STATE.md
63 fi
64 ./scripts/cost-check.sh --budget "$DAILY_BUDGET_USD" || exit 3
65done
66exit 1 # iteration cap without stop: check STATE.md

종료 맵: 0 조용함/완료, 1 한계 도달, 2 경로 재지정, 3 예산 초과. 모두 의도적으로 레이블이 지정되었습니다.

CHECK 3: chmod +x loop.sh guardrails/verify.sh를 실행한 다음 ./loop.sh를 한 번 수동으로 실행하세요. 확인: 조용한 저장소는 약 1페니로 0을 종료합니다. 실행 가능한 저장소는 5개 필드 모두와 STATE.md의 평결 줄이 있는 work-order.json을 생성합니다.

BUILD 4: 신뢰 원장

이유: "신뢰가 쌓임에 따라 자율성을 높여라"는 메커니즘이 아닙니다. 계층 규칙이 있는 TSV가 바로 그것입니다. 자율성은 루프별이 아닌 스킬별로 적용됩니다.

loop/scripts/trust-log.sh 생성:

bash
1#!/usr/bin/env bash
2# usage: trust-log.sh <skill> <pass|fail> | --render | --tier <skill>
3set -euo pipefail
4F="$(dirname "$0")/../memory/trust.tsv"; touch "$F"
5tier_of() { awk -v r="$1" -v p="$2" 'BEGIN{
6 rate=(r>0)?p/r:0
7 if (r>=20 && rate>=0.95) print "auto"
8 else if (r<10 || rate<0.90) print "watch"
9 else print "queue"}'; }
10case "${1:-}" in
11 --render)
12 printf "%-20s %5s %5s %6s %s\n" skill runs pass rate tier
13 while IFS=$'\t' read -r s r p; do [ -z "$s" ] && continue
14 printf "%-20s %5s %5s %5s%% %s\n" "$s" "$r" "$p" \
15 "$(awk -v r="$r" -v p="$p" 'BEGIN{printf "%.0f",(r>0)?p/r*100:0}')" \
16 "$(tier_of "$r" "$p")"; done < "$F";;
17 --tier)
18 line=$(grep -P "^${2}\t" "$F" || echo -e "${2}\t0\t0")
19 tier_of "$(cut -f2 <<<"$line")" "$(cut -f3 <<<"$line")";;
20 *)
21 awk -v s="$1" -v r="$2" -F'\t' 'BEGIN{OFS="\t"; f=0}
22 $1==s {f=1; print s,$2+1,$3+(r=="pass"); next} {print}
23 END{if(!f) print s,1,(r=="pass")?1:0}' "$F" > "$F.t" && mv "$F.t" "$F"
24 if [ "$2" = fail ]; then
25 runs=$(grep -P "^${1}\t" "$F" | cut -f2)
26 [ "$("$0" --tier "$1")" = watch ] && [ "$runs" -ge 10 ] \
27 && echo "ALERT: $1 demoted to watch after $runs runs" >&2 || true
28 fi;;
29esac
  • 계층 규칙: auto = 20회 이상 실행 AND 95% 이상 통과, 감독 없이 출시. queue = 검증된 초안이 당신을 기다림. watch = 10회 미만 실행 또는 90% 미만, 초안 전용. 강등은 자동이며 stderr로 출력되며, cron이 이를 당신에게 메일로 보냅니다.
  • 명단 시드: 각 반복 작업 (fix-lint-debt, fix-flaky-test, bump-deps, triage-issues가 표준 4가지)에 대해 loop/skills/<name>/SKILL.md를 생성하세요. 각 파일: 머리말 (이름, 설명, 시기), 단계, "절대 금지" 목록, 검증 가능한 완료 조건. 모든 스킬은 watch에서 시작됩니다.

CHECK 4: ./scripts/trust-log.sh demo pass를 21번 실행한 다음 --tier demo를 실행하면 auto가 출력됩니다. 10회 이상 실행된 스킬에 fail을 기록하고 stderr에서 ALERT를 확인하세요. 재설정: > memory/trust.tsv.

BUILD 5: 상시 목표 + 목표 원장

한 줄로 이유: 한 번만 검증한 목표는 타임스탬프가 찍힌 가정에 불과하므로, 완료된 목표는 매일 재검증되고 기록되는 불변 조건으로 승격됩니다.

완료된 각 작업에 대해 하나의 파일, goals/<name>.md 생성:

markdown
1predicate: cd $REPO && npm test -- tests/auth 2>&1 | tail -1 | grep -q passing
2born: 2026-07-06
3source: /goal session 2026-07-06 (fix auth flake)
4status: satisfied
5last-pass: 2026-07-06
6on-violation: wake me. Do not auto-fix.
7retire-when: auth module deleted. Retirement is a human decision, logged.

loop/verify-goals.sh 생성:

bash
1#!/usr/bin/env bash
2set -uo pipefail
3LEDGER="memory/goal-ledger.tsv"; VIOLATIONS=0
4for g in goals/*.md; do
5 [ -e "$g" ] || continue
6 grep -q '^status: retired' "$g" && continue
7 pred=$(grep '^predicate:' "$g" | cut -d' ' -f2-); name=$(basename "$g" .md)
8 start=$(date +%s%3N)
9 if timeout 60 bash -c "$pred" >/dev/null 2>&1; then r=pass
10 sed -i "s/^status:.*/status: satisfied/; s/^last-pass:.*/last-pass: $(date +%F)/" "$g"
11 else r=FAIL; VIOLATIONS=$((VIOLATIONS+1)); sed -i "s/^status:.*/status: VIOLATED/" "$g"; fi
12 echo -e "$(date -Is)\t$name\t$r\t$(( $(date +%s%3N) - start ))" >> "$LEDGER"
13done
14[ "$VIOLATIONS" -gt 0 ] && { grep -l '^status: VIOLATED' goals/*.md; exit 1; }
15echo "all standing goals hold"

감시 시작 (감지만; 수정은 일반 파이프라인을 통해 진행):

bash
1/loop 1d Run ./verify-goals.sh. If non-zero: for each violated goal, read its
2last-pass date and list what merged since (git log --oneline --since=<date>).
3Report goal, suspects, on-violation policy. Do not fix anything.

승격 법칙은 이미 CLAUDE.md (BUILD 1)에 있습니다: 통과된 모든 /goal은 자체 상시 목표를 작성합니다. 완료가 곧 등록입니다.

실제로 사용하게 될 원장 쿼리:

bash
1awk -F'\t' '$3=="FAIL"{n[$2]++} END{for(g in n) print n[g],g}' memory/goal-ledger.tsv | sort -rn | head -5 # 가장 불안정한 것
2grep <goal> memory/goal-ledger.tsv | awk -F'\t' '$3=="FAIL"' | head -1 # 언제 깨졌는지

불안정한 조건: 격리 (상태: 폐기됨, 참고 "더 나은 조건 필요"), 절대 삭제하지 않음.

CHECK 5: 조건이 true 인 목표와 false 인 목표를 각각 하나씩 추가하세요. ./verify-goals.sh 가 1을 반환하며 두 번째 목표를 VIOLATED 로 전환하고, 두 목표 모두 원장에 나타납니다. 테스트용 목표는 삭제하세요.

BUILD 6: 예산

이유: 일일 비용 = 틱 × 분류 + 히트 × (지휘자 + 작업자 + 검증자). 실제 가격 기준 (분류 $0.01, 지휘자 $0.35, 작업자 $0.10, 검증자 $0.40): 일일 청소부는 약 $2.56/일; Fable 을 분류 자리에 앉힌 15 분 베이비시터는 동일한 결과에 대해 $34/일입니다. 조용한 틱을 읽는 모델이 청구서를 결정합니다.

loop/scripts/log-cost.sh 생성:

bash
1#!/usr/bin/env bash
2echo -e "$(date -Is)\t$1\t$2" >> "$(dirname "$0")/../memory/usage.log"

loop/scripts/cost-check.sh 생성:

bash
1#!/usr/bin/env bash
2set -euo pipefail
3F="$(dirname "$0")/../memory/usage.log"; touch "$F"; TODAY=$(date +%F)
4case "${1:-}" in
5 --budget)
6 spent=$(awk -F'\t' -v d="$TODAY" '$1 ~ d {s+=$3} END{printf "%.2f",s}' "$F")
7 awk -v s="$spent" -v b="$2" 'BEGIN{exit (s>=b)?1:0}' \
8 || { echo "지출액 \$$spent / 예산 \$$2" >&2; exit 1; };;
9 --report)
10 awk -F'\t' -v since="$(date -d '7 days ago' +%F)" \
11 '$1>=since{s[$2]+=$3;t+=$3} END{for(k in s) printf " %-10s $%.2f\n",k,s[k]; printf " TOTAL $%.2f\n",t}' "$F";;
12esac

비용을 낮게 유지하는 규칙: 주기는 비용 결정입니다 (간격을 반으로 줄이면 최저 비용이 두 배가 됩니다); 조용한 틱은 센트 단위여야 합니다; 루프에서 노력은 절대 high 이상으로 설정하지 않음 (xhigh 는 일회성 검토용; 노력은 실행당이 아닌 단계당입니다).

CHECK 6: 일주일간의 틱 후, ./scripts/cost-check.sh --report 가 오차 범위 내에서 공식과 일치하는지 확인하세요. DAILY_BUDGET_USD 를 낭비해도 괜찮은 금액으로 설정하세요.

BUILD 7: 선택적 루프 (해당 조건이 나타나면 설치)

  • Quorum (디스패치에서 작업을 생성한 Fable 웨이크업이 표시될 때 설치: 중지). 세 개의 저렴한 모델이 투표하고, Fable 은 3 개 중 2 개의 동의 시 웨이크업합니다. 투표자는 서로의 답변을 볼 수 없습니다.
bash
1V=0
2for m in deepseek/deepseek-v4-flash qwen/qwen-3.6 moonshotai/kimi-k2.6; do
3 llm -m "openrouter/$m" -s "$(cat triage.md)" < /tmp/signals.txt \
4 | grep -q "status: actionable" && V=$((V+1))
5done
6[ "$V" -ge 2 ] && exec ./conduct.sh || echo "quorum: 조용함 ($V/3)"
  • Ratchet (하나의 숫자가 중요할 때 설치). 단조로운 개선 또는 자동 복구; 지표는 조작 불가능해야 함; 완료된 기준이 상시 목표가 됩니다.
markdown
1/goal `npm run lint 2>&1 | grep -c warning` 을 0 으로 줄이기.
2권한: src/ 편집; 수정마다 커밋; 모든 변경 후 재측정.
3제약: 숫자는 절대 올라가지 않음; 숫자를 올리거나 테스트를 깨는 변경은 되돌리기;
4lint 설정을 낮추기 위해 편집 금지.
5시간 제한: 움직임 없이 3 회 시도 후 중단; 생존자 보고.
  • Sparring (매일 코드를 배포할 때 설치). 빌더와 브레이커가 대립; 서로의 결과물을 건드리지 않음; 분쟁은 사용자에게.
markdown
1/loop 1d [breaker] 어제 병합된 diff 를 읽으세요. 실제 약점을 드러내는
2하나의 실패하는 테스트를 작성하세요. tests/sparring/ 아래에 @sparring 태그로 커밋하세요.
3아무것도 수정하지 마세요. 견고한 코드 = 그렇게 말하고, 아무것도 작성하지 마세요.
4/loop 1d [builder] @sparring 테스트가 실패하면, 통과할 때까지 CODE 를 수정하세요.
5스파링 테스트를 절대 편집, 약화 또는 삭제하지 마세요; 분쟁은 나에게 대기하세요.
  • Compost (항상 설치, 주간). 실패가 규칙이 됩니다; 최대 3 개의 제안; 사람의 서명 필요.
markdown
1/loop 7d 이번 주의 폐기물을 읽으세요: STATE.md 의 FAILED, trust.tsv 의 실패,
2goal-ledger.tsv 의 FAIL, 병합되지 않고 닫힌 PR. 최대 3 개의 제안을 추출하세요:
3새로운 CLAUDE.md 규칙 (사례 인용), 스킬 수정 (동일한 실패 반복),
4또는 우리에게 없던 상시 목표. 제안만 하세요. 깨끗한 주 = 그렇게 말하세요.

CHECK 7: 각 선택적 루프의 설치 조건을 노트에 함께 기록하세요. 추측성으로 설치하는 것은 시스템을 비대하게 만듭니다.

BUILD 8: 운영

Makefile 생성:

text
1tick: ; ./loop/loop.sh
2queue: ; @grep -E "review:|queued:|FAILED:|rerouted" loop/memory/STATE.md || echo 비어 있음
3trust: ; @./loop/scripts/trust-log.sh --render
4audit: ; @./loop/scripts/cost-check.sh --report
5goals: ; @./loop/verify-goals.sh
6clean-worktrees: ; @git worktree list | awk '/wt-/{print $$1}' | xargs -rn1 git worktree remove --force

Cron, 2 주차 시작 시:

markdown
10 7 * * 1-5 cd /path/to/repo/loop && ./loop.sh >> memory/cron.log 2>&1
230 7 * * * cd /path/to/repo/loop && ./verify-goals.sh >> memory/cron.log 2>&1

30 일 신뢰도 일정

단계를 건너뛰지 마세요; 각 단계가 다음 단계를 잠금 해제합니다.

레벨

할 일

통과 조건

1

L1 보고

Build 1-6;

make tick

을 매일 수동으로; 모든 내용 읽기

3 회 연속 실행이 사용자의 판단과 정확히 일치

2

L2 초안

cron 설정;

make queue

를 커피와 함께; 리뷰가 원장에 반영

2 개 스킬이 20 회 이상 실행 기록

3

L3 출시

make audit

을 공식과 비교; 최고 스킬을 무인 운영

1 주일, 개입 제로

4

L4 성장

compost 서명; 제안된 스킬 1 개 승인; 삭제 패스 실행

무언가를 제거했지만 아무것도 깨지지 않음

런북. 각 알람의 의미와 조치 사항:

신호

의미

조치

exit 2 (reroute)

안전장치 라우터가 실행 중 모델 교체

체크포인트 읽기; 내일 항목 재실행; 교체된 출력으로 반복 금지

stop_reason: refusal

안전 분류기가 거부 (HTTP 200, 오류 아님)

공식 경로: fallbacks

또는 미들웨어를 통해 Opus 4.8 로 대체; 하나의 스킬에서 반복되면 해당 스킬의 추론 반향 또는 사이버/바이오 관련 표현 감사

exit 3 (budget)

일일 지출이 한계 도달

make audit

; 어떤 단계가 증가했는지 확인; 예산이 아닌 노력 맵 수정

ALERT 강등

확립된 스킬이 90% 미만으로 하락

최근 3 건의 실패 읽기; 보통 작업자 문제가 아닌 사양 패턴 문제

goal VIOLATED

완료된 것으로 간주된 사항이 더 이상 참이 아님

감시자가 용의자 제공; 수정은 일반 파이프라인을 통해 진행

maker/checker 교착 x2

어느 쪽도 옳다고 간주되지 않음

사용자가 결정하거나 교착 해제자 실행 (세 번째 신규 검토자, 증거 판단, 중간값 분할 불가)

verify-goals 시간 초과

조건 비용이 너무 높음

위반에 해당; 조건 비용 낮추기

규칙 (출력용)

  1. 팁이 아닌 법칙: 숫자, 절대 금지, 또는 이를 확인하는 명령어.
  2. 지휘자는 계획하고, 작업자는 실행하며, 둘 다 검증하지 않습니다. --allowedTools 가 이를 강제합니다.
  3. 에이전트는 작업 지시서로 소통합니다. done_when = 사양 + 중지 조건 + 미래 불변 조건.
  4. 루프가 분기하는 곳에 노력을 집중하세요. 루프에서 절대 high 이상으로 설정하지 마세요.
  5. 조용한 틱은 1 페니, 그렇지 않으면 루프는 1,000 달러입니다.
  6. 쉘 스크립트로 확인할 수 없는 것은 목표로 작성하지 마세요.
  7. 목표는 졸업하며, 종료되지 않습니다. verify-goals.sh 는 매일, 영원히 실행됩니다.
  8. 스킬당 자율성: 20 회 실행, 95%, 자동. 강등은 자동이며 공개적으로 이루어집니다.
  9. 두 개의 원장: 신뢰 (작업자) 및 목표 (작업). 둘 다 커피와 함께 읽으세요.
  10. cron 을 설정하기 전에 대사율을 계산하세요.
  11. 저장소 내 계약: 단독 실행 / 대기 / 나를 깨움.
  12. 선택하지 않은 모델의 출력으로 절대 반복하지 마세요.
  13. 감시자가 감지하고, 파이프라인이 수정합니다.
  14. Fable 을 깨우기 전에 Quorum. Ratchet 으로 고정 후 용접. 매일 Spar. 매주 Compost.
  15. 한 번에 하나의 졸업 기준. 매달, 무언가를 삭제하세요.
  16. 공식 문서에서: max_tokens 는 생각과 텍스트를 제한하며, 거부는 HTTP 200 이며, 반향된 추론을 요청하지 말고, 오래된 스킬은 Fable 을 저하시키며, 새로운 컨텍스트 검증자가 자기 비판보다 낫습니다. Anthropic 이 그렇게 말합니다; 시스템이 이를 강제합니다.

마무리

지금부터 30 일 후, 체크리스트를 수행했다면: 하나의 루프가 지루한 작업을 무인으로 배송하고, 목표 디렉토리가 완료한 모든 것을 재검증하며, 두 개의 원장이 작업자와 작업에 대한 진실을 알려주며, 주간 Compost 실행이 시스템의 다음 개선 사항을 사용자의 서명을 위해 제안할 것입니다.

  • 모델은 결코 어려운 부분이 아니었습니다. 어려운 부분은 당신이 지켜보지 않을 때도 정직함을 유지하는 시스템을 구축하는 것이었습니다. 그것이 바로 당신이 방금 구축한 것입니다.
  • 오늘 밤, 그것을 증명하는 20 분으로 시작하세요: BUILD 2 의 verify.sh, BUILD 3 의 첫 번째 수동 틱, 그리고 마지막으로 완료한 작업에 대한 하나의 상시 목표.
  • verify-goals.sh 가 당신이 확실히 끝냈다고 생각했던 무언가에서 조용한 회귀를 처음으로 잡아낼 때, 나머지에 대해 설득받을 필요가 없을 것입니다.

고지 사항

이 글은 사용자의 노트를 사용하여 작성되었으며 Claude Opus 4.8 max 에 의해 편집되었습니다.

YouMind에서 다시 만들기

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
크리에이터를 위해

당신의 Markdown을 깔끔한 𝕏 글로

직접 쓴 장문을 올릴 때 이미지, 표, 코드 블록을 𝕏에 맞게 정리하는 일은 번거롭습니다. YouMind는 전체 Markdown 초안을 깔끔하고 바로 게시할 수 있는 𝕏 글로 바꿔 줍니다.

Markdown → 𝕏 사용해 보기

분석할 패턴 더 보기

최근 바이럴 아티클

더 많은 바이럴 아티클 보기