oah는 각자에게 맞고 AI가 발전하는 만큼 함께 바뀌는 개발 환경을 만들도록 돕습니다. 가져다 고쳐 쓸 수 있는 참고 구현이자 가이드라인입니다.
코드를 만드는 것만으로 작업이 끝나지는 않습니다. 어디까지 바꿀지 정하고, 결과를 검증하고, 다음 세션이 읽을 기록도 남겨야 합니다. oah는 이 과정들을 연결해 하나의 요청이 작업과 확인, 기록까지 이어지게 합니다.
002 / 계속 바뀌는 이유
예전 규칙과 스킬은 새 모델의 능력을 막거나 결과를 나쁘게 만들 수 있습니다. 기본값은 이해하고 바꾸기 쉬워야 하며, 작업을 가로막는 규칙은 고쳐야 할 설계 문제입니다.
도움이 되는 것은 남기고 필요 없어진 것은 지웁니다. 전체 구성으로 시작해도 되고, 영향 지도·위키·리스·증거 게이트·리뷰 반복 가운데 프로젝트에 필요한 부분만 가져가도 됩니다.
003 / Claude가 만들고 Codex가 검토하는 이유
이 역할 배정은 측정한 비교가 아니라 저자의 경험에서 나왔습니다. Claude는 첫 버전에서 초보자가 놓칠 세부를 채우고, Codex는 정해진 범위 안에서 검사하고 고칩니다.
현재 명령은 Claude Code와 Codex CLI를 움직입니다. 그 안의 아이디어는 다른 도구나 하네스에도 적용할 수 있고, AI 하나만 써도 여러 AI를 함께 써도 됩니다. 각 단계는 작업에 맞는 AI에게 맡기세요.
004 / 요청 하나가 작업이 되는 과정
원하는 결과를 평소 말로 요청합니다. AI는 목표와 범위를 적고, 변경의 영향을 살피고, 고칠 경로를 예약하고, 작업에 쓸 도구를 고릅니다. Claude가 구현하면 Codex가 검토하고 수정한 뒤 다시 검토합니다.
게이트는 검사와 결과를, 프로젝트 위키는 결정과 이유를 코드 옆에 남깁니다. v0.3.0에서는 선택형 TypeSafe Jev가 난이도를 판단해 모델 선택에 반영할 수 있습니다. 사용할 수 없거나 확신이 낮으면 규칙이 판단합니다.
005 / 사용자가 결정하는 순간
사용자는 요청하고, AI가 판단을 물으며 멈추면 답하고, 반영 전에 확인합니다. 같은 문제가 반복되거나 설계 선택이 필요해지면 작업을 계속 밀어붙이지 않고 사용자의 답을 구합니다.
“리뷰 끝났어?”, “게이트 다 통과했어?”라고 물어보고 증거를 살펴보세요. 코드를 만드는 일, 결과를 검사하는 일, 반영을 승인하는 일은 각각의 단계이며 마지막 확인은 사용자에게 남습니다.
006 / 무료 오픈소스, 내 방식으로 시작
oah는 MIT 라이선스로 공개된 무료 오픈소스입니다. 소스를 읽고 고치고, 유용한 부분을 내 작업 방식에 가져다 쓸 수 있습니다. 함께 사용하는 AI 도구와 선택형 서비스는 각자의 계정과 이용 요금을 따릅니다.
현재 v0.3.0은 macOS와 네이티브 Windows를 지원하며 git과 pull request에 익숙한 개발자를 위한 버전입니다. 설치한 뒤 프로젝트에서 oah init을 실행하고 작은 hello-oah 예제로 시작해 보세요. 설치 안내와 문서에서 각 단계를 확인할 수 있습니다.
v0.3.0에 출시됐다. 리뷰는 플래그, 패킷, 프로필, 판정이 무엇을 말해도 위험도에 맞는 하한 아래로 실행하지 않는다. 하한은 medium이고, 범위에 위험한 경로가 있거나 작업 종류가 요구하면 high다. 범위에서 다시 계산하며, 거절은 리뷰 라운드나 시도를 쓰지 않는다.
필요한 상황
싼 프로필이나 플래그, 판정기가 리뷰어를 낮출 수 있다면 나머지 모두를 지키는 단계가 조용히 약해질 수 있다.
동작 방식
하한은 리뷰 범위에서 다시 계산하므로 플래그, 패킷의 축, 프로필, 판정기의 답으로 낮출 수 없다.
고정된 점수 척도 위의 기준이므로 좁은 allowed_models로도 낮출 수 없다.
tier, 모델, 강도가 하한 아래인 리뷰는 OAH_MODEL_BELOW_FLOOR로 멈추고 라운드나 시도를 쓰지 않는다.
리뷰 영수증에는 모델군, 하한, 프로필, 모델의 출처, 쓴 점수가 남는다.
요구 사항
v0.3.0 이상이 필요하다.
한계와 복구
점수가 없는 모델을 직접 적었다면 OAH_MODEL_FLOOR_UNCHECKED를 알리고 실행하며, 영수증에 하한을 확인하지 못했다고 남긴다.
허용된 모델 가운데 하한에 닿는 모델이 없으면 리뷰가 멈추고 메시지가 allowed_models를 알려 준다. 메시지가 알려 준 tier를 쓰거나 고정 모델, 후보, quality_order, allowed_models를 바꾼다.
예를 들어 리뷰에 --tier low를 주면 거절된다. 메시지가 알려 준 tier를 쓴다.