Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

claude-lazycodex-skill

Claude๊ฐ€ ์ง€ํœ˜์ž, Codex๊ฐ€ ์‹ค๋ฌด์ž. ๋‘ AI๋ฅผ ํ•œ ํ™”๋ฉด์—์„œ ํ˜‘์—…์‹œํ‚ค๋Š” Claude Code ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค. tmux, herdr, Orca IDE ์„ธ ํ™˜๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Claude์—๊ฒŒ ์ผ์„ ์‹œํ‚ค๋ฉด, Claude๊ฐ€ ์˜† ์นธ(ํ„ฐ๋ฏธ๋„ pane)์— Codex๋ฅผ ๋„์šฐ๊ณ  LazyCodex๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ์ž‘์—… ๋„๊ตฌ($ulw-loop, $start-work, $teammode ๋“ฑ)๋กœ ์‹ค์ œ ์ฝ”๋”ฉ์„ ์‹œํ‚ต๋‹ˆ๋‹ค. Claude๋Š” ๊ทธ๋™์•ˆ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ง€์ผœ๋ณด๊ณ , Codex๊ฐ€ ๋ฌผ์–ด๋ณด๋ฉด ๋‹ตํ•ด์ฃผ๊ณ , ๋‹ค ๋๋‹ค๊ณ  ํ•˜๋ฉด ์ง์ ‘ ๋นŒ๋“œยทํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ ค์„œ ์ง„์งœ ๋๋Š”์ง€ ํ™•์ธํ•œ ๋’ค ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

โ”Œโ”€ ํ•œ ํ™”๋ฉด (tmux ์ฐฝ / Orca ์›ŒํฌํŠธ๋ฆฌ / herdr ํƒญ) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Claude (์ง€ํœ˜์ž)              โ”‚  Codex + LazyCodex (์‹ค๋ฌด์ž)  โ”‚
โ”‚  โ€ข ์–ด๋–ค ๋ช…๋ น์„ ์“ธ์ง€ ํŒ๋‹จ      โ”‚  $ulw-loop "..."             โ”‚
โ”‚  โ€ข Codex์—๊ฒŒ ์ž‘์—… ์ „๋‹ฌ        โ”‚  โ†’ ๊ณ„ํšยท์ฝ”๋“œ์ˆ˜์ •ยทํ…Œ์ŠคํŠธ      โ”‚
โ”‚  โ€ข ์ง€์ผœ๋ณด๊ณ , ๋ง‰ํžˆ๋ฉด ํ’€์–ด์คŒ    โ”‚  โ†’ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต          โ”‚
โ”‚  โ€ข ์ง์ ‘ ๊ฒ€์ฆ (git diff, ๋นŒ๋“œ) โ”‚                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        ์™ผ์ชฝ ์นธ  โ—„โ”€โ”€ codex-pane.sh ๋กœ ์ œ์–ด โ”€โ”€โ–บ  ์˜ค๋ฅธ์ชฝ ์นธ

Orca IDE์—์„œ๋Š” ์—ฌ๊ธฐ์— ๋”ํ•ด A2A ๋ฉ€ํ‹ฐ ์›Œ์ปค ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค โ€” Codex ํ„ฐ๋ฏธ๋„ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋„์šฐ๊ณ , Orca์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(task dispatch โ†’ worker_done)์œผ๋กœ ์ž‘์—…์„ ๋ถ„๋ฐฐยท์ˆ˜๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์™œ ์“ฐ๋‚˜์š”?

  • Codex์˜ LazyCodex ํ•˜๋„ค์Šค๋Š” ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค โ€” ํ”„๋กœ์ ํŠธ ๊ธฐ์–ต, ๊ณ„ํš ์ˆ˜๋ฆฝ, "์ง„์งœ ๋๋‚  ๋•Œ๊นŒ์ง€" ๋„๋Š” ์‹คํ–‰ ๋ฃจํ”„, ํŒ€ ๋ชจ๋“œ๊นŒ์ง€.
  • ํ•˜์ง€๋งŒ ํ˜ผ์ž ๋‘๋ฉด ๋ฐฉํ–ฅ์„ ์žƒ๊ฑฐ๋‚˜ "๋‹ค ๋๋‹ค"๊ณ  ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ Claude๋ฅผ ์œ„์— ์–น์–ด ๋ฐฉํ–ฅ์„ ์žก๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ„๋„ ํ”„๋กœ๊ทธ๋žจ ์—†์ด ํ„ฐ๋ฏธ๋„ ํ™”๋ฉด ํ•œ ์นธ์œผ๋กœ ๋‘ ๋ชจ๋ธ์ด ํ˜‘์—…ํ•ฉ๋‹ˆ๋‹ค.

์–ธ์ œ ์“ฐ๋‚˜์š”? (๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ์•ˆ ์จ๋„ ๋˜๋‚˜์š”)

์ด ์Šคํ‚ฌ์˜ ๋ณธ์งˆ์€ Claude์—๊ฒŒ LazyCodex ์‚ฌ์šฉ๋ฒ•์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์„ ๋„์šฐ๋Š” ๊ฑด tmux๋“  Orca๋“  ์›๋ž˜ ๋˜๋Š” ์ผ์ด์ง€๋งŒ, ์–ด๋–ค ํ•˜๋„ค์Šค ๋ช…๋ น์„ ๊ณจ๋ผ์•ผ ํ•˜๋Š”์ง€, ์™„๋ฃŒ ํ† ํฐ์„ ์–ด๋–ป๊ฒŒ ์žก์•„์•ผ ํ•˜๋Š”์ง€, "๋‹ค ๋๋‹ค"๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒ€์ฆํ•ด์•ผ ํ•˜๋Š”์ง€๋Š” Claude๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ ์ง€์‹์ด SKILL.md์— ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ ์“ธ ๊ฒƒ
Codexํ•œํ…Œ ์งง์€ ์งˆ๋ฌธ ํ•˜๋‚˜, ๋ฆฌ๋ทฐ ํ•œ ๋ฒˆ โŒ ์ด ์Šคํ‚ฌ ์•„๋‹˜ โ€” ๊ฐ€๋ฒผ์šด /codex ๊ณ„์—ด์„ ์“ฐ์„ธ์š”
์ฝ”๋“œ๋ฅผ ์‹ค์ œ๋กœ ์งœ์•ผ ํ•˜๊ณ , ๋  ๋•Œ๊นŒ์ง€ ์ž์œจ๋กœ ๋Œ๋ฆฌ๊ณ  ์‹ถ๋‹ค โœ… ์ด ์Šคํ‚ฌ โ€” ๋‹จ์ผ pane + $ulw-loop (๊ฐ€์žฅ ํ”ํ•œ ๊ฒฝ์šฐ)
ํฐ ๊ธฐ๋Šฅ์ด๋ผ ๊ณ„ํš๋ถ€ํ„ฐ ์„ธ์›Œ์•ผ ํ•œ๋‹ค โœ… ์ด ์Šคํ‚ฌ โ€” $ulw-plan โ†’ ๊ณ„ํš ๊ฒ€ํ†  โ†’ $start-work
๊ฐˆ๋ž˜๊ฐ€ 2~4๊ฐœ, ํŒŒ์ผ์ด ์•ˆ ๊ฒน์นœ๋‹ค (Orca) โœ… ์ด ์Šคํ‚ฌ์˜ A2A ๋ชจ๋“œ โ€” ์›Œ์ปค๋งˆ๋‹ค ํ•˜๋„ค์Šค๋ฅผ ๋Œ๋ฆฝ๋‹ˆ๋‹ค
๊ทธ๋ƒฅ ๋‹ค๋ฅธ ์—์ด์ „ํŠธ์—๊ฒŒ ์ผ์„ ๋„˜๊ธฐ๊ณ  ์† ๋–ผ๊ณ  ์‹ถ๋‹ค โŒ Orca์˜ orca-cli ํ•ธ๋“œ์˜คํ”„๋ฅผ ์“ฐ์„ธ์š”
ํ•˜๋„ค์Šค ์—†์ด ์ˆœ์ˆ˜ codex ์›Œ์ปค๋งŒ ์กฐ์œจํ•˜๋ฉด ๋œ๋‹ค โŒ Orca์˜ orchestration ์Šคํ‚ฌ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค

Orca ์ž์ฒด ๊ธฐ๋Šฅ๊ณผ์˜ ๊ด€๊ณ„. Orca์—๋Š” ์ด๋ฏธ orca-cli(ํ„ฐ๋ฏธ๋„ยท์›ŒํฌํŠธ๋ฆฌ ์ œ์–ด)์™€ orchestration(์ž‘์—… ๋ฐฐ์ •ยทworker_done ์ˆ˜๊ฑฐ)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค๋งŒ์œผ๋กœ๋„ codex ์›Œ์ปค๋ฅผ ๋„์šฐ๊ณ  ์กฐ์œจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ๋‹ค๋งŒ ๊ทธ ์›Œ์ปค๋Š” "๋งจ codex"์ž…๋‹ˆ๋‹ค. ์ด ์Šคํ‚ฌ์€ ๊ทธ ์œ„์— ์–นํ˜€์„œ, Claude๊ฐ€ ์›Œ์ปค์—๊ฒŒ LazyCodex ํ•˜๋„ค์Šค๋ฅผ ์ œ๋Œ€๋กœ ๋ฌผ๋ ค์ฃผ๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค:

  • ์ž‘์—… ์„ฑ๊ฒฉ์— ๋งž๋Š” ํ•˜๋„ค์Šค ๋ช…๋ น ์„ ํƒ ($ulw-plan / $start-work / $ulw-loop)
  • --completion-promise ํ† ํฐ ๊ทœ์น™ (30์ž ๋ฏธ๋งŒ โ€” ๋„˜์œผ๋ฉด TUI์—์„œ ์ค„๋ฐ”๊ฟˆ๋ผ ๊ฐ์ง€ ์‹คํŒจ)
  • $ ์ ‘๋‘์‚ฌ๊ฐ€ ์Šคํ‚ฌ ํ”ผ์ปค๋ฅผ ๋„์›Œ ์ž…๋ ฅ์„ ์‚ผํ‚ฌ ๋•Œ์˜ ๋ณต๊ตฌ
  • Codex์˜ "์™„๋ฃŒ" ์„ ์–ธ์„ ๋ฏฟ์ง€ ์•Š๊ณ  Claude๊ฐ€ ์ง์ ‘ ๋นŒ๋“œยทํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•˜๋Š” ๊ฒฝ๊ณ„

์ฆ‰ Orca = ๋ฐฐ์„ , ์ด ์Šคํ‚ฌ = ํ•˜๋„ค์Šค ์šด์šฉ๋ฒ• + ๊ฒ€์ฆ ๊ทœ์œจ์ž…๋‹ˆ๋‹ค. ๋‘˜์€ ๊ฒฝ์Ÿ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ์ธต์ด ๋‹ค๋ฅด๋ฉฐ, A2A ๋ชจ๋“œ์—์„œ๋Š” ์‹ค์ œ๋กœ Orca์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์œ„์—์„œ ํ•˜๋„ค์Šค๊ฐ€ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

์ค€๋น„๋ฌผ

  1. Claude Code๋ฅผ ์ง€์› ํ™˜๊ฒฝ ์•ˆ์—์„œ ์‹คํ–‰ (์Šคํ‚ฌ์ด ์˜† ์นธ์„ ๋„์šฐ๊ธฐ ๋•Œ๋ฌธ):
    • tmux (3.x ์ด์ƒ) ์•ˆ์—์„œ, ๋˜๋Š”
    • Orca IDE ํ„ฐ๋ฏธ๋„ ์•ˆ์—์„œ (orca CLI + jq ํ•„์š” โ€” Orca ํ„ฐ๋ฏธ๋„์ด๋ฉด ๊ธฐ๋ณธ ์ถฉ์กฑ), ๋˜๋Š”
    • herdr ์•ˆ์—์„œ (brew install herdr)
  2. Codex CLI ์„ค์น˜ + ๋กœ๊ทธ์ธ (ํ„ฐ๋ฏธ๋„์—์„œ codex ์‹คํ–‰๋˜๋ฉด OK)
  3. LazyCodex ์„ค์น˜:
    npx lazycodex-ai install

์„ค์น˜

Claude Code ์Šคํ‚ฌ ํด๋”์— ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค:

git clone https://github.com/passeth/claude-lazycodex-skill.git \
  ~/.claude/skills/lazycodex
chmod +x ~/.claude/skills/lazycodex/scripts/codex-pane.sh

๋‹ค์Œ๋ฒˆ Claude Code๋ฅผ ์ผœ๋ฉด ์ž๋™์œผ๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค. (/skills ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ)

์„ค์น˜ ๋’ค ์ค€๋น„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

~/.claude/skills/lazycodex/scripts/codex-pane.sh doctor

doctor๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ(tmux/orca/herdr ์ž๋™ ๊ฐ์ง€), codex CLI, LazyCodex ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •(omo@sisyphuslabs), ํ˜„์žฌ Codex pane ์ƒํƒœ๋ฅผ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

์ง€์› ํ™˜๊ฒฝ ์•ˆ์—์„œ Claude Code๋ฅผ ์ผœ๊ณ , ๊ทธ๋ƒฅ ํ‰์†Œ์ฒ˜๋Ÿผ ๋งํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

  • codexํ•œํ…Œ ์‹œ์ผœ์„œ ulw-loop๋กœ ์ด ๋ฒ„๊ทธ ๊ณ ์ณ์ค˜
  • lazycodex๋กœ ์ด ๊ธฐ๋Šฅ ๊ณ„ํš๋ถ€ํ„ฐ ์„ธ์›Œ์ค˜
  • codex teammode๋กœ ์ด ๋ฆฌํŒฉํ† ๋ง ๋Œ๋ ค์ค˜
  • (Orca์—์„œ) orca ์›Œ์ปค 3๊ฐœ๋กœ a2a๋กœ ๋‚˜๋ˆ ์„œ ๋Œ๋ ค์ค˜

๊ทธ๋Ÿฌ๋ฉด Claude๊ฐ€ ์•Œ์•„์„œ:

  1. ์ ๊ฒ€ โ€” doctor๋กœ ์‹คํ–‰ ํ™˜๊ฒฝยทcodexยทLazyCodex ์ค€๋น„ ์ƒํƒœ ํ™•์ธ

  2. ๋ช…๋ น ๊ณ ๋ฅด๊ธฐ โ€” ์ž‘์—… ์„ฑ๊ฒฉ์— ๋งž๋Š” Codex ๋ช…๋ น ์„ ํƒ:

    ์ด๋Ÿด ๋•Œ Codex ๋ช…๋ น ๋๋‚œ ์‹ ํ˜ธ
    ์ฝ”๋”ฉ ์ „์— ๊ณ„ํš๋ถ€ํ„ฐ $ulw-plan "..." plans/ ์— ๊ณ„ํš ํŒŒ์ผ ์ƒ์„ฑ
    ์ด๋ฏธ ์žˆ๋Š” ๊ณ„ํš ์‹คํ–‰ $start-work <๊ณ„ํš> ORCHESTRATION COMPLETE
    ๋  ๋•Œ๊นŒ์ง€ ์•Œ์•„์„œ (๋ชฉํ‘œ ๋ชจ๋“œ) $ulw-loop "..." --completion-promise=ํ† ํฐ ๊ทธ ํ† ํฐ์ด ์ถœ๋ ฅ๋จ
    ์—ฌ๋Ÿฌ ๊ฐˆ๋ž˜ ๋ณ‘๋ ฌ ์ž‘์—… (tmux/herdr) $teammode ํŒ€ ๋ฆฌ๋” ์š”์•ฝ
    ์—ฌ๋Ÿฌ ๊ฐˆ๋ž˜ ๋ณ‘๋ ฌ ์ž‘์—… (Orca) A2A ๋ฉ€ํ‹ฐ ์›Œ์ปค ๋ชจ๋“œ (์•„๋ž˜) worker_done ๋ฉ”์‹œ์ง€
  3. ์ „๋‹ฌ โ†’ ์ง€์ผœ๋ณด๊ธฐ โ†’ ๋‹ตํ•˜๊ธฐ โ€” Codex๊ฐ€ ์งˆ๋ฌธํ•˜๋ฉด Claude๊ฐ€ ํŒ๋‹จํ•ด์„œ ๋‹ตํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž ๊ฒฐ์ •์ด ํ•„์š”ํ•˜๋ฉด ๋ฌผ์–ด๋ด„

  4. ์ง์ ‘ ๊ฒ€์ฆ โ€” Codex์˜ "๋‹ค ๋์–ด์š”"๋ฅผ ๊ทธ๋ƒฅ ๋ฏฟ์ง€ ์•Š๊ณ  git diffยท๋นŒ๋“œยทํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์ œ๋กœ ๋Œ๋ ค ํ™•์ธ

  5. ๋ณด๊ณ  โ€” ๋ญ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€, ๊ฒ€์ฆ ๊ฒฐ๊ณผ, ๋น ์ง„ ๋ถ€๋ถ„๊นŒ์ง€ ์ •๋ฆฌ

์ž‘์—…์ด ๋๋‚˜๋„ Codex ์นธ์€ ์—ด์–ด๋‘๋‹ˆ ์ง์ ‘ ๋“ค์—ฌ๋‹ค๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Orca IDE: A2A ๋ฉ€ํ‹ฐ ์›Œ์ปค ๋ชจ๋“œ

Orca์—์„œ ์ž‘์—…์ด ๋…๋ฆฝ์ ์ธ 2~4๊ฐœ ๊ฐˆ๋ž˜๋กœ ๋‚˜๋‰˜๋ฉด, Claude๋Š” $teammode(Codex ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉค๋ฒ„๋ฅผ ์ €๊ธ€๋ง) ๋Œ€์‹  ์ง„์งœ ๋ณ‘๋ ฌ Codex ํ„ฐ๋ฏธ๋„์„ ๋„์›๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์›Œ์ปค ์•ˆ์—์„œ LazyCodex ํ•˜๋„ค์Šค๊ฐ€ ๋•๋‹ˆ๋‹ค โ€” ํ•˜๋„ค์Šค์˜ ์ž์œจ์„ฑ๊ณผ Orca์˜ ํ™•์‹คํ•œ ์™„๋ฃŒ ์ถ”์ ์„ ๋‘˜ ๋‹ค ๊ฐ€์ ธ๊ฐ‘๋‹ˆ๋‹ค.

# 1) ๊ฐˆ๋ž˜๋งˆ๋‹ค ์›Œ์ปค ํ„ฐ๋ฏธ๋„ ํ•˜๋‚˜ (MCP๋Š” ๋„๊ณ  โ€” ์•„๋ž˜ ์ฃผ์˜์‚ฌํ•ญ ์ฐธ๊ณ )
orca terminal create --worktree active --title "worker-api" \
  --command "codex -c 'mcp_servers={}'" --json

# 2) ์ค€๋น„ ํ™•์ธ โ€” tui-idle๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค (์•„๋ž˜ ์ฃผ์˜์‚ฌํ•ญ ์ฐธ๊ณ )
orca terminal wait --terminal <handle> --for tui-idle --timeout-ms 60000 --json
orca terminal show --terminal <handle> --json | jq -r '.result.terminal.preview'
#    "Context ... left" ๊ฐ€ ๋ณด์ด๋ฉด ์ค€๋น„๋จ / "Sign in" ์ด ๋ณด์ด๋ฉด ๋กœ๊ทธ์ธ ํ™”๋ฉด โ†’ ๋””์ŠคํŒจ์น˜ ๊ธˆ์ง€

# 3) ์ž‘์—… ์ƒ์„ฑ + ๋ฐฐ์ • โ€” spec ์•ˆ์— ํ•˜๋„ค์Šค ๋ช…๋ น์„ ๋„ฃ์Šต๋‹ˆ๋‹ค
orca orchestration task-create --spec 'Step 1 - run exactly this in your composer:
$ulw-loop "<์‹ค์ œ ์ž‘์—…>" --completion-promise="LCX_DONE_API"

Step 2 - once the harness prints LCX_DONE_API, send worker_done as your preamble instructs.' --json
orca orchestration dispatch --task <task_id> --to <handle> --inject --json

# 4) ์ˆ˜๊ฑฐ ๋ฃจํ”„
orca orchestration check --wait --types worker_done,escalation,decision_gate --timeout-ms 570000 --json

ํ•˜๋„ค์Šค์™€ worker_done์€ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์‹ค์ธก ๊ฒ€์ฆ). $ulw-loop๊ฐ€ ์ž๊ธฐ ์™„๋ฃŒ ์•ฝ์†์— ๋„๋‹ฌํ•ด ๋๋‚œ ๋’ค์— ์›Œ์ปค๊ฐ€ ์™„๋ฃŒ ๋ณด๊ณ ๋ฅผ ํ•˜๋Š” ์ˆœ์ฐจ ๊ตฌ์กฐ๋ผ, ๋ฃจํ”„๊ฐ€ ์ค‘์ฒฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์›Œ์ปค๊ฐ€ ์งˆ๋ฌธํ•˜๋ฉด(decision_gate) Claude๊ฐ€ orca orchestration reply๋กœ ๋‹ตํ•ฉ๋‹ˆ๋‹ค.
  • worker_done์ด ์™€๋„ Claude๊ฐ€ ์ง์ ‘ ๊ฒ€์ฆํ•œ ๋’ค์—๋งŒ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค (๊ฒ€์ฆ ์›์น™์€ ๋™์ผ).
  • ๋…๋ฆฝ๋œ ์ฒดํฌ์•„์›ƒ์ด ํ•„์š”ํ•˜๋ฉด orca worktree create --name <part> --agent codex --json.
  • ์›Œ์ปค๋ผ๋ฆฌ ๊ฐ™์€ ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ฒŒ ๊ฐˆ๋ž˜๋ฅผ ๋‚˜๋ˆ„์„ธ์š”. ํ•œ ํ”„๋กœ์„ธ์Šค์ธ $teammode์™€ ๋‹ฌ๋ฆฌ ์ง„์งœ ๋ณ‘๋ ฌ์ด๋ผ ํŒŒ์ผ ์ถฉ๋Œ์€ ์กฐ์œจ์ž ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.

์‹ค์ „์—์„œ ๋ฌผ๋ฆฐ ๊ฒƒ๋“ค (Orca ํ•œ์ •)

  • MCP๋ฅผ ๋„๊ณ  ์›Œ์ปค๋ฅผ ๋„์šฐ์„ธ์š”. Codex์˜ app-server๋Š” launchd ๊ธฐ๋ณธ๊ฐ’์ธ fd 256๊ฐœ ์ œํ•œ์„ ๋ฌผ๋ ค๋ฐ›๋Š”๋ฐ, stdio MCP ์„œ๋ฒ„ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ํŒŒ์ดํ”„๋ฅผ ๋ฌผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MCP๋ฅผ ์ž”๋œฉ ๋ฌธ ์›Œ์ปค๋ฅผ ๋ช‡ ๊ฐœ ๋ณ‘๋ ฌ๋กœ ๋„์šฐ๋ฉด app-server๊ฐ€ Too many open files (os error 24)๋กœ ๊ณ ์ฐฉ๋˜๊ณ , codex ์ „์ฒด๊ฐ€ ์•ˆ ๋œน๋‹ˆ๋‹ค. ๋ณต๊ตฌ๋Š” app-server ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋ฉด ๋ฉ๋‹ˆ๋‹ค(๋‹ค์Œ ์‹คํ–‰ ๋•Œ ์ž๋™ ์žฌ์ƒ์„ฑ).
  • tui-idle์€ ์ค€๋น„ ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Codex์˜ ๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ๋„ ok=true ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ƒํƒœ๋กœ ๋””์ŠคํŒจ์น˜ํ•˜๋ฉด ์ž‘์—… ์ง€์‹œ๋ฌธ์ด ๋กœ๊ทธ์ธ ํ”„๋กฌํ”„ํŠธ์— ํƒ€์ดํ•‘๋˜๊ณ  ์ฆ๋ฐœํ•˜๋ฉฐ, ์กฐ์œจ์ž๋Š” ์˜ค์ง€ ์•Š์„ worker_done์„ ์˜์›ํžˆ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ preview๋กœ ์ปดํฌ์ €๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • ์กฐ์šฉํ•œ ์›Œ์ปค โ‰  ๋А๋ฆฐ ์›Œ์ปค. worker_done์€ ์›Œ์ปค๊ฐ€ ์…ธ ๋ช…๋ น์„ ๋„์›Œ์•ผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์„œ, ์›Œ์ปค์˜ ๋„๊ตฌ ์‹คํ–‰์ด ๊นจ์ง€๋ฉด ์™„๋ฃŒ ์‹ ํ˜ธ๊ฐ€ ์˜์˜ ์•ˆ ์˜ต๋‹ˆ๋‹ค. ํƒ€์ž„์•„์›ƒ์„ "์•„์ง ์ผํ•˜๋Š” ์ค‘"์œผ๋กœ ๋„˜๊ธฐ์ง€ ๋ง๊ณ  ํ„ฐ๋ฏธ๋„์„ ์‹ค์ œ๋กœ ์ฝ์–ด ํ™•์ธํ•˜์„ธ์š”.
  • ์•Œ๋ ค์ง„ ๋ฏธํ•ด๊ฒฐ ์ด์Šˆ: codex ๋‚ด๋ถ€์—์„œ ๋ณด๋‚ธ worker_done์ด ์กฐ์œจ์ž ์ˆ˜์‹ ํ•จ์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ํ•œ ๋ฒˆ ๊ด€์ธกํ–ˆ์Šต๋‹ˆ๋‹ค(CLI๋Š” ๋ฉ”์‹œ์ง€ ID๋ฅผ ๋ฐ˜ํ™˜). ์ผ๋ฐ˜ ์…ธ์—์„œ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋Š” ์ •์ƒ ๋„์ฐฉํ•˜๋ฏ€๋กœ ๋ฐฐ๋‹ฌ ์ž์ฒด๋Š” ๋ฉ€์ฉกํ•ฉ๋‹ˆ๋‹ค. ์›์ธ ๋ฏธํ™•์ •์ด๋ผ, ์™„๋ฃŒ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†๋‹ค๊ณ  ๊ฒฐ๊ณผ๊ฐ€ ์—†๋Š” ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค โ€” ์›Œ์ปค ํ„ฐ๋ฏธ๋„์— ์™„๋ฃŒ ํ† ํฐ์ด ์ฐํ˜”๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฆฌํฌํŠธ ํŒŒ์ผ์„ ์ง์ ‘ ๊ฑฐ๋‘์„ธ์š”.

๋ฉ€ํ‹ฐ๋ชจ๋ธ ํŒฌ: ์›Œ์ปค๋งˆ๋‹ค ๋‹ค๋ฅธ ๋‘๋‡Œ (opencodex)

ํŒฌ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ชจ๋ธ์„ ํƒœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ์„ค๊ณ„๋Š” ๊ฐ•ํ•œ ๋ชจ๋ธ, ๊ธฐ๊ณ„์  ๊ตฌํ˜„์€ ์‹ผ ๋ชจ๋ธ, ๋ฆฌ๋ทฐ๋Š” ๋‹ค๋ฅธ ๊ณ„์—ด ๋ชจ๋ธ. OpenAI ๋ชจ๋ธ๋ผ๋ฆฌ๋Š” -m๋งŒ์œผ๋กœ ๋˜๊ณ , ๋น„-OpenAI ๋ชจ๋ธ(Kimi, DeepSeek ๋“ฑ)์€ opencodex ํ”„๋ก์‹œ๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค: codex 0.146๋ถ€ํ„ฐ wire_api = "chat"์ด ์ œ๊ฑฐ๋˜์–ด Responses API๋งŒ ์ง€์›ํ•˜๋Š”๋ฐ, ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋“œํŒŒํ‹ฐ API๋Š” /v1/responses๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (Moonshot 404 ์‹ค์ธก).

# ์„ค์น˜ (ํ•œ ๋ฒˆ): ํ”„๋กœ๋ฐ”์ด๋” ์ถ”๊ฐ€ ํ›„ restart๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค โ€” ์•ˆ ํ•˜๋ฉด ์กฐ์šฉํžˆ OpenAI๋กœ ์ƒ™๋‹ˆ๋‹ค
npm i -g @bitkyc08/opencodex && ocx start
ocx provider add moonshot --api-key "$MOONSHOT_API_KEY" && ocx restart && ocx sync

# ์›Œ์ปค๋งˆ๋‹ค ๋ชจ๋ธ ์ง€์ • โ€” LAZYCODEX_CODEX_ARGS๋กœ ์ฃผ์ž…
LAZYCODEX_PANE_NAME=worker-arch LAZYCODEX_CODEX_ARGS="-m gpt-5.5 -c mcp_servers={}" \
  codex-pane.sh start "..."
LAZYCODEX_PANE_NAME=worker-impl LAZYCODEX_CODEX_ARGS="-m moonshot/kimi-k3 -c mcp_servers={}" \
  codex-pane.sh start "..."

์‹ค์ „์—์„œ ๋ฌผ๋ฆฐ ๊ฒƒ๋“ค (๋ฉ€ํ‹ฐ๋ชจ๋ธ ํ•œ์ •)

  • ํ”„๋ก์‹œ๋Š” ์ž๋™์œผ๋กœ ์‚ด์•„๋‚ฉ๋‹ˆ๋‹ค. start๊ฐ€ ๋ผ์šฐํŒ… ๋ชจ๋ธ ๋˜๋Š” ์ฃผ์ž…๋œ config๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ์ฃฝ์€ ํ”„๋ก์‹œ๋ฅผ ์•Œ์•„์„œ ๋„์›๋‹ˆ๋‹ค (ocx ensure + ํ—ฌ์Šค ํด๋ง, ์ตœํ›„์—” detached ocx start). ๋‹ค๋งŒ ํ”„๋ก์‹œ๋Š” ๋ผ์šฐํŒ…๋œ ํŒฌ ์ „๋ถ€๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋‹จ์ผ ์žฅ์• ์ ์ด๊ณ , ํŒฌ์ด ์‚ด์•„์žˆ๋Š” ๋™์•ˆ ocx stop์€ ์ ˆ๋Œ€ ๊ธˆ์ง€ โ€” codex ์„ค์ •์„ ์›๋ณต์‹œ์ผœ ๋ฐœ๋ฐ‘์„ ๋นผ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.
  • Orca๋Š” ~/.codex/config.toml์„ ๊ณ„์ • ํ™ˆ์œผ๋กœ ๋ณต์‚ฌํ•˜๋ฉด์„œ ํ”„๋ก์‹œ ์ฃผ์ž…์„ ์ง€์›๋‹ˆ๋‹ค. ์ฃผ์ž…์€ ์–‘์ชฝ ๋ชจ๋‘: env -u CODEX_HOME ocx sync (์›๋ณธ) + ocx sync (๊ณ„์ • ํ™ˆ). ๋ผ์šฐํŒ…์ด ์ด์ƒํ•˜๋ฉด ๋‘ config์—์„œ openai_base_url๋ถ€ํ„ฐ grep ํ•˜์„ธ์š”.
  • ocx sync --restart-codex๋Š” ๋จธ์‹ ์˜ ๋ชจ๋“  codex app-server๋ฅผ ์ฃฝ์ž…๋‹ˆ๋‹ค (ChatGPT.app ํฌํ•จ). ๋‹ค๋ฅธ ์„ธ์…˜์— ๋ผ์ด๋ธŒ ๋Ÿฐ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์“ฐ์„ธ์š”.
  • ๋ผ์šฐํŒ… ๊ฒ€์ฆ์€ ocx observe logs. moonshot/kimi-k3์ฒ˜๋Ÿผ ํ”„๋กœ๋ฐ”์ด๋” ์ ‘๋‘์–ด๊ฐ€ ์ฐํžˆ๋ฉด ์ •์ƒ, openai/moonshot/kimi-k3์ฒ˜๋Ÿผ openai ๋’ค์— ๋ถ™์–ด ๋‚˜์˜ค๋ฉด ํŒจ์Šค์Šค๋ฃจ๋กœ ์ƒˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋ฐ”์ด๋” ์ชฝ 429/400์ด ์ฐํ˜”๋‹ค๋ฉด ๋ผ์šฐํŒ…์€ ์„ฑ๊ณต์ด๊ณ  ๋ฌธ์ œ๋Š” ์—…์ŠคํŠธ๋ฆผ(์ฟผํ„ฐ/๊ณผ๊ธˆ)์ž…๋‹ˆ๋‹ค.
  • deprecated ๋ชจ๋ธ์€ ๋กœ์Šคํ„ฐ์— ๋„ฃ์ง€ ๋งˆ์„ธ์š”. ์‹œ์ž‘ ์‹œ ์ „ํ™˜ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋– ์„œ ๋””์ŠคํŒจ์น˜ํ•œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ผํ‚ต๋‹ˆ๋‹ค. ๋‹ค์ด์–ผ๋กœ๊ทธ ์กฐ์ž‘์€ ์ˆซ์ž ํ…์ŠคํŠธ + Enter๊ฐ€ ๊ฐ€์žฅ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค (orca ๋ฐฑ์—”๋“œ keys์— ํ™”์‚ดํ‘œ/BSpace ๋งคํ•‘์ด ์ถ”๊ฐ€๋์ง€๋งŒ, ์ˆซ์ž๋Š” ๋งคํ•‘ ๊ณต๋ฐฑ๊ณผ ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค).

์ „์ฒด ์ ˆ์ฐจ์™€ ์„ธ๋ถ€ ๊ทœ์น™์€ SKILL.md์˜ "Multi-model panes (opencodex)" ์„น์…˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ์— ๋ญ๊ฐ€ ๋“ค์–ด์žˆ๋‚˜์š”?

  • SKILL.md โ€” Claude๊ฐ€ ๋”ฐ๋ฅด๋Š” ์ง€ํœ˜ ์ ˆ์ฐจ (์ด ํŒŒ์ผ์ด ์Šคํ‚ฌ์˜ ๋‘๋‡Œ)

  • REFERENCE.md โ€” ๋ฐฑ์—”๋“œ๋ณ„ pane ์ œ์–ด, ์™„๋ฃŒ ํ† ํฐ, ๋ณต๊ตฌ, ๊ฒ€์ฆ ๊ฒฝ๊ณ„์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์šด์˜ ์ฐธ๊ณ 

  • scripts/codex-pane.sh โ€” ํ„ฐ๋ฏธ๋„ ์นธ์„ ์ œ์–ดํ•˜๋Š” ์ž‘์€ ์Šคํฌ๋ฆฝํŠธ. tmux/orca/herdr์„ ์ž๋™ ๊ฐ์ง€ํ•˜๋ฉฐ, ์Šค์ฝ”ํ”„๋งˆ๋‹ค(์ฐฝ/์›ŒํฌํŠธ๋ฆฌ/ํƒญ) Codex ์นธ ํ•˜๋‚˜๋งŒ ๊ด€๋ฆฌํ•˜๊ณ , ๋ช‡ ๋ฒˆ์„ ํ˜ธ์ถœํ•ด๋„ ์•ˆ์ „(idempotent)ํ•ฉ๋‹ˆ๋‹ค:

    codex-pane.sh doctor              ์‹คํ–‰ ํ™˜๊ฒฝยทcodexยทLazyCodex ์„ค์ • ์ ๊ฒ€
    codex-pane.sh start [ํ”„๋กฌํ”„ํŠธ]     ์นธ ๋งŒ๋“ค๊ณ  codex ์‹คํ–‰ (์ด๋ฏธ ์žˆ์œผ๋ฉด ์žฌ์‚ฌ์šฉ)
    codex-pane.sh send "<๊ธ€>"          codex ์ž…๋ ฅ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ๊ณ  ์ „์†ก
    codex-pane.sh peek [์ค„์ˆ˜]          ์ตœ๊ทผ ์ถœ๋ ฅ ๋ณด๊ธฐ (๊ธฐ๋ณธ 60์ค„)
    codex-pane.sh status              BUSY(์ž‘์—…์ค‘) | IDLE(๋Œ€๊ธฐ) | BLOCKED(herdr) | NO_PANE(์—†์Œ)
    codex-pane.sh done-file <์Šฌ๋Ÿฌ๊ทธ>   ์™„๋ฃŒ ํ‘œ์‹ ํŒŒ์ผ ๊ฒฝ๋กœ ๋ฐœ๊ธ‰ (๋ฌต์€ ํ‘œ์‹ ์‚ญ์ œ)
    codex-pane.sh wait-done <์Šฌ๋Ÿฌ๊ทธ>   โ˜… ์ง„์งœ ์™„๋ฃŒ ์‹ ํ˜ธ โ€” codex๊ฐ€ ํ‘œ์‹์„ touchํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
    codex-pane.sh wait "<ํŒจํ„ด>" [์ดˆ]   ๊ทธ ํŒจํ„ด์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ (์ง์ ‘ ํƒ€์ดํ•‘ํ•œ ํ† ํฐ์—” ์“ฐ์ง€ ๋ง ๊ฒƒ)
    codex-pane.sh wait-idle [์ดˆ]       codex๊ฐ€ ๋ฉˆ์ถœ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ
    codex-pane.sh keys <ํ‚ค...>         ํ‚ค ์ž…๋ ฅ (Escape, Enter, C-c ...)
    codex-pane.sh focus               codex ์นธ์„ ํ™”๋ฉด์— ๋“œ๋Ÿฌ๋‚ด๊ธฐ (tmux/orca)
    codex-pane.sh stop                codex ์ค‘๋‹จํ•˜๊ณ  ์นธ ๋‹ซ๊ธฐ
    codex-pane.sh backend             ํ™œ์„ฑ ๋ฐฑ์—”๋“œ ์ถœ๋ ฅ (tmux | herdr | orca)
    

    ํ™˜๊ฒฝ๋ณ€์ˆ˜: LAZYCODEX_BACKEND=tmux|herdr|orca ๋กœ ๊ฐ์ง€๋ฅผ ๋ฎ์–ด์“ฐ๊ณ , LAZYCODEX_PANE_NAME=<์ด๋ฆ„> ์œผ๋กœ ์ด๋ฆ„๋ณ„ pane ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋ณ‘ํ–‰ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  3๊ฐ€์ง€

1. ์™„๋ฃŒ๋Š” ํ™”๋ฉด ๊ธ€์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒ์ผ๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „ ๋ฐฉ์‹(wait "<์™„๋ฃŒํ† ํฐ>")์€ ๊ฑฐ์ง“ ์™„๋ฃŒ๋ฅผ ๋ƒ…๋‹ˆ๋‹ค. codex๋Š” ๊ธด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ์ค„๋กœ ๊ฐ์‹ธ ๋ Œ๋”ํ•˜๋Š”๋ฐ ์ฒซ ์ค„์—๋งŒ โ€บ ์ ‘๋‘์–ด๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค. ์™„๋ฃŒ ํ† ํฐ์ด ๋’ท์ค„์— ๋†“์ด๋ฉด ์ž๊ธฐ๊ฐ€ ๋ฐฉ๊ธˆ ๋ณด๋‚ธ ํ”„๋กฌํ”„ํŠธ์— ์ž๊ธฐ๊ฐ€ ๋งค์นญ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ธก: ๋””์ŠคํŒจ์น˜ 6์ดˆ ๋งŒ์— "์™„๋ฃŒ" ๋ฐ˜ํ™˜, ๊ทธ๋•Œ codex๋Š” ์•„์ง ๋กœ๋”ฉ ์ค‘์ด๊ณ  ๋ณ€๊ฒฝ ํŒŒ์ผ 0๊ฑด. ์Šคํ‚ฌ์ด "ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž๊ธฐ์™„๊ฒฐ์ ์œผ๋กœ(=๊ธธ๊ฒŒ) ์“ฐ๋ผ"๊ณ  ํ•˜๋‹ˆ ๊ถŒ์žฅ๋Œ€๋กœ ์“ธ์ˆ˜๋ก ํ™•์‹คํžˆ ํ„ฐ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด์ œ sentinel ํŒŒ์ผ์„ ์”๋‹ˆ๋‹ค:

DONE=$(codex-pane.sh done-file auth)
codex-pane.sh start "\$ulw-loop \"...\" --completion-promise=\"LCX_DONE_AUTH\"
When the work is complete and verified, run exactly: touch $DONE"
codex-pane.sh wait-done auth 570      # 0=์™„๋ฃŒ | 3=ํƒ€์ž„์•„์›ƒ | 4=pane ์ฃฝ์Œ

ํŒŒ์ผ์€ ํ™”๋ฉด ์—์ฝ”๋กœ ์œ„์กฐ๋˜์ง€ ์•Š๊ณ , TUI ๋ฆฌ๋“œ๋กœ์šฐยท์Šคํฌ๋กค๋ฐฑ์—๋„ ์•ˆ์ „ํ•˜๋ฉฐ, ๋ฐฑ์—”๋“œ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.

2. IDLE์€ ์™„๋ฃŒ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. status๋Š” ์ด์ œ BUSY ์ชฝ์œผ๋กœ ํŽธํ–ฅ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ํ™”๋ฉด์— esc to interrupt, Working (โ€ฆ), Waiting for agents ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ณด์ด๋ฉด ๋ฐฑ์—”๋“œ ํ”„๋กœ๋ธŒ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋Œ€์นญ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค: ๊ฑฐ์ง“ BUSY๋Š” ํด๋ง ํ•œ ๋ฒˆ ๋‚ญ๋น„์ง€๋งŒ, ๊ฑฐ์ง“ IDLE์€ codex๊ฐ€ ์“ฐ๊ณ  ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. (orca์˜ tui-idle์€ $ulw-loop๊ฐ€ ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ํŒฌ์•„์›ƒํ•˜๋Š” ๋™์•ˆ idle์ด๋ผ๊ณ  ๋‹ตํ•ฉ๋‹ˆ๋‹ค โ€” ํ™”๋ฉด์ด ๋งž๊ณ  ํ”„๋กœ๋ธŒ๊ฐ€ ํ‹€๋ฆฝ๋‹ˆ๋‹ค.)

3. codex ์นธ์ด ์‚ด์•„ ์žˆ๋Š” ๋™์•ˆ ๋ ˆํฌ ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ๋งˆ์„ธ์š”. codex๊ฐ€ ์›Œํ‚นํŠธ๋ฆฌ์˜ ์†Œ์œ ์ž์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ๊ณ : ์ž‘์—… ๋„์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ”๊ฟ” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๊ฐ€ ํŒŒ์ผ์„ ๊ณ ์ณค๋”๋‹ˆ, ์˜› ์ง€์‹œ๋ฌธ์„ ๋“ค๊ณ  ์žˆ๋˜ codex๊ฐ€ ๊ทธ๊ฑธ "์š”๊ตฌ์‚ฌํ•ญ ์œ„๋ฐ˜"์œผ๋กœ ๋ณด๊ณ  ๋‘ ๋ฒˆ ๋˜๋Œ๋ ธ์Šต๋‹ˆ๋‹ค. codex ์ž˜๋ชป์ด ์•„๋‹ˆ๋ผ stale brief๋ฅผ ์„ฑ์‹คํžˆ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ์ง์ „์— ๊ฒจ์šฐ ์žก์•˜์Šต๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๋ ค๋ฉด stop โ†’ ํŽธ์ง‘ โ†’ ์žฌ๋””์ŠคํŒจ์น˜. ๊ธด ์ž‘์—…์€ ์•„์˜ˆ ๊ฒฉ๋ฆฌ๋œ ์ฒดํฌ์•„์›ƒ(orca worktree create --agent codex)์— ๋งก๊ธฐ๋Š” ๊ฒŒ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ 

  • start [ํ”„๋กฌํ”„ํŠธ]๋Š” ๋จผ์ € codex TUI๊ฐ€ ๋œฐ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ๋’ค ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. (orca์—์„œ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ tui-idle ์‹ ํ˜ธ๋กœ ๋Œ€๊ธฐ) ์…ธ ์ธ์ž quoting ๋ฌธ์ œ๋กœ ๊ธด ์š”์ฒญ์ด ๊นจ์ง€๋Š” ์ผ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • --completion-promise๋Š” ๊ณ„์† ๋„˜๊ธฐ์„ธ์š” โ€” ํ•˜๋„ค์Šค๊ฐ€ "๋  ๋•Œ๊นŒ์ง€" ๋Œ๊ฒŒ ๋งŒ๋“œ๋Š” ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ทธ๊ฑธ๋กœ ์™„๋ฃŒ๋ฅผ ๊ฐ์ง€ํ•˜์ง€๋Š” ๋งˆ์„ธ์š”.
  • codex๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ์—†์ด ๋Œ๊ณ  ํ”„๋กœ์ ํŠธ env๋ฅผ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํฌ๋ ˆ๋ด์…œ์ด ์žˆ๋Š” ๋ ˆํฌ์—์„œ "DB ๊ฑด๋“œ๋ฆฌ์ง€ ๋งˆ๋ผ"๋Š” ํ”„๋กฌํ”„ํŠธ์ผ ๋ฟ ๊ฐ•์ œ์žฅ์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ ˆํฌ์— ๋””์ŠคํŒจ์น˜ํ•˜๊ธฐ ์ „์—” ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธํ•˜๊ณ , ๊ฒฉ๋ฆฌ๋œ ์›ŒํฌํŠธ๋ฆฌ + ๋น„ํ”„๋กœ๋•์…˜ ํฌ๋ ˆ๋ด์…œ์„ ์“ฐ์„ธ์š”.
  • Codex๊ฐ€ ํ•œ ์ž‘์—…์„ ์‚ฌ์šฉ์ž ํ™•์ธ ์—†์ด ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Codex๊ฐ€ ์œ„ํ—˜ํ•œ ์ž‘์—…(ํŒŒ์ผ ์‚ญ์ œ, ์„ค์น˜, ๋„คํŠธ์›Œํฌ ๋“ฑ)์„ ์š”์ฒญํ•˜๋ฉด ์ž๋™ ์Šน์ธํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค.
  • ๊ฐ„๋‹จํ•œ ์ผํšŒ์„ฑ Codex ์งˆ๋ฌธ์šฉ์€ ์•„๋‹™๋‹ˆ๋‹ค โ€” ๊ทธ๊ฑด ๊ฐ€๋ฒผ์šด /codex ๊ณ„์—ด ์Šคํ‚ฌ์„ ์“ฐ์„ธ์š”.

์ฐธ๊ณ ํ•œ ์„ค๊ณ„

์ด ์ €์žฅ์†Œ๋Š” openai/codex-plugin-cc์˜ ์šด์˜ ๋ฐฉ์‹์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ setup/status/result ๊ฐ™์€ ์ž‘์€ ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , Claude๊ฐ€ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ๋งŒ์ง€๋Š” ๋Œ€์‹  Codex ์‹คํ–‰ ๊ฒฝ๊ณ„์™€ ๊ฒ€์ฆ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๋‚˜๋ˆ„๋Š” ํŒจํ„ด์„ ๋ฐ˜์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. Orca A2A ๋ชจ๋“œ๋Š” stablyai/orca์˜ ๊ณต์‹ orchestration ์Šคํ‚ฌ ์ปจ๋ฒค์…˜(task-create โ†’ dispatch --inject โ†’ check --wait, worker_done ๊ถŒ์œ„)์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋งŒ๋“  ๋ฐฐ๊ฒฝ / ํฌ๋ ˆ๋”ง

@code-yeongyu๋‹˜์˜ LazyCodex ์œ„์— ์–น์€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. LazyCodex๋Š” oh-my-openagent (OmO)๋ฅผ Codex์šฉ ์—์ด์ „ํŠธ ํ•˜๋„ค์Šค๋กœ ํŒจํ‚ค์ง•ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด ์Šคํ‚ฌ์€ ๋…๋ฆฝ์ ์ธ ์ง€ํœ˜ ๋ ˆ์ด์–ด์ด๋ฉฐ ์œ„ ํ”„๋กœ์ ํŠธ๋“ค๊ณผ ๊ณต์‹ ์ œํœด ๊ด€๊ณ„๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

MIT โ€” LICENSE ์ฐธ๊ณ .

About

Claude Code skill: Claude orchestrates Codex + the LazyCodex harness ($ulw-loop, $start-work, $teammode) in a live tmux pane, then independently verifies.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages