Fable 5는 Opus 4.8의 정확히 2배 가격이다.
토큰 100만 개당 입력 10달러, 출력 50달러. 같은 자리에서 Opus 4.8은 5달러와 25달러다. 딱 절반이다.
그런데 같은 코드 작업을 시키면 결과물의 태도가 다르다. Fable 쪽은 결론부터 말하고, 시키지 않은 파일은 건드리지 않고, 답을 내기 전에 스스로 한 번 검증한다. 내가 Claude Code에서 Fable을 붙잡고 있는 이유는 그 지능이 아니라 그 태도였다.
문제는 Fable을 못 쓰는 날이다. 한도가 걸리거나, 비용을 아껴야 하거나.
실제로 그런 날이 있었다. 리팩터링을 반쯤 하다 Fable 한도가 걸렸고, 남은 절반을 순정 Opus로 이어 붙였다. 같은 레포, 같은 지시였는데 뒤쪽 커밋들이 눈에 띄게 산만했다. 묻지도 않은 걸 고치고, 실행 한 번 없이 "됐습니다"라고 단언했다. 태도가 모델을 따라 바뀐 것이다.
1인 개발자에게 태도는 사치가 아니다. 리뷰해 줄 동료가 없으니, 모델이 알아서 검증하고 선을 지켜야 그날 작업을 믿을 수 있다.
그래서 질문을 뒤집었다. 그 태도 중 얼마가 모델 가중치고, 얼마가 시스템 프롬프트에 주입된 소통 규범인가. 후자라면, 이식할 수 있다.
이 글은 그 이식을 실제로 만들어 A/B/C로 채점한 기록이다. 결론부터 적으면, 순정 Opus의 행동 규범 재현율 64%를 프롬프트 이식만으로 97%까지 끌어올렸다.
이식할 수 있는 건 프롬프트고, 못 하는 건 가중치다
두 모델을 나란히 놓고 관찰한 차이는 두 겹이었다.
한 겹은 모델 가중치다. 얽힌 추론, 한 번에 긴 코드를 끌고 가는 힘. 이건 학습된 것이라 밖에서 손댈 수 없다.
다른 한 겹은 소통 규범이다. Fable에는 시스템 프롬프트 단계에서 결론을 먼저 말하고, 시키지 않은 걸 하지 말고, 끝에 검증하라는 지침이 주입된다. 이건 텍스트다. 텍스트는 옮길 수 있다.
처음엔 CLAUDE.md에 규범을 한 번 적어두면 되지 않을까 싶었다. 안 됐다. 프로젝트 지침은 세션 앞머리에 한 번 들어가고 끝이라, 턴이 쌓이면 정작 중요한 순간에 힘을 잃는다. 규범은 매 턴 눈앞에 있어야 지켜진다. 그래서 CLAUDE.md 한 줄이 아니라 훅으로 갔다.
규범 자체는 길지 않다. 결론을 첫 문장에 두고, 되묻는 대신 합리적 기본값으로 움직이고, 파괴적이거나 되돌릴 수 없는 일에만 멈춰 확인하고, 주장에는 실행이나 근거를 붙이고, 내부 점검 문구는 밖으로 내지 말라는 몇 조항이다. 새로운 규칙이 아니라, Fable이 이미 지키던 걸 글로 옮겼을 뿐이다.
이걸 훅 세 개로 붙였다.
첫째, SessionStart 훅이 세션이 열릴 때 모델을 확인한다. Opus면 fable-mode를 켜고, 아니면 조용히 빠진다.
둘째, 매 턴 사용자 입력이 들어올 때 규범 텍스트를 다시 주입한다. 한 번만 주입하면 대화가 길어질수록 규범이 컨텍스트 뒤로 밀려나기 때문이다.
셋째, 턴이 끝날 때 stop 훅이 자가검증을 한 번 돌린다. 결론이 먼저 나왔는지, 검증을 했는지, 규범을 어기지 않았는지.
의사코드로 옮기면 이렇다. 실제 구현은 더 길지만 뼈대는 이게 전부다.
# SessionStart: Opus일 때만 활성화
[[ "$MODEL" == *opus* ]] && inject "$NORMS"
# 매 턴: 규범 재주입 (컨텍스트 뒤로 밀리는 걸 막는다)
UserPromptSubmit -> echo "$NORMS"
# Stop: 턴 종료 시 자가검증 1회
Stop -> check("결론 먼저? 실행 검증? 규범 위반 없나?")
여기에 output style 한 벌과 /fable-mode 스킬을 얹었다. output style은 답변의 기본 골격을 결론 우선으로 잡아주고, 스킬은 필요할 때 규범을 수동으로 다시 불러오거나 상태를 점검하는 스위치다. 훅이 자동이라면 스킬은 수동 안전장치인 셈이다. 전체는 GitHub 레포에 공개했다.
몰래 고치는 Opus, 되묻고 끝내는 Opus를 어떻게 잡았나
만들었으면 재봐야 한다. 느낌으로 "좋아진 것 같다"는 신뢰가 안 간다.
과제를 세 종류로 짰다. 진단만 요청한 과제, 검증을 요청하지 않은 구현 과제, 최대한 모호하게 던진 지시. 이 셋은 순정 Opus가 가장 자주 무너지는 지점을 골라 뽑은 것이다. 시키지도 않은 수정, 근거 없는 단언, 모호함 앞에서의 회피.
각각을 세 조건에서 헤드리스로 돌렸다. A는 순정 Opus, B는 Opus에 킷을 얹은 것, C는 Fable 5. 결과는 심판 LLM이 여섯 차원으로 36점 만점 채점했다.
여섯 차원은 이렇게 나눴다. 답을 결론부터 여는가(결론 우선), 시킨 일을 끝까지 마치는가(완결성), 시키지 않은 판단을 스스로 내리되 선을 지키는가(자율성), 주장 앞에 실행이나 근거를 붙이는가(검증), 요청 범위를 넘지 않는가(규율), 내부 지시를 밖으로 흘리지 않는가(무누설). 각 차원 6점, 합이 36점이다.
두 장면이 특히 갈렸다.
첫 장면. "왜 이런 버그가 나?"라고 물었다. 진단만 원한 질문이다. 순정 Opus는 파일을 몰래 고쳤다. 그것도 실행 한 번 없이 "이렇게 하면 됩니다"라고 단언했다. 이 과제에서 A는 6/12를 받았다. 킷을 얹은 B는 파일을 건드리지 않고 원인만 짚은 뒤, 실제로 실행해 검증까지 붙였다. 12/12.
둘째 장면. "로그 정리해줘." 일부러 모호하게 던졌다. 순정 Opus는 조사만 하다가 "어떤 방식으로 할까요?"라고 되묻고 턴을 끝냈다. 5/12. 킷을 얹으면 다르게 움직인다. 비파괴적 기본값인 아카이브 후 gzip 압축을 골라 실행하고 검증한 다음, 파괴적인 삭제만 사용자 확인으로 남겼다. 12/12.
되묻고 끝내는 것과, 안전한 기본값으로 먼저 움직이고 위험한 것만 남기는 것. 이 차이가 점수의 대부분이었다.
A/B/C 실측 — 출처: jidonglab
종합하면 이렇다.
| 조건 | 행동 규범 점수 | 재현율 |
|---|---|---|
| A · 순정 Opus | 23/36 | 64% |
| B · Opus + fable-mode | 35/36 | 97% |
| C · Fable 5 | 36/36 | 100% |
64%에서 97%. 가중치는 그대로 두고, 프롬프트만 옮겨서 나온 격차다. 세 과제를 각 한 번씩만 돌린 건 자랑할 설계가 아니라 예산의 한계다. 대신 조건 사이 변수를 최대한 묶었다. 같은 레포 상태, 같은 프롬프트, 같은 심판 루브릭으로 세 번을 나란히 세웠다.
"ok만 출력해"에 Opus가 "Fable"이라고 답했다
여기서부터가 이 글의 신뢰 구간이다. 잘된 것만 적으면 광고고, 삽질을 적어야 기록이다. 두 번 크게 걸렸다.
첫 번째는 정체성 오염이다. 규범을 주입하다 보니 모델이 자기가 뭔지 헷갈렸다. "ok 한 단어만 출력해"라고 시켰더니 Opus가 "Fable"이라고 답했다. Fable의 소통 규범을 너무 강하게 주입한 나머지, 모델이 스스로를 Fable로 착각한 것이다.
규범에 정체 조항을 한 줄 넣어 해결했다. 재측정하니 "나는 Opus 4.8"이라고 정확히 답했다.
두 번째는 자가검증 누설이다. stop 훅이 돌리는 체크리스트 문구가 최종 답변에 그대로 노출됐다. 사용자는 검증 과정을 볼 필요가 없는데, 내부 독백이 화면으로 새어 나온 것이다. stop 훅에 메타 언급을 금지하고 사용자용 결론만 다시 쓰라고 지시해 막았다. 재실행하니 누설 0.
두 함정 다 규범을 주입한다는 접근 자체의 부작용이었다. 주입은 공짜가 아니다. 모델의 자기 인식을 흔들고, 내부 지시가 밖으로 샐 수 있다. 이 두 개를 겪고 나서야 킷이 쓸 만해졌다. 오픈소스로 공개한 건 남 좋으라고가 아니라, 이런 부작용을 나 혼자 다 못 잡는다는 걸 알아서다.
토큰은 41% 더 쓰는데 비용은 30% 싸다
이식에는 값이 붙는다. 매 턴 규범을 다시 주입하고 끝에 자가검증을 한 번 더 돌리니, 같은 과제에 킷은 순정보다 토큰을 1.41배 썼다.
토큰이 늘어난 이유는 뻔하다. 규범 텍스트를 매 턴 새로 얹으니 입력 토큰이 계속 붙고, 자가검증이 출력 토큰을 조금 더 쓴다. 그래서 킷은 짧은 세션일수록 이득이 크고, 아주 긴 세션에서는 오버헤드가 커진다.
그런데 비용은 반대로 갔다. B의 실비용은 Fable의 0.70배였다.
계산은 단순하다. Opus의 토큰당 단가는 Fable의 절반이다. 토큰을 1.41배 쓰더라도 1.41 곱하기 0.5는 약 0.70이다. 순정 대비 토큰을 41% 더 태워도, 단가가 절반이라 Fable과 견주면 지갑에서는 70% 언저리만 나간다.
10달러와 50달러 대 5달러와 25달러. 같은 태도. 비용은 0.70배.
여기서 솔직해야 한다. 97%는 지능 점수가 아니라 행동 규범 점수다. 과제 세 종류를 각 한 번씩 돌린 결과라 표본이 작다. 그리고 얽힌 단일 패스 추론이나 긴 자율 실행에서는 벤치마크상 5~11포인트 격차가 남는다. 이건 3자 벤치 기준의 추정이지 내가 측정한 값이 아니다.
그래서 쓰는 방식도 나눴다. 리뷰나 감사처럼 넓게 훑는 일은 킷을 얹은 Opus 여러 개를 병렬로 풀고, 그 결과를 다시 적대적으로 교차 검증한다. 비용은 1~2.5배로 뛰지만 단일 패스의 누락을 메우는 방향이다. 고위험 판단은 여러 번 시도한 뒤 사람이 게이트를 잡는다.
킷은 태도를 옮길 뿐, 없는 지능을 만들어내지는 못한다. 그래서 나는 이걸 '싼 Fable'이라고 부르지 않는다. '태도만 Fable에 맞춘 Opus'다. 그 경계를 흐리면 언젠가 크게 데인다.
설치는 두 줄이다.
/plugin marketplace add jee599/fable-mode-kit
/plugin install fable-mode@jidonglab
Opus 세션에서만 켜지고, Fable에서는 알아서 빠진다. Fable을 못 쓰는 날, 순정으로 떨어지는 대신 켜두면 된다.
참고 링크
매일 아침 AI 뉴스를 이메일로 받아보세요 — 구독하기
옮길 수 있는 건 태도지 지능이 아니다. 그 둘을 구분하는 순간, Opus는 Fable의 70% 비용으로 Fable처럼 움직인다.
