모델별 프롬프트, 당신도 갈라 써야 할까 — omo 시리즈 결산
에이전트에 모델을 여러 개 물려 쓰다 보면 한 번은 이 질문에 닿는다. 모델별 프롬프트를 따로 써야 하나? 지난 다섯 편 동안 그걸 실제로 하는 공개 저장소(oh-my-openagent, 이하 omo)를 줄 단위로 읽었으니, 결산은 이 질문에 답하는 것으로 하겠다.
답부터. 대부분의 경우 갈라 쓸 필요 없다. 8벌을 운영하는 omo조차 기본값은 default 한 벌이고, 변형은 특정 모델의 실패 모드에 이름을 붙일 수 있을 때만 만들었다. 가져갈 것은 파일 8벌이 아니라 그 판단 순서다.
오늘 읽을 것은 셋이다. 변형이 언제 생기는지, 처방의 방향 다섯 가지, 그리고 갈라 쓰기 전에 밟을 순서와 그 비용. 참고로 이하의 모델 진단은 전부 omo 저자 code-yeongyu가 프롬프트 파일에 적은 관측이다 — 세부 유보는 글 끝 확인 범위에 모았다.
이런 경험이 있다면
새 모델을 물렸더니 에이전트 행동이 미묘하게 달라진 걸 본 적이 있다. 그래서 프롬프트를 모델별로 복사해 고치기 시작했는데, 곧 관리가 안 되는 것도 겪었다. 반대로 “요즘 모델은 다 알아서 하지 않나” 싶어 한 벌로 버틴 적도 있다.
양쪽 다 근거가 부족한 선택이다. 8벌짜리 저장소는 이 갈림길에서 뭘 기준으로 삼았는지부터 살펴보자.
변형은 실패 모드를 명명할 때만 생겼다
atlas 오케스트레이터 프롬프트 8벌을 다시 세면(2026-09-09 실측) default 496줄, gemini 526줄, opus-4-7 494줄, kimi 478줄, gpt 461줄, glm 402줄, kimi 신세대 2벌 각 326줄이다. 숫자보다 중요한 건 공통점이다. 여덟 벌 전부, 파일 안에 그 모델의 실패 모드를 명명하는 블록이 있다.
Gemini판의 “YOUR FAILURE MODE”, Claude판의 “defaults you MUST counter”, GLM판의 카운터 3종 — 이름은 달라도 구조가 같다. 막연히 “이 모델에 맞게 다듬었다”는 변형은 하나도 없다. 관측 없이 만든 변형이 없다는 뜻이다.
반대 방향의 증거가 더 세다. 폴백 1순위 다섯 자리를 차지한 현역 Claude(opus-5·sonnet-5·fable-5-1)는 전용 변형이 아예 없다 — 5편에서 확인한 대로 default를 그대로 받는다. 고칠 버릇이 안 보이면 안 고친다. 변형의 부재도 판단의 결과다.
처방의 방향은 다섯 가지다
다섯 편에서 확인한 처방을 한 표로 겹치면 이렇다.
| 모델 | 명명된 실패 모드 | 처방 방향 |
|---|---|---|
| Kimi | 사고 모드 과다 | 누른다 — 금지·예산에서 기질 서술로, 끝은 문장 패치 |
| Gemini | 행동 안 함 + 분류 없이 코딩 | 몰아붙인다 — 경고 증폭, 협박어 23개 |
| GPT | 말 많음·스코프 확장·멈추지 못함 | 멈춰 세운다 — 계약과 STOP RULES |
| Claude 4.7 | 문자 해석·팬아웃 축소 | 방향을 돌려 쓴다 — 버릇을 지렛대로 |
| GLM | 과탐색·과질문·능력 소극 | 조율한다 — 아래 참조 |
협박어는 MUST·NEVER·MANDATORY·NON-NEGOTIABLE 4종을 센 수치다(atlas 파일 기준, 2026-09-09 실측).
GLM은 시리즈에서 유일하게 안 다룬 변형이라 여기서만 짚는다. atlas/glm.md는 402줄에 협박어가 4개로 atlas 변형 중 가장 적다. 대신 정체성을 다른 모델 셋의 조합으로 정의한다.
GLM 5.2 behaves like Opus 4.6 tuned to think and act like Fable 5, while producing code-oriented work like GPT-5.5. Use Claude-style XML structure for parsing and GPT-style outcome framing for execution.
그리고 과탐색·과질문·능력 소극이라는 세 실패 모드에 카운터를 하나씩 붙였다. 과질문 카운터는 이렇게 생겼다.
Do not pause on minor decisions an orchestrator should make. Names, default commands, formatting, batching, and category choice are your responsibility. Pick a reasonable option, record it when useful, and proceed.
표를 세로로 읽으면 결산의 핵심이 나온다. 같은 방법론인데 처방이 다섯 방향으로 갈라진다. 모델별 프롬프트의 본질은 “모델에 맞는 좋은 말”이 아니라 그 모델의 버릇에 맞는 반대 방향의 힘이다.
갈라 쓰기 전에, 순서가 있다
그럼 언제 갈라 쓰나. omo의 구성에서 순서 하나를 끌어낼 수 있다 — 저장소에 지침으로 적힌 건 아니고, 여덟 벌의 공통 구조에서 내가 읽어낸 추론이다.
- 관측부터. 특정 모델에서 반복되는 실패를 문장 하나로 명명할 수 있나. “탐색만 두 바퀴 돌고 착수를 안 한다”처럼. 못 쓰면 아직 갈라 쓸 때가 아니다.
- 방향을 정한다. 그 버릇을 누를 건지, 몰아붙일 건지, 멈춰 세울 건지, 거꾸로 지렛대로 쓸 건지. 위 표의 다섯 방향이 선택지다.
- 전면 재작성 대신 패치. omo도 세대가 바뀔 때 파일을 새로 쓰지 않았다. Kimi K3는 문장 하나, Claude 4.7은 블록 하나를 보탰다.
비용도 같이 봐야 한다. 이 파일들은 살아있다 — 시리즈를 쓰는 동안에도 줄 수가 계속 움직였고, 오늘도 커밋이 이어지는 풀타임 저장소가 8벌을 유지한다. 개인 설정에서 그 유지비를 감당할 수 있는지가, 어쩌면 실패 모드 관측보다 먼저 오는 질문이다.
Q&A
Q. 그래서 지금 내 프롬프트를 갈라야 하나.
A. 반복 실패를 문장으로 명명할 수 있을 때만. 그 전에는 default 한 벌 유지가 omo의 구성이 보여주는 기본값이다.
Q. 갈라 쓰면 효과는 검증된 건가.
A. 아니다. omo에도 변형별 A/B 비교는 없다. 이 시리즈가 확인한 건 “이렇게 운영한다”는 사실이지 “이러면 좋아진다”는 결과가 아니다.
Q. 어느 편부터 읽으면 되나.
A. 전체 구조는 1편, 실제 동작 차이(도구 인자)까지 간 변형은 4편 GPT, 변형을 안 만드는 판단은 5편 Claude에 있다.
시리즈는 여기서 닫는다. 남는 숙제는 하나 — 이 프롬프트들이 실제 런타임에서 뭘 바꾸는지는 여전히 아무도 재지 않았다. 그건 읽기가 아니라 실험의 몫이다.
확인 범위
- 모델 진단(“과탐색” 등)은 code-yeongyu가 프롬프트에 적은 관측이다. 각 모델의 실제 행동 사실로 읽지 않는다.
- 수치는 2026-09-09 dev 브랜치 실측이며 계속 움직인다. 1~5편 수치와 시점이 달라 직접 비교는 피한다.
- 4번 섹션의 순서는 저장소 구성에서 끌어낸 추론이지 omo 문서의 지침이 아니다.
- 내 omo 설정은 Kimi·로컬 모델만 쓴다. 변형별 런타임 검증은 하지 않았다.
관련 글
8년 차 개발자. AI 도구로 일하는 방식을 실측 기록으로 남긴다. 이 글의 수치는 2026-09-09 oh-my-openagent 저장소(dev 브랜치) 실측이다.
태그: #모델별프롬프트 #omo #하네스 #시스템프롬프트 #AI에이전트
댓글
댓글 쓰기