์๊ฐ: ์ด ํ๋ก์ ํธ๋ CLI Agent ์ํคํ ์ฒ์ ๋ํ ํ์ต ๋ฐ ์ฐ๊ตฌ ์ ์ฅ์์ ๋๋ค. ๋ชจ๋ ์๋ฃ๋ ์ ์ ์ผ๋ก ์ธํฐ๋ท์ ๊ณต๊ฐ๋ ์ ๋ณด์ ํ ๋ก ์ ๋ฐํ์ผ๋ก ์ ๋ฆฌ๋์์ผ๋ฉฐ, ํนํ ํ์ฌ ๋งค์ฐ ์ธ๊ธฐ ์๋ CLI Agent์ธ
claude-code์ ๊ด๋ จ๋ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค. ์ ํฌ์ ๋ชฉ์ ์ ๊ฐ๋ฐ์๋ค์ด Agent ๊ธฐ์ ์ ๋ ์ ์ดํดํ๊ณ ํ์ฉํ ์ ์๋๋ก ๋๋ ๊ฒ์ ๋๋ค. ์์ผ๋ก๋ Agent ์ํคํ ์ฒ์ ๊ด๋ จ๋ ๋ ๋ง์ ํต์ฐฐ๊ณผ ์ค์ฉ์ ์ธ ํ ๋ก ์ฝํ ์ธ ๋ฅผ ์ง์์ ์ผ๋ก ๊ณต์ ํ ์์ ์ ๋๋ค. ์ฌ๋ฌ๋ถ์ ๊ด์ฌ๊ณผ ์ฑ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋ฉด์ฑ ์กฐํญ: ๋ณธ ์ ์ฅ์์ ์ฝํ ์ธ ๋ ๊ธฐ์ ์ฐ๊ตฌ, ํ์ต, ๊ต์ก ๋ชฉ์ ์ ๊ต๋ฅ๋ฅผ ์ํด์๋ง ์ ๊ณต๋ฉ๋๋ค. ์์ ์ ์ฌ์ฉ์ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค. ์ด๋ ํ ๊ฐ์ธ, ๊ธฐ๊ด, ๋จ์ฒด๋ ์ด ์ฝํ ์ธ ๋ฅผ ์์ ์ ๋ชฉ์ , ์๋ฆฌ ํ๋, ๋ถ๋ฒ ํ๋ ๋๋ ๊ธฐํ ๋ฌด๋จ ์ฌ์ฉ์ ํ์ฉํ ์ ์์ต๋๋ค. ๋ณธ ์ฝํ ์ธ ๊ฐ ๊ทํ์ ๋ฒ์ ๊ถ๋ฆฌ, ์ง์ ์ฌ์ฐ๊ถ ๋๋ ๊ธฐํ ์ด์ต์ ์นจํดํ๋ ๊ฒฝ์ฐ, ์ฐ๋ฝ ์ฃผ์๋ฉด ์ฆ์ ํ์ธ ํ ์ญ์ ์กฐ์นํ๊ฒ ์ต๋๋ค.
์ธ์ด: English | ไธญๆ | ํ๊ตญ์ด | ๆฅๆฌ่ช
๋๊ตฌ ์ธํฐํ์ด์ค
==============
buildTool(definition) โโ> Tool<Input, Output, Progress>
๋ชจ๋ ๋๊ตฌ๋ ๋ค์์ ๊ตฌํํฉ๋๋ค:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์๋ช
์ฃผ๊ธฐ (LIFECYCLE) โ
โ โโโ validateInput() โ ์๋ชป๋ ์ธ์ ์กฐ๊ธฐ ๊ฑฐ๋ถ โ
โ โโโ checkPermissions() โ ๋๊ตฌ๋ณ ๊ถํ ๊ฒ์ฌ โ
โ โโโ call() โ ์คํ ๋ฐ ๊ฒฐ๊ณผ ๋ฐํ โ
โ โ
โ ๊ธฐ๋ฅ (CAPABILITIES) โ
โ โโโ isEnabled() โ ๊ธฐ๋ฅ ํ๋๊ทธ ํ์ธ โ
โ โโโ isConcurrencySafe() โ ๋ณ๋ ฌ ์คํ ๊ฐ๋ฅ ์ฌ๋ถ? โ
โ โโโ isReadOnly() โ ๋ถ์์ฉ(side effects) ์์? โ
โ โโโ isDestructive() โ ๋๋๋ฆด ์ ์๋ ์์
? โ
โ โโโ interruptBehavior() โ ์ทจ์ ๋๋ ์ฌ์ฉ์ ๋๊ธฐ? โ
โ โ
โ ๋ ๋๋ง (RENDERING - React/Ink) โ
โ โโโ renderToolUseMessage() โ ์
๋ ฅ ํ์ โ
โ โโโ renderToolResultMessage() โ ์ถ๋ ฅ ํ์ โ
โ โโโ renderToolUseProgressMessage() โ ์คํผ๋/์ํ ํ์ โ
โ โโโ renderGroupedToolUse() โ ๋ณ๋ ฌ ๋๊ตฌ ๊ทธ๋ฃน ํ์ โ
โ โ
โ AI ์ฐ๋ (AI FACING) โ
โ โโโ prompt() โ LLM์ฉ ๋๊ตฌ ์ค๋ช
โ
โ โโโ description() โ ๋์ ์ค๋ช
โ
โ โโโ mapToolResultToAPI() โ API ์๋ต์ฉ ํฌ๋งทํ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ํ์ผ ์์
๊ฒ์ ๋ฐ ํ์ ์คํ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโ
FileReadTool GlobTool BashTool
FileEditTool GrepTool PowerShellTool
FileWriteTool ToolSearchTool
NotebookEditTool ์ํธ์์ฉ
โโโโโโโโโโโ
์น ๋ฐ ๋คํธ์ํฌ ์์ด์ ํธ / ์์
AskUserQuestionTool
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ BriefTool
WebFetchTool AgentTool
WebSearchTool SendMessageTool ๊ณํ ๋ฐ ์ํฌํ๋ก์ฐ
TeamCreateTool โโโโโโโโโโโโโโโโโโโโ
MCP ํ๋กํ ์ฝ TeamDeleteTool EnterPlanModeTool
โโโโโโโโโโโโโโ TaskCreateTool ExitPlanModeTool
MCPTool TaskGetTool EnterWorktreeTool
ListMcpResourcesTool TaskUpdateTool ExitWorktreeTool
ReadMcpResourceTool TaskListTool TodoWriteTool
TaskStopTool
TaskOutputTool ์์คํ
โโโโโโโโ
์คํฌ ๋ฐ ํ์ฅ ConfigTool
โโโโโโโโโโโโโโโโโโโโโ SkillTool
SkillTool ScheduleCronTool
LSPTool SleepTool
TungstenTool
๋๊ตฌ ํธ์ถ ์์ฒญ
โ
โผ
โโ validateInput() โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๊ถํ ๊ฒ์ฌ ์ ์ ํจํ์ง ์์ ์
๋ ฅ ์กฐ๊ธฐ ๊ฑฐ๋ถ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโ PreToolUse Hooks (๋๊ตฌ ์ฌ์ฉ ์ ํ
) โโโโโโโโโโโโโโโโ
โ ์ฌ์ฉ์ ์ ์ ์ ๋ช
๋ น (settings.json hooks) โ
โ ๊ฐ๋ฅ ์์
: ์น์ธ, ๊ฑฐ๋ถ ๋๋ ์
๋ ฅ ์์ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโ Permission Rules (๊ถํ ๊ท์น) โโโโโโโโโโโโโโโโโโโโโโ
โ alwaysAllowRules: ๋๊ตฌ ์ด๋ฆ/ํจํด ์ผ์น โ ์๋ ์น์ธโ
โ alwaysDenyRules: ๋๊ตฌ ์ด๋ฆ/ํจํด ์ผ์น โ ์๋ ๊ฑฐ๋ถโ
โ alwaysAskRules: ๋๊ตฌ ์ด๋ฆ/ํจํด ์ผ์น โ ํญ์ ํ์ธโ
โ ์ถ์ฒ: ์ค์ , CLI ์ธ์, ์ธ์
๋ด ๊ฒฐ์ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
์ผ์นํ๋ ๊ท์น ์์?
โ
โผ
โโ Interactive Prompt (๋ํํ ํ๋กฌํํธ) โโโโโโโโโโโโโโ
โ ์ฌ์ฉ์๊ฐ ๋๊ตฌ ์ด๋ฆ + ์
๋ ฅ๊ฐ ํ์ธ โ
โ ์ต์
: ํ ๋ฒ ํ์ฉ / ํญ์ ํ์ฉ / ๊ฑฐ๋ถ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโ checkPermissions() โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๋๊ตฌ๋ณ ํน์ ๋ก์ง (์: ๊ฒฝ๋ก ์๋๋ฐ์ค ๊ฒ์ฌ) โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
์น์ธ๋จ โ tool.call()
๋ฉ์ธ ์์ด์ ํธ
==========
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ ํฌํฌ ์์ด์ ํธโ โ ์๊ฒฉ ์์ด์ ํธโ โ ํ๋ก์ธ์ค ๋ด ๋๋ฃโ
โ (FORK) โ โ (REMOTE) โ โ (IN-PROCESS) โ
โ ํ๋ก์ธ์ค ํฌํฌโ โ ๋ธ๋ฆฟ์ง ์ธ์
โ โ ๋์ผ ํ๋ก์ธ์ค โ
โ ์บ์ ๊ณต์ โ โ ์์ ๊ฒฉ๋ฆฌ โ โ ๋น๋๊ธฐ ์ปจํ
์คํธโ
โ ์ msgs[] โ โ โ โ ์ํ ๊ณต์ โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
์์ฑ ๋ชจ๋ (SPAWN MODES):
โโ default โ ํ๋ก์ธ์ค ๋ด, ๋ํ ๊ณต์
โโ fork โ ์์ ํ๋ก์ธ์ค, ์๋ก์ด messages[], ํ์ผ ์บ์ ๊ณต์
โโ worktree โ ๊ฒฉ๋ฆฌ๋ git worktree + fork
โโ remote โ Claude Code Remote / ์ปจํ
์ด๋๋ก์ ๋ธ๋ฆฟ์ง ์ฐ๊ฒฐ
ํต์ ๋ฉ์ปค๋์ฆ (COMMUNICATION):
โโ SendMessageTool โ ์์ด์ ํธ ๊ฐ ๋ฉ์์ง ์ ๋ฌ
โโ TaskCreate/Update โ ๊ณต์ ์์
๋ณด๋(task board)
โโ TeamCreate/Delete โ ํ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ
์ค์ ๋ชจ๋ (SWARM MODE, ๊ธฐ๋ฅ ํ๋๊ทธ๋ก ์ ์ด๋จ):
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๋ฆฌ๋ ์์ด์ ํธ (Lead Agent) โ
โ โโโ ๋๋ฃ A โโ> ์์
1 ํ ๋น โ
โ โโโ ๋๋ฃ B โโ> ์์
2 ํ ๋น โ
โ โโโ ๋๋ฃ C โโ> ์์
3 ํ ๋น โ
โ โ
โ ๊ณต์ : ์์
๋ณด๋, ๋ฉ์์ง ์์ ํจ โ
โ ๊ฒฉ๋ฆฌ: messages[], ํ์ผ ์บ์, cwd โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ปจํ
์คํธ ์ฐฝ ์์ฐ (CONTEXT WINDOW BUDGET)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์์คํ
ํ๋กฌํํธ (๋๊ตฌ, ๊ถํ, CLAUDE.md) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ๋ํ ๊ธฐ๋ก (Conversation History) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ [์ด์ ๋ฉ์์ง๋ค์ ์์ถ๋ ์์ฝ] โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ [compact_boundary ๋ง์ปค] โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ [์ต๊ทผ ๋ฉ์์ง โ ์๋ณธ ๊ทธ๋๋ก ์ ์ง] โ โ
โ โ user โ assistant โ tool_use โ tool_result โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ํ์ฌ ํด (์ฌ์ฉ์ + ์ด์์คํดํธ ์๋ต) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3๊ฐ์ง ์์ถ ์ ๋ต:
โโ autoCompact โ ํ ํฐ ์๊ฐ ์๊ณ๊ฐ์ ์ด๊ณผํ ๋ ํธ๋ฆฌ๊ฑฐ๋จ
โ ์์ถ API ํธ์ถ์ ํตํด ์ด์ ๋ฉ์์ง ์์ฝ
โโ snipCompact โ ๋ถํ์ํ ๋ฉ์์ง์ ์ค๋๋ ๋ง์ปค ์ ๊ฑฐ
โ (HISTORY_SNIP ๊ธฐ๋ฅ ํ๋๊ทธ)
โโ contextCollapse โ ํจ์จ์ฑ์ ์ํด ์ปจํ
์คํธ ์ฌ๊ตฌ์ฑ
(CONTEXT_COLLAPSE ๊ธฐ๋ฅ ํ๋๊ทธ)
์์ถ ํ๋ฆ (COMPACTION FLOW):
messages[] โโ> getMessagesAfterCompactBoundary()
โ
โผ
์ด์ ๋ฉ์์ง โโ> Claude API (์์ฝ) โโ> ์์ถ๋ ์์ฝ
โ
โผ
[์์ฝ] + [compact_boundary] + [์ต๊ทผ ๋ฉ์์ง]
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP ์ํคํ
์ฒ โ
โ โ
โ MCPConnectionManager.tsx โ
โ โโโ ์๋ฒ ๊ฒ์ (settings.json ๊ตฌ์ฑ ๊ธฐ๋ฐ) โ
โ โ โโโ stdio โ ์์ ํ๋ก์ธ์ค ์์ฑ โ
โ โ โโโ sse โ HTTP EventSource โ
โ โ โโโ http โ ์คํธ๋ฆฌ๋ฐ HTTP โ
โ โ โโโ ws โ WebSocket โ
โ โ โโโ sdk โ ํ๋ก์ธ์ค ๋ด ์ ์ก โ
โ โ โ
โ โโโ ํด๋ผ์ด์ธํธ ์๋ช
์ฃผ๊ธฐ โ
โ โ โโโ connect โ initialize โ list tools โ
โ โ โโโ MCPTool ๋ํผ๋ฅผ ํตํ ๋๊ตฌ ํธ์ถ โ
โ โ โโโ ๋ฐฑ์คํ(backoff)๊ฐ ํฌํจ๋ ์ฐ๊ฒฐ ํด์ / ์ฌ์ฐ๊ฒฐโ
โ โ โ
โ โโโ ์ธ์ฆ (Authentication) โ
โ โ โโโ OAuth 2.0 ํ๋ฆ (McpOAuthConfig) โ
โ โ โโโ ๊ต์ฐจ ์ฑ ์ก์ธ์ค (XAA / SEP-990) โ
โ โ โโโ ํค๋๋ฅผ ํตํ API ํค ์ ๋ฌ โ
โ โ โ
โ โโโ ๋๊ตฌ ๋ฑ๋ก (Tool Registration) โ
โ โโโ mcp__<server>__<tool> ๋ช
๋ช
๊ท์น โ
โ โโโ MCP ์๋ฒ๋ก๋ถํฐ ๋์ ์คํค๋ง(schema) ์์ โ
โ โโโ Claude Code๋ก ๊ถํ ํต๊ณผ(passthrough) โ
โ โโโ ๋ฆฌ์์ค ๋ชฉ๋กํ (ListMcpResourcesTool) โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Claude Desktop / Web / Cowork Claude Code CLI
โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ ๋ธ๋ฆฟ์ง ํด๋ผ์ด์ธํธโ โโ HTTP โโโ โ bridgeMain.ts โ
โ (Desktop App) โ โ โ
โโโโโโโโโโโโโโโโโโโโโ โ ์ธ์
๊ด๋ฆฌ์ โ
โ โโโ CLI ์คํฐ โ
ํ๋กํ ์ฝ (PROTOCOL): โ โโโ ์ํ ํด๋ง โ
โโ JWT ์ธ์ฆ โ โโโ ๋ฉ์์ง ๋ฆด๋ ์ดโ
โโ Work secret ๊ตํ โ โโโ ์ฉ๋ ์จ์ดํฌ โ
โโ ์ธ์
์๋ช
์ฃผ๊ธฐ โ โ
โ โโโ create โ ๋ฐฑ์คํ(Backoff):โ
โ โโโ run โ โโ ์ฐ๊ฒฐ: 2sโ2m โ
โ โโ stop โ โโ ์์ฑ: 500msโ30sโ
โโ ํ ํฐ ์๋ก๊ณ ์นจ ์ค์ผ์ค๋ฌ โโโโโโโโโโโโโโโโโโโโ
์ธ์
์คํ ๋ฆฌ์ง (SESSION STORAGE)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
~/.claude/projects/<hash>/sessions/
โโโ <session-id>.jsonl โ ์ถ๊ฐ ์ ์ฉ(append-only) ๋ก๊ทธ
โโโ {"type":"user",...}
โโโ {"type":"assistant",...}
โโโ {"type":"progress",...}
โโโ {"type":"system","subtype":"compact_boundary",...}
๋ณต๊ตฌ ํ๋ฆ (RESUME FLOW):
getLastSessionLog() โโ> JSONL ํ์ฑ โโ> messages[] ์ฌ๊ตฌ์ฑ
โ
โโโ --continue โ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ์ ๋ง์ง๋ง ์ธ์
โโโ --resume <id> โ ํน์ ์ธ์
โโโ --fork-session โ ์ ID, ๊ธฐ๋ก ๋ณต์ฌ
์์์ฑ ์ ๋ต (PERSISTENCE STRATEGY):
โโ ์ฌ์ฉ์ ๋ฉ์์ง โ ์ฐ๊ธฐ ๋๊ธฐ (์ถฉ๋ ๋ณต๊ตฌ๋ฅผ ์ํ ๋ธ๋กํน)
โโ ์ด์์คํดํธ ๋ฉ์์ง โ ๋น๋๊ธฐ ์ ์ก (์์๊ฐ ์ ์ง๋๋ ํ)
โโ ์งํ ์ํ โ ์ธ๋ผ์ธ ์ฐ๊ธฐ (๋ค์ ์ฟผ๋ฆฌ ์ ์ค๋ณต ์ ๊ฑฐ)
โโ ํ๋ฌ์(Flush) โ ๊ฒฐ๊ณผ ๋ฐํ ์ / cowork ์ฆ์ ํ๋ฌ์
๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ (Bun ์ปดํ์ผ ์์ )
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
feature('FLAG_NAME') โโโ true โ ๋ฒ๋ค์ ํฌํจ๋จ
โโโ false โ ๋ฒ๋ค์์ ์ ๊ฑฐ๋จ
ํ๋๊ทธ ๋ชฉ๋ก (์์ค์์ ๊ด์ฐฐ๋จ):
โโ COORDINATOR_MODE โ ๋ค์ค ์์ด์ ํธ ์ฝ๋๋ค์ดํฐ
โโ HISTORY_SNIP โ ๊ณต๊ฒฉ์ ์ธ ๊ธฐ๋ก ๋ค๋ฌ๊ธฐ
โโ CONTEXT_COLLAPSE โ ์ปจํ
์คํธ ์ฌ๊ตฌ์ฑ
โโ DAEMON โ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ๋ชฌ ์์ปค
โโ AGENT_TRIGGERS โ ํฌ๋ก (cron)/์๊ฒฉ ํธ๋ฆฌ๊ฑฐ
โโ AGENT_TRIGGERS_REMOTE โ ์๊ฒฉ ํธ๋ฆฌ๊ฑฐ ์ง์
โโ MONITOR_TOOL โ MCP ๋ชจ๋ํฐ๋ง ๋๊ตฌ
โโ WEB_BROWSER_TOOL โ ๋ธ๋ผ์ฐ์ ์๋ํ
โโ VOICE_MODE โ ์์ฑ ์
๋ ฅ/์ถ๋ ฅ
โโ TEMPLATES โ ์์
๋ถ๋ฅ๊ธฐ
โโ EXPERIMENTAL_SKILL_SEARCH โ ์คํฌ ํ์
โโ KAIROS โ ํธ์ ์๋ฆผ, ํ์ผ ์ ์ก
โโ PROACTIVE โ ์๋ฉด ๋๊ตฌ, ์ ์ ์ ํ๋
โโ OVERFLOW_TEST_TOOL โ ํ
์คํธ ๋๊ตฌ
โโ TERMINAL_PANEL โ ํฐ๋ฏธ๋ ์บก์ฒ
โโ WORKFLOW_SCRIPTS โ ์ํฌํ๋ก์ฐ ๋๊ตฌ
โโ CHICAGO_MCP โ ์ปดํจํฐ ์ฌ์ฉ MCP
โโ DUMP_SYSTEM_PROMPT โ ํ๋กฌํํธ ์ถ์ถ (๋ด๋ถ ์ ์ฉ)
โโ UDS_INBOX โ ํผ์ด ํ์
โโ ABLATION_BASELINE โ ์คํ ์ ๊ฑฐ(ablation)
โโ UPGRADE_NOTICE โ ์
๊ทธ๋ ์ด๋ ์๋ฆผ
๋ฐํ์ ๊ฒ์ดํธ (RUNTIME GATES):
โโ process.env.USER_TYPE === 'ant' โ ๋ด๋ถ ๊ธฐ๋ฅ
โโ GrowthBook feature flags โ ๋ฐํ์ A/B ์คํ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AppState Store โ
โ โ
โ AppState { โ
โ toolPermissionContext: { โ
โ mode: PermissionMode, โ default/plan ๋ฑ โ
โ additionalWorkingDirectories, โ
โ alwaysAllowRules, โ ์๋ ์น์ธ โ
โ alwaysDenyRules, โ ์๋ ๊ฑฐ๋ถ โ
โ alwaysAskRules, โ ํญ์ ํ์ธ โ
โ isBypassPermissionsModeAvailable โ
โ }, โ
โ fileHistory: FileHistoryState, โ ์คํ ์ทจ์ ์ค๋
์ท โ
โ attribution: AttributionState, โ ์ปค๋ฐ ์ถ์ โ
โ verbose: boolean, โ
โ mainLoopModel: string, โ ํ์ฑ ๋ชจ๋ธ โ
โ fastMode: FastModeState, โ
โ speculation: SpeculationState โ
โ } โ
โ โ
โ React ํตํฉ: โ
โ โโโ AppStateProvider โ createContext๋ฅผ ํตํด ์คํ ์ด ์์ฑโ
โ โโโ useAppState(sel) โ ์ ํ์(selector) ๊ธฐ๋ฐ ๊ตฌ๋
โ
โ โโโ useSetAppState() โ immer ์คํ์ผ ์
๋ฐ์ดํธ ํจ์ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ด ์ํคํ ์ฒ๋ ๊ธฐ๋ณธ ๋ฃจํ ์ธ์ ํ๋ก๋์ AI ์์ด์ ํธ ํ๋์ค์ ํ์ํ 12๊ณ์ธต์ ์ ์ง์ ๋ฉ์ปค๋์ฆ์ ๋ณด์ฌ์ค๋๋ค. ๊ฐ ๋ฉ์ปค๋์ฆ์ ์ด์ ๋ฉ์ปค๋์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ฉ๋๋ค:
s01 ํต์ฌ ๋ฃจํ (THE LOOP) "ํ๋์ ๋ฃจํ์ Bash๋ฉด ์ถฉ๋ถํ๋ค"
query.ts: Claude API๋ฅผ ํธ์ถํ๋ while-true ๋ฃจํ,
stop_reason์ ํ์ธํ๊ณ , ๋๊ตฌ๋ฅผ ์คํํ๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
s02 ๋๊ตฌ ๋์คํจ์น (TOOL DISPATCH) "๋๊ตฌ ์ถ๊ฐ = ํธ๋ค๋ฌ ํ๋ ์ถ๊ฐ"
Tool.ts + tools.ts: ๋ชจ๋ ๋๊ตฌ๊ฐ ๋์คํจ์น ๋งต์ ๋ฑ๋ก๋ฉ๋๋ค.
๋ฃจํ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. buildTool() ํฉํ ๋ฆฌ๊ฐ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
s03 ๊ณํ (PLANNING) "๊ณํ ์๋ ์์ด์ ํธ๋ ํ๋ฅํ๋ค"
EnterPlanModeTool/ExitPlanModeTool + TodoWriteTool:
๋จ๊ณ๋ฅผ ๋จผ์ ๋์ดํ ๋ค์ ์คํํฉ๋๋ค. ์๋ฃ์จ์ ๋ ๋ฐฐ๋ก ๋์
๋๋ค.
s04 ์๋ธ ์์ด์ ํธ (SUB-AGENTS) "ํฐ ์์
์ ๋๋๊ณ ํ์ ์์
๋ง๋ค ์ปจํ
์คํธ๋ฅผ ์ ๋ฆฌํ๋ค"
AgentTool + forkSubagent.ts: ๊ฐ ํ์ ์์ด์ ํธ๋ ์๋ก์ด messages[]๋ฅผ ๊ฐ์ ธ,
๋ฉ์ธ ๋ํ๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํฉ๋๋ค.
s05 ์จ๋๋งจ๋ ์ง์ (KNOWLEDGE) "ํ์ํ ๋ ์ง์์ ๋ก๋ํ๋ค"
SkillTool + memdir/: ์์คํ
ํ๋กฌํํธ๊ฐ ์๋ tool_result๋ฅผ ํตํด ์ฃผ์
ํฉ๋๋ค.
๋๋ ํฐ๋ฆฌ๋ณ๋ก CLAUDE.md ํ์ผ์ ์ง์ฐ ๋ก๋(lazy load)ํฉ๋๋ค.
s06 ์ปจํ
์คํธ ์์ถ (COMPRESSION) "์ปจํ
์คํธ๊ฐ ๊ฝ ์ฐจ๋ฉด ๊ณต๊ฐ์ ํ๋ณดํ๋ค"
services/compact/: 3๊ณ์ธต ์ ๋ต:
autoCompact (์์ฝ) + snipCompact (์๋ฅด๊ธฐ) + contextCollapse
s07 ์๊ตฌ ์์
(TASKS) "ํฐ ๋ชฉํ โ ์์ ์์
โ ๋์คํฌ"
TaskCreate/Update/Get/List: ํ์ผ ๊ธฐ๋ฐ์ ์์
๊ทธ๋ํ(Task graph)๋ก,
์ํ ์ถ์ , ์ข
์์ฑ ๋ฐ ์์์ฑ์ ๊ฐ์ต๋๋ค.
s08 ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
(BACKGROUND) "๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋๋ฆฐ ์์
์คํ; ์์ด์ ํธ๋ ๊ณ์ ์๊ฐํ๋ค"
DreamTask + LocalShellTask: ๋ฐ๋ชฌ ์ค๋ ๋๊ฐ ๋ช
๋ น์ ์คํํ๊ณ ,
์๋ฃ ์ ์๋ฆผ์ ์ฃผ์
ํฉ๋๋ค.
s09 ์์ด์ ํธ ํ (TEAMS) "ํผ์ ํ๊ธฐ์ ๋๋ฌด ํฌ๋ค โ ๋๋ฃ์๊ฒ ์์ํ๋ค"
TeamCreate/Delete + InProcessTeammateTask:
๋น๋๊ธฐ ๋ฉ์ผ๋ฐ์ค๋ฅผ ๊ฐ์ง ์๊ตฌ์ ์ธ ๋๋ฃ ์์ด์ ํธ๋ค.
s10 ํ ํ๋กํ ์ฝ (PROTOCOLS) "๊ณต์ ๋ ํต์ ๊ท์น"
SendMessageTool: ํ๋์ ์์ฒญ-์๋ต ํจํด์ด
์์ด์ ํธ ๊ฐ์ ๋ชจ๋ ํ์์ ์ฃผ๋ํฉ๋๋ค.
s11 ์์จ ์์ด์ ํธ (AUTONOMOUS) "๋๋ฃ๋ค์ด ์ค์ค๋ก ์์
์ ์ค์บํ๊ณ ์ฒญ๊ตฌํ๋ค"
coordinator/coordinatorMode.ts: ์ ํด ๋ฃจํ(Idle cycle) + ์๋ ํ ๋น,
๋ฆฌ๋๊ฐ ๋ชจ๋ ์์
์ ์ผ์ผ์ด ํ ๋นํ ํ์๊ฐ ์์ต๋๋ค.
s12 ์์
ํธ๋ฆฌ ๊ฒฉ๋ฆฌ (WORKTREE) "๊ฐ์ ์์ ์ ๋๋ ํฐ๋ฆฌ์์ ์์
ํ๋ค"
EnterWorktreeTool/ExitWorktreeTool: ์์
์ ๋ชฉํ๋ฅผ ๊ด๋ฆฌํ๊ณ ,
์์
ํธ๋ฆฌ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ID๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
| ํจํด | ์์น | ๋ชฉ์ |
|---|---|---|
| AsyncGenerator ์คํธ๋ฆฌ๋ฐ | QueryEngine, query() |
API์์ ์๋น์๋ก ์ด์ด์ง๋ ์ ์ฒด ์ฒด์ธ ์คํธ๋ฆฌ๋ฐ |
| ๋น๋ + ํฉํ ๋ฆฌ (Builder + Factory) | buildTool() |
๋๊ตฌ ์ ์๋ฅผ ์ํ ์์ ํ ๊ธฐ๋ณธ๊ฐ ์ ๊ณต |
| ๋ธ๋๋ ํ์ (Branded Types) | SystemPrompt, asSystemPrompt() |
๋ฌธ์์ด/๋ฐฐ์ด ํผ๋ ๋ฐฉ์ง |
| ๊ธฐ๋ฅ ํ๋๊ทธ + DCE | bun:bundle์ feature() |
์ปดํ์ผ ์์ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ(DCE) |
| ๊ตฌ๋ณ๋ ์ ๋์จ (Discriminated Unions) | Message ํ์
|
ํ์ ์์ ์ฑ์ด ๋ณด์ฅ๋๋ ๋ฉ์์ง ์ฒ๋ฆฌ |
| ์ต์ ๋ฒ + ์ํ ๋จธ์ | StreamingToolExecutor |
๋๊ตฌ ์คํ ์๋ช ์ฃผ๊ธฐ ์ถ์ |
| ์ค๋ ์ท ์ํ (Snapshot State) | FileHistoryState |
ํ์ผ ์์ ์ ์คํ ์ทจ์/๋ค์ ์คํ |
| ๋ง ๋ฒํผ (Ring Buffer) | ์๋ฌ ๋ก๊ทธ | ๊ธด ์ธ์ ์ ์ํ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ |
| ๋ฐ์ฌ ํ ๋ง๊ฐ (Fire-and-Forget) | recordTranscript() |
์์๊ฐ ์ ์ง๋๋ ๋ ผ๋ธ๋กํน ์์ํ |
| ์ง์ฐ ์คํค๋ง (Lazy Schema) | lazySchema() |
์ฑ๋ฅ ํฅ์์ ์ํ Zod ์คํค๋ง ์ง์ฐ ํ๊ฐ |
| ์ปจํ ์คํธ ๊ฒฉ๋ฆฌ (Context Isolation) | AsyncLocalStorage |
๊ณต์ ํ๋ก์ธ์ค ๋ด ๊ฐ ์์ด์ ํธ๋ณ ์ปจํ ์คํธ |
์ฌ์ฉ์ ์
๋ ฅ (ํ๋กฌํํธ / ์ฌ๋์ ๋ช
๋ น)
โ
โผ
processUserInput() โ /๋ช
๋ น์ด ํ์ฑ, UserMessage ์์ฑ
โ
โผ
fetchSystemPromptParts() โ ๋๊ตฌ โ ํ๋กฌํํธ ์น์
, CLAUDE.md ๋ฉ๋ชจ๋ฆฌ
โ
โผ
recordTranscript() โ ์ฌ์ฉ์ ๋ฉ์์ง๋ฅผ ๋์คํฌ์ ์์ํ (JSONL)
โ
โผ
โโโ normalizeMessagesForAPI() โ UI ์ ์ฉ ํ๋ ์ ๊ฑฐ, ํ์์ ์์ถ ์ํ
โ โ
โ โผ
โ Claude API (์คํธ๋ฆฌ๋ฐ) โ ๋๊ตฌ + ์์คํ
ํ๋กฌํํธ์ ํจ๊ป POST /v1/messages
โ โ
โ โผ
โ ์คํธ๋ฆผ ์ด๋ฒคํธ โ message_start โ content_block_delta โ message_stop
โ โ
โ โโ ํ
์คํธ ๋ธ๋ก โโโโโโโโโโโโโโโ ์๋น์(SDK / REPL)์๊ฒ ์ ๋ฌ
โ โ
โ โโ tool_use ๋ธ๋ก?
โ โ
โ โผ
โ StreamingToolExecutor โ ๋ถํ : ๋์์ฑ ์์ (concurrent-safe) vs ์ง๋ ฌ(serial)
โ โ
โ โผ
โ canUseTool() โ ๊ถํ ๊ฒ์ฌ (ํ
+ ๊ท์น + UI ํ๋กฌํํธ)
โ โ
โ โโ ๊ฑฐ๋ถ โโโโโโโโโโโโโโโโโ tool_result(error) ์ถ๊ฐ, ๋ฃจํ ๊ณ์
โ โ
โ โโ ํ์ฉ
โ โ
โ โผ
โ tool.call() โ ๋๊ตฌ ์คํ (Bash, Read, Edit ๋ฑ)
โ โ
โ โผ
โ tool_result ์ถ๊ฐ โ messages[]์ ํธ์, recordTranscript()
โ โ
โโโโโโโโโโโ โ API ํธ์ถ๋ก ๋ฃจํ ๋ณต๊ท
โ
โผ (stop_reason != "tool_use")
๊ฒฐ๊ณผ ๋ฉ์์ง ์์ฑ โ ์ต์ข
ํ
์คํธ, ์ฌ์ฉ๋, ๋น์ฉ, session_id
- ์ฌ์ธต ๋ถ์ ๋ณด๊ณ ์ (
docs/) โ ํ ๋ ๋ฉํธ๋ฆฌ, ์ฝ๋๋ค์, ์ธ๋์ปค๋ฒ ๋ชจ๋, ์๊ฒฉ ์ ์ด, ํฅํ ๋ก๋๋งต - ๋๋ ํฐ๋ฆฌ ์ฐธ์กฐ โ ์ฝ๋ ๊ตฌ์กฐ ํธ๋ฆฌ
- ์ํคํ ์ฒ ๊ฐ์ โ ์ง์ ์ โ ์ฟผ๋ฆฌ ์์ง โ ๋๊ตฌ/์๋น์ค/์ํ
- ๋๊ตฌ ์์คํ ๋ฐ ๊ถํ ์ํคํ ์ฒ โ 40+ ๋๊ตฌ, ๊ถํ ํ๋ฆ, ์๋ธ ์์ด์ ํธ
- 12๊ฐ์ง ์ ์ง์ ์์ ์ฅ์น โ Claude Code๊ฐ ์์ด์ ํธ ๋ฃจํ์ ํ๋ก๋์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
์ธํฐ๋ท์ ๊ณต๊ฐ๋ ์๋ฃ์ ์ปค๋ฎค๋ํฐ ํ ๋ก ์ ๋ฐํ์ผ๋ก ์ ๋ฆฌ๋ Claude Code v2.1.88 ๋ถ์ ๋ณด๊ณ ์. ์์ด/์ค๊ตญ์ด/ํ๊ตญ์ด/์ผ๋ณธ์ด 4๊ฐ ๊ตญ์ด ์ ๊ณต.
docs/
โโโ en/ # English
โ โโโ [01-telemetry-and-privacy.md] # Telemetry & Privacy โ what's collected, why you can't opt out
โ โโโ [02-hidden-features-and-codenames.md] # Codenames (Capybara/Tengu/Numbat), feature flags, internal vs external
โ โโโ [03-undercover-mode.md] # Undercover Mode โ hiding AI authorship in open-source repos
โ โโโ [04-remote-control-and-killswitches.md]# Remote Control โ managed settings, killswitches, model overrides
โ โโโ [05-future-roadmap.md] # Future Roadmap โ Numbat, KAIROS, voice mode, unreleased tools
โ
โโโ ko/ # ํ๊ตญ์ด
โ โโโ [01-ํ
๋ ๋ฉํธ๋ฆฌ์-ํ๋ผ์ด๋ฒ์.md] # ํ
๋ ๋ฉํธ๋ฆฌ ๋ฐ ํ๋ผ์ด๋ฒ์ โ ์์ง ํญ๋ชฉ, ๋นํ์ฑํ ๋ถ๊ฐ ์ด์
โ โโโ [02-์จ๊ฒจ์ง-๊ธฐ๋ฅ๊ณผ-์ฝ๋๋ค์.md] # ์จ๊ฒจ์ง ๊ธฐ๋ฅ โ ๋ชจ๋ธ ์ฝ๋๋ค์, feature flag, ๋ด๋ถ/์ธ๋ถ ์ฌ์ฉ์ ์ฐจ์ด
โ โโโ [03-์ธ๋์ปค๋ฒ-๋ชจ๋.md] # ์ธ๋์ปค๋ฒ ๋ชจ๋ โ ์คํ์์ค์์ AI ์ ์ ์ํ
โ โโโ [04-์๊ฒฉ-์ ์ด์-ํฌ์ค์์น.md] # ์๊ฒฉ ์ ์ด โ ๊ด๋ฆฌ ์ค์ , ํฌ์ค์์น, ๋ชจ๋ธ ์ค๋ฒ๋ผ์ด๋
โ โโโ [05-ํฅํ-๋ก๋๋งต.md] # ํฅํ ๋ก๋๋งต โ Numbat, KAIROS, ์์ฑ ๋ชจ๋, ๋ฏธ๊ณต๊ฐ ๋๊ตฌ
โ
โโโ zh/ # ไธญๆ
โโโ [01-้ฅๆตไธ้็งๅๆ.md] # ้ฅๆตไธ้็ง โ ๆถ้ไบไปไน๏ผไธบไปไนๆ ๆณ้ๅบ
โโโ [02-้่ๅ่ฝไธๆจกๅไปฃๅท.md] # ้่ๅ่ฝ โ ๆจกๅไปฃๅท๏ผfeature flag๏ผๅ
ๅค็จๆทๅทฎๅผ
โโโ [03-ๅงๅบๆจกๅผๅๆ.md] # ๅงๅบๆจกๅผ โ ๅจๅผๆบ้กน็ฎไธญ้่ AI ่บซไปฝ
โโโ [04-่ฟ็จๆงๅถไธ็ดงๆฅๅผๅ
ณ.md] # ่ฟ็จๆงๅถ โ ๆ็ฎก่ฎพ็ฝฎ๏ผ็ดงๆฅๅผๅ
ณ๏ผๆจกๅ่ฆ็
โโโ [05-ๆชๆฅ่ทฏ็บฟๅพ.md] # ๆชๆฅ่ทฏ็บฟๅพ โ Numbat๏ผKAIROS๏ผ่ฏญ้ณๆจกๅผ๏ผๆชไธ็บฟๅทฅๅ
ท
ํ์ผ๋ช ์ ํด๋ฆญํ๋ฉด ํด๋น ๋ณด๊ณ ์๋ก ์ด๋ํฉ๋๋ค.
| # | ์ฃผ์ | ํต์ฌ ๋ฐ๊ฒฌ | ๋งํฌ |
|---|---|---|---|
| 01 | ํ ๋ ๋ฉํธ๋ฆฌ ๋ฐ ํ๋ผ์ด๋ฒ์ | ์ด์ค ๋ถ์ ํ์ดํ๋ผ์ธ (1P, Datadog). ํ๊ฒฝ ํ๊ฑฐํ๋ฆฐํธ, ํ๋ก์ธ์ค ๋ฉํธ๋ฆญ, ๋ชจ๋ ์ด๋ฒคํธ์ ์ธ์
/์ฌ์ฉ์ ID ํฌํจ. ์ฌ์ฉ์ ๋์ ๋นํ์ฑํ ์ค์ ์์. OTEL_LOG_TOOL_DETAILS=1๋ก ์ ์ฒด ๋๊ตฌ ์
๋ ฅ ๊ธฐ๋ก ๊ฐ๋ฅ. |
EN ยท ํ๊ตญ์ด ยท ไธญๆ |
| 02 | ์จ๊ฒจ์ง ๊ธฐ๋ฅ๊ณผ ์ฝ๋๋ค์ | ๋๋ฌผ ์ฝ๋๋ค์ ์ฒด๊ณ (Capybara v8, Tengu, FennecโOpus 4.6, Numbat ์ฐจ๊ธฐ). Feature flag์ ๋ฌด์์ ๋จ์ด ์กฐํฉ์ผ๋ก ๋ชฉ์ ๋๋
ํ. ๋ด๋ถ ์ฌ์ฉ์๋ ๋ ๋์ ํ๋กฌํํธ์ ๊ฒ์ฆ ์์ด์ ํธ ์ ๊ณต. ์จ๊ฒจ์ง ๋ช
๋ น์ด: /btw, /stickers. |
EN ยท ํ๊ตญ์ด ยท ไธญๆ |
| 03 | ์ธ๋์ปค๋ฒ ๋ชจ๋ | ๊ณต์ ์ง์์ ๊ณต๊ฐ ์ ์ฅ์์์ ์๋์ผ๋ก ์ธ๋์ปค๋ฒ ๋ชจ๋ ์ง์ . ๋ชจ๋ธ ์ง์: "์ ์ฒด๋ฅผ ๋คํค์ง ๋ง๋ผ" โ ๋ชจ๋ AI ์ ์ ํ์๋ฅผ ์ ๊ฑฐํ๊ณ , ์ฌ๋์ด ์์ฑํ ๊ฒ์ฒ๋ผ ์ปค๋ฐ. ๊ฐ์ ๋นํ์ฑํ ์ต์ ์์. | EN ยท ํ๊ตญ์ด ยท ไธญๆ |
| 04 | ์๊ฒฉ ์ ์ด ๋ฐ ํฌ์ค์์น | 1์๊ฐ๋ง๋ค /api/claude_code/settings ํด๋ง. ์ํ ๋ณ๊ฒฝ ์ ์ฐจ๋จ ๋ค์ด์ผ๋ก๊ทธ โ ๊ฑฐ๋ถ = ์ฑ ์ข
๋ฃ. 6๊ฐ ์ด์ ํฌ์ค์์น (๊ถํ ์ฐํ, fast ๋ชจ๋, ์์ฑ ๋ชจ๋, ๋ถ์ ์ฑํฌ). GrowthBook์ผ๋ก ๋์ ์์ด ์ฌ์ฉ์ ๋์ ๋ณ๊ฒฝ ๊ฐ๋ฅ. |
EN ยท ํ๊ตญ์ด ยท ไธญๆ |
| 05 | ํฅํ ๋ก๋๋งต | Numbat ์ฝ๋๋ค์ ํ์ธ. Opus 4.7 / Sonnet 4.8 ๊ฐ๋ฐ ์ค. KAIROS = ์์ ์์จ ์์ด์ ํธ ๋ชจ๋, <tick> ํํธ๋นํธ, ํธ์ ์๋ฆผ, PR ๊ตฌ๋
. ์์ฑ ๋ชจ๋(push-to-talk) ์ค๋น ์๋ฃ. ๋ฏธ๊ณต๊ฐ ๋๊ตฌ 17๊ฐ ๋ฐ๊ฒฌ. |
EN ยท ํ๊ตญ์ด ยท ไธญๆ |
๋ณธ ์ ์ฅ์๋ ๊ธฐ์ ์ฐ๊ตฌ ๋ฐ ๊ต์ก ๋ชฉ์ ์ผ๋ก๋ง ์ ๊ณต๋ฉ๋๋ค. ์์
์ ์ฌ์ฉ์ ๊ธ์ง๋ฉ๋๋ค.
์ ์๊ถ์๋ก์ ๋ณธ ์ ์ฅ์ ์ฝํ
์ธ ๊ฐ ๊ทํ์ ๊ถ๋ฆฌ๋ฅผ ์นจํดํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ,
์ ์ฅ์ ์์ ์์๊ฒ ์ฐ๋ฝ ์ฃผ์๋ฉด ์ฆ์ ์ญ์ ํ๊ฒ ์ต๋๋ค.
| ํญ๋ชฉ | ์๋ |
|---|---|
| ํ์ผ (.ts/.tsx) | ~1,884 |
| ๋ผ์ธ ์ | ~512,664 |
| ์ต๋ ๋จ์ผ ํ์ผ | query.ts (~785KB) |
| ๋ด์ฅ ๋๊ตฌ | ~40๊ฐ ์ด์ |
| ์ฌ๋์ ๋ช ๋ น | ~80๊ฐ ์ด์ |
| ์์กด์ฑ (node_modules) | ~192๊ฐ ํจํค์ง |
| ๋ฐํ์ | Bun (Node.js >= 18 ๋ฒ๋ค๋ก ์ปดํ์ผ) |
์ฝ์ด ๋ฃจํ
========
์ฌ์ฉ์ --> messages[] --> Claude API --> ์๋ต
|
stop_reason == "tool_use"?
/ \
์ ์๋์ค
| |
๋๊ตฌ ์คํ ํ
์คํธ ๋ฐํ
tool_result ์ถ๊ฐ
๋ฃจํ ์ฌ์ง์
-----------------> messages[]
์ด๊ฒ์ด ์ต์ ์์ด์ ํธ ๋ฃจํ์ด๋ค. Claude Code๋ ์ด ๋ฃจํ ์์
ํ๋ก๋์
๊ธ ํ๋์ค๋ฅผ ๋ํํ๋ค: ๊ถํ, ์คํธ๋ฆฌ๋ฐ, ๋์์ฑ,
์์ถ, ์๋ธ์์ด์ ํธ, ์์ํ ๋ฐ MCP.
src/
โโโ main.tsx # REPL ๋ถํธ์คํธ๋ฉ, 4,683์ค
โโโ QueryEngine.ts # SDK/headless ์ฟผ๋ฆฌ ๋ผ์ดํ์ฌ์ดํด ์์ง
โโโ query.ts # ๋ฉ์ธ ์์ด์ ํธ ๋ฃจํ (785KB, ์ต๋ ํ์ผ)
โโโ Tool.ts # ๋๊ตฌ ์ธํฐํ์ด์ค + buildTool ํฉํ ๋ฆฌ
โโโ Task.ts # ํ์คํฌ ํ์
, ID, ์ํ ๋ฒ ์ด์ค ํด๋์ค
โโโ tools.ts # ๋๊ตฌ ๋ฑ๋ก, ํ๋ฆฌ์
, ํํฐ๋ง
โโโ commands.ts # ์ฌ๋์ ๋ช
๋ น ์ ์
โโโ context.ts # ์ฌ์ฉ์ ์
๋ ฅ ์ปจํ
์คํธ
โโโ cost-tracker.ts # API ๋น์ฉ ๋์
โโโ setup.ts # ์ต์ด ์คํ ์ค์ ํ๋ก์ฐ
โ
โโโ bridge/ # Claude Desktop / ์๊ฒฉ ๋ธ๋ฆฟ์ง
โ โโโ bridgeMain.ts # ์ธ์
๋ผ์ดํ์ฌ์ดํด ๋งค๋์
โ โโโ bridgeApi.ts # HTTP ํด๋ผ์ด์ธํธ
โ โโโ bridgeConfig.ts # ์ฐ๊ฒฐ ์ค์
โ โโโ bridgeMessaging.ts # ๋ฉ์์ง ๋ฆด๋ ์ด
โ โโโ sessionRunner.ts # ํ๋ก์ธ์ค ์คํฐ
โ โโโ jwtUtils.ts # JWT ๊ฐฑ์
โ โโโ workSecret.ts # ์ธ์ฆ ํ ํฐ
โ โโโ capacityWake.ts # ์ฉ๋ ๊ธฐ๋ฐ ์จ์ดํฌ
โ
โโโ cli/ # CLI ์ธํ๋ผ
โ โโโ handlers/ # ๋ช
๋ น ํธ๋ค๋ฌ
โ โโโ transports/ # I/O ์ ์ก (stdio, structured)
โ
โโโ commands/ # ~80๊ฐ ์ฌ๋์ ๋ช
๋ น
โโโ components/ # React/Ink ํฐ๋ฏธ๋ UI
โโโ entrypoints/ # ์ฑ ์ง์
์
โโโ hooks/ # React hooks
โโโ services/ # ๋น์ฆ๋์ค ๋ก์ง ๋ ์ด์ด
โโโ state/ # ์ฑ ์ํ
โโโ tasks/ # ํ์คํฌ ๊ตฌํ
โโโ tools/ # 40๊ฐ ์ด์ ๋๊ตฌ ๊ตฌํ
โโโ types/ # ํ์
์ ์
โโโ utils/ # ์ ํธ๋ฆฌํฐ (์ต๋ ๋๋ ํฐ๋ฆฌ)
โโโ vendor/ # ๋ค์ดํฐ๋ธ ๋ชจ๋ ์คํ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ง์
๋ ์ด์ด โ
โ cli.tsx โโ> main.tsx โโ> REPL.tsx (์ธํฐ๋ํฐ๋ธ) โ
โ โโโ> QueryEngine.ts (headless/SDK) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ฟผ๋ฆฌ ์์ง โ
โ submitMessage(prompt) โโ> AsyncGenerator<SDKMessage> โ
โ โโโ fetchSystemPromptParts() โโ> ์์คํ
ํ๋กฌํํธ ์กฐ๋ฆฝ โ
โ โโโ processUserInput() โโ> /๋ช
๋ น ์ฒ๋ฆฌ โ
โ โโโ query() โโ> ๋ฉ์ธ ์์ด์ ํธ ๋ฃจํ โ
โ โ โโโ StreamingToolExecutor โโ> ๋ณ๋ ฌ ๋๊ตฌ ์คํ โ
โ โ โโโ autoCompact() โโ> ์ปจํ
์คํธ ์์ถ โ
โ โ โโโ runTools() โโ> ๋๊ตฌ ์ค์ผ์คํธ๋ ์ด์
โ
โ โโโ yield SDKMessage โโ> ์๋น์์๊ฒ ์คํธ๋ฆฌ๋ฐ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๋ณธ ์ ์ฅ์ ์ฝํ ์ธ ๋ ๊ธฐ์ ์ฐ๊ตฌ ๋ฐ ๊ต์ก ๋ชฉ์ ์ผ๋ก๋ง ์ ๊ณต๋ฉ๋๋ค. ์ง์ ์ฌ์ฐ๊ถ์ ์ ํ์ฌ์ ๊ท์๋ฉ๋๋ค. ๊ถ๋ฆฌ ์นจํด๊ฐ ์๋ ๊ฒฝ์ฐ ์ญ์ ๋ฅผ ์ํด ์ฐ๋ฝ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.