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

๐Ÿ—„๏ธ ์ธ์ˆ˜์ธ๊ณ„์„œ ์ด๋ ฅ ์•„์นด์ด๋ธŒ

์™„๋ฃŒ๋œ ์ธ์ˆ˜์ธ๊ณ„์„œยท์„ค๊ณ„ ์กฐ๊ฐ์„ ๋ชจ์•„๋‘” ์ด๋ ฅ ๋ณด๊ด€์†Œ. ์šด์˜ ์›์น™: ์™„๋ฃŒ๋œ Phaseยทํ™•์ •๋œ ์„ค๊ณ„๋Š” ์—ฌ๊ธฐ๋กœ ์˜ฅ๊ธด๋‹ค. ์ตœ์‹  ์ž‘์—… ์‹œ๋“œ๋Š” ํ•ญ์ƒ ๐Ÿ“ฆ SARA ํ†ตํ•ฉ ์ธ์ˆ˜์ธ๊ณ„์„œ ํ•˜๋‚˜. ์ƒˆ ๋Œ€ํ™”๋ฐฉ์€ ์•„์นด์ด๋ธŒ๋ฅผ ์ฝ์„ ํ•„์š” ์—†๋‹ค(ํ•„์š” ์‹œ ์ฐธ๊ณ ๋งŒ).

์šด์˜ ๋ฐฉ์‹ (๊ธฐ๋ณธ ์„ค์ •)

์•„์นด์ด๋ธŒ ๋ชฉ๋ก

โœ… Phase 1 โ€” ๋‹จ๋… SARA ํŒจ๋„ (์™„๋ฃŒ, 2026-05-26)

C:\dev\tools\vscode_sara ํŒจ๋„ ๋Ÿฐํƒ€์ž„ ์Šค์บํด๋“œ ์ƒ์„ฑยท๊ฒ€์ฆ. ๋Œ€ํ™”/์„ธ์…˜ resume/์ปค์Šคํ…€ ๋„๊ตฌ/์™ธ๋ถ€ MCP/ํŒŒ์ผ ์—…๋กœ๋“œ ๋™์ž‘. ๊ตฌ๋… OAuth/setup-token ์ธ์ฆ, FastAPI :8770, ํŒจ๋„ ์ž๋™์‹œ์ž‘(tasks.json + Ctrl+Alt+S). ์›๋ณธ: (์‚ญ์ œ) ๐Ÿ“ฆ ์ธ์ˆ˜์ธ๊ณ„์„œ โ€” SARA Phase 1.

โœ… Phase 2b โ€” broker ๊ถŒํ•œ ๊ฒŒ์ดํŠธ (์™„๋ฃŒ)

sara/permission_hook.py โ†’ cody-permission-broker(:7777) /permission. ๊ฒŒ์ดํŠธ ๋Œ€์ƒ = Bash/Write/Edit/MultiEdit/NotebookEdit, ์ฝ๊ธฐ์ „์šฉ ํ†ต๊ณผ. AUTO_ALLOWยทfail-safe deny ๊ฒ€์ฆ ์™„๋ฃŒ.

โœ… Phase 2a ์„ค๊ณ„ โ€” ์ž๋™ ์„ธ์…˜ ์ธ๊ณ„ (ํ™•์ •, 2026-05-26)

3๊ฐœ ๋ฉ”์ปค๋‹ˆ์ฆ˜(์˜์†/๋ณต์›/์ž๋™์ธ๊ณ„) ํ™•์ •. ์—ฐ๋™ ์ฑ„๋„ = SARAโ†’cmdboard RDS ์ง์ ‘(SQLAlchemy, BOARD_DB_*), ์ž„๊ณ„์น˜ 65%, ์‹ ๊ทœ ๋น„ํŒŒ๊ดด ํ…Œ์ด๋ธ” sara_continuation, ํ”„๋กœ์ ํŠธ ์…€๋ ‰ํ„ฐ ํฌํ•จ. ์›๋ณธ: (์‚ญ์ œ) ๐Ÿ” Phase 2a ์„ค๊ณ„ / (์‚ญ์ œ) ๐Ÿ“ฆ ์ธ์ˆ˜์ธ๊ณ„์„œ โ€” Phase 2a ์ฐฉ์ˆ˜. โ†’ ํ˜„์žฌ ํ†ตํ•ฉ๋ณธ์˜ Phase 2aยท2a-ext๋กœ ์ด์–ด์ง.

์•„์นด์ด๋ธŒ ๋ชฉ๋ก (2026-05-30 ์ถ”๊ฐ€ โ€” Phase 2a/2a-ext ์™„๋ฃŒ๋ถ„ + ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ 1์ฐจ)

โœ… Phase 2a ๊ตฌํ˜„ โ€” ์ž๋™ ์„ธ์…˜ ์ธ๊ณ„ (์™„๋ฃŒ, 2026-05-27)

sara_continuation(๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ 017) RDS ์ ์šฉ. G1(017 ์ž‘์„ฑยทpush, 197970a) ยท G5(continuation_manager.py persist/restore/handoff 65%, 8d1d799) ์ฝ”๋“œ+๋‹จ์œ„๊ฒ€์ฆ ์™„๋ฃŒ. ์ €์žฅ์†Œ = cmdboard RDS ๋‹จ๋….

โœ… Phase 2a-ext โ€” Webview ์ „ํ™˜ + ๋…ธ์…˜ ๋น„๋™๊ธฐํ™” + UI ์ด์‹ (์™„๋ฃŒ, 2026-05-28~29)

โœ… broker ๊ถŒํ•œ ๊ฒŒ์ดํŠธ ๋ณด๊ฐ• (์™„๋ฃŒ, 2026-05-27~29)

master/main ์ผ๋ฐ˜ push ์ž๋™ํ—ˆ์šฉ ํ•ซํ”ฝ์Šค(9cacf78) ยท force pushยทgit reset --hard ํ…”๋ ˆ๊ทธ๋žจ ์Šน์ธ ๊ฒŒ์ดํŠธ(risk_approvals, e0ffcba) ยท aws-api call_aws ๋ถ„๋ฅ˜(์‚ญ์ œยท์ข…๋ฃŒ=ํ…”๋ ˆ๊ทธ๋žจ / SGยทIAM ์ •์ฑ…=์ฐจ๋‹จ / ์ฝ๊ธฐ=ํ—ˆ์šฉ, 689d366).

โœ… agent-dialogue-hub โ€” ์ฑ„ํ‹ฐโ†”GPT ์ž๋™ ํ˜‘์˜ SW (์™„๋ฃŒ, 2026-05-29~30)

์‹ ๊ทœ ํ—ˆ๋ธŒ C:\dev\tools\agent-dialogue-hub(:8780). ์ฑ„ํ‹ฐ(claude-agent-sdk)โ†”GPT(OpenAI API, gpt-5.5) ์ž๋™ ํ•‘ํ ํ˜‘์˜. PoC H1~H6 + A(ํ”„๋กœ์ ํŠธ ์…€๋ ‰ํ„ฐ ๋™์ ํ™”) + B-1(ํ•ฉ์˜ ์ข…๋ฃŒ ์‹œ notion_sync_queue enqueue) + B-2(SARA ์›Œ์ปค๊ฐ€ ํ ์†Œ๋น„ โ†’ ๋…ธ์…˜ child_page ์ƒ์„ฑ) ์ฝ”๋“œยท๊ฒ€์ฆยทpush ์™„๋ฃŒ. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ 020. ์ปค๋ฐ‹ hub a49682d ยท SARA 82670c1. ๋ถ„๋‹ด: hub = ํ˜‘์˜ ์—”์ง„ยทenqueue / SARA(:8770) = ํ ์†Œ๋น„ ์›Œ์ปค. (B ์„ฑ๊ณต๊ฒฝ๋กœ E2E๋Š” ๋ณธ ํŽ˜์ด์ง€๊ตฐ ์ž๋™ ์ƒ์„ฑ์œผ๋กœ ์ž…์ฆ.)

โœ… ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ํ†ตํ•ฉ ์•„ํ‚คํ…์ฒ˜ โ€” ํ•ฉ์˜ ๋„์ถœ (์™„๋ฃŒ, 2026-05-30, hub session #19)

hub ์ž๋™ ํ˜‘์˜๋กœ 4๋ฏธ๊ฒฐ ๊ฒฐ๋ก . ์ƒ์„ธ = ํ˜‘์˜ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ + ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์„ธ๋ถ€ ์ƒ์˜ ยง10. ์š”์ง€: โ‘  ROUTER(chat/task/verify_required 3๋ถ„๋ฅ˜)+EVALUATOR(task์„ฑ๋งŒ) ์ด์‹, ์™ธ๋ถ€ /chat ์‘๋‹ต ๋ถˆ๋ณ€ยท๋‚ด๋ถ€๊ณ„์•ฝ๋งŒ, PLANNER/CODI๋Š” disabled adapter โ‘ก full-dump ์œ ์ง€, RAG ์ „ํ™˜ = ์ ์œ ์œจ AND ์žฌํ˜„์œจ ๊ฒŒ์ดํŠธ ๋™์‹œ ์ถฉ์กฑ ์‹œ๋งŒ โ‘ข ์ตœ์šฐ์„  = truncate ์ œ๊ฑฐ + ์ž์‹ ์ „๋Ÿ‰ RDS ์บ์‹œ(G2 ํ), ์ฃผ์ž…์€ summary ๊ธฐ๋ณธ, page_id ์ง‘ํ•ฉ diff + tombstone โ‘ฃ ์Šคํ‚ค๋งˆ cmdboard ๋‹จ์ผ์†Œ์œ , contract vendoring ๋ฒ„์ „๊ณ ์ •, ํ•˜๋„ค์Šค vendored copy + commit hash. ์‹คํ–‰์ˆœ์„œ โ‘ขโ†’โ‘กโ†’[์ฐจ๋‹จํ•ด์ œ: cmdboard ํ•˜๋„ค์Šค ์‹คํŒŒ์ผ ๋Œ€์กฐ]โ†’โ‘ .

์•„์นด์ด๋ธŒ ๋ชฉ๋ก (2026-06-01 ์ถ”๊ฐ€ โ€” B-1 ํ™œ์„ฑํ™” + diag + โ“‘ ์œ„์ž„ ์ง„๋‹จ/๊ตฌํ˜„)

โœ… B-1 ๋…ธ์…˜์บ์‹œ ํ™œ์„ฑํ™”ยท๊ฒ€์ฆ (์™„๋ฃŒ, 2026-06-01, daf1c18)

master/origin daf1c18(FF, base fbc6b71). .env NOTION_CHILD_CACHE=1 + ์žฌ๊ธฐ๋™(๋ผ์ด๋ธŒ). ๋ผ์ด๋ธŒ ์ „๋ถ€ ํ†ต๊ณผ: sara_notion_cache 6์‹ ๊ทœ์ปฌ๋Ÿผ(summary_md/full_md/deleted_at/cache_bytes/estimated_tokens/load_ms) DESCRIBE ยท primary ํ–‰ full_md/summary_md+๊ณ„์ธก 3ํ•„๋“œ ยท refreshโ†’enqueue_child_cacheโ†’์›Œ์ปค cache_child_page pendingโ†’done(์ž์‹ ๋ณธ๋ฌธ ์‹ค์ ์žฌ) ยท tombstone(deleted_at) ์‹ค๊ธฐ๋ก. ๋ณ€๊ฒฝ ์š”์ง€(์ง€์‹œ๋ฌธ codi_notion_cache_b1.md): ์ฝ๊ธฐ SELECT 12์ปฌ๋Ÿผ+deleted_at IS NULL, _cache_upsert full_md/summary_md ๊ธฐ๋ก+์žฌ์บ์‹œ ์‹œ deleted_at=NULL, ์›Œ์ปค cache_child_page ์‹ค๊ตฌํ˜„(NOTION_CHILD_CACHE ์ „์šฉ ๊ฒŒ์ดํŠธ, NOTION_WRITE_OPS์™€ ๋…๋ฆฝ), refresh๋Š” root/primary ์ธ๋ผ์ธ + ๋น„primary ์ž์‹๋งŒ enqueue. ์ฃผ์ž…์€ full ์œ ์ง€ โ†’ summary flip์€ B-2(=โ‘ , ๋ฏธ์ฐฉ์ˆ˜).

โœ… diag ์ง„๋‹จ ์‹œ์Šคํ…œ (์™„๋ฃŒ, 2026-06-01, 298a80e)

SARA ํ„ด๋งˆ๋‹ค ('diag', โ€ฆ) SSE 1ํšŒ ๋ฐœํ–‰(๊ด€์ธก ์ „์šฉยท๋ฐฑ์›Œ๋“œ ํ˜ธํ™˜) + ํŒจ๋„ ์ง„๋‹จ ์š”์•ฝ ๋ฐ” + "๐Ÿ” ์ง„๋‹จ ๋ณต์‚ฌ" ๋ฒ„ํŠผ. ๋ผ์šฐํŠธยท์œ„์ž„์—ฌ๋ถ€ยทraw๋„๊ตฌยท๋„๊ตฌ์ˆœ์„œยทEVALUATORํŒ์ •ยท์ปค๋ฐ‹์‹ค๊ฒ€์ฆยท์†Œ์š”ยท๊ฒฐ๊ณผhead(๋งˆ์Šคํ‚น)๋ฅผ ์ถ”์ธก ์—†์ด ์ฑ„ํ‹ฐ์— ์ „๋‹ฌ. ๋ธŒ๋žœ์น˜ _bridge_e2e. (#4์—์„œ verify_error ํ•„๋“œ ์ถ”๊ฐ€ + ๊ฒ€์ฆ๋ธ”๋ก try/except ํšŒ๋ณตํƒ„๋ ฅ์„ฑ ๋ณด๊ฐ•.)

โœ… โ“‘ ์œ„์ž„ ๋‘ ๋ ˆ๋ฒ„ + subagent ๊ฐ•์ œ ๊ตฌํ˜„ (์ฝ”๋“œ ์™„๋ฃŒ, 2026-06-01)

โš  ์œ„์ž„ ๋ผ์ด๋ธŒ ๊ฒ€์ฆ โ€” T2 FAIL โ†’ PROBE-0 FAIL (๋ฏธํ•ด๊ฒฐ, #25๋กœ ์ด์›”, 2026-06-01)

โœ… hub viewer UI + GPT ์ฝ๊ธฐ๋„๊ตฌ (์™„๋ฃŒ, 2026-06-01 / 05-30)

hub viewer ํ—ค๋” ํ† ํ”ฝ ๊ธฐ๋ณธ์ ‘ํž˜ ํ† ๊ธ€(a386947, push ์™„๋ฃŒ) ยท GPT ๊นƒํ—ˆ๋ธŒยท๋…ธ์…˜ ์ฝ๊ธฐ function-calling 3์ข…(f3282ae, Responses API ์ „ํ™˜). ์ƒ์„ธ๋Š” ์ธ์ˆ˜์ธ๊ณ„์„œ ๋ณธ๋ฌธ ์ด๋ ฅ ๋ธ”๋ก.

์•„์นด์ด๋ธŒ ๋ชฉ๋ก (2026-06-02 ์ถ”๊ฐ€ โ€” SARAโ†’์ฝ”๋”” ์œ„์ž„ (๋‹ค) CLI ๋Ÿฌ๋„ˆ ์™„๋ฃŒยทํ™œ์„ฑํ™”)

์ธ์ˆ˜์ธ๊ณ„์„œ ์Šค๋ƒ…์ƒท #2~#10์—์„œ ์ด๋™. ์œ„์ž„ ์ฑ„๋„ ํ™•์ •โ†’๊ตฌํ˜„โ†’๊ฒ€์ฆโ†’ํ”Œ๋ฆฝโ†’ํ™œ์„ฑํ™”๊นŒ์ง€์˜ ์ „์ฒด ๊ฒฝ๊ณผ.

โœ… ๋ฐฉ์•ˆ (๋‹ค) CLI ๋Ÿฌ๋„ˆ ์„ ์ • (ํ™•์ •, #25)

SARAโ†’์ฝ”๋”” ์œ„์ž„ = codi๋ฅผ ๋ณ„๋„ claude -p ์„œ๋ธŒํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰(cmdboard codi_runner_cli ํŒจํ„ด ์ด์‹). ๊ธฐ๊ฐ: (๊ฐ€) claude mcp serve๋Š” cwd .claude/agents/ ๋ฏธ์ ์žฌ(PROBE-0 "Agent type 'codi' not found" ์›์ธ). ๋ฏธ์ฑ„ํƒ: (๋‚˜) SDK ๋„ค์ดํ‹ฐ๋ธŒ ์„œ๋ธŒ์—์ด์ „ํŠธ(๋™์ž‘ํ•˜๋‚˜ ์Šคํ‚ฌยทํ”Œ๋Ÿฌ๊ทธ์ธ opt-inยทํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ ์•ฝํ•จ). (๋‹ค) ์ฑ„ํƒ = ์Šคํ‚ฌยทํ”Œ๋Ÿฌ๊ทธ์ธ ํ’€ ๋„ค์ดํ‹ฐ๋ธŒ + ์ง„์งœ ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ + cmdboard ํ•˜๋„ค์Šค ์žฌ์‚ฌ์šฉ + .claude/settings.json broker ํ›… ์‹ค์ž‘๋™ + codi ๋ฏธ์ธ์‹ ๋ฌธ์ œ ์†Œ๋ฉธ.

โœ… (๋‹ค) ๋ฐœํ–‰ ์ „ ์„ ๊ฒฐ ํ™•์ธ 5๊ฑด (cmdboard ์ด์‹ ์‹œ ๊นจ์ง€๋Š” ์ง€์ )

A. --max-turns ๋ถ€์žฌ(์„ค์น˜ CLI v2.1.154) โ†’ argv ์ œ๊ฑฐยทtimeout_s ๋Œ€์ฒด. B. broker ํ›… = --bare๋งŒ ์—†์œผ๋ฉด ์ž๋™๋กœ๋“œ + --setting-sources user,project,local ๋ช…์‹œ. C. ์œ„ํ—˜๊ฐ’ bypassPermissions๋ฅผ cmdboard ์•ˆ์ „๊ฒ€์‚ฌ๊ฐ€ ๋ชป ์žก์Œ โ†’ allowlist ์ฐจ๋‹จ(acceptEdits ์น˜ํ™˜). D. activity_logs payload ํ‚ค = commit(not commit_sha), ์ •๊ทœํ‚ค ์žฌ์‚ฌ์šฉยทํ™•์žฅ์€ sara_codi_cli_result 1ํ‚ค ์ค‘์ฒฉ. E. --effort(low~max)ยท--fallback-model(--print ์ „์šฉ) ํ‘œ๊ธฐ ํ™•์ •.

โœ… GPT ํ˜‘์˜ ๋„๊ตฌ(์ฝ๊ธฐ) ์ฝ”๋”” ์ง€์‹œ๋ฌธ ์ž‘์„ฑ (2026-06-01, ์„ ํƒยทํ›„์ˆœ์œ„)

hub GPT ์–ด๋Œ‘ํ„ฐ ๋กœ์ปฌ์ฝ๊ธฐ 3์ข…(local_read_file/local_list_dir/local_search) + web_fetch(B) ์ง€์‹œ๋ฌธ ์ž‘์„ฑ(codi_gpt_local_readยทcodi_gpt_web_tools). ์‚ฐ์ถœ๋ฌผ .md ๋””์Šคํฌ ๋ฏธ์ €์žฅ, ์‹ค์งˆ ์ถ”๊ฐ€๊ฐ€์น˜ = web_fetch๋งŒ.

โœ… (๋‹ค) CLI ๋Ÿฌ๋„ˆ ๊ตฌํ˜„ (์™„๋ฃŒ, ์ฝ”๋”” 38dbb79)

4ํŒŒ์ผ +2180: sara/codi_cli_runner.py(vendored ํ•ต์‹ฌ+๊ด€์ธก 5์ข…) ยท custom_tools/codi_run.py(codi_run SDK MCP, ๊ฒŒ์ดํŠธ OFF) ยท tests/test_codi_cli_runner.py(34) ยท sara/codi_bridge.py(SARA_CODI_CLI=1 ๋ถ„๊ธฐ _delegate_via_cli, ๊ธฐ๋ณธ OFF). vendored pin = delix0731/cmdboard@feat/admin-unify-bundleB:bc4215b. ๊ด€์ธก 5์ข… = โ‘ git/RDS ๊ถŒ์œ„ โ‘ก์ข…๋‹จ๊ณ„์•ฝ ํ•ญ์ƒ ๋ฐœํ–‰ โ‘ข๋…๋ฆฝ EVALUATOR โ‘ฃ์Šค๋ƒ…์ƒท ์žฌ๊ฐœ/๋กค๋ฐฑ โ‘คNDJSON ์ „์‚ฌ+stall. ์ง€์‹œ๋ฌธ codi_cli_runner_2026-06-02.md. ์ฑ„ํ‹ฐ ๊ฒ€์ฆ: ์ปค๋ฐ‹ยท4ํŒŒ์ผยทmaster ๋ฏธ๋ณ€๊ฒฝยทvendored pin ์ผ์น˜ยทargv ๊ธˆ์ง€ํ† ํฐ ์ฐจ๋‹จยท๊ฒŒ์ดํŠธ OFFยทํ…Œ์ŠคํŠธ 34ยทbroker ์šฐํšŒ 0๊ฑด.

โœ… ๊ฒ€์ฆ 2๊ฑด PASS + P-6 + ํ™œ์„ฑํ™” (์™„๋ฃŒ, 2026-06-02, master 38dbb79)

โ‘  pytest 149 passed(.venv + uv run --with pytest; codi_cli_runner 34). โ‘ก RDS ์‹ค INSERT ๋ผ์ด๋ธŒ โ€” _persist_activityโ†’activity_logs id=7659(action='codi_cli_result', task_id=1393, ์ •๊ทœํ‚ค+์ค‘์ฒฉ contract). P-6 = master FF ๋จธ์ง€ 547cd6a..38dbb79(broker AUTO_ALLOW, CI ์—†์–ด ์ž๋™๋ฐฐํฌ 0) + .env SARA_CODI_CLI=1 ํ”Œ๋ฆฝ. ํ™œ์„ฑํ™” = SARA ์žฌ๊ธฐ๋™(PID 31288, ํ—ฌ์Šค /settingsยท/active 200) โ†’ task/verify ๋ฉ”์‹œ์ง€ ์ฝ”๋”” claude -p ์ž๋™์œ„์ž„ ON. ๋˜๋Œ๋ฆฌ๊ธฐ = .env์—์„œ SARA_CODI_CLI ์ œ๊ฑฐ/0 โ†’ ์žฌ๊ธฐ๋™(์ฝ”๋“œ inert, ๋จธ์ง€ ๋˜๋Œ๋ฆผ ๋ถˆํ•„์š”).

โœ… ์‚ฌ๋ฌด์‹ค PC(poinimos01 100.101.40.17) tailnet ์ ‘์† (ํ•ด๊ฒฐ, 2026-06-02)

์›์ธ = ์ง‘ PC์˜ ๋ณ„๋„ WireGuard VPN(full-tunnel 0.0.0.0/0) kill-switch๊ฐ€ Tailscale(100.64.0.0/10) ์‘๋‹ต๊นŒ์ง€ ์ฐจ๋‹จ(SARAยท๋ฐฉํ™”๋ฒฝยทํ„ฐ๋„์€ ์ •์ƒ, sara.log์— 200 ๋‹ค์ˆ˜). ์กฐ์น˜ = WireGuard "Block untunneled traffic(kill-switch)" ์ฒดํฌ ํ•ด์ œ. ๋Œ€์•ˆ(ํšŒ์‚ฌ ํŠธ๋ž˜ํ”ฝ full-tunnel ์œ ์ง€ ์‹œ) = AllowedIPs์—์„œ 100.64.0.0/10 ์ œ์™ธ. ๋˜๋Œ๋ฆฌ๊ธฐ = ์ฒดํฌ ์žฌ์„ ํƒ.