omo 속의 Gemini — 실패 모드 두 개를 명명한 하네스
공장 안전수칙을 떠올려 보자. 절차는 모든 기계가 같은데, 유독 한 기계 앞에만 경고판이 빽빽하게 붙어 있다. 그 기계가 위험해서가 아니라, 그 기계에서 반복된 사고 유형이 다르기 때문이다. omo의 Gemini 전용 프롬프트가 정확히 그런 문서다.
요약부터. omo의 Atlas 오케스트레이터 프롬프트 8벌 중 Gemini판이 525줄로 가장 길다(2026-08-28 실측, default 502줄·gpt 460줄). 그런데 늘어난 지면의 정체는 새 절차가 아니라 강조 블록이다. 그 강조가 겨냥하는 실패 모드는 두 개다. 방향이 서로 반대다.
omo가 뭔지는 1편에서, 같은 방법론이 Kimi에겐 어떻게 적용됐는지는 2편에서 다뤘다. 오늘 읽을 것은 넷이다. 가장 긴 프롬프트에서 뭐가 늘었는지 세고, 실패 모드 두 개와 장치를 읽는다. 설명문이 명령문이 되는 지점을 짚고, 이 모델이 omo 안에서 받은 자리로 끝낸다.
이런 경험이 있다면
에이전트가 “확인했습니다”라고 답했는데 실제로는 파일을 읽지 않은 걸 발견한 적이 있을 것이다. “이 버그 좀 봐줘”라고 했더니 조사 대신 코드를 바로 고쳐버린 적도 있을 것이다. 그리고 그런 버릇이 모델마다 다르다는 것도 느꼈을 것이다.
omo 작성자는 그 버릇의 차이를 모델별 프롬프트 파일로 만들었다. Gemini용 파일 두 개에는 그 버릇이 실패 모드라는 이름으로 하나씩 명명돼 있다.
가장 긴 프롬프트부터 살펴보자
packages/prompts-core/prompts/atlas/ 디렉토리의 오늘(8/28) 기준 실측이다. default 502줄, gpt 460줄, gemini 525줄. 1편에서 실측한 8/23 수치(497·462·527)와 다른데, 8/25 커밋 하나가 atlas 디렉토리를 건드려 줄 수가 움직였다. 닷새 사이에도 편집되는, 살아있는 파일이라는 뜻이다.
그럼 default보다 긴 23줄엔 뭐가 들었을까. 새 절차가 아니다. 오히려 절차 설명은 짧아졌다. 노트 디렉토리 구조 예시는 7줄 코드블록에서 한 줄이 됐다. task() 호출 예시도 6줄에서 한 줄로 압축됐다. 그렇게 아낀 지면을 전부 강조 블록에 재배분했다. 예시를 줄이고 경고를 늘린 것, 그게 이 파일의 편집 방향이다.
실패 모드 두 개 — 방향이 반대다
첫째는 atlas판의 TOOL_CALL_MANDATE 블록이다. 원문 그대로 옮긴다.
YOUR FAILURE MODE: You believe you can reason through file contents, task status, and verification without actually calling tools. You CANNOT. Your internal state about files you “already know” is UNRELIABLE.
도구를 안 부르고 머리로만 검증하는 버릇을 겨냥한다. 처방은 강제다. “A response without tool calls is a FAILED response.” 병렬 실행도 예외가 아니다. 전용 부록은 “병렬 작업 3개를 말했으면 응답에 task() 호출 블록이 3개 있어야 한다”고 개수까지 적는다.
2편에서 본 Kimi K3의 추가 문장 하나(“말만 하고 호출 없는 턴 = 실패”)와 같은 증상이다. 다만 Kimi에겐 문장 하나를 보탰고, Gemini에겐 섹션을 통째로 배정했다.
둘째는 ultrawork판(325줄)의 GEMINI_INTENT_GATE다.
YOUR FAILURE MODE: You see a request and immediately start coding. STOP. Classify first.
요청을 보자마자 코딩부터 시작하는 버릇이다. 처방은 억제다. 어떤 도구 호출보다 먼저 의도를 6가지(research/implementation/investigation/evaluation/fix/open-ended)로 분류해 선언하게 한다. “explain how X works”에 코드를 고치는 응답을 WRONG으로 규정한 대조표까지 붙였다. 건너뛰면 “다음 도구 호출은 무효”다.
두 파일을 겹쳐 보면 재미있는 긴장이 나온다. 첫째 실패 모드는 행동을 안 해서 문제고, 둘째는 행동을 너무 빨리 해서 문제다. 같은 모델에 “도구를 불러라”는 강제와 “코딩부터 하지 마라”는 억제가 동시에 걸려 있다. 모순이 아니라 국면 분리다 — 검증 국면에선 행동을 강제하고, 착수 국면에선 행동을 막는다.
설명문이 명령문이 되는 곳
같은 검증 절차를 두 파일이 어떻게 다르게 쓰는지 비교하면 이 하네스의 방법이 제일 잘 보인다. default판 검증 섹션의 제목은 “Why You Verify Personally”다. 서브에이전트의 보고를 왜 직접 확인해야 하는지 이유를 설명하는 산문이다. gemini판에서 같은 섹션은 이렇게 시작한다.
THE SUBAGENT LIED. VERIFY EVERYTHING.
이어지는 문장도 같은 결이다. “THEIR WORK IS EXTREMELY SUSPICIOUS”, “This is NOT a warning - this is a FACT based on thousands of executions”. 절차 자체는 코드 읽기, 자동 검사, 직접 QA, 게이트 판정 4단계로 동일하다. 다른 건 서술 방식뿐이다. 이유를 설명하던 문장이 단정 명령문이 됐다.
게이트 판정의 마지막 줄이 이 톤의 정점이다.
ALL three must be YES. “Probably” = NO. “I think so” = NO.
바뀐 모든 줄을 설명할 수 있는가. 동작을 직접 봤는가. 기존 기능이 안 깨졌다고 확신하는가. 세 질문에 “아마도”라는 답을 허용하지 않는다.
스코프 확장 검사도 gemini판에만 있다. “Do NOT invent new requirements” 아래 “Your creativity should go into ORCHESTRATION QUALITY, not implementation decisions”가 붙는다. 창의성을 금지하는 게 아니라 쓸 자리를 지정하는 문장이다. 2편에서 Kimi의 사고 모드를 “어려운 30%에 쓰라”고 지정하던 것과 같은 수법이다.
자리는 3순위, 장비는 가장 무겁다
그럼 omo는 이렇게 공들인 Gemini를 어디에 쓰나. 기본 모델 테이블 실측으로는 writing 카테고리 폴백 3순위(gemini-3.6-flash), oracle 에이전트 폴백 3순위(gemini-3.1-pro), momus 후순위가 전부다. 오케스트레이터의 폴백 체인에는 아예 없다. 어느 자리에서도 1순위가 아닌데 전용 프롬프트는 전 변형 중 가장 길다. 출전 순서는 뒤인데 장비가 가장 무거운 선수인 셈이다.
왜 이런 배분인지 저장소엔 설명이 없다. 폴백까지 감안해 안전장치를 두껍게 깔았다고 볼 수도 있다. 강한 프롬프트가 필요할 만큼 통제가 어려웠다고 볼 수도 있다. 둘 다 내 추정이다.
내 설정 얘기도 해야 공정하다. 내 Mac Studio의 omo 설정엔 gemini 라우팅이 0건이다(grep 실측). 그래서 이번 편은 1·2편과 달리 런타임 관측이 전혀 없는 순수 저장소 리딩이다. 이 프롬프트로 Gemini의 실제 행동이 달라지는지는 나도 모른다.
Q&A
Q. 왜 Gemini에게만 이렇게 강하게 썼나.
A. 모른다. 저장소에 설명 문서가 없고, 작성자에게 물은 것도 아니다. 확인되는 건 결과물뿐이다. default와의 diff에서 대문자 강조와 “FAILED response” 류 단정이 반복해 확인된다. 실패 모드를 이름 붙여 명시하는 서술도 두 파일에서 반복된다.
Q. 이 관측에서 가져갈 만한 패턴은.
A. omo가 쓴 기법으로 한정하면 셋이다. 버릇을 실패 모드라는 이름으로 명명하고 시작한다. 금지 대신 “쓸 자리 지정”으로 창의성과 사고를 배치한다. 같은 절차라도 모델에 따라 설명문과 명령문을 갈아 끼운다. 일반 처방인지는 검증된 바 없다.
Q. 그래서 이 프롬프트는 효과가 있나.
A. 검증 못 했다. A/B 비교도 없고 내 설정엔 Gemini가 없다. 이 시리즈가 확인하는 건 “omo가 무엇을 썼는가”까지고, “그게 작동하는가”는 별도 실험이 필요하다.
Q. 읽을 때 주의할 것은.
A. 셋이다. 오늘 내용은 런타임 관측이 없는 저장소 리딩이다. 줄 수와 내용이 8/25 커밋처럼 계속 움직여서, 오늘 실측(2026-08-28)은 금방 낡을 수 있다. 그리고 프롬프트의 강한 서술을 Gemini 모델의 실제 결함으로 읽으면 안 된다. 여기 적힌 진단은 전부 omo 작성자의 관측이지 벤치마크가 아니다.
다음 편은 GPT다. 460줄로 default보다 짧은 유일한 변형인데, 짧아진 자리에 뭐가 남았는지 읽는다.
관련 글
- 같은 에이전트에 프롬프트가 여덟 벌 — 68k 스타 omo 하네스 해부 (시리즈 1편)
- omo 속의 Kimi — 오케스트레이터 기본값과 전용 프롬프트 3벌 (시리즈 2편)
- Gemini vs Claude — 월 $200와 $100 사이에서
8년 차 개발자. AI 도구로 일하는 방식을 실측 기록으로 남긴다. 이 글의 수치는 2026-08-28 oh-my-openagent 저장소 실측이다.
태그: #omo #Gemini #하네스 #시스템프롬프트 #AI에이전트
댓글
댓글 쓰기