26.5 KB ยท ์ˆ˜์ • 2026-06-03 11:14
๋ชฉ์ฐจ

๐Ÿšจ [๊ธด๊ธ‰ยท1์ˆœ์œ„] ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ํ†ตํ•ฉ ์•„ํ‚คํ…์ฒ˜ โ€” ์„ธ๋ถ€ ์ƒ์˜ (cmdboard ์ž์› ์ฐธ์กฐ)

2026-05-29 KST ยท SARA(vscode_sara) ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ํ†ตํ•ฉ ์„ค๊ณ„ ์„ธ๋ถ€ ์ƒ์˜. ์ฑ„ํ‹ฐโ†”์‚ฌ์šฉ์ž ๋Œ€ํ™” ์ „์ฒด ๊ธฐ๋ก. ๊ธด๊ธ‰ยท1์ˆœ์œ„. ์ƒˆ ๋Œ€ํ™”๋ฐฉ์€ ์ด ํŽ˜์ด์ง€ + ์ธ์ˆ˜์ธ๊ณ„์„œ ์ตœ์‹  ์Šค๋ƒ…์ƒท์„ ์ฝ๊ณ  ์ด์–ด๋ฐ›๋Š”๋‹ค.

0. ํ•œ ์ค„ ์š”์ง€

vscode_sara๋Š” cmdboard ํŒŒ์ƒ๋ฌผ์ด๊ณ , cmdboard์—๋Š” ์ด๋ฏธ PLANNER/CODI/EVALUATOR/ROUTER ํ•˜๋„ค์Šค + ์ €์žฅ ๋ชจ๋ธ(chat_messagesยทactivity_logsยทHandoffArtifactยทcontinuation_state) + Phase ๋กœ๋“œ๋งต์ด ์„ค๊ณ„ยท์ผ๋ถ€ ๊ตฌํ˜„๋ผ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ SARA ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธํ™”๋Š” ๋ฐฑ์ง€ ์„ค๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ cmdboard ์ž์›์˜ ์ด์‹ยท์žฌ์‚ฌ์šฉ์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค. ๋‘ ๋ชฉํ‘œ(๋ฌดํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ์ •ํ™•์„ฑ + ๋น ๋ฅธ ๋กœ๋“œ/์ €์žฅ)์˜ ํ•ต์‹ฌ ๋ ˆ๋ฒ„๋Š” ์ €์žฅ์†Œ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ (A) ์ง€์‹๋ฒ ์ด์Šค ๊ฒ€์ƒ‰์ „๋žต + (B) ์ž‘์—…๊ทธ๋ž˜ํ”„ + ๊ฒ€์ฆ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ ๊ฒฐ๊ณผ๊ณ„์•ฝ์ด๋‹ค.

1. ๋…ผ์˜ ํ๋ฆ„ (์‹œ๊ฐ„์ˆœ)

  1. Obsidian ๊ฒ€ํ†  โ€” ๋…ธํŠธ์•ฑ Obsidian(๋กœ์ปฌ .md + git + AI ํ”Œ๋Ÿฌ๊ทธ์ธ) vs ํ˜„์žฌ Notion ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต. ๊ฒฐ๋ก : Obsidian์€ .md+git ์›Œํฌํ”Œ๋กœ์—” ๋งž์ง€๋งŒ SARA ์ •ํ™•์„ฑยท์†๋„์—” ๋ ˆ๋ฒ„๊ฐ€ ์•„๋‹˜. ํŠธ๋ž˜์ปค DBยท๋งํฌ ๊ณต์œ ๋Š” Notion ์šฐ์„ธ. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฐ€๋Šฅํ•˜๋‚˜ ํ•„์ˆ˜ ์•„๋‹˜.
  2. Notion+RDS ์บ์‹œ ํ‰๊ฐ€ โ€” ์†๋„๋Š” ์ด๋ฏธ RDS-first๋กœ ํ•ด๊ฒฐ๋จ. ์ •ํ™•์„ฑ ์œ„ํ—˜์€ ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์บ์‹œ ์ „๋žต: ํ˜„์žฌ truncate(์ž˜๋ผ๋‹ด๊ธฐ) + ๋‹จ์ผ ํŽ˜์ด์ง€ ํฌ๋กค์ด 1์ˆœ์œ„ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ์›์ธ.
  3. ์ •ํ™•์„ฑโ†”์†๋„ ์ŠคํŽ™ํŠธ๋Ÿผ โ€” truncate-dump(ํ˜„์žฌ, ์œ„ํ—˜) โ†’ full-dump(ํ˜„ ๊ทœ๋ชจ ์ตœ์ ) โ†’ ์ž„๋ฒ ๋”ฉ RAG(๊ทœ๋ชจ ํ™•์žฅ ์‹œ ์ •๋‹ต, ๊ทผ๊ฑฐ ์ธ์šฉ ๊ฐ€๋Šฅ).
  4. ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์ง„์ž… ์‹œ๋‚˜๋ฆฌ์˜ค โ€” ๋ณ‘๋ชฉยทํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ๋ฌด๊ฒŒ์ค‘์‹ฌ์ด "์ฝ๊ธฐ"์—์„œ "์ง€์‹œยท์ทจํ•ฉ"์œผ๋กœ ์ด๋™ โ†’ ๋‘ ๋ ˆ์ด์–ด ๋ถ„๋ฆฌ ํ•„์š”.

2. ํ•ต์‹ฌ ๊ฒฐ๋ก  โ€” ๋‘ ๋ ˆ์ด์–ด ๋ถ„๋ฆฌ

3. ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ๋ฐฉ์–ด

4. โ˜… cmdboard ์ž์› ์ฐธ์กฐ (ํ•ต์‹ฌ โ€” ์žฌ์‚ฌ์šฉ ๋Œ€์ƒ)

cmdboard V2(2026-05-25 ํ™•์ •) ํ—ˆ๋ธŒยทํ•˜๋„ค์Šค ๋ฌธ์„œ ๊ธฐ์ค€, ๋‹ค์Œ์ด ์ด๋ฏธ ์„ค๊ณ„๋จ: - ์—ญํ•  ํ•˜๋„ค์Šค: SARA(user-facing coordinator: ์š”์ฒญ ์ˆ˜์‹ ยท์ƒํƒœ ์š”์•ฝยท์งˆ๋ฌธ/์Šน์ธยท๊ฒฐ๊ณผ ๋ณด๊ณ ) / PLANNER(=๊ธฐ์กด ์ฑ„ํ‹ฐ: ์ž‘์—…๊ณ„์•ฝ์„œยท์™„๋ฃŒ๊ธฐ์ค€ยท๊ฒ€์ฆ๊ธฐ์ค€ยทCODI ์ง€์‹œ๋ฌธ ์ž‘์„ฑ) / CODI(์ฝ”๋“œ ์ˆ˜์ •ยทํ…Œ์ŠคํŠธยท์ปค๋ฐ‹ยท๋ณด๊ณ ) / EVALUATOR(๋…๋ฆฝ ๊ฒ€์ฆ์ธต: task_contract ๊ธฐ์ค€ PASS/FAIL/์ˆ˜์ •์š”๊ตฌ, ์ง์ ‘ ์ˆ˜์ • ๊ธˆ์ง€) / ROUTER(๋‹ค์Œ ํ–‰๋™ ๊ฒฐ์ •ยทsilent block ์‚ฌ์œ  ๊ธฐ๋กยทhandoff ํŒ๋‹จ). - ์ €์žฅ/ํžˆ์Šคํ† ๋ฆฌ ๋ชจ๋ธ: ์‚ฌ์šฉ์žโ†”SARA=chat_messages / ๋‚ด๋ถ€์ง„ํ–‰=activity_logs / ์žฅ๋ฌธ ์‚ฐ์ถœ๋ฌผ=HandoffArtifact / ์ƒˆ ์„ธ์…˜ ์ด์–ด๋ฐ›๊ธฐ=continuation_state. ์นด๋“œ ๋ณธ๋ฌธ์—” ์ตœ์‹  ์š”์•ฝ + artifact pointer๋งŒ(์žฅ๋ฌธ ๋ˆ„์  ๊ธˆ์ง€). - B ๋ ˆ์ด์–ด๋ฅผ ์ƒˆ ํ…Œ์ด๋ธ” ์—†์ด: HandoffArtifact enum ํ™•์žฅ 1ํšŒ๋กœ task_contract/evaluator_report/routing_decision/continuation_state ์ˆ˜์šฉ ๊ฐ€๋Šฅ(Phase 2 ํ›„๋ณด). - EVALUATOR ๋…๋ฆฝ์„ฑ = ์˜ต์…˜ A ํ™•์ •: ์ž๊ฐ€๊ฒ€์ฆ(์ €๋น„์šฉ)์„ baseline์œผ๋กœ โ†’ ๋…๋ฆฝ EVALUATOR๋Š” ์œ„ํ—˜ ๋†’์€ ์ž‘์—…์—๋งŒ ์ ์ง„ ๋„์ž…(์˜ต์…˜ B ๊ธฐ๊ฐ). - Phase ๋กœ๋“œ๋งต: P1 ๋ผ๋ฒจ SARAํ™” โ†’ P2 PLANNER+task_contract โ†’ P3 EVALUATOR ๋…๋ฆฝ โ†’ P4 ROUTER decision โ†’ P5 continuation_state โ†’ P6 3-zone UI. (ํ…Œ์ŠคํŠธ ์„œ๋ฒ„ :8003, ์šด์˜ master push ์ž๋™๋ฐฐํฌ) - ์ฐธ์กฐ ๋งํฌ: cmdboard ํ—ˆ๋ธŒ /3689512d9469810faa6dc5f90c0d0c38, V2 ํ•˜๋„ค์Šค /36a9512d94698138aac4d6c3d5c306a2.

5. ๋งคํ•‘ โ€” ์ด๋ฒˆ ๋…ผ์˜ โ†” cmdboard ๊ธฐ์กด ์ž์›

์ด๋ฒˆ ๋…ผ์˜ ๊ฐœ๋… cmdboard ๊ธฐ์กด ์ž์›
์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ SARA SARA (user-facing coordinator)
"์ฑ„ํ‹ฐ vs SARA ์ฃผ์ฒด" ๊ฒฐ์ • ํฌ์ธํŠธ ์ด๋ฏธ ๊ฒฐ์ •๋จ: ์ฑ„ํ‹ฐ=PLANNER(๋‚ด๋ถ€), SARA=coordinator
๊ฒ€์ฆ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ ๊ฒฐ๊ณผ๊ณ„์•ฝ task_contract + EVALUATOR ๋…๋ฆฝ๊ฒ€์ฆ
ํ”Œ๋žœ=1๊ธ‰ ๊ตฌ์กฐ ๊ฐ์ฒด(B ๋ ˆ์ด์–ด) HandoffArtifact enum ํ™•์žฅ(task_contract ๋“ฑ)
์กฐ์œจ ํ๋ฆ„ ์ œ์–ด ROUTER (next actionยทsilent block)
continuation ์ตœ์‹ ๋ณต์›(g15) continuation_state
A ์ง€์‹๋ฒ ์ด์Šค RAG (์‹ ๊ทœ) โ€” cmdboard 'ํ”„๋กœ์ ํŠธ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆํผ๋Ÿฐ์Šค'๊ฐ€ ์œ ์‚ฌ ์„ ๋ก€
## 6. ๊ฒฐ์ • / ๋ฏธ๊ฒฐ
๊ฒฐ์ • (cmdboard ๊ธฐ๋ฐ˜, ์žฌํ™•์ธ)
- ์‚ฌ์šฉ์ž-facing = SARA ๋‹จ์ผ. ๋‚ด๋ถ€ = PLANNER/CODI/EVALUATOR/ROUTER ๋ถ„๋‹ด.
- ์ฑ„ํ‹ฐ = PLANNER. B ๋ ˆ์ด์–ด๋Š” HandoffArtifact ์žฌ์‚ฌ์šฉ. EVALUATOR ์˜ต์…˜ A(์ ์ง„ ๋„์ž…).
๋ฏธ๊ฒฐ (์ƒˆ ๋ฐฉ ๊ฒฐ์ • ๋Œ€๊ธฐ)
1. vscode_sara(SARA ํŒจ๋„)์— cmdboard ํ•˜๋„ค์Šค๋ฅผ ์–ด๋””๊นŒ์ง€ ์ด์‹ํ• ์ง€ โ€” ํŒจ๋„์€ ํ˜„์žฌ ๋‹จ์ผ SARA(์ฝ๊ธฐ์ „์šฉ)ยทclaude-code MCP ๋ฏธ๋“ฑ๋ก. PLANNER/CODI ๊ฒฝ๋กœ(์ฑ„ํ‹ฐโ†’์ฝ”๋”” ๋˜๋Š” SARAโ†’์ฝ”๋”” bridge)๋ฅผ ํŒจ๋„์— ์–ด๋–ป๊ฒŒ ๋“ค์ผ์ง€.
2. A ์ง€์‹๋ฒ ์ด์Šค: full-dump ์œ ์ง€ vs RDS ์ž„๋ฒ ๋”ฉ RAG ๋„์ž… ์‹œ์ .
3. ์บ์‹œ truncate ์ œ๊ฑฐ + ์ž์‹ ํฌ๋กค(B-2)์„ ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์ „์— ๋จผ์ € ์ฒ˜๋ฆฌํ• ์ง€.
4. cmdboard โ†” vscode_sara ์ฝ”๋“œ/์Šคํ‚ค๋งˆ ๊ณต์œ  ๋ฒ”์œ„(๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌํ™” vs ๊ฐ์ž ์ด์‹).
## 7. ๋‹ค์Œ ์‹œ์ž‘์  (์ƒˆ ๋Œ€ํ™”๋ฐฉ)
- ์ด ํŽ˜์ด์ง€ + ์ธ์ˆ˜์ธ๊ณ„์„œ ์ตœ์‹  ์Šค๋ƒ…์ƒท์„ ์‹œ๋“œ๋กœ ์ฝ๋Š”๋‹ค.
- ์ฒซ ๊ฒฐ์ •: ยง6 ๋ฏธ๊ฒฐ 1ยท4(์ด์‹ ๋ฒ”์œ„ยท์ฝ”๋“œ ๊ณต์œ ) โ†’ ๊ทธ๋‹ค์Œ B ๋ ˆ์ด์–ด ์Šคํ‚ค๋งˆ(HandoffArtifact ํ™•์žฅ vs sara_* ํ…Œ์ด๋ธ”) ์„ค๊ณ„.
- ์›์น™: ๋ฐฑ์ง€ ์„ค๊ณ„ ๊ธˆ์ง€, cmdboard ๊ฒ€์ฆ ์ž์› ์žฌ์‚ฌ์šฉ ์šฐ์„ . ์œ„ํ—˜์ž‘์—…(์‚ญ์ œยท์šด์˜๋ฐฐํฌยทforce)์€ ๋ณ„๋„ ์Šน์ธ.
---
## 8. ์„œ๋ธŒ์—์ด์ „ํŠธ ๊ธฐ๋ฐ˜ ์‹คํ–‰ ๋ชจ๋ธ ์ถ”๊ฐ€ (2026-05-29 KST ยท ์ฑ„ํ‹ฐโ†”์‚ฌ์šฉ์ž ํ›„์† ์ƒ์˜)
> ์ง์ „ ยง1~7์˜ "์—ญํ•  ํ•˜๋„ค์Šค"๋ฅผ claude-agent-sdk ์„œ๋ธŒ์—์ด์ „ํŠธ(Agent/Task ๋„๊ตฌ) ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์ฒดํ™”. cmdboard ๊ณ„ํš์„ ๋Œ€์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํ•ฉ์นจ: ์„œ๋ธŒ์—์ด์ „ํŠธ=์‹คํ–‰ ๊ฒฉ๋ฆฌ, cmdboard RDS ๋ชจ๋ธ=์ƒํƒœยท๊ฒ€์ฆยท์˜์†.
### 8.1 SDK ์‚ฌ์‹ค ํ™•์ธ (๋ฆฌ์„œ์น˜ ๊ทผ๊ฑฐ)
- ์„œ๋ธŒ์—์ด์ „ํŠธ๋Š” ๊ฐ์ž ์ƒˆ(fresh) ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰, ์ค‘๊ฐ„ ๋„๊ตฌํ˜ธ์ถœยท๊ฒฐ๊ณผ๋Š” ๋‚ด๋ถ€์— ๋‚จ๊ณ  ๋ถ€๋ชจ์—” ์ตœ์ข… ๋ฉ”์‹œ์ง€๋งŒ ๋ฐ˜ํ™˜.
- ์„œ๋กœ์˜ ์ž‘์—…์— ์ ‘๊ทผ ๋ถˆ๊ฐ€(๋ช…์‹œ์  ์ „๋‹ฌ๋งŒ), ์„œ๋ธŒ์—์ด์ „ํŠธ๋Š” ์ž๊ธฐ ์„œ๋ธŒ์—์ด์ „ํŠธ ๋ชป ๋„์›€(1-depth).
- ๊ธฐ๋ณธ stateless(resume ์—†๋Š” ํ˜ธ์ถœ=๊ธฐ์–ต ์—†์Œ). resume(agent_id)๋กœ stateful ์ด์–ด๊ฐ€๊ธฐ ๊ฐ€๋Šฅ(v2.0.28+).
- outputFormat(v0.1.45+, {type:'json_schema', schema:{...}})๋กœ ์ตœ์ข… ๊ฒฐ๊ณผ JSON ์Šคํ‚ค๋งˆ ๊ฐ•์ œ โ€” ํ”„๋กฌํ”„ํŠธ๋กœ JSON ๋ถ€ํƒ๋ณด๋‹ค ํŒŒ์‹ฑ ์•ˆ์ •.
- ์„œ๋ธŒ์—์ด์ „ํŠธ๋ณ„ ์ž์ฒด systemPromptยท๋„๊ตฌ ์ œํ•œ ๋ถ€์—ฌ ๊ฐ€๋Šฅ โ†’ ํ•˜๋„ค์Šค ๊ทธ๋Œ€๋กœ ์ด์‹.
### 8.2 ์—ญํ• โ†”์„œ๋ธŒ์—์ด์ „ํŠธ ๋งคํ•‘
- PLANNER / CODI / EVALUATOR = .claude/agents/ ์„œ๋ธŒ์—์ด์ „ํŠธ(ํ”„๋กฌํ”„ํŠธ=cmdboard ํ•˜๋„ค์Šค ์ด์‹, ๋„๊ตฌ ์ œํ•œ ๊ฐ์ž).
- ROUTER = ๋ถ€๋ชจ SARA ๋กœ์ง(์„œ๋ธŒ์—์ด์ „ํŠธ ์•„๋‹˜). ์„œ๋ธŒ์—์ด์ „ํŠธ ๊ฐ„ ํ˜ธ์ถœ ๋ถˆ๊ฐ€ํ•˜๋ฏ€๋กœ ๋‹ค์Œํ–‰๋™ยท์žฌํ˜ธ์ถœยท์™„๋ฃŒยท์—์Šค์ปฌ๋ ˆ์ด์…˜ ํŒ๋‹จ์€ ์ „๋ถ€ ๋ถ€๋ชจ ๋ฃจํ”„์— ๋ชจ์ž„.
- ๊ฒฐ๊ณผ ํšŒ์ˆ˜: ์ฝ”๋””๊ฐ€ โ‘  ์ƒ์„ธ๋Š” .md(Write ๋„๊ตฌ, ์‚ฌ๋žŒ์šฉ) โ‘ก ์ตœ์ข…์€ outputFormat JSON(๋ณ€๊ฒฝํŒŒ์ผ/์ปค๋ฐ‹ํ•ด์‹œ/ํ…Œ์ŠคํŠธ์ถœ๋ ฅ/py_compile/md_artifact_path)์œผ๋กœ ํšŒ์ˆ˜ โ†’ RDS HandoffArtifact.
### 8.3 ์ฝ”๋”” ์ง์ ‘(ํ˜„ํ–‰ ์ˆ˜๋™) vs ์„œ๋ธŒ์—์ด์ „ํŠธ ์ฝ”๋”” โ€” ์ฐจ์ด
- ์‹คํ–‰ ํŠธ๋ฆฌ๊ฑฐ: ์‚ฌ๋žŒ์ด VS Code ๋””์ŠคํŒจ์น˜(ํ˜„ํ–‰) vs SARA๊ฐ€ Task๋กœ ์ž๋™ ํ˜ธ์ถœ.
- ๊ถŒํ•œ ์œ„ํ—˜: ํ˜„ํ–‰์€ ์ฝ”๋””๊ฐ€ broker(:7777) ๊ฒฝ์œ  โ†’ ์œ„ํ—˜์ž‘์—… ํ…”๋ ˆ๊ทธ๋žจ ๊ฒŒ์ดํŠธ. ์„œ๋ธŒ์—์ด์ „ํŠธ ์ฝ”๋””๋Š” Bash๋ฅผ broker ๊ฒฝ์œ ๋กœ ๊ฐ•์ œ ์•ˆ ํ•˜๋ฉด ๊ฒŒ์ดํŠธ ์šฐํšŒ(= ์ธ๊ณ„์„œ "์ฑ„ํ‹ฐโ†’claude-code broker ๋ฏธ๊ฐ€๋“œ ๊ฐญ"). โ†’ ์ฝ”๋”” ์„œ๋ธŒ์—์ด์ „ํŠธ ๋„๊ตฌ์˜ broker ๊ฒฝ์œ  ๊ฐ•์ œ๊ฐ€ P1 ํ•„์ˆ˜ ์กฐ๊ฑด.
- ์‚ฌ๋žŒ ๊ฐœ์ž… ์ง€์  ์†Œ๋ฉธ โ†’ ยง3 โ‘ข ์—ฐ์‡„ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ์œ„ํ—˜โ†‘ โ†’ task_contract+EVALUATOR๊ฐ€ ์‚ฌ๋žŒ๊ฒ€์ฆ ๋Œ€์ฒดํ•ด์•ผ ํ•จ.
### 8.4 ์ œ์–ด ๋ฃจํ”„ (์žฌ์ง„ํ–‰ยท์™„๋ฃŒ ํŒ๋‹จ์˜ ์†Œ์žฌ)
SARA(๋ถ€๋ชจ ๋ฃจํ”„)
 โ”œโ‘  PLANNER โ†’ task_contract(JSON) โ†’ RDS
 โ”œโ‘ก CODI(๊ณ„์•ฝ ์ „๋‹ฌ) โ†’ ๊ฒฐ๊ณผ(JSON+.md) โ†’ RDS
 โ”œโ‘ข EVALUATOR(๊ณ„์•ฝ+๊ฒฐ๊ณผ ์ „๋‹ฌ) โ†’ evaluator_report(PASS/FAIL/์ˆ˜์ •์š”๊ตฌ + ์‚ฌ์œ  + ์žฌํ˜„์ฆ๊ฑฐ)
 โ””โ‘ฃ ROUTER(๋ถ€๋ชจ) ๋ถ„๊ธฐ:
      PASS โ†’ ์™„๋ฃŒ ์ฒ˜๋ฆฌ / FAILยท์ˆ˜์ • โ†’ โ‘ก๋กœ ์žฌํ˜ธ์ถœ(๊ณ„์•ฝ+required_fixes ์ฃผ์ž…) / ํ•œ๊ณ„์ดˆ๊ณผ โ†’ ์‚ฌ๋žŒ ์—์Šค์ปฌ๋ ˆ์ด์…˜

8.5 ๋ฌดํ•œ๋ฃจํ”„ยท๊ณต๋ชจ ๋ฐฉ์–ด

8.6 P1 ๊ถŒ์žฅ (๋‹จ๊ณ„ ๊ฒŒ์ดํŒ…)

8.7 ๋‹ค์Œ ์‚ฐ์ถœ๋ฌผ ํ›„๋ณด

  1. P1 ์ž‘์—…๊ณ„์•ฝ์„œ(.md): ์„œ๋ธŒ์—์ด์ „ํŠธ ์ •์˜ ๋ฒ”์œ„ + ์Šคํ‚ค๋งˆ + RDS ํšŒ์ˆ˜ + ์ฝ”๋”” ๊ฒŒ์ดํŒ… ์กฐ๊ฑด.
  2. task_contract / evaluator_report / routing_decision JSON ์Šคํ‚ค๋งˆ ์ดˆ์•ˆ.
  3. ์ฝ”๋”” ์„œ๋ธŒ์—์ด์ „ํŠธ ํ•˜๋„ค์Šค ํ”„๋กฌํ”„ํŠธ + outputFormat ์Šคํ‚ค๋งˆ ์ƒ˜ํ”Œ 1๊ฐœ.

8.8 ๋ณ‘ํ–‰ ์ž‘์—…: RDS ๋ฉ”๋ชจ๋ฆฌ MCP (์ด ๋Œ€ํ™”๋ฐฉ์šฉ)


9. โœ… ์™„๋ฃŒ โ€” ์ฑ„ํ‹ฐโ†”GPT ์ž๋™ ์†Œํ†ต SW (agent-dialogue-hub ๊ตฌ์ถ• ์™„๋ฃŒ, 2026-05-30)

์‚ฌ์šฉ์ž ์ง€์‹œ๋กœ ์ƒˆ 1์ˆœ์œ„ = ์ฑ„ํ‹ฐ(Claude)โ†”GPT ์ž๋™ ํ˜‘์˜ SW. ๊ธฐ์กด ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ํ†ตํ•ฉ(ยง1~8)์€ 2์ˆœ์œ„๋กœ ๋‚ด๋ฆผ. ์ƒˆ ๋Œ€ํ™”๋ฐฉ์€ ์ด ยง9 + ์ธ์ˆ˜์ธ๊ณ„์„œ ์ตœ์‹  ์Šค๋ƒ…์ƒท์„ ์‹œ๋“œ๋กœ ์ฝ๋Š”๋‹ค.

9.1 ๋ชฉํ‘œ

์ฑ„ํ‹ฐ์™€ GPT๊ฐ€ ์‚ฌ์šฉ์ž ๊ทœ์น™ ๊ธฐ์ค€์œผ๋กœ ์ž๋™(์‚ฌ๋žŒ์ด ๋งค ํ„ด ๊ฐœ์ž…ํ•˜์ง€ ์•Š๊ณ ) ํ˜‘์˜. ์‚ฌ์šฉ์ž๋Š” ์ƒ์‹œ ๊ด€์ „ + ์„ ํƒ์  ๊ฐœ์ž…(์ฃผ์ž…ยท์ผ์‹œ์ •์ง€ยท์Šน์ธ). ํ†ต์‹  ๊ธฐ๋ก์€ RDS. ์†๋„ ์šฐ์„ .

9.2 ํ•ต์‹ฌ ์ œ์•ฝ (๋ฆฌ์„œ์น˜ ํ™•์ •)

9.3 ํ™•์ • ๊ฒฐ์ •

9.4 ์•„ํ‚คํ…์ฒ˜

๋กœ์ปฌ ๋Œ€ํ™” ํ—ˆ๋ธŒ (FastAPI, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ=ROUTER)
  - ์ž๋™ ํ•‘ํ ๋ฃจํ”„: ํ„ด ์ง„ํ–‰ยท์ข…๋ฃŒ์กฐ๊ฑด(ํ•ฉ์˜)ยท์žฌ์‹œ๋„ ์ƒํ•œ NํšŒ
  - ๊ทœ์น™ ๊ฐ•์ œ: room/topic/role(chati|gpt)/kind(report|feedback) ์Šคํ‚ค๋งˆ
  - ์ „ ํ„ด cmdboard RDS ๊ธฐ๋ก (source of truth)
  - WebSocket ํ‘ธ์‹œ
   โ”œ stdio MCP  โ†’ ์ฑ„ํ‹ฐ(Claude)
   โ”œ OpenAI API โ†’ GPT-5.5 ์ฐธ์—ฌ์ž
   โ”” WebSocket  โ†’ ์›น๋ทฐ์–ด(๊ด€์ „ + ์„ ํƒ์  ๊ฐœ์ž…: ์ฃผ์ž…/์ผ์‹œ์ •์ง€/์Šน์ธ)

9.5 ์žฌ์‚ฌ์šฉ ์ž์‚ฐ

9.6 ๋ฏธ๊ฒฐ (์ƒˆ ๋ฐฉ ๊ฒฐ์ •)

  1. ์ฑ„ํ‹ฐ๋„ ์ž๋™ ๋ฃจํ”„์— ๋„ฃ์„์ง€: โ“์ฑ„ํ‹ฐ๋„ Claude API/agent-sdk๋กœ ์ž๋™ ๊ตฌ๋™(์–‘์ชฝ ๋Œ€์นญยท์ง„์งœ ์ž๋™) vs โ“‘GPT๋งŒ ์ž๋™, Claude๋Š” SARA ํŒจ๋„ ๋‹ด๋‹น. (์ด ๋ฐฉ ์ฑ„ํ‹ฐ ์•ฑ์€ GPT ์•ฑ๊ณผ ๋™์ผ ํ•œ๊ณ„๋กœ ์ž๋™ ๋ฃจํ”„ ๋ถ€์ ํ•ฉ)
  2. ํ—ˆ๋ธŒ๋ฅผ ์‹ ๊ทœ๋กœ ๋งŒ๋“ค์ง€ vs cody-mcp-gateway ํ™•์žฅ.
  3. ์ข…๋ฃŒ์กฐ๊ฑดยท์žฌ์‹œ๋„ ์ƒํ•œยท์—ญํ•  ํ”„๋กฌํ”„ํŠธ(์‚ฌ์šฉ์ž ๊ทœ์น™ ์ฃผ์ž…) ๊ตฌ์ฒด๊ฐ’.
  4. RDS ์Šคํ‚ค๋งˆ: ์‹ ๊ทœ conversation ํ…Œ์ด๋ธ” vs ๊ธฐ์กด chat_messages ํ™•์žฅ.
  5. OpenAI API ํ‚ค ๋ฐœ๊ธ‰ยท๊ฒฐ์ œ ์…‹์—….

9.7 ๋‹ค์Œ ์‚ฐ์ถœ๋ฌผ ํ›„๋ณด

  1. PoC ์„ค๊ณ„์„œ(.md): ํ—ˆ๋ธŒ ์Šคํ‚ค๋งˆ + ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค + ์ž๋™ ๋ฃจํ”„ + ์›น๋ทฐ์–ด + ๊ทœ์น™ ๊ฐ•์ œ.
  2. RDS ๋Œ€ํ™” ์Šคํ‚ค๋งˆ ์ดˆ์•ˆ.
  3. ํ—ˆ๋ธŒ โ†” ์ฑ„ํ‹ฐ(stdio) / ํ—ˆ๋ธŒ โ†” GPT(API) ์–ด๋Œ‘ํ„ฐ PoC.

10. โœ… ํ•ฉ์˜ โ€” 4๋ฏธ๊ฒฐ ํ™•์ • (2026-05-30 KST, hub session #19)

ยง6 ๋ฏธ๊ฒฐ 1~4 ์ „๋ถ€ ํ•ด์†Œ. ์ฑ„ํ‹ฐ(PLANNER)โ†”GPT ์ž๋™ ํ˜‘์˜๋กœ ๊ฒฐ๋ก . (#19 ์›๋ฌธ ํ˜‘์˜ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋Š” ์‚ญ์ œ๋จ โ€” ๊ฒฐ๋ก ์€ ์•„๋ž˜ ๋ณด์กด.) (๋‹ค) CLI ๋Ÿฌ๋„ˆ ์„ค๊ณ„ ํ›„์† = ํ˜‘์˜ ๊ฒฐ๊ณผ โ€” (๋‹ค) CLI ๋Ÿฌ๋„ˆ ์„ค๊ณ„ ํ™•์ • (hub #28). ๋ฐœํ–‰ ์ „ ์„ ๊ฒฐ ํ™•์ธ 5๊ฑด = ยง12(์•„๋ž˜). ์ด ยง10์ด ยง1~9 ์„ค๊ณ„์˜ ์‹คํ–‰ ํ™•์ •๋ณธ์ด๋‹ค.

๊ฒฐ๋ก 

์‹คํ–‰์ˆœ์„œ (ํ™•์ •)

โ‘ข(์ €์žฅ ์ „๋ฌธํ™”+์ž์‹ํฌ๋กค, G2 ํ) โ†’ โ‘ก๊ณ„์ธก ์ถ”๊ฐ€ โ†’ [์ฐจ๋‹จํ•ด์ œ: cmdboard ํ•˜๋„ค์Šค ์‹คํŒŒ์ผ ๋Œ€์กฐ] โ†’ โ‘ ROUTER+EVALUATOR ์ตœ์†Œ์ด์‹(task์„ฑ๋งŒ) โ†’ โ‘ก๊ฒŒ์ดํŠธ ํŒ์ •์œผ๋กœ RAG. โ‘ฃ๋Š” ์ „ ๊ตฌ๊ฐ„ ๊ณต์œ ์ •์ฑ….

์„ ํ–‰ ์ฐจ๋‹จ์กฐ๊ฑด (์ฝ”๋“œ ๋ฌด๋ณ€๊ฒฝ, โ‘  ์ „์ œ)

cmdboard ROUTER/EVALUATOR/PLANNER/CODI ์‹คํŒŒ์ผ ์ธํ„ฐํŽ˜์ด์Šคยทํ˜ธ์ถœ๊ทœ์•ฝ์„ ์‹ค์ œ ๋Œ€์กฐ(claude-agent-sdk ๋Ÿฐํƒ€์ž„ ์ •ํ•ฉ์„ฑ). ๋ฏธํ™•์ธ ์ƒํƒœ๋กœ โ‘  ์ฝ”๋“œ ์ฐฉ์ˆ˜ ๊ธˆ์ง€.

๋„๊ตฌ ์ƒํƒœ

ยง9์˜ ์ฑ„ํ‹ฐโ†”GPT ์ž๋™ ํ˜‘์˜ SW = agent-dialogue-hub๋กœ ๊ตฌ์ถ• ์™„๋ฃŒ(:8780, PoC H1~H6 + A + B, ์ปค๋ฐ‹ hub a49682dยทSARA 82670c1). ๋ณธ ํ•ฉ์˜๋„ ๊ทธ hub๋กœ ๋„์ถœ.

11. โœ… ์œ„์ž„ ์‹คํ–‰ โ€” ๋ผ์ด๋ธŒ ๊ฒ€์ฆ ๊ฒฐ๊ณผ (2026-06-01, #23~#25)

ยง8(์„œ๋ธŒ์—์ด์ „ํŠธ ์‹คํ–‰ ๋ชจ๋ธ)์˜ ์‹ค์ œ ๊ตฌํ˜„ยท๊ฒ€์ฆ ๋‹จ๊ณ„. SARAโ†’์ฝ”๋””(claude-code) ์œ„์ž„์„ _bridge_e2e ๋ธŒ๋žœ์น˜์— ๊ตฌํ˜„ํ•˜๊ณ  ๋ผ์ด๋ธŒ ๊ฒ€์ฆํ•œ ๊ฒฐ๊ณผ. ์ธ์ˆ˜์ธ๊ณ„์„œ ์ตœ์‹  ์Šค๋ƒ…์ƒท #4์™€ ๋™์ผ ๋‚ด์šฉ์˜ ์„ค๊ณ„์ธก ๊ธฐ๋ก.

11.1 ๊ตฌํ˜„ (์ปค๋ฐ‹ f470578, _bridge_e2e, master ๋ฏธ๋จธ์ง€)

์ง€์‹œ๋ฌธ C:\dev\SARA\codi_bridge_delegation_fix_2026-06-01.md(GPTยท์ฑ„ํ‹ฐ #23ยท#24 ํ˜‘์˜ ๋ฐ˜์˜). 5์ž‘์—…: 1. .claude/agents/codi.md โ€” codi ์„œ๋ธŒ์—์ด์ „ํŠธ ๋“ฑ๋ก(ยง8.2 ๋งคํ•‘ ๊ตฌํ˜„). tools = Read/Glob/Grep/Edit/MultiEdit/Write/Bash, Agent/Task ๋ฏธ๋ณด์œ (leaf ์‹คํ–‰์ž=ยง8.1 1-depth ์ค€์ˆ˜). 2. .claude/settings.json โ€” ์ „์—ญ broker ํ›…(PreToolUseโ†’:7777) verbatim ๋ณต์ œ(deny 27+hooks 3์ข…). ยง8.3์—์„œ ์˜ˆ๊ฒฌํ•œ "์ฝ”๋”” ์„œ๋ธŒ์—์ด์ „ํŠธ Bash์˜ broker ๊ฒฝ์œ  ๊ฐ•์ œ = P1 ํ•„์ˆ˜"์˜ ๊ตฌํ˜„ ์‹œ๋„. 3. subagent_type=codi ๊ฐ•์ œ 2์ธต โ€” ๊ณ„์•ฝ ํ…์ŠคํŠธ(render_contract_text) + ๊ฒฐํ•ฉ์ธต(broker_gate Agent ๋ถ„๊ธฐ deny-on-mismatch). 4. diag ํฌ๋ž˜์‹œ fix โ€” extract_test_cmd ๋นˆ๊ฐ’ ๊ฐ€๋“œ + ๊ฒ€์ฆ๋ธ”๋ก try/except + verify_error. 5. ๋‹จ์œ„ 5์ผ€์ด์Šค. pytest 115 passed(baseline 107+8), router_evaluator.py diff=0.

11.2 ๋ผ์ด๋ธŒ ๊ฒ€์ฆ (์ฑ„ํ‹ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: ๋“œ๋ ˆ์ธโ†’ํ…Œ์ŠคํŠธ๊ธฐ๋™ WS=C:devSARAยทBRIDGE=1ยทloopbackโ†’PROBEโ†’์›๋ณต)

11.3 โ›” ๊ทผ๋ณธ ์›์ธ + #25 ์žฌ์„ค๊ณ„ ๊ณผ์ œ

claude mcp serve๋Š” ๋„๊ตฌ ๋…ธ์ถœ ์„œ๋ฒ„๋ผ ํ”„๋กœ์ ํŠธ .claude/agents/(์„œ๋ธŒ์—์ด์ „ํŠธ)๋ฅผ ์ ์žฌ ์•ˆ ํ•จ. ยง6 ๋ฏธ๊ฒฐ1("ํŒจ๋„์— PLANNER/CODI ๊ฒฝ๋กœ๋ฅผ ์–ด๋–ป๊ฒŒ ๋“ค์ผ์ง€")์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ  ์ œ์•ฝ์ด ์—ฌ๊ธฐ์„œ ๊ตฌ์ฒดํ™”๋๋‹ค. ยง8.3์—์„œ "broker ๊ฒฝ์œ  ๊ฐ•์ œ"๋Š” ์งš์—ˆ์œผ๋‚˜, ๊ทธ ์ „์ œ์ธ "์œ„์ž„ ๋Œ€์ƒ ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์• ์ดˆ์— ๋กœ๋“œ๋˜๋Š”๊ฐ€"๊ฐ€ ๋ผ์ด๋ธŒ์—์„œ NO๋กœ ํŒ๋ช…. - #25 ์‹œ์ž‘์ : (a) claude mcp serve --help๋กœ --agents/--setting-sources/--mcp-config ๋“ฑ .claude ์ ์žฌ ์ธ์ž ์‹ค์ธก โ†’ (b) ์—†์œผ๋ฉด SDK ์œ„์ž„ ํ˜ธ์ถœ์— agents ์˜ต์…˜ ์ง์ ‘ ์ฃผ์ž…(ClaudeAgentOptions.agents) ๊ฒ€ํ†  โ†’ (c) ๊ทธ๋ž˜๋„ ์•ˆ ๋˜๋ฉด mcp serve ๋Œ€์‹  SDK ์ธํ”„๋กœ์„ธ์Šค ์„œ๋ธŒ์—์ด์ „ํŠธ๋กœ ์ „ํ™˜. - fail-safe: SARA_CODI_BRIDGE ๊ธฐ๋ณธ OFF ์œ ์ง€(ํ˜„ํ–‰ ๋‹จ์ผ ์ฝ”๋””๋„ค์ดํ„ฐ์™€ ๋™์ผ). codi ์ธ์‹ PASS ์ „๊นŒ์ง€ ์ž๋™ ์œ„์ž„ ๋น„ํ™œ์„ฑ. - ๊ฒ€์ฆ ์žฌ๊ฐœ = PROBE-0 PASS โ†’ PROBE-A(broker ์š”์ฒญ ์‹ค์ธก, 0๊ฑด์ด๋ฉด ๋ฏธ๊ฒŒ์ดํŠธโ†’์ž๋™์“ฐ๊ธฐ ๊ธˆ์ง€ยท์—์Šค์ปฌ๋ ˆ์ดํŠธ) โ†’ PROBE-B(force-push ๋”๋ฏธ ๊ฒŒ์ดํŠธ, ์‹ค push 0) โ†’ T2(์‹ค์ปค๋ฐ‹ยทdiagยทverdict=pass) โ†’ master ๋จธ์ง€(๋ณ„๋„ ์Šน์ธ). - [page] ํ˜‘์˜ ๊ฒฐ๊ณผ โ€” (๋‹ค) CLI ๋Ÿฌ๋„ˆ ์„ค๊ณ„ ํ™•์ • (hub #28, 2026-06-01)


12. โœ… (๋‹ค) ๋ฐœํ–‰ ์ „ ์„ ๊ฒฐ ํ™•์ธ ๊ฒฐ๊ณผ โ€” cmdboard ์ด์‹ ์‹œ ๊นจ์ง€๋Š” ์ง€์  5๊ฑด (2026-06-02)

hub #28 ํ•ฉ์˜ ยง5("๋ฏธํ™•์ธ ์ƒํƒœ๋กœ ๋ฐœํ–‰ ๊ธˆ์ง€")๊ฐ€ ์š”๊ตฌํ•œ ์„ ๊ฒฐ ํ™•์ธ์„, ์ฑ„ํ‹ฐ๊ฐ€ ์„ค์น˜ CLI ์‹ค์ธก(claude --version=2.1.154) + ๊ณต์‹ ํ—ค๋“œ๋ฆฌ์Šค ๋ฌธ์„œ + cmdboard ์‹ค์ฝ”๋“œ ๋Œ€์กฐ๋กœ ํ•ด์†Œํ•œ ๊ฒฐ๊ณผ. (๋‹ค) ์ฝ”๋”” ์ง€์‹œ๋ฌธ(C:\dev\SARA\codi_cli_runner_2026-06-02.md)์˜ "๋ฐœํ–‰ ์ „ ํ™•์ธ ๊ฒฐ๊ณผ" ํ‘œ๊ฐ€ ์ด ๋‚ด์šฉ์„ ๋ฐ•์€ ๊ฒƒ. ์ถ”ํ›„ (๋‹ค) ๊ตฌํ˜„์ด ์‚ฌ์šฉ์ž ์˜๋„์™€ ์–ด๊ธ‹๋‚˜๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค ์ž‘๋™์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ด ์ ˆ์„ ๋จผ์ € ์ฐธ์กฐํ•œ๋‹ค. ํ•ต์‹ฌ ๊ฒฐ๋ก : cmdboard codi_runner_cli ํŒจํ„ด์„ ๊ทธ๋Œ€๋กœ ์ด์‹ํ•˜๋ฉด ๊นจ์ง„๋‹ค. argvยท๊ถŒํ•œยทํ•„๋“œ๋ช… 5๊ฐœ ์ง€์ ์—์„œ ์ •์ •์ด ํ•„์š”ํ•˜๊ณ , ๊ทธ ๊ทผ๊ฑฐยท์กฐ์น˜๋ฅผ ์•„๋ž˜์— ๋ณด์กดํ•œ๋‹ค.

12.0 ๊ฒ€์ฆ ๋ฐฉ๋ฒ• (์žฌํ˜„ ๊ฐ€๋Šฅ)

12.1 ๋‹ค์„ฏ ์ •์ • (๊ทผ๊ฑฐ โ†’ ์กฐ์น˜)

A. --max-turns ํ”Œ๋ž˜๊ทธ๊ฐ€ v2.1.154์— ์—†๋‹ค (์ด์‹ ์‹œ ์ฆ‰์‹œ CLI ์—๋Ÿฌ). - ๊ทผ๊ฑฐ: claude --help์˜ max ๊ณ„์—ด์€ --max-budget-usd ํ•˜๋‚˜๋ฟ. --max-turns๋Š” ๋ชฉ๋ก์— ์—†์Œ. ๊ทธ๋Ÿฌ๋‚˜ cmdboard codi_runner_cli.py:1192๋Š” "--max-turns", str(max_turns)๋ฅผ argv์— ๊ทธ๋Œ€๋กœ ๋„ฃ์Œ(+_classify_failure์— claude_cli_max_turns ๋ถ„๊ธฐ ์กด์žฌ). - ์กฐ์น˜: SARA argv์—์„œ --max-turns ์ œ๊ฑฐ. ํ„ด/๋น„์šฉ ํญ์ฃผ ์ฐจ๋‹จ์€ timeout_s(hard timeout) + ์„ ํƒ์  --max-budget-usd๋กœ ๋Œ€์ฒด. claude_cli_max_turns ๋ถ„๋ฅ˜๋Š” ์ฃฝ์€ ๋ถ„๊ธฐ๋กœ ๋‘๋˜ ์ „์‚ฌ ํ˜ธํ™˜ ์œ„ํ•ด ์‚ญ์ œํ•˜์ง€ ์•Š์Œ. - ์˜ํ–ฅ: ์ด์‹ ์งํ›„ ๋ชจ๋“  claude -p ์‹คํ–‰์ด unknown-option์œผ๋กœ ์‹คํŒจํ•˜๋Š” 1์ˆœ์œ„ ์‚ฌ๊ณ  ์ง€์ . B. claude -p์˜ broker ํ›… ๋กœ๋”ฉ = --bare๋งŒ ์—†์œผ๋ฉด ์ž๋™ (๋ณ„๋„ ์ธ์ž ๋ถˆํ•„์š”). - ๊ทผ๊ฑฐ(๊ณต์‹ ๋ฌธ์„œ): --bare๊ฐ€ ์—†์œผ๋ฉด claude -p๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์„ธ์…˜๊ณผ ๋™์ผํ•œ ์ปจํ…์ŠคํŠธ(์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌยท~/.claude์˜ hooksยทMCPยทCLAUDE.md)๋ฅผ ๋กœ๋“œํ•œ๋‹ค. --bare๋ฅผ ๋ถ™์ด๋ฉด hooks/skills/plugins/MCP/auto-memory/CLAUDE.md ์ž๋™ํƒ์ƒ‰์„ ์ „๋ถ€ ์Šคํ‚ตํ•˜๊ณ  ๋ช…์‹œ ์ธ์ž๋งŒ ์ ์šฉ. - ์˜๋ฏธ: ยง11(#25)์—์„œ FAIL๋‚œ ๊ฒƒ์€ claude mcp serve๊ฐ€ .claude/agents/๋ฅผ ์•ˆ ์ฝ์€ ๊ฒƒ์ด๊ณ , claude -p๋Š” ๊ทธ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ผ .claude/settings.json์˜ broker PreToolUse ํ›…์ด ๊ธฐ๋ณธ ๋ฐœํ™”ํ•œ๋‹ค. (๋‹ค) ์ฑ„ํƒ์˜ ํ•ต์‹ฌ ๊ทผ๊ฑฐ(โ‘ฃ๋ฒˆ ์ด์œ )๊ฐ€ ์ด ์‚ฌ์‹ค๋กœ ํ™•์ธ๋จ. - ์กฐ์น˜: argv์— --bare ์ ˆ๋Œ€ ๊ธˆ์ง€. ํ›… ๋กœ๋”ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ชป๋ฐ•๊ธฐ ์œ„ํ•ด --setting-sources user,project,local ์ถ”๊ฐ€(์œ ํšจ ์ธ์ž ํ™•์ธ๋จ). - ๋‹จ, ์‹ค๋ฐœํ™”๋Š” PROBE P-1ยทP-2 ์‹ค์ธก์œผ๋กœ๋งŒ ํ™•์ •(broker ์š”์ฒญ 0๊ฑด์ด๋ฉด ํ”Œ๋ฆฝ ์˜๊ตฌ ์ฐจ๋‹จ). ๋ฌธ์„œยท์ฝ”๋“œ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ์–ด๋„ ๋Ÿฐํƒ€์ž„ ์‹ค์ธก ์ „๊นŒ์ง€ ์ž๋™์“ฐ๊ธฐ ๋น„ํ™œ์„ฑ. C. ์œ„ํ—˜ permission-mode = bypassPermissions์ธ๋ฐ cmdboard ์•ˆ์ „๊ฒ€์‚ฌ๊ฐ€ ๋ชป ์žก๋Š”๋‹ค. - ๊ทผ๊ฑฐ: --permission-mode ์œ ํšจ๊ฐ’ = acceptEdits, auto, bypassPermissions, default, dontAsk, plan. ์‹ค์œ„ํ—˜๊ฐ’์€ bypassPermissions. ๊ทธ๋Ÿฌ๋‚˜ cmdboard ์•ˆ์ „๊ฒ€์‚ฌ(codi.py/codi_runner_cli.py:1165)๋Š” if "dangerously" in permission_mode.lower()๋กœ๋งŒ ๋ง‰์•„ bypassPermissions ๋ฌธ์ž์—ด์„ ํ†ต๊ณผ์‹œํ‚จ๋‹ค. - ์กฐ์น˜: SARA allowlist์—์„œ bypassPermissions๋„ ์ฐจ๋‹จ(๋“ค์–ด์˜ค๋ฉด acceptEdits๋กœ ๊ฐ•์ œ ์น˜ํ™˜). --dangerously-skip-permissionsยท--allow-dangerously-skip-permissions ํ”Œ๋ž˜๊ทธ๋„ ์ฐจ๋‹จ. ๋‹จ์œ„ํ…Œ์ŠคํŠธ assert "bypassPermissions" not in argv_safe. D. cmdboard activity_logs.payload ์ •๊ทœ ํ‚ค โ€” commit_sha๊ฐ€ ์•„๋‹ˆ๋ผ commit. - ๊ทผ๊ฑฐ: apply_codi_result(codi.py:671)์™€ /codi/result-report(tasks.py:9608) ๋‘ entrypoint์˜ payload ์ •๊ทœ ํ‚ค = result(completed/partial/failed), summary, commit(๋ฌธ์ž์—ด), branch, tests(list[str]), changed_files(list[str]), notes, source(codi_stub/codi_runner/codi_user), error_code, chati_run_id, details_full/details_preview. (์Šคํ‚ค๋งˆ โ‘ฃ = cmdboard ๋‹จ์ผ์†Œ์œ .) - ์กฐ์น˜: SARA๊ฐ€ ๊ณต์œ  RDS activity_logs์— ์ง์ ‘ ์“ธ ๋•Œ ์ด ํ‚ค ์–ดํœ˜๋ฅผ ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉ(ํ•„๋“œ๋ช… ๋“œ๋ฆฌํ”„ํŠธ = โ‘ฃ ์œ„๋ฐ˜). SARA ํ™•์žฅ ResultContract ์ „์ฒด๋Š” sara_codi_cli_result ๋‹จ์ผ ํ‚ค 1๊ฐœ์— ์ค‘์ฒฉ. source๋Š” ์‹ ๊ทœ๊ฐ’ sara_codi_cli(๊ธฐ์กด๊ฐ’ ์ถฉ๋Œ ๊ธˆ์ง€). action๋ช… codi_cli_result/sara_bridge_route/sara_bridge_task_verdict(cmdboard codi_done/codi_error/codi_result_reported์™€ ๋น„์ถฉ๋Œ). statusโ†’result ๋งคํ•‘: passโ†’completed, partialโ†’partial, fail/timeout/stall/crash/blockedโ†’failed. - ๊ธˆ์ง€: apply_codi_result ๋“ฑ cmdboard ํ•จ์ˆ˜ ์ง์ ‘ ํ˜ธ์ถœ ๊ธˆ์ง€(Q1). SARA๋Š” ์ง์ ‘ SQLAlchemy๋กœ๋งŒ ๊ธฐ๋ก. E. --effort/--fallback-model ์ •ํ™• ํ‘œ๊ธฐ ํ™•์ •. - ๊ทผ๊ฑฐ: --effort <level> ์œ ํšจ๊ฐ’ = low, medium, high, xhigh, max(--reasoning-effort ์•„๋‹˜). --fallback-model <model>์€ ์ •ํ™• ํ‘œ๊ธฐ์ด๋ฉฐ --print ์ „์šฉ(=-p์™€๋งŒ ๋™์ž‘). --model์€ alias(sonnet/opus) ๋˜๋Š” full name(claude-opus-4-8) ํ—ˆ์šฉ. - ์กฐ์น˜: argv ํ™•์žฅ ์ธ์ž = --model / --effort(enum์— max ํฌํ•จ) / --fallback-model. (์ธ์ˆ˜์ธ๊ณ„์„œ ๋ฏธ์ปค๋ฐ‹ ๋“œ๋ฆฌํ”„ํŠธ config/settings.json effort highโ†’xhigh์™€๋„ ์ •ํ•ฉ โ€” ๋‹จ ๊ทธ ํŒŒ์ผ์€ ๋ณธ ์ž‘์—…๊ณผ ๋ฌด๊ด€ํ•˜๋ฏ€๋กœ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Œ.)

12.2 ์ ์šฉ ๊ฒฐ๊ณผ / ๋ฏธํ™•์ธ