Claude Code와 Codex를 연결해 구현과 검증을 한 작업 흐름으로 진행하는 도구 모음
Translation pending
AI summary · README
PluginsJavaScript · TypeScriptGitHub @kimbyungsuSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
Loading the full README. The saved excerpt is shown below.
Codex Peek — Claude Code ↔ Codex / Codex ↔ Codex Harness Claude Code ↔ Codex(OpenAI) 를 하나의 작업 흐름으로 잇는 도구 모음입니다. (마켓플레이스용 영문 소개: docs/README.en.md) 사람이 두 에이전트 사이에서 답을 복사·전달하지 않아도, 세션을 고정하고 고정 계약(규약)을 매 턴 주입하며, 원하면 구현→검증 2트랙을 하니스가 강제합니다. 기본 운용은 Claude Code(구현)↔Codex(검증)이고, 대시보드에서 Codex(구현)↔별도 Codex(검증)로 프로젝트별 전환할 수 있습니다. 경로 표기: 이 문서의 ~/.codex·~/.codex-bridge·~/.claude는 모두 기본값입니다. ~/.codex(코덱스 홈)는 $CODEX_HOME 또는 자동 탐지해 기억한 경로가 없을 때만 쓰는 기본값이고, ~/.codex-bridge·~/.claude는 각각 $CODEX_BRIDGE_HOME·$CLAUDE_CONFIG_DIR이 없을 때의 기본값입니다. 정확한 경로·데이터 목록은 PRIVACY.md 참고. 세 부분으로 구성됩니다.Read the full README ↗
Claude Code ↔ Codex(OpenAI) 를 하나의 작업 흐름으로 잇는 도구 모음입니다. (마켓플레이스용 영문 소개: docs/README.en.md) 사람이 두 에이전트 사이에서 답을 복사·전달하지 않아도, 세션을 고정하고 고정 계약(규약)을 매 턴 주입하며, 원하면 구현→검증 2트랙을 하니스가 강제합니다. 기본 운용은 Claude Code(구현)↔Codex(검증)이고, 대시보드에서 Codex(구현)↔별도 Codex(검증)로 프로젝트별 전환할 수 있습니다.
경로 표기: 이 문서의
~/.codex·~/.codex-bridge·~/.claude는 모두 기본값입니다.~/.codex(코덱스 홈)는$CODEX_HOME또는 자동 탐지해 기억한 경로가 없을 때만 쓰는 기본값이고,~/.codex-bridge·~/.claude는 각각$CODEX_BRIDGE_HOME·$CLAUDE_CONFIG_DIR이 없을 때의 기본값입니다. 정확한 경로·데이터 목록은 PRIVACY.md 참고.
세 부분으로 구성됩니다.
| 구성 | 위치(런타임) | 역할 |
|---|---|---|
| 브릿지 엔진 | ~/.codex-bridge/codex-bridge.js | Claude 세션 ↔ Codex 세션 연결을 영속 저장하고, 연결된 Codex 세션으로 ask(resume)·link·status·find |
| 훅(하니스 강제) | ~/.codex-bridge/*.js | codex-guard(raw codex 직접호출 차단) · contract-inject(계약 매 턴 주입) · verify-guard(검증 모드 시 종료 차단) |
| VS Code 확장 | 이 저장소 루트 | 상태바·호버·대시보드로 연결 상태를 보여주고, 계약/체크박스를 편집하고, 연결을 갈아끼움 |
확장 혼자로는 동작하지 않고 엔진(bridge/)과 훅이 함께 있어야 합니다 — 마켓플레이스로 설치하면 확장이 엔진을 자동 배치하고, 훅은 알림에서 동의 1클릭으로 등록합니다(아래 "설치" 참고). 레포 한방 설치(install.js)도 그대로 지원됩니다.
한 화면에 Claude(구현) ⇄ Codex(검증) 연결 · 검증 모드 · 프로젝트 규칙 · 검증 진행 라이브 스트립 · 코덱스 두뇌(모델·생각강도) · 실제 검증 대화가 모입니다.
Claude(구현) → 브릿지(훅 4종) → Codex(검증) → 근거 회신 (사람이 중계 안 함). 검증이 '흉내'가 아님을 보장하는 층(증명 V1 · Bash 변경 감지 V2 · 재검증 V4 · 근거 점검 결정2)과, 지금 검증이 어느 단계인지 상태바·대시보드에 라이브 표시합니다.
상태바 — 검증 진행 라이브 (진행 중에만, 단계별 색):
[🧑 Claude] ▶▶ 검증중 ▶▶ [🔍 Codex] ← 코덱스에 묻는 중(코덱스 박스 초록)
[🧑 Claude] ◀◀ 반영중 ◀◀ [🔍 Codex] ← 검증 답 반영 중(클로드 박스 주황)
$(alert) Codex 검증 실패 1 ← Codex 결론이 '검증 실패' = 빨강(고쳐 재검증 통과하면 자동 사라짐)
$(alert) Codex 검증 미완 1 ← 검증 없이 끝난 턴 = 빨강(확인 전까지 지속)
$(warning) 두뇌 설정 어긋남 1 ← 설정 모델/생각강도가 최근 실제 응답과 다름 = 노랑
$(warning) Codex 근거 의심 2 ← 검증 답이 인용한 '파일:라인'이 존재하지 않음 = 노랑
(상태바 배경 채움색은 VS Code가 빨강/노랑만 허용 → 단계 구분은 글자색 + 화살표로, 빨강은 검증 실패·미완 경보 전용.)
resume 이벤트를 만들지 않는 경우 첫 프롬프트가 안전망으로 고정합니다. 대시보드에서 구현 세션을 다른 방으로 수동 우회 연결하지 않습니다. 검증자는 기본적으로 Claude Code ↔ Codex의 검증 세션을 실시간 공유하며(보라색 선·동일 세션 표지), 원할 때만 기존의 다른 세션을 C↔C 전용 검증자로 지정할 수 있습니다. 같은 세션의 양역할과 기존 구현 역할의 임의 탈취는 거부합니다.~/.codex/hooks.json의 SessionStart/UserPromptSubmit/PostToolUse/Stop에서 대화 진입 자동고정, 구현 규칙, 전달 원칙, 검증 증명 게이트, 3트랙 플랜 게이트를 적용합니다. 구현 Codex는 자동 고정 당시 모델·추론강도와 최근 실제 응답을 모두 비교하고, 검증 Codex는 해당 운용 모드에 저장한 모델·추론강도와 비교해 무결성 경고를 냅니다.~/.codex/hooks.json만 실행 권위로 사용합니다. 공식 hooks/list에서도 이 파일의 네 훅이 모두 신뢰됐는지 별도로 확인하며, 미신뢰 상태면 Codex 설정 → Hook에서 검토·신뢰하도록 자동 경고합니다. 신뢰 후 사용하려는 Codex 대화를 시작·재개하면 기존 구현 연결을 먼저 해제하지 않아도 그 대화로 구현 연결과 초록 표시가 자동 이동합니다. 목록 클릭이 실제 재개를 만들지 않으면 첫 프롬프트 rollout이 보조 고정합니다. 실제 lifecycle heartbeat가 최신 턴과 맞지 않으면 준비 완료로 표시하지 않고 닫을 수 없는 빨강 경보를 냅니다.~/.codex-bridge/links.json 에 Claude 세션 id + 워크스페이스 두 키로 영속 저장 → 재접속·압축·리로드에도 유지.ask: 연결된 Codex 세션으로 resume. 연결이 없으면 보고만 하고 새 세션을 임의로 만들지 않음. 첫 소통만 --allow-new 로 명시 생성.ask와 --force-resend도 차단하며, 새 세션은 긴 session_meta도 끝까지 판독해 생성 직후 연결합니다. 호출 창이 먼저 끊겨도 재전송하지 말고 대시보드/ask-active status를 확인하세요.ask-start로 한 번만 시작하고 짧은 ask-wait를 반복하므로 외부 도구의 10분 실행창이 먼저 닫혀도 설정한 deadline까지 작업이 살아 있습니다.codex exec/resume 직접 호출은 codex-guard(PreToolUse 훅)가 차단 → 모든 Codex 접근이 브릿지를 통과.대시보드에서 Claude 지침과 Codex 규약을 입력합니다. 규칙은 한 줄에 하나씩(Enter로 구분) — 글자수와 무관하게 줄 단위로 끊으며, 각 줄이 개별 규칙(번호 1, 2, 3…)이 됩니다.
프로젝트별 분리: 계약(규칙·검증 모드 포함)은 워크스페이스마다 따로 저장됩니다(
~/.codex-bridge/contracts/<키>.json). 여러 VS Code 창을 동시에 띄워도 창마다 자기 프로젝트의 계약·연결만 보고/적용합니다(대시보드·상태바는 그 창의 폴더를 따라감). 계약은 프로젝트 전용입니다 — 미설정 프로젝트는 빈 계약(주입 0)이며 전역으로 상속하지 않습니다. 칸을 비우면 그 칸 규칙만 빠지고(최신성), 바꾸면 바뀐 값이 그 프로젝트에만 유지됩니다. (전역 기본값·상속·기본값 복원은 별개 층인 단계별 기본 원칙에만 있습니다 — §3.)
contract-inject(UserPromptSubmit 훅)가 매 턴 컨텍스트에 주입.ask 프롬프트 앞에 prepend.체크리스트 강제 체크박스(Claude·Codex 각각)는 그 규칙들을 어떻게 주입할지 정합니다.
[고정 규약 · Claude Code · 매 턴 적용되는 상수]
{"rules":[{"n":1,"r":"추측 말고 파일을 직접 읽어라"},{"n":2,"r":"완료 전 검증했는지 밝혀라"}]}
[계약점검]
- 1) <준수|위반|해당없음> — <한 줄 근거>
- 2) <준수|위반|해당없음> — <한 줄 근거>
주입은 규칙을 매 턴 눈앞에 둬 "잊어버림"을 막지만, AI의 실제 준수를 100% 보장하진 않습니다(형식적 체크 가능). 강제 명시이지 강제 이행은 아닙니다.
대시보드 세그먼트 토글로 국면별 4모드 중 선택합니다. ON인 모드에서, 트리거가 걸린 턴은 verify-guard(Stop 훅)가 Claude의 종료를 막고, Claude가 codex-bridge ask로 Codex 검증을 받아 그 결과(판정+근거)를 반영해 보고하도록 강제합니다(사람이 두 모델 사이를 중계하지 않음).
| 모드 | 검증을 강제하는 트리거 |
|---|---|
| 꺼짐(off) | Codex 검증 왕복을 강제하지 않음(기본). ※사용자 계약(Claude 행동규칙) 주입은 별개 축 — 계약이 설정돼 있으면 off여도 주입됨(주입 시점은 사용자 계약 카드의 꺼짐/플랜/항상 설정 따름). |
| 코드 변경 시(code) | 파일 편집(Write/Edit/MultiEdit/NotebookEdit) 또는 git 저장소의 tracked/untracked 변경(Bash 경유 생성·수정·삭제 포함; gitignored·비-git은 제외) 발생 턴 |
| 플랜 확정 + 코드 변경 시(plancode) | ExitPlanMode(플랜 확정) 또는 위 파일 변경 발생 턴 |
| 모든 턴(always) | 모든 응답 |
tool_use(ExitPlanMode·편집 툴) + (git 저장소면) 실제 파일 변경(바뀐 파일의 수정시각). 즉 sed -i·생성기·rm 같은 Bash 경유 변경도 git 저장소에서는 잡습니다(키워드 추측이 아니라 git status의 tracked/untracked 변경 기준). 단 비-git 폴더·gitignored 파일·git status 실패/타임아웃은 Bash 변경을 못 잡고 편집 툴 신호로만 폴백합니다. 별도 모델 추론이 없어 추가 토큰이 들지 않습니다.~/.codex-bridge/base-directive.json·base-directive.en.json 오버라이드[언어별]; 비우면 기본값). 3트랙이면 같은 패널에 ④ 정찰 기본 원칙(정찰 AI 태도 — 수정 가능)과 ④-형식 계약(지도 ①~⑥ 양식 — 기계가 읽는 배선이라 잠금·내용만 공개) 칸이 늘어납니다.ask 앞에 붙습니다 — 코드·파일을 실제로 열어 확인 / 생략·요약·축약 금지 / 요청자가 준 파일·범위는 시작점일 뿐 한계가 아님 — 요청자의 결론을 전제로 삼지 말고 호출부·테스트·문서까지 독립적으로 넓혀 반례를 찾으라 / 본문에 항목별 근거·보완·실패 사유를 먼저 쓰고, 판정 결론은 맨 마지막 한 줄에만(검증: 통과 / 통과(보완) / 보류 / 실패) — 근거를 먼저 보고 결론을 마지막에 둬 성급한 오라벨을 줄임(findings-first / verdict-last). 엔진(withContract)이 강제하므로 Claude가 sloppy하게 요청해도 Codex 입력 단에서 방어됩니다.verify-guard가 그 증명(이번 사용자 발화 + 마지막 변경 이후 + 응답 존재)을 봅니다. (echo … codex-bridge ask 같은 흉내로는 통과 못 함.)수용·처리 / 근거 있는 반박·종결 / 영수증 있는 보관함 이관 / 사용자 판단 필요로 한 번씩 분류합니다. 각 항목은 키로 시작하는 한 줄이며, 수용의 변경·확인·근거와 반박의 관측·이유·근거는 각 칸 자체에 식별 가능한 파일·설정·시험·측정값이 있어야 합니다. 보관함은 그 지적과 제목이 같은 열린 영수증이 있어야 합니다. 앞의 세 갈래는 구현 담당이 정리하고, 마지막 갈래가 있을 때만 질문 하나로 묶습니다. 이 검증 상한 마감문을 끝내 쓰지 못한 경우에만 별도 빨강 **‘검증 상한 마감 누락’**을 남기며, 질문이 없어 자동 정리돼도 검증 통과로 표시하지 않습니다. 을 강제 → ‘검증받은 상태 = 최종 상태’.상태바(연결): 연결된 Codex 세션 주제 / 미연결.
상태바(검증 진행 라이브): 검증이 도는 동안 [🧑 Claude] ▶▶검증중 [🔍 Codex]로 단계가 흐릅니다(작업중→검증 요청→Codex 생성중→반영중→완료, 단계별 글자색·라운드 카운터). 브릿지가 동기로 막혀 있어도 코덱스 rollout 파일이 최근 갱신된 것을 보고 ‘Codex 생성중’을 라이브 추정합니다.
상태바(무결성 경보): 빨강 세 종류 — 검증이 필요했는데 끝내 안 됐으면 ‘검증 미완’(확인 전까지 지속), Codex 결론이 ‘검증 실패’면 ‘검증 실패’(고쳐 재검증해 통과하면 자동 사라짐), 왕복 상한 뒤 마지막 지적의 네 갈래 행선지를 정리하지 못하면 ‘검증 상한 마감 누락’(마감문을 완성하면 자동 사라짐). 마지막 빨강은 정상적인 상한 도달 자체가 아니라 AI가 맡아야 할 분류까지 빠진 상태이므로 그냥 지나치면 안 됩니다. 노랑 세 가지 — Codex 결론이 보류·불가·정보부족이면 ‘Codex 보류·불가’, 검증 답의 인용 근거가 실제 파일:라인과 불일치(없는 줄)거나 이 기록에서 다룬 흔적이 확인 안 되면 ‘근거 의심’, 설정한 모델/생각강도가 최근 실제 응답과 다르면 ‘두뇌 설정 어긋남’. 빨강이 있어도 함께 뜬 노랑 건수를 같이 표기. 우선순위 = 빨강 > 노랑 > 진행.
상태바·대시보드(두뇌 drift 경고): 의도한 모델·생각강도가 최근 실제 응답과 어긋나면 노랑 ‘두뇌 설정 어긋남’으로 알립니다. 검증 Codex의 모델·추론강도 설정은 프로젝트뿐 아니라 운용 모드별로 분리되며, C↔C 전용값이 없으면 Claude 모드 설정을 실시간 상속합니다. C↔C 구현 Codex도 자동 고정 당시 모델·추론강도와 최근 rollout을 모두 비교합니다. Claude Code만 모델 계열만 비교합니다 — 실제 추론강도 레벨이 대화기록에 없어 정직하게 판단할 수 없기 때문입니다. Claude의 모델 의도는 해당 프로젝트 대화의 마지막 /model 또는 포커스 창의 모델 피커 선택(cc-intent.json)에서 읽으며, 다른 창의 전역 설정 변화는 거짓 경고를 피하려고 의도로 간주하지 않습니다. 비교 대상은 대시보드 기준 폴더의 같은 대화와 7일 이내 실제 응답으로 제한합니다.
정찰(3트랙) 용어 한눈에 — 대시보드의 정찰 구역은 하나의 흐름입니다(각 단계에 LLM 사용 여부 배지):
| 단계 | 무엇 | LLM | 비용 |
|---|---|---|---|
| ① 변경 감지 | 지금 바뀌는 파일 + 과거에 함께 바뀐 통계(옛 표기 '범위 장부') | ⚙ 없음 | 0 |
| ② 영향지도 | 이 변경이 어디까지 번질지 정찰 AI가 미리보기(옛 표기 '영향지도 게시판') | ⚡ 호출 | Claude 정찰=별도 과금 없음(쓰던 사용량 범위 · 클로드-코덱스 모드의 기본) / DeepSeek 정찰은 키 / Codex 정찰은 쓰는 Codex 계정 사용량 범위(코덱스-코덱스 모드의 기본) |
| ③ 관찰 일지 | 검증을 지나며 맞은 것·틀린 것이 자동 축적(옛 표기 '관측 장부'·'MAP 장부') | ⚙ 추가 호출 없음 | 0 (검증 대화에 편승) |
| ④ 확정 교범 | 원할 때만 도장 찍어 저장소 문서(docs/MAP.md)로 — 안 써도 ①~③은 그대로 자동. 전환(P3b cutover — 수동 명령) 후에는: 기존 문서는 동결(이관 소스 배너)되고 신규 승인은 Project MAP 경로로만 들어가요 — "문서를 건드리지 않는다"는 약속은 전환 전까지의 서술이며, 전환은 사용자가 직접 실행할 때만 일어납니다 | 👤 선택 | — |
적재·승격·강등은 전부 자동입니다. 사람의 직접 확인/정정과 고정/차단/교범 기록은 실제 사정을 아는 경우에만 쓰는 선택적 예외이며, 누르지 않아도 자동 흐름은 멈추지 않습니다. 일지의 은 다음 정찰 자료에 우선 동봉된다는 뜻이지 코드나 Project MAP에 자동 적용됐다는 뜻이 아닙니다. 대시보드는 기계 확인 기록·승격 가능한 증거·파일 취급 확인 불가를 나눠 보여줍니다. 상태바 호버에는 "지금 실행 중인 LLM 호출" 여부가 상시 표시됩니다.
브릿지는 codex 바이너리를 경로로 뒤지지 않고 다음 순서로 해석합니다(설치 형태·잦은 버전 업데이트에 안 깨짐):
CODEX_BIN (직접 지정)codexBridge.codexPath — 비우면 설치된 Codex 확장(openai.chatgpt 등) 내부의 codex를 확장이 vscode API로 자동 탐색해 기록(포터블/설치형·버전 무관, 활성화마다 갱신)PATH 의 codex (CLI 설치 표준; Windows .cmd는 셸 경유, 프롬프트는 stdin이라 따옴표 안전)진단: node ~/.codex-bridge/codex-bridge.js doctor → 지금 어떤 codex를 어디서 쓰는지·실행 가능 여부·연결 상태·브릿지 폴더 일치를 한 번에 표시(막혔을 때 추측 대신 이것부터). (홈 경로에 공백이 있으면 경로를 따옴표로 — node "$HOME/.codex-bridge/codex-bridge.js" doctor. 아래 CLI 섹션 노트 참조.)
개발 도구를 따로 내려받거나 버전 숫자를 올리지 않아도 되는 설치 묶음입니다.
install.cmd를 더블클릭하고, macOS/Linux는 압축을 푼 폴더에서 sh install.sh를 실행합니다. Node.js 20+만 있으면 되며, 묶음 안에 미리 빌드된 VSIX가 들어 있어 npm install은 필요 없습니다.Developer: Reload Window를 한 번 실행합니다.이 경로는 확장·브릿지·훅과 개발용 스크립트(회고·재조정·동기화)까지 함께 둡니다 — 정찰(3트랙) 실행층은 마켓/VSIX 설치본에도 똑같이 들어 있습니다(2026-09-16 이관). 이미 0.1.108이 설치된 PC에서도 설치기가 기존 확장 폴더를 강제 삭제하지 않고, 바뀐 런타임만 백업한 뒤 같은 버전에 안전하게 갱신합니다. 비표준 extensions 폴더를 쓰는 환경만 CODEX_BRIDGE_EXTENSIONS_DIR로 그 폴더를 지정하면 됩니다.
확장만 빠르게 설치하려면(검증·대시보드·정찰 3트랙 모두 동작) **codex-bridge-0.1.108.vsix**를 받아 VS Code의 확장: VSIX에서 설치...로 여세요. 같은 0.1.108을 이미 쓰는 PC는 VSIX 강제 재설치 대신 위 전체 설치 묶음을 사용해야 안전하게 최신 코드가 반영됩니다. 파일 지문은 v0.1.108 릴리스 페이지의 SHA256SUMS.txt에서 확인할 수 있습니다.
VS Code 마켓플레이스(또는 vsix)로 확장을 설치하면:
~/.codex-bridge)에 자동 배치합니다 — 다른 앱 설정은 건드리지 않습니다. (배치 표식 .bridge-deployed-by.json으로 확장 버전 업그레이드 시에만 갱신)settings.json)은 이 동의 후에만 병합됩니다(수정 전 settings.json.bak.<시각> 백업, 기존 다른 훅 보존 — 레포 설치기와 같은 규칙).Codex Bridge: Claude Code 검증 훅 설치로 언제든 다시 실행)node install.js uninstall이 담당).node "<브릿지 홈>/scope-scout-self.js" <프로젝트>. 저장소에만 있는 것은 개발용 도구(회고·재조정·동기화)뿐입니다. 정찰 담당의 기본값은 모드를 따릅니다 — 클로드-코덱스는 Claude 정찰(무과금), 코덱스-코덱스는 Codex 정찰. 담당의 명령줄(또는 DeepSeek 키)이 없으면 대시보드가 '준비 안 됨'과 사유를 보여 주고, 플랜 게이트와 자동 지시는 따라 할 수 없는 실행을 요구하지 않고 통과합니다(2026-09-17).이미 레포 한방 설치(
install.js)를 쓴 경우: 설치기는 확장의 배치 표식을 지우고, 확장은 다음 활성화 때 브릿지 파일을 자기 번들과 대조합니다 — 같은 세대면 관리 모드로 승격해 다음 업데이트부터 자동 동기화하고, 무수정 설치본이 구세대면 안전하게 전체 동기화하며, 수정 흔적이 있으면 덮지 않고 경보와 함께 빠진 파일만 채웁니다(2026-08-12 혼합 세대 사고 뒤 '무조건 존중' 규칙 폐기).
레포 루트에서 한 줄이면 됩니다. 브릿지 엔진 복사 + ~/.claude/settings.json 훅 자동 병합(기존 훅 보존) + 백업 + **확장 설치(설치 시 항상 현재 소스로 빌드 → 캐시된 옛 VSIX로 stale 설치되는 일 방지)**까지 한 번에.
npm install
node install.js # 또는: sh install.sh / Windows: install.cmd 더블클릭
settings.json.bak.<시각>)을 남깁니다. 설정이 올바른 JSON이 아니면 건드리지 않고 중단합니다.node 경로는 셸에서 실제 실행되는지 확인해 절대경로로 고정합니다(공백 있는 경로·PATH에 node 없는 환경 대응).PATH에 code가 없어도 됩니다 — 지금 실행 중인 VS Code(포터블/무설치형 포함)와 OS 표준 설치 위치를 자동탐지합니다(여러 VS Code가 있으면 지금 띄운 그 VS Code 우선). 아주 비표준 환경(예: code-server·비표준 Flatpak·특이 포터블 경로)이라 못 찾으면 CODE_CLI에 code(Windows는 code.cmd) 실행파일 경로를 지정하세요. --dry-run이 어떤 code를 쓸지 미리 보여줍니다.node install.js --dry-run (아무것도 쓰지 않고 무엇을 바꿀지 보여줌).node install.js uninstall (우리 훅만 제거, 백업 보존) / 완전삭제 node install.js uninstall --purge.CODEX_BRIDGE_HOME(브릿지 폴더) · CLAUDE_CONFIG_DIR(Claude 설정 폴더) · CODEX_BRIDGE_NODE(훅용 node 절대경로) · CODE_CLI(VS Code code 경로).Developer: Reload Window.설치기는 외부 파일인
~/.claude/settings.json을 바꿉니다. 무엇이 바뀌는지 먼저 보려면--dry-run을 권합니다.
아래는 수동으로 단계별로 설치하려는 경우의 절차입니다(한방 설치를 썼다면 건너뜁니다).
bridge/ 의 .js 파일들을 홈의 ~/.codex-bridge/ 로 복사합니다.
mkdir -p ~/.codex-bridge
cp bridge/*.js ~/.codex-bridge/
계약은 대시보드에서 프로젝트별로 작성합니다 — 저장하면 그 프로젝트 파일(~/.codex-bridge/contracts/<키>.json)에만 기록되고 다른 프로젝트로 상속되지 않습니다(미설정 프로젝트는 빈 계약). (contract.json은 폴더 없는 창의 저장 폴백·구버전 호환용 레거시일 뿐 상속 시드가 아닙니다. contract.example.json은 계약 구조 예시.)
settings.example.json 의 hooks 블록을 Claude Code ~/.claude/settings.json 에 병합합니다.
<HOME> 을 실제 홈 경로(예: C:/Users/이름)로 바꾸고, 기존 다른 훅은 보존하세요.
글로벌(
~/.claude/settings.json)에 넣어도 안전합니다 — 프로젝트별로 반복 설정할 필요 없음. 훅은 항상 등록돼 있되, 실제 동작·비용은 전적으로 확장 대시보드(고정 계약 / 검증 모드)가 제어하기 때문입니다:
codex-guard— 직접codex호출 가드. 모델 토큰 0(통과/차단만).verify-guard— 검증 모드가 꺼짐이면 즉시 no-op. 켰을 때만, 고른 트리거에서 동작.contract-inject— 대시보드 계약 칸에 적은 줄만 주입. 칸을 비우면 주입 0.즉 기본/비활성 상태에서는 글로벌이어도 사실상 무비용이고, 무엇을 켤지는
settings.json을 건드리지 않고 대시보드에서 토글합니다. (에이전트로 설치를 자동화할 때 "글로벌 훅이 매 턴 비용 아니냐"는 우려가 불필요한 이유)
npm install
npm run package
code --install-extension codex-bridge-*.vsix --force
설치 후 Developer: Reload Window.
Codex 실행 파일은 OpenAI ChatGPT VS Code 확장(
openai.chatgpt-*)의codex바이너리를 자동 탐색합니다. 필요 시CODEX_BIN환경변수로 지정하세요.
~/.codex-bridge/codex-bridge.js 는 Codex와 실제로 대화하는 엔진입니다. 평소엔 확장·훅이 자동으로 호출하므로 직접 칠 필요가 없고, 아래는 수동 연결·상태 확인·문제 진단용입니다.
💡 홈 경로에 공백이 있으면(예:
C:/Users/First Last) 경로를 따옴표로 감싸세요 —node "$HOME/.codex-bridge/codex-bridge.js" doctor.node가 PATH에 없으면 node를 절대경로로(예:"C:/Program Files/nodejs/node.exe").CODEX_BRIDGE_HOME을 설정하면.codex-bridge위치를 옮길 수 있습니다(그땐 훅 명령 경로도 그에 맞추세요).
node ~/.codex-bridge/codex-bridge.js ask "<프롬프트>" # 연결 세션에 보내고 답 받기(없으면 보고) ※Codex↔Codex 모드에선 미지원 — ask-start 사용
node ~/.codex-bridge/codex-bridge.js ask --allow-new "<...>" # 첫 소통: 새 세션 생성+연결
node ~/.codex-bridge/codex-bridge.js ask-start --allow-new "<...>" # ※Codex↔Codex 모드의 검증은 이 내구 경로만 인정(ask-wait <job-id>로 회수)
node ~/.codex-bridge/codex-bridge.js ask --net "<...>" # 이 1회만 검증자 네트워크 허용(원격 확인용 — 아래 안전 원칙 참조)
node ~/.codex-bridge/codex-bridge.js ask-active status # 이 워크스페이스의 실행 중/비정상 종료 검증 확인
node ~/.codex-bridge/codex-bridge.js timeout # 대시보드 대기시간 + 외부 호출 최소 timeout(ms) 확인
node ~/.codex-bridge/codex-bridge.js link <codex-session-id> # 기존 Codex 세션에 연결
node ~/.codex-bridge/codex-bridge.js link --last # 가장 최근 세션에 연결
node ~/.codex-bridge/codex-bridge.js status | find # 상태 / 후보 목록
node ~/.codex-bridge/codex-bridge.js doctor # 지금 어떤 codex를 쓰는지·실행 가능 여부·연결 상태 진단
한 명령이 버전 올림 → 전체 테스트 → vsix 빌드(+이 PC 설치) → 깃헙 push → 마켓 게시/안내까지 처리합니다(조수·기억·PC와 무관하게 저장소에 박힌 절차):
npm run release # patch 버전 올림(0.1.74→0.1.75) 후 전 과정
npm run release -- --minor # 0.2.0 식으로 올림 (--major, --version 1.2.3 도 가능)
npm run release -- --publish-only, 버전이 또 올라가지 않음).VSCE_PAT(마켓 publish 권한 토큰)가 있으면 자동 — 단 push까지 된 완전 배포일 때만(--no-push면 마켓 게시도 건너뜀 — 마켓만 앞서가는 반쪽 배포 방지). 없으면 업로드할 vsix 경로를 안내(관리 페이지 ⋮ → Update에 드래그 1회). 마켓은 같은 버전 재업로드를 거부하므로 버전은 스크립트가 매번 올립니다.~/.codex 아래 sessions)은 평소엔 읽기만 합니다. 단 하나의 예외: 대시보드에서 숨긴 세션을 ‘영구삭제’로 명시 확인(확인 모달·공유 세션 경고)하면 그 Codex rollout 파일을 삭제합니다(사용자가 직접 누른 경우만). 그 외에는 원본 rollout을 옮기거나 지우지 않습니다.~/.codex-bridge)에 씁니다: links.json(연결)·계약(contracts/<키>.json 프로젝트별 · contract.json은 레거시 전역 폴백·상속 안 함)·active.json(현재 폴더)·proofs/(검증 증명)·integrity.json(무결성 경보)·phase.json(진행 단계)·base-directive.json(기본 지침 오버라이드)·cc-intent.json(프로젝트별 Claude 모델 선택 귀속 — 모델명·시각만, 30일 자동정리)·stats/verdicts.jsonl(검증 통계 메타 — 프롬프트/답 원문 미저장·60일 자동정리). 모두 런타임 데이터라 저장소에 포함되지 않습니다. (경로는 $CODEX_HOME·$CODEX_BRIDGE_HOME로 바뀔 수 있음 — PRIVACY.md 참고.)ask --net을 명시하면 그 1회에 한해 네트워크를 허용하되 파일은 여전히 읽기 전용입니다 — 단 이때 도메인 제한은 걸리지 않으므로(Windows 실측: allowlist 미집행) "원격 저장소 상태를 직접 확인할 필요가 있는 검증"에만 쓰세요. 전역 설정(config.toml)은 건드리지 않습니다.이 도구가 무엇을 보장하고, 무엇은 보장하지 않는지를 한곳에 모았습니다. 과장 없이 읽고 쓰세요.
links.json)은 재접속·압축·리로드에도 유지되고, ask는 연결 세션으로 자동 resume합니다.echo·실패·미연결·이전 턴 검증·검증 후 재수정으로는 통과하지 못합니다.tool_use + (git 저장소면) git status의 실제 변경시각 기준이라 추가 토큰이 들지 않습니다. 단 git 변경 감지는 git 저장소의 tracked/untracked 변경에 한정 — 비-git 폴더·gitignored 파일·git status 실패는 Bash 경유 변경을 못 잡고 편집 툴 신호로만 폴백합니다(완전한 변경 감지를 보장하지는 않음).active.json을 따릅니다. 같은 폴더를 여러 창에서 동시에 굴리면 마지막으로 제출한 창이 이 값을 덮어, 드물게 다른 창 기준으로 표시/비교할 수 있습니다(세션별 active/<세션>.json + 폴더·신선도 가드로 대부분 막히지만 완전 격리는 범위 밖).subst 드라이브·원격/컨테이너 경로로 같은 폴더가 다른 경로처럼 보이면 격리·표시가 어긋날 수 있습니다(실제 경로로 열면 정상). COMPATIBILITY.md 참고.파일:줄이 실제와 맞는지/세션에서 다뤘는지를 보수적으로 표시할 뿐, 글롭·파이프·출력 잘림에선 거짓 노랑이 날 수 있습니다(판정이 아님).doctor 출력·실행 명령이 바뀌면 깨질 수 있습니다(그때는 doctor로 진단). COMPATIBILITY.md 참고.Developer: Reload Window 해야 적용됩니다.MIT — LICENSE 참조.
contract.json의 verify: true는 자동으로 code 모드로 해석됩니다(하위호환).호버: 세션 id·주제·연결시각·마지막 활동.
대시보드(클릭): 연결 상태(Claude⇄Codex 모노그램·연결 라인), 검증 진행 스트립([Claude]⟷[Codex] 방향·활성 박스), 무결성 배너(빨강=검증 미완·Codex 검증 실패 / 노랑=Codex 보류·불가[정보부족 등]·근거 의심[불일치·미확인]·두뇌 설정 어긋남, 각 줄은 빨강/노랑 점으로 분리, ‘확인함’으로 해제), 검증 대화(사용자 말풍선 + Codex 카드·판정 4색 칩[통과 / 통과(보완) / 보류 / 실패]·긴 글 "펼치기"), 후보 세션 목록(첫 발화로 식별)+[연결]·숨김/복원, 고정 계약 편집칸+체크박스, 검증 모드 세그먼트 토글, 코덱스 두뇌 설정(모델·생각강도 선택, 계정 캐시 기반 — Claude 쪽은 카드 없이 위 두뇌 drift 경고만), 검증 대기시간(기본 8분·1~60분, 전역), 트랙 세그먼트(2트랙=구현↔검증 기본 / 3트랙=+정찰 — 위 '정찰(3트랙) 용어 한눈에'의 4단계 흐름[①변경 감지 ②영향지도 ③관찰 일지 ④확정 교범]이 대시보드에 켜집니다. 프로젝트별 저장 · 관찰(advisory) 중심 — 단 하나의 예외는 플랜 게이트(3트랙에서 기본 켜짐, 2026-07-09 승격): 영향지도가 없거나 낡으면 플랜 확정 전에 먼저 지도를 요청하되 세션당 2회까지만 막고 이후 통과(fail-open — 오류·판정불가면 절대 안 막음), 안내에는 그 프로젝트의 관찰 신호가 함께 실리며, node "<브릿지 홈>/scope-gate.js" <프로젝트> off로 언제든 끌 수 있습니다(그 외에는 아무것도 막거나 강제하지 않음) · 외부로 나가는 경로는 네 갈래 — Codex 검증을 보낼 때(2트랙 기본 동작: 검증 요청문+자동 동봉[지도 조각·결합 확인 문안·하네스 기본 지침]이 쓰시던 codex CLI로 전달)와, DeepSeek 키 등록 시(②의 DeepSeek 정찰 꾸러미+탐색 담당을 DeepSeek 으로 새로 고를 때 연결 점검 1회, 키 등록=동의)와, Claude 정찰 실행 시 같은 꾸러미가 쓰시던 Claude CLI를 통해 Claude 서비스로 전달되는 것(별도 결제 없음 — 검증이 Codex로 가는 것과 같은 성격), 그리고 Codex 정찰 선택·실행 시 같은 꾸러미가 쓰시던 codex CLI를 통해 Codex 서비스로 전달되는 것(검증과 분리된 독립 실행 1회·읽기 전용 강제 — 계정 사용량 범위, PRIVACY.md). 전제: ①의 함께-변경 통계는 로컬 git '커밋 이력'을 읽습니다 — git 저장소가 아니거나 커밋이 거의 없으면 통계만 "데이터 없음"이 정상이고, ② 지도는 '무이력 모드'(최근 수정 파일 기준)로 여전히 만들 수 있습니다. 정찰 대상 자기진단: 세션 폴더와 실제 개발 레포가 다르면(예: 문서 폴더를 열고 다른 레포를 개발) 검증 인용의 레포 귀속을 근거로 어긋남을 스스로 감지해 — 자동 지시가 에이전트에게 대상 지정을 안내하고, 대시보드에 원클릭 설정 카드가 뜨며, 3트랙을 켜는 순간에도 대상 확인 스텝이 나옵니다(모두 advisory·현재 언어 슬롯에 저장)), Project MAP 자동 생성(P1): 3트랙을 켤 때 모달로 동의하면 — 또는 node "<브릿지 홈>/scope-map.js" <저장소> bootstrap을 직접 실행하면(실행=동의) — 정찰 대상 저장소 안에 구조 지도 폴더(project-map/)가 백그라운드에서 자동 생성됩니다(대화 비차단·결정론 파일 스캔·LLM 호출 0·외부 전송 0 — 동의 전에는 어떤 자동 생성도 없음, 2트랙은 완전 무관, PRIVACY.md), 자동 의미 보강(P8): '의미 보강 담당'(기본 Claude/경제형 DeepSeek/정밀형 Codex/자동형)을 정하고 자동 실행에 별도 동의하면(기본 담당=대시보드 1클릭·유료 담당=선택 시 모달 — 예전 선택·3트랙 동의만으로는 자동 실행되지 않음) 새 지도·소스 변경 관측 때 지도 초안+소스 발췌가 그 담당으로 전송돼 지도의 의미(근거·확신·연결)가 백그라운드에서 채워집니다. 결과는 지도 수정 파이프라인(제안→검증→적용)을 그대로 거치고, 의미 판단이 필요한 항목은 Codex 판정을 받거나 보류로 표시됩니다(라우팅·비용 감사는 통계 장부에 60일 — PRIVACY.md). 담당에게 보내는 소스 발췌는 '이번에 바뀐 부분 주변'(git 기준점 대비 변경 줄 앞뒤, git 없거나 새 파일이면 첫머리 폴백+제목 표기)이고 담당 답의 근거 인용은 보낸 발췌 안의 원문만 인정됩니다 · 발췌 범위(담당 줄 아래): 보내는 파일 수와 파일당 글자를 프로젝트마다 고를 수 있어요 — 프리셋 가벼움 8/2,000 · 권장 10/3,000(기본값) · 대형 15/4,000 · 최대 20/4,000, 상한 밖 값은 저장되지 않으며 수치는 현황 카드의 인용 측정을 보고 직접 조정합니다(벤치 결과 아님) · 다시 묻기: 답이 거부돼 다시 묻는 호출(자동 재시도·무인 재개·'다시 시도' 버튼)에는 지난 답에서 제외된 항목의 기계 분류(단계·코드·항목 색인·종류)만 붙고 파일 내용이나 답의 문장은 다시 보내지 않습니다 — 호출 횟수는 늘지 않습니다, 지도 수정 파이프라인(P2 — 비활성): 지도를 고치는 제안→분류→적용→복구·정리 절차 본체가 이 판에 들어 있지만(스키마·검증·적용·복구·GC·명령까지) 자동으로는 돌지 않습니다(수동 명령+명시 플래그 --pre-cutover 전용 — 전체 전환은 후속 단계에서 한 번에, 결정 기록은 저장소 project-map/decisions/에 · 하네스 홈의 작업 기록은 정리 명령이 오래된 순으로 비우며 보관 상한은 CODEX_BRIDGE_MAP_GC_KEEP 환경변수로 조정[기본 200건]), 권위 전환 준비(P3a — 준비만): 옛 확정 장부(docs/MAP.md)와 구조 지도를 잇는 대응표를 준비합니다 — 훑기(legacy-scan)는 저장소를 읽기만 하고, 대응 확정(binding-confirm — 사용자가 직접 실행할 때만)이 저장소 project-map/bindings.json을 만듭니다(전환 자체는 후속 단계에서 한 번에 — 지금은 기존 동작 무변경), 접힌 단계별 기본 원칙 보기/수정/기본값 복원. 섹션마다 색 막대·구분선으로 경계 구분(장식 이모지 없음). links.json·코덱스 세션·Claude 설정/대화기록·진행/무결성 변경 자동 감지(여러 VS Code 창은 워크스페이스로 격리).
Project MAP 정책·복구(P9, 3트랙 전용): 자동 의미 보강이 끝나면 유효한 사용자 정책과 맞는 대기 변경은 P2 파이프라인을 통해 자동으로 이어지고, 반대 정책끼리 충돌할 때만 대시보드의 Project MAP 대기 선택·복구 카드가 뜻을 묻습니다. 선택은 먼저 로컬 복구 장부에 보존되고 새 정책·decision은 저장소 project-map/policies/·decisions/에 공유 기록됩니다. 자동 마무리가 안전하게 보류되면 대시보드의 명시 재시도만 같은 선택/위임을 다시 진행합니다. 정책을 교체하거나 해제(revoke)해도 옛 파일을 삭제하지 않고 supersession/.revoke.json 이력으로 남깁니다. 손상 복구는 ‘복구본 만들기’와 ‘백업 후 교체’의 2단 확인이며, 확인 계획은 nonce·원본/후보/복구본 지문에 결속되고 교체 중 종료돼도 다음 판독에서 이어집니다. 2트랙에서는 모달 뒤 전환된 경우까지 core API가 다시 확인해 이 채널과 자동 sweep을 모두 멈춥니다. 위 긴 대시보드 설명의 옛 “P2 — 비활성” 문구는 P9 이전 이력으로, 현재 동작은 이 항목이 우선합니다.
Project MAP 검증 확인 대기: 자동 의미 보강 중 검증 연결이 없거나 판정이 불충분한 고급 의미 변경은 별도 확인 대기 장부로 분리됩니다. 그 항목 때문에 기본 지도나 독립된 다음 항목이 멈추지 않으며, 대시보드에는 적용·확인 대기·거절·조사 필요 수가 따로 표시됩니다. 일반 관측 때 검증을 반복 호출하지 않고, 사용자의 명시 재시도 또는 새 검증 연결 때만 정해진 조건으로 다시 확인합니다.
Project MAP 운영 현황(P10, 3트랙 전용): 검증 통계 탭에서 현재 지도의 최신 근거/갱신 필요/확인 불가/임시 제외, 최근 28일 자동 의미 보강의 고유 실행·작업 상태와 분모가 드러난 자동 완료 비율, 현재 선택·재시도·복구 대기, 영향지도·전역 준비 점검·의미 보강·검증 담당 판정별 외부 호출을 따로 보여줍니다. 실측 토큰이 없는 호출은 0토큰으로 꾸미지 않고 입력/출력 글자 수로 분리합니다. 수치는 로컬에서 기록에 성공한 사건만 반영하며 청구서나 지도 정확도 점수가 아닙니다. 원장은 60일 보존하고 화면은 28일만 집계하며, 2트랙에서는 카드뿐 아니라 두 통계 파일과 지도 판독도 실행하지 않습니다.
대형·장기 프로젝트 여유: 구조 초안은 의존성·빌드 산출물을 제외한 뒤 최대 10만 항목·20단계 폴더 깊이까지 훑고, 근거 최신성 기준선 1만 개·관찰 일지 약 1만 사건·영향지도 원본 최근 30장을 유지합니다. 관찰 일지 화면 목록은 최근 12개만 보여도 상태 수·관찰 신호·자동 선별은 전체 일지를 계산합니다. 한 번의 AI 자료 꾸러미는 관련도 높은 일부만 싣는 제한을 유지합니다(저장 손실이 아니라 긴 입력에 핵심 근거가 묻히는 것을 막는 선별 폭). 어느 스캔이든 상한에 닿으면 완전하다고 꾸미지 않고 판정 불가/부분 범위로 표시합니다.
관찰 일지의 자동 승격: 과거 기록을 시간이 지났다는 이유나 사용자가 반박하지 않았다는 이유만으로 맞다고 바꾸지 않습니다. 대신 뒤의 검증이 일지 결합을 명시적으로 골라 그 결합의 정확한 두 파일을 실제로 읽고 인용하면 강한 확인 1회로 검증됨이 됩니다. 결합을 고르지 않은 채 답에 두 파일이 함께 인용된 약한 신호와 구형 확인 기록은 서로 다른 실행 2회가 필요합니다. 영향지도가 없거나 불량이어도 일지 결합 재확인은 지도 원문 없이 독립적으로 전달됩니다.
대시보드·상태바는 지금 Claude가 실제 도는 폴더(훅이 ~/.codex-bridge/active.json에 기록)를 따라가므로 보여주는 세션 = 검증이 실제 가는 세션이 일치합니다(열린 폴더가 여러 개여도 어긋나지 않음). 어느 폴더 기준인지는 📁 칩으로 표시됩니다.
언어(한국어/English): 대시보드 탭바 우측 토글로 전환합니다. 전역 설정 하나(~/.codex-bridge/language.json)라 모든 프로젝트·창에 함께 적용되고, 첫 실행 시 VS Code UI 언어를 따라 초기화됩니다. 전환 시 UI 문자열 + 주입 지침(기본 지침·검증 directive·훅 차단문) + 판정 형식이 함께 바뀌며, 판독기는 언어 설정과 무관하게 한/영 판정 줄(검증: 통과 / Verdict: pass)을 항상 둘 다 인식합니다. 프로젝트 규칙·기본지침 오버라이드는 언어별 슬롯에 따로 저장됩니다 — 한국어 슬롯은 기존 파일 그대로(무손실), 영어는 별도 파일(<키>.en.json·base-directive.en.json). 정찰 부속 설정(게이트·정찰 대상 폴더)과 정찰 기본 원칙(scout-baseline.en.json)도 언어 슬롯별이고(단 정찰 대상 폴더는 '사실'이라 현재 슬롯이 비면 반대 슬롯 값을 상속 — 현재 슬롯에 지정하면 독립), 정찰 프롬프트·지도 원문 언어도 전역 언어를 따릅니다(영어 모드에서 만든 지도는 영어). 언어를 바꿨을 때 그 언어 칸이 비어 있으면 "다른 슬롯에 규칙이 있다"는 안내가 떠서 사라진 것으로 오해하지 않게 합니다.
검증 통계 탭 (대시보드 상단 [현황] / [검증 통계] 토글): 이 폴더의 검증 활동을 한 화면에 — 최근 7일 검증 횟수·완전통과율·보완이상 비율·전환(실패·보류 뒤 통과), 28일 verdict 분포(도넛 + 색별 가로막대, ‘판정표지 누락’=Codex가 통과/실패 결론 줄을 안 적은 답은 통과율 분모서 제외), 14일 추이, 4주 활동 히트맵, 검증·작업 토큰, 프로젝트별 비교, **3트랙 기여(관찰 신호)**를 보여줍니다. 3트랙에서는 여기에 Project MAP 운영 현황이 더해져 현재 지도 상태, 최근 자동 의미 보강, 현재 선택·복구 대기, 목적별 외부 호출·사용량, 자료 coverage와 한계를 순서대로 표시합니다. Project MAP 수치는 실제 정찰 대상 저장소 기준의 로컬 기록이며, 28일 화면/60일 원장이고 서비스 청구서나 정확도 점수가 아닙니다. 기존 검증 통계의 ‘이 폴더’ 귀속과 rollout 토큰 근사 표시는 그대로 유지됩니다.