← 전체 기능

검증·리뷰v0.3.0에서 사용 가능

구현과 리뷰

Claude Code가 첫 버전을 만들고, Codex CLI가 깨끗한 읽기 전용 스냅샷을 리뷰해 반영을 막는 지적을 고치고 다시 리뷰한다. 라운드 수는 정해져 있지 않다. 승인이 나오거나 P2/P3 후속 작업만 남으면 끝난다. 같은 문제가 반복되거나 설계 선택이 필요하면 멈추고 사용자에게 묻는다. 반복 횟수의 상한은 선택이다.

필요한 상황

AI 세션은 끝낼 기준 없이 검토를 반복하거나, 같은 수정을 방법만 바꿔 되풀이하거나, 사용자가 내려야 할 설계 결정을 조용히 내려 버릴 수 있다.

동작 방식

  1. oah call claude --stage initial이 패킷으로 만든 지시문을 Claude Code에 보낸다. 어느 단계를 어느 엔진이 맡을지는 .oah/config.toml의 [stages]가 정하고, 맞지 않는 엔진은 OAH_STAGE_ENGINE_MISMATCH로 거절한다. --override-stage를 주면 실행하고 그 사실을 기록한다.
  2. oah review --task T는 merge-base부터 HEAD까지 커밋된 작업을, 에이전트 지침 파일을 지운 새 클론에서 리뷰한다. 카나리는 Codex가 스냅샷을 읽을 수 있었다는 것만 증명한다.
  3. 지적에는 심각도가 붙는다. P0와 P1은 막고 P2와 P3는 후속 작업이다. 지적마다 라운드를 넘어 유지되는 ID와 분류가 있다.
  4. oah fix --task T는 리스를 잡은 워크트리에서 최근 라운드의 P0, P1 지적을 Codex에게 고치게 하고 커밋하지 않은 채 남긴다. 사용자가 diff를 확인하고 Agent-Engine: codex로 커밋한 뒤 oah fix --task T --bind를 실행한다.
  5. 앞선 수정이 고치려 한 종류의 지적이 다시 나오거나 설계나 저장 형식 변경이 필요하면 OAH_REVIEW_NEEDS_DECISION으로 멈춘다. --decision "<결정한 내용>"으로 이어 가면 기록된다.
  6. [review] max_rounds는 선택 상한이다. 닿으면 OAH_REVIEW_ROUNDS_EXHAUSTED로 멈추고, --extra-round로 이어 가면 기록된다.

예제

따라 하기 예제에서 고치고 다시 증명한 뒤 재리뷰한다(수정 요청이 있을 때만).

oah wiki maintain --task hello-name
oah gates check hello-name --approve
git add -A
git commit -m "fall back to world for an empty name" -m "Agent-Engine: codex"
oah fix --task hello-name --bind
oah review --task hello-name

요구 사항

  • 사용자가 직접 설치하고 로그인한 Claude Code와 Codex CLI.
  • 커밋된 작업 트리. 추적 중인 파일에 커밋하지 않은 변경이 있으면 OAH_REVIEW_DIRTY_TREE로 거절한다.

한계와 복구

  • Claude가 만들고 Codex가 검토하는 분담은 만든 사람의 개인 경험에서 나왔고, 측정한 비교 결과가 아니다.
  • Codex가 고친 것을 Codex가 리뷰하면 independent: no로 표시된다. 이 엔진 순서에 대한 정직한 표시이고 오류가 아니다.
  • 수렴한 리뷰에도 P2/P3 후속 작업이 남을 수 있고, 기록된다.
  • 한 라운드에서 리뷰어 호출이 여러 번 실패하면 oah는 유료 리뷰어 호출을 멈춘다(OAH_REVIEW_ATTEMPTS_EXHAUSTED). 마지막 실행의 stderr.log를 읽고 원인을 고친 뒤 --extra-attempt로 다시 실행한다.
  • 수렴한 뒤 oah fix를 실행하면 OAH_FIX_NOT_REQUESTED로 거절한다.

원문 문서

관련 기능