• Codex์—์„œ ํŠน์ • ์ž‘์—…์„ ์ „๋‹ดํ•˜๋Š” ํŠน์ˆ˜ํ™”๋œ ํ•˜์œ„ AI ์—์ด์ „ํŠธ
  • ๊ฐ subagent๋Š” ๋…๋ฆฝ๋œ ์Šค๋ ˆ๋“œ์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰๋˜๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜๋กœ ๋ชจ์•„ ๋ฐ˜ํ™˜
  • ๋ช…์‹œ์  ์š”์ฒญ ์‹œ์—๋งŒ ์ƒ์„ฑ โ€” Codex๊ฐ€ ์ž„์˜๋กœ subagent๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Œ
  • TOML ํŒŒ์ผ๋กœ ์ปค์Šคํ…€ ์—์ด์ „ํŠธ ์ •์˜ ๊ฐ€๋Šฅ (๋ชจ๋ธ, ์ƒŒ๋“œ๋ฐ•์Šค, MCP Server ๋“ฑ ๊ฐœ๋ณ„ ์„ค์ •)

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰, PR ๋ฆฌ๋ทฐ, ๋””๋ฒ„๊น… ๋“ฑ ๋…๋ฆฝ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰
  • ์ปจํ…์ŠคํŠธ ๊ฒฉ๋ฆฌ: ๋Œ€๋Ÿ‰ ์ถœ๋ ฅ์ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š์Œ
  • ์—ญํ•  ๋ถ„๋ฆฌ: ์—์ด์ „ํŠธ๋ณ„๋กœ ๋ชจ๋ธ, ๋„๊ตฌ, ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๋น„์šฉ๊ณผ ๋ณด์•ˆ ์ตœ์ ํ™”
  • ํ™•์žฅ์„ฑ: CSV ๊ธฐ๋ฐ˜ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋กœ ์ˆ˜์‹ญ ๊ฐœ ์ž‘์—…์„ ์›Œ์ปค ๋‹จ์œ„๋กœ ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ฐ€๋Šฅ

AS-IS (Subagent ์—†์ด)

sequenceDiagram
    autonumber
    actor User
    participant Main as ๋ฉ”์ธ ์Šค๋ ˆ๋“œ

    User->>Main: "PR ๋ฆฌ๋ทฐํ•ด์ค˜"
    Main->>Main: ์ฝ”๋“œ ํƒ์ƒ‰ + ๋ณด์•ˆ ๋ถ„์„ + ๋ฌธ์„œ ํ™•์ธ
    Note over Main: ๋ชจ๋“  ์ž‘์—…์ด ์ˆœ์ฐจ ์‹คํ–‰<br/>๋Œ€๋Ÿ‰ ์ถœ๋ ฅ์ด ์ปจํ…์ŠคํŠธ์— ์ถ•์ 
    Main-->>User: ๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ
    Note over Main: โš ๏ธ ์‹œ๊ฐ„ ์†Œ์š” + ์ปจํ…์ŠคํŠธ ์˜ค์—ผ

TO-BE (Subagent ์‚ฌ์šฉ)

sequenceDiagram
    autonumber
    actor User
    participant Main as ๋ฉ”์ธ ์Šค๋ ˆ๋“œ
    participant A1 as pr_explorer (Subagent)
    participant A2 as reviewer (Subagent)
    participant A3 as docs_researcher (Subagent)

    User->>Main: "PR ๋ฆฌ๋ทฐํ•ด์ค˜, ์—์ด์ „ํŠธ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ"
    par ๋ณ‘๋ ฌ ์‹คํ–‰
        Main->>A1: ์ฝ”๋“œ ๊ฒฝ๋กœ ํƒ์ƒ‰
        Main->>A2: ์ •ํ™•์„ฑ/๋ณด์•ˆ ๋ถ„์„
        Main->>A3: API ๋ฌธ์„œ ๊ฒ€์ฆ
    end
    A1-->>Main: ๊ด€๋ จ ์ฝ”๋“œ ์š”์•ฝ
    A2-->>Main: ๋ฆฌ์Šคํฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
    A3-->>Main: ๋ฌธ์„œ ์ •ํ•ฉ์„ฑ ๊ฒฐ๊ณผ
    Main->>Main: 3๊ฐœ ๊ฒฐ๊ณผ ํ†ตํ•ฉ
    Main-->>User: ํ†ตํ•ฉ ๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ
    Note over Main: โœ… ๋ณ‘๋ ฌ ์‹คํ–‰ + ์ปจํ…์ŠคํŠธ ๊นจ๋—

๋นŒํŠธ์ธ Subagents

Agent์šฉ๋„
default๋ฒ”์šฉ ํด๋ฐฑ ์—์ด์ „ํŠธ
worker๊ตฌํ˜„, ์ˆ˜์ • ๋“ฑ ์‹คํ–‰ ์ค‘์‹ฌ ์ž‘์—…
explorer์ฝ๊ธฐ ์ค‘์‹ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰

Subagent ์ •์˜ ๋ฐฉ๋ฒ•

์ปค์Šคํ…€ ์—์ด์ „ํŠธ๋Š” TOML ํŒŒ์ผ๋กœ ์ •์˜ํ•œ๋‹ค:

์œ„์น˜๊ฒฝ๋กœ์ ์šฉ ๋ฒ”์œ„
Personal~/.codex/agents/<name>.toml๋‚ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ
Project.codex/agents/<name>.tomlํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋งŒ
# .codex/agents/code-reviewer.toml
name = "code-reviewer"
description = "์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ๋ณด์•ˆ์„ ๋ฆฌ๋ทฐํ•˜๋Š” ์ „๋ฌธ๊ฐ€"
developer_instructions = """
๋‹น์‹ ์€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด์ž…๋‹ˆ๋‹ค. ํ˜ธ์ถœ๋˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ 
ํ’ˆ์งˆ, ๋ณด์•ˆ, ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์„ธ์š”.
"""
sandbox_mode = "read-only"
model = "gpt-5.4"

์ฃผ์š” ํ•„๋“œ

ํ•„์ˆ˜ ํ•„๋“œ

ํ•„๋“œ์„ค๋ช…
name์—์ด์ „ํŠธ ์‹๋ณ„์ž (์Šคํฐ ์‹œ ์‚ฌ์šฉ)
description์‚ฌ์šฉ์ž ์•ˆ๋‚ด์šฉ ์„ค๋ช…
developer_instructionsํ•ต์‹ฌ ํ–‰๋™ ์ง€์‹œ์‚ฌํ•ญ (system prompt ์—ญํ• )

์„ ํƒ ํ•„๋“œ (์ƒ๋žต ์‹œ ๋ถ€๋ชจ ์„ธ์…˜ ์ƒ์†)

ํ•„๋“œ์„ค๋ช…์˜ˆ์‹œ
nickname_candidatesUI ํ‘œ์‹œ์šฉ ์ฝ๊ธฐ ์‰ฌ์šด ์ด๋ฆ„ ๋ชฉ๋ก["Code Scout", "Explorer"]
model์‚ฌ์šฉํ•  ๋ชจ๋ธ"gpt-5.4", "gpt-5.4-mini"
model_reasoning_effort์ถ”๋ก  ์ˆ˜์ค€low / medium / high
sandbox_mode์‹คํ–‰ ๊ถŒํ•œ"read-only", "workspace"
mcp_serversMCP Server ์„ค์ •์•„๋ž˜ ์˜ˆ์‹œ ์ฐธ์กฐ
skills.config๋ฐ”์ธ๋”ฉํ•  ์Šคํ‚ฌ์•„๋ž˜ ์˜ˆ์‹œ ์ฐธ์กฐ

๊ธ€๋กœ๋ฒŒ ์„ค์ •

~/.codex/config.toml์˜ [agents] ์„น์…˜์—์„œ ์ „์ฒด ๋™์ž‘์„ ์ œ์–ดํ•œ๋‹ค:

ํ•„๋“œํƒ€์ž…์„ค๋ช…๊ธฐ๋ณธ๊ฐ’
agents.max_threadsnumber๋™์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ ์ˆ˜6
agents.max_depthnumber์—์ด์ „ํŠธ ์ค‘์ฒฉ ๊นŠ์ด1
agents.job_max_runtime_secondsnumber์›Œ์ปค ํƒ€์ž„์•„์›ƒ1800

์ค‘์ฒฉ ๊นŠ์ด (max_depth)

๊ธฐ๋ณธ๊ฐ’ 1์€ ์ง์ ‘ ์ž์‹ ์—์ด์ „ํŠธ๋งŒ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ทธ ์ž์‹์ด ๋˜ ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ฐจ๋‹จํ•œ๋‹ค. ๊ฐ’์„ ๋†’์ด๋ฉด ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ๊ธ‰์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

flowchart TD
    Main["Main Thread"]
    A["Agent A (depth 1)"]
    B["Agent B (depth 1)"]
    C["Agent C (depth 2)"]

    Main --> A
    Main --> B
    A -.->|"max_depth=1 โ†’ โŒ ์ฐจ๋‹จ"| C

    style C stroke-dasharray: 5 5

์ƒŒ๋“œ๋ฐ•์Šค์™€ ๊ถŒํ•œ

  • Subagent๋Š” ๋ถ€๋ชจ ์„ธ์…˜์˜ ์ƒŒ๋“œ๋ฐ•์Šค ์ •์ฑ…์„ ์ƒ์†
  • ์ปค์Šคํ…€ ์—์ด์ „ํŠธ ํŒŒ์ผ์— ๋‹ค๋ฅธ ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•ด๋„, ๋ถ€๋ชจ์˜ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„๋ผ์ด๋“œ(sandbox ์„ ํƒ, ์Šน์ธ, --yolo)๊ฐ€ ์šฐ์„  ์ ์šฉ
  • Non-interactive ๋ชจ๋“œ์—์„œ๋Š” ์ƒˆ๋กœ์šด ์Šน์ธ์ด ํ•„์š”ํ•œ ์•ก์…˜์€ ์—๋Ÿฌ๋กœ ์‹คํŒจํ•˜๋ฉฐ, ๋ถ€๋ชจ ์›Œํฌํ”Œ๋กœ์šฐ์— ์—๋Ÿฌ๊ฐ€ ์ „ํŒŒ๋จ

์‹คํ–‰ ์ค‘ ์‚ฌ์šฉ์ž ๊ฐœ์ž…

Codex subagent๋Š” ์‹คํ–‰ ์ค‘์— ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ Claude Code subagent์™€์˜ ๊ฐ€์žฅ ํฐ ์„ค๊ณ„ ์ฐจ์ด์ด๋‹ค.

์Šค๋ ˆ๋“œ ์ „ํ™˜๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง

/agent          # ํ™œ์„ฑ ์—์ด์ „ํŠธ ์Šค๋ ˆ๋“œ ๋ชฉ๋ก ํ‘œ์‹œ + ์ „ํ™˜
  • /agent ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ subagent ์Šค๋ ˆ๋“œ ๊ฐ„ ์ž์œ ๋กญ๊ฒŒ ์ „ํ™˜
  • ์‹คํ–‰ ์ค‘์ธ subagent์— ์ง์ ‘ ๋ง์„ ๊ฑธ์–ด ๋ฐฉํ–ฅ ์กฐ์ •, ์ค‘๋‹จ, ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ ๊ฐ€๋Šฅ

์Šน์ธ ์š”์ฒญ ์˜ค๋ฒ„๋ ˆ์ด

subagent๊ฐ€ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ์ž‘์—…(ํŒŒ์ผ ์ˆ˜์ •, ๋ช…๋ น ์‹คํ–‰ ๋“ฑ)์„ ์‹œ๋„ํ•˜๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด๊ณ  ์žˆ๋”๋ผ๋„ ์Šน์ธ ์š”์ฒญ์ด ์˜ค๋ฒ„๋ ˆ์ด๋กœ ํ‘œ์‹œ๋œ๋‹ค:

sequenceDiagram
    autonumber
    actor User
    participant Main as ๋ฉ”์ธ ์Šค๋ ˆ๋“œ
    participant A1 as reviewer (Subagent)

    User->>Main: ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘์—… ์ค‘
    A1->>User: โš ๏ธ ์Šน์ธ ์š”์ฒญ ์˜ค๋ฒ„๋ ˆ์ด<br/>[source: reviewer]
    Note over User: `o` ํ‚ค๋กœ reviewer ์Šค๋ ˆ๋“œ ์—ด๊ธฐ
    User->>A1: approve / reject / answer

Claude Code์™€์˜ ๊ฐœ์ž… ๋ชจ๋ธ ๋น„๊ต

CodexClaude Code
์‹คํ–‰ ์ค‘ ์‚ฌ์šฉ์ž ๊ฐœ์ž…๊ฐ€๋Šฅ โ€” ์Šค๋ ˆ๋“œ ์ „ํ™˜, ๋ฐฉํ–ฅ ์กฐ์ •(steer), ์ค‘๋‹จ(stop)๋ถˆ๊ฐ€ โ€” ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜
์Šน์ธ ์š”์ฒญ์˜ค๋ฒ„๋ ˆ์ด๋กœ ์‹ค์‹œ๊ฐ„ ํ‘œ์‹œ, o ํ‚ค๋กœ ์ „ํ™˜ ํ›„ approve/reject/answer์‚ฌ์ „์— ํ•„์š”ํ•œ ํผ๋ฏธ์…˜ ์Šน์ธ ํ›„ ์‹œ์ž‘
์š”์ฒญ์— ์‘๋‹ตsubagent์˜ ์š”์ฒญ์— answer ๊ฐ€๋Šฅ (๊ณต์‹ ๋ฌธ์„œ ๋ช…์‹œ)๋ถˆ๊ฐ€ โ†’ Skill์ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ์—ญํ•  ํ•„์š”
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํŒจํ„ด๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ง์ ‘ ์กฐ์œจ ๊ฐ€๋Šฅ๋ฐ˜๋“œ์‹œ Skill์ด Agent๋ฅผ ์กฐ์œจ (Agent โ†’ Agent ๋ถˆ๊ฐ€)

Claude Code์—์„œ๋Š” subagent๊ฐ€ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์—†์–ด์„œ, Skill์ด ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ์—ญํ• ์„ ๋งก์•„ โ€œAgent ํ˜ธ์ถœ โ†’ ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ โ†’ ์‚ฌ์šฉ์ž ํ™•์ธ โ†’ ๋‹ค์Œ Agent ํ˜ธ์ถœโ€ ๋ฃจํ”„๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. Codex์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ subagent ์Šค๋ ˆ๋“œ์— ๊ฐœ์ž…(steer, stop, approve/reject/answer)ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋Ÿฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํŒจํ„ด์˜ ํ•„์š”์„ฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค. (๋‹จ, ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ด ๋น„๊ต๋ฅผ ์ง์ ‘ ์–ธ๊ธ‰ํ•˜์ง€๋Š” ์•Š์œผ๋ฉฐ, steer/answer์˜ ๊ตฌ์ฒด์  ๋™์ž‘ ๋ฒ”์œ„๋„ ๋ช…์‹œ๋˜์ง€ ์•Š์•˜๋‹ค.)

์‹คํ–‰ ํŒจํ„ด: ๋ณ‘๋ ฌ ์œ„์ž„

์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์—์ด์ „ํŠธ ๋ถ„๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๋ฉด Codex๊ฐ€ ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค:

User: "Spawn one agent per point, wait for all of them, and summarize results."
sequenceDiagram
    autonumber
    actor User
    participant Main as Codex (Main)
    participant A as Agent A
    participant B as Agent B
    participant C as Agent C

    User->>Main: "3๊ฐ€์ง€ ๊ด€์ ์œผ๋กœ ๋ถ„์„ํ•ด์ค˜,<br/>์—์ด์ „ํŠธ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ"
    par ๋ณ‘๋ ฌ ์Šคํฐ
        Main->>A: ๊ด€์  1 ๋ถ„์„
        Main->>B: ๊ด€์  2 ๋ถ„์„
        Main->>C: ๊ด€์  3 ๋ถ„์„
    end
    A-->>Main: ๊ฒฐ๊ณผ 1
    B-->>Main: ๊ฒฐ๊ณผ 2
    C-->>Main: ๊ฒฐ๊ณผ 3
    Main->>Main: 3๊ฐœ ๊ฒฐ๊ณผ ํ†ตํ•ฉ
    Main-->>User: ํ†ตํ•ฉ ์‘๋‹ต

CLI์—์„œ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ: /agent ๋ช…๋ น์œผ๋กœ ํ™œ์„ฑ ์Šค๋ ˆ๋“œ ๊ฐ„ ์ „ํ™˜ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๋ฐฐ์น˜ ์ฒ˜๋ฆฌ: spawn_agents_on_csv

์ผ๋ฐ˜ subagent ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ์ •์‹ ๊ธฐ๋Šฅ์ด์ง€๋งŒ, spawn_agents_on_csv๋Š” ์‹คํ—˜์  ๊ธฐ๋Šฅ์œผ๋กœ ํ–ฅํ›„ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. CSV์˜ ๊ฐ ํ–‰์„ ์›Œ์ปค 1๊ฐœ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ์„œ ๋‚ด๋ณด๋‚ธ๋‹ค:

flowchart LR
    CSV["input.csv<br/>(N rows)"] --> W1["Worker 1"]
    CSV --> W2["Worker 2"]
    CSV --> W3["Worker N"]
    W1 --> OUT["output.csv"]
    W2 --> OUT
    W3 --> OUT
ํŒŒ๋ผ๋ฏธํ„ฐ์„ค๋ช…
csv_path์ž…๋ ฅ CSV ๊ฒฝ๋กœ
instruction์›Œ์ปค ํ”„๋กฌํ”„ํŠธ ({column_name} ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์‚ฌ์šฉ)
id_columnํ–‰ ์‹๋ณ„์ž ์ปฌ๋Ÿผ (์„ ํƒ)
output_schema์›Œ์ปค๋ณ„ JSON ์ถœ๋ ฅ ํ˜•ํƒœ (์„ ํƒ)
output_csv_path๊ฒฐ๊ณผ CSV ๊ฒฝ๋กœ
max_concurrency๋™์‹œ ์›Œ์ปค ์ˆ˜ ์ œํ•œ
max_runtime_seconds์›Œ์ปค๋ณ„ ํƒ€์ž„์•„์›ƒ

๊ฐ ์›Œ์ปค๋Š” ๋ฐ˜๋“œ์‹œ report_agent_job_result๋ฅผ ์ •ํ™•ํžˆ 1ํšŒ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ฏธํ˜ธ์ถœ ์‹œ ์—๋Ÿฌ๋กœ ์ฒ˜๋ฆฌ.

ํ™œ์šฉ ์˜ˆ์‹œ: ํŒŒ์ผ/ํŒจํ‚ค์ง€ ํ–‰๋ณ„ ๋ฆฌ๋ทฐ, ์ธ์‹œ๋˜ํŠธ ๋ชฉ๋ก ๋ถ„์„, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋Œ€์ƒ ์ ๊ฒ€, ๊ตฌ์กฐํ™”๋œ ์š”์•ฝ ์ƒ์„ฑ

์ปค์Šคํ…€ ์—์ด์ „ํŠธ ํŒจํ„ด ์˜ˆ์‹œ

ํŒจํ„ด 1: PR ๋ฆฌ๋ทฐ ๋ถ„์—…

# .codex/agents/pr_explorer.toml โ€” ์ฝ๊ธฐ ์ „์šฉ ํƒ์ƒ‰
name = "pr_explorer"
description = "์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ๋ณ€๊ฒฝ ๊ทผ๊ฑฐ ์ˆ˜์ง‘"
sandbox_mode = "read-only"
model = "gpt-5.3-codex-spark"
# .codex/agents/reviewer.toml โ€” ๋ฆฌ์Šคํฌ ํ‰๊ฐ€
name = "reviewer"
description = "์ •ํ™•์„ฑ, ๋ณด์•ˆ, ๋ˆ„๋ฝ ํ…Œ์ŠคํŠธ ๊ด€์ ์˜ PR ๋ฆฌ๋ทฐ์–ด"
sandbox_mode = "read-only"
model = "gpt-5.4"
# .codex/agents/docs_researcher.toml โ€” API ๋ฌธ์„œ ๊ฒ€์ฆ
name = "docs_researcher"
description = "API ๋ฌธ์„œ์™€ ์ฝ”๋“œ ๋ณ€๊ฒฝ์˜ ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ"
sandbox_mode = "read-only"
model = "gpt-5.4-mini"
 
[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp"

ํŒจํ„ด 2: ํ”„๋ก ํŠธ์—”๋“œ ๋””๋ฒ„๊น… ๋ถ„์—…

์—์ด์ „ํŠธ์—ญํ• sandboxmodel
code_mapper๊ด€๋ จ ์ฝ”๋“œ ๊ฒฝ๋กœ ํƒ์ƒ‰read-only๊ฒฝ๋Ÿ‰ ๋ชจ๋ธ
browser_debugger๋ธŒ๋ผ์šฐ์ € ๋„๊ตฌ๋กœ ์ด์Šˆ ์žฌํ˜„workspace (์“ฐ๊ธฐ)๋†’์€ ์ถ”๋ก 
ui_fixerํƒ€๊ฒŸ ์ˆ˜์ • ๊ตฌํ˜„workspace (์“ฐ๊ธฐ)๊ฒฝ๋Ÿ‰ ๋ชจ๋ธ

Skills์™€์˜ ๊ด€๊ณ„

๋ฐฉํ–ฅ์„ค๋ช…
Skill โ†’ SubagentSkill์˜ dependencies.tools๋กœ ์—์ด์ „ํŠธ์— ํ•„์š”ํ•œ ๋„๊ตฌ ์„ ์–ธ. ๋ณ„๋„ ์—์ด์ „ํŠธ ์ •์˜ ํŒŒ์ผ(.codex/agents/)์—์„œ ์‹คํ–‰
Subagent โ†’ Skill์—์ด์ „ํŠธ TOML์˜ skills.config๋กœ ์Šคํ‚ฌ์„ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ์— ์ฃผ์ž…

Claude Code Subagent์™€ ๋น„๊ต

ํ•ญ๋ชฉCodex SubagentsClaude Code Subagents
์ •์˜ ํ˜•์‹TOML ํŒŒ์ผMarkdown ํŒŒ์ผ
์ €์žฅ ์œ„์น˜.codex/agents/.claude/agents/
๊ฐœ์ธ ์—์ด์ „ํŠธ~/.codex/agents/~/.claude/agents/
์ƒ์„ฑ ์กฐ๊ฑด์‚ฌ์šฉ์ž ๋ช…์‹œ์  ์š”์ฒญ ์‹œ์—๋งŒ์‚ฌ์šฉ์ž ๋ช…์‹œ์  ์š”์ฒญ ์‹œ์—๋งŒ
์‹คํ–‰ ์ค‘ ์‚ฌ์šฉ์ž ๊ฐœ์ž…๊ฐ€๋Šฅ (์Šค๋ ˆ๋“œ ์ „ํ™˜, ๋ฐฉํ–ฅ ์กฐ์ •, ์Šน์ธ/๊ฑฐ๋ถ€)๋ถˆ๊ฐ€ (๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜)
์ค‘์ฒฉ ์ƒ์„ฑmax_depth ์„ค์ •์œผ๋กœ ์ œ์–ด (๊ธฐ๋ณธ 1)๋ถˆ๊ฐ€ (๊ณต์‹ ์ œํ•œ)
๋นŒํŠธ์ธdefault, worker, explorerExplore, Plan, general-purpose, Bash
๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ ์ˆ˜max_threads (๊ธฐ๋ณธ 6)์ œํ•œ ์—†์Œ (Task ๋„๊ตฌ)
๋ฐฐ์น˜ ์ฒ˜๋ฆฌspawn_agents_on_csv ์ง€์›ํ•ด๋‹น ์—†์Œ
UI ๋‹‰๋„ค์ž„nickname_candidates ์ง€์›ํ•ด๋‹น ์—†์Œ
์Šคํ‚ฌ ์—ฐ๋™skills.config (TOML)skills (frontmatter)
Skill์—์„œ ์œ„์ž„๋ณ„๋„ ์—์ด์ „ํŠธ ํŒŒ์ผ ์ •์˜ ํ•„์š”context: fork + agent (frontmatter ๋‚ด)
์„ค์ • ํŒŒ์ผ~/.codex/config.tomlsettings.json / ์—์ด์ „ํŠธ frontmatter

ํ•ต์‹ฌ ์„ค๊ณ„ ์ฐจ์ด

flowchart TD
    subgraph Codex["Codex ๋ฐฉ์‹"]
        CS["Skill (SKILL.md)"] -.->|"๋ณ„๋„ ํŒŒ์ผ ์ฐธ์กฐ"| CA["Agent (TOML)"]
        CA -->|"๋…๋ฆฝ ์ •์˜"| CE["์‹คํ–‰"]
    end

    subgraph Claude["Claude Code ๋ฐฉ์‹"]
        CCS["Skill (SKILL.md)"] -->|"context: fork<br/>agent: Explore"| CCA["Subagent ์œ„์ž„"]
        CCA --> CCE["์‹คํ–‰"]
    end
  • Codex: Skill๊ณผ Agent๊ฐ€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ ํŒŒ์ผ๋กœ ์ •์˜. Skill์€ ์›Œํฌํ”Œ๋กœ์šฐ, Agent๋Š” ์‹คํ–‰ ์ฃผ์ฒด
  • Claude Code: Skill์˜ frontmatter ์•ˆ์—์„œ context: fork + agent๋กœ subagent ์œ„์ž„์„ ์„ ์–ธ. ํ•˜๋‚˜์˜ ํŒŒ์ผ์—์„œ ๋ชจ๋‘ ์ œ์–ด

์•ˆํ‹ฐํŒจํ„ด

ํ•˜์ง€ ๋ง ๊ฒƒ์ด์œ ๋Œ€์•ˆ
๋ชจ๋“  ์ž‘์—…์— ์—์ด์ „ํŠธ ์ƒ์„ฑํ† ํฐ ๋น„์šฉ ๊ธ‰์ฆ๋‹จ์ˆœ ์ž‘์—…์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ง์ ‘
max_depth๋ฅผ ๋†’๊ฒŒ ์„ค์ •ํŒฌ์•„์›ƒ์œผ๋กœ ๋น„์šฉ/๋ ˆ์ดํ„ด์‹œ ํญ๋ฐœ๊ธฐ๋ณธ๊ฐ’ 1 ์œ ์ง€, ํ•„์š” ์‹œ๋งŒ 2
์—์ด์ „ํŠธ ํŒŒ์ผ์— ๋„ˆ๋ฌด ๋„“์€ ์—ญํ• ์—ญํ• ์ด ๋ชจํ˜ธํ•˜๋ฉด ํ’ˆ์งˆ ์ €ํ•˜์ข๊ณ  ๋ช…ํ™•ํ•œ ๋‹จ์ผ ์—ญํ•  ์ •์˜
sandbox_mode ์—†์ด ๋ฐฐํฌ์˜๋„์น˜ ์•Š์€ ํŒŒ์ผ ์ˆ˜์ •/์‚ญ์ œํƒ์ƒ‰ ์—์ด์ „ํŠธ๋Š” read-only ํ•„์ˆ˜

์ฐธ๊ณ  ๋ฌธ์„œ