Codex Port Log

Claude Code Harness
Codex/OMX Migration

5개월간 진화한 하네스 운영 체계를 Codex 네이티브 표면으로 재배치. $init-project가 프로젝트 DNA를 추출하고, $team이 tmux 기반 병렬 실행을 조율합니다. generic template 0개 — 모든 것이 실제 코드베이스에서 추출됩니다.

2
Core Skills
6
Agent Roles
5
Runtime Planes
0
Generic Templates

어떤 하네스가 더 강력한가

Claude Code
15
HARD hooks
13
Agents
7
MCP servers
Plugin marketplace · in-memory state
User approval required
VS
Codex / OMX  WINNER
31
HARD hooks
29
Agents
11
MCP servers
0
SOFT rules
Autonomous execution · cross-session state
approval_policy=never
Verdict
Codex가 더 강력하다. HARD hook 2배(31 vs 15), Write/Edit 분리 매칭, 29개 agent TOML에 역할별 제약 내장, 자율 실행 + 물리적 차단 하이브리드. SOFT 규칙 0개 — exit code 2로 물리적 차단만 존재한다.

Codex 우위

  • HARD hook 31개 (차단 범위 2배)
  • Write/Edit 분리 매칭으로 정밀 차단
  • 자율 실행 + HARD 차단 하이브리드
  • .omx/state/ 세션 간 상태 영속
  • 29개 agent TOML (model + reasoning_effort 내장)
  • 11개 MCP 서버 (state/memory/code-intel/trace/wiki)

Claude Code 우위

  • 16종 hook event (SubagentStart/Stop 포함)
  • 플러그인 마켓플레이스 (자동 설치/업데이트)
  • ${CLAUDE_PLUGIN_ROOT} 자동 경로 해석
  • HTTP hook 타입 지원

핵심 원칙

  • SOFT 규칙 0개 — 모든 강제 가능 규칙은 HARD
  • exit code 2 = 물리적 차단 (LLM이 무시 불가)
  • 참조 문서 61개는 규칙이 아닌 가이드라인
  • "자유롭게 실행하되 핵심만 물리적 차단"

Codex Harness 전체 구조

Claude Code의 commands + hooks + agents를 Codex의 skills + native agents + OMX plugin runtime + project hooks로 이식한 전체 아키텍처.

rules feed User Request AGENTS.md Operational Contract $init-project Project DNA Extraction $team Parallel tmux Runtime OUTPUTS CODEX.md .codex/rules .codex/skills Project Hooks QA Contracts: .qa-inventory / qa-test-plan / qa-scenarios TMX RUNTIME Leader control plane Worker 1 executor Worker N executor .omx/state + mailbox + tasks + dispatch heartbeat: 30s | manifest.v2.json | config.json Memory Bank — HARD hook: UserPromptSubmit inject + Stop fact-extract — shared SQLite (69K exchanges, 3.7K facts) QA Evidence Gate
scroll horizontally on mobile →

Claude Code → Codex/OMX 레이어 대응

Layer
Claude Code
Codex / OMX
Command Surface
/team, /init-project, slash commands
$team, $init-project, skill routing, keyword hooks
State
filesystem tasks, hook state, QA evidence
.omx/state, manifests, mailbox, dispatch queue, MCP state tools
Project Memory
CLAUDE.md, custom commands, learned rules
CODEX.md, .codex/rules, project-local skills, wiki/notepad memory
Hard Gates
pre-commit, completion, deploy hooks
project-scope Codex hooks, evidence-required gates, no-bypass
Memory Bank
memory-bank plugin (auto inject via UserPromptSubmit hook)
Codex hooks.json HARD hook → 동일 SQLite DB 공유, version-agnostic wrapper
Operator UI
Claude sessions, manual panes
tmux runtime, HUD, team status, question renderer
Core Insight
Claude Code의 "commands + hooks + agents + memory-bank"를 Codex의 "skills + native agents + OMX plugin runtime + project hooks + shared episodic memory"로 포팅했다. memory-bank는 HARD hook으로 연결 — SOFT 지시가 아니라 UserPromptSubmit hook이 매 프롬프트마다 강제 실행한다.

Claude Code vs Codex — hook 연결 구조의 차이

Layer
Claude Code
Codex
Hook 등록
Plugin 내부 hooks/hooks.json — 플러그인 시스템이 자동 로드
~/.codex/hooks.json에 수동 등록 — Codex에 플러그인 시스템 없음
경로 해석
${CLAUDE_PLUGIN_ROOT} 변수가 플러그인 경로 자동 resolve
sort -V | tail -1 wrapper — 버전 디렉토리 자동 탐지
MCP 서버
플러그인이 MCP tools 자동 등록 (mcp__plugin_memory-bank_*)
config.toml [mcp_servers.memory_bank] — bash wrapper로 실행
실행 스크립트
플러그인 내부: inject-context.sh, fact-extract-hook.js, sync-*.js
동일 스크립트 호출 — ~/.codex/hooks/memory-bank/*.sh가 래핑
DB 공유
~/.config/superpowers/conversation-index/db.sqlite
동일 DB — Claude Code에서 쌓은 69K exchanges, 3.7K facts 그대로 사용
버전 업그레이드
플러그인 업데이트 시 CLAUDE_PLUGIN_ROOT 자동 갱신
ls ... | sort -V | tail -1 — 새 버전 설치 시 자동 최신 경로 사용
cc-sync 포함
플러그인 설정이 settings.json에 포함
~/.codex/hooks.json + hooks/memory-bank/*.sh + config.toml 동기화 대상
핵심 차이
Claude Code는 플러그인 시스템이 hook을 자동 발견하고 등록한다. Codex에는 플러그인 시스템이 없으므로 동일한 스크립트를 수동으로 hooks.json에 연결하고, 버전 경로를 wrapper script로 해결했다. 실행되는 코드는 동일하고 DB도 공유 — 연결 방식만 다르다.

핵심 스킬 구성

$init-project

  • real repo scan (package, config, source)
  • CODEX.md + .codex/rules generation
  • project-local skills creation
  • hook install + verify
  • QA bootstrap (inventory + test-plan)

$team

  • tmux worker panes (N:executor)
  • .omx/state shared root
  • mailbox + dispatch queue
  • heartbeat monitoring (30s)
  • shutdown gate (pending=0)

QA Pipeline

  • $qa-scenario-gen (inventory → contracts)
  • $qa-cycle (build → test → evidence)
  • .qa-cycle-passed (hash verified)
  • no-bypass evidence gate
  • auto-fix loop on failure

Worker Protocol

  • ACK → claim-task → transition-status
  • commit protocol (state-first)
  • no blind tmux send-keys
  • CLI/state > direct pane input

OMX Plugin Runtime

  • skill routing + keyword hooks
  • context snapshot + role prompt
  • HUD + question renderer
  • MCP tool integration

Memory Bank (HARD)

  • Claude Code와 동일 SQLite DB 공유 (69K+ exchanges, 3.7K+ facts)
  • UserPromptSubmit hook → 매 프롬프트 자동 context 주입
  • SessionStart hook → sync + fact consolidation
  • Stop hook → fact extraction + export
  • MCP 9 tools: search, search_facts, explore_graph, ask_avatar
  • version-agnostic wrapper (sort -V | tail -1)

Agent Roles (6)

  • leader — control, context, verification
  • executor — implement, Read/Write/Edit/Bash
  • explore — file/symbol, Read/Grep/Glob only
  • verifier — lint/test, Read/Bash/Grep, no Write
  • planner — PRD, spec, tradeoffs
  • researcher — docs, deps, external, no Write
raground@gmail.com 복사됨