ã¯ããã«: ãã®ãããžã§ã¯ãã¯ãCLI Agent ã¢ãŒããã¯ãã£ã«é¢ããåŠç¿ããã³ç ç©¶çšã®ãªããžããªã§ãããã¹ãŠã®è³æã¯ãã€ã³ã¿ãŒãããäžã§å ¬éãããŠããæ å ±ãè°è«ã®ã¿ã«åºã¥ããŠãŸãšããããŠãããç¹ã«çŸåšéåžžã«äººæ°ã®ãã CLI Agent
claude-codeã«é¢ããå ¬éæ å ±ãåèã«ããŠããŸããç§ãã¡ã®ç®çã¯ãéçºè ã Agent æè¡ãããæ·±ãçè§£ããæŽ»çšã§ããããã«æ¯æŽããããšã§ããä»åŸã Agent ã¢ãŒããã¯ãã£ã«é¢ããæŽå¯ãå®è·µçãªè°è«ãç¶ç¶çã«å ±æããŠããäºå®ã§ããçæ§ã®ãé¢å¿ãšãæ¯æŽã«æè¬ããããŸãïŒ
å 責äºé : æ¬ãªããžããªã®ã³ã³ãã³ãã¯æè¡ç ç©¶ãåŠç¿ãæè²ç®çã®äº€æµã®ããã«ã®ã¿æäŸãããŸããåçšå©çšã¯å³çŠã§ãã ãããªãåäººãæ©é¢ãå£äœããæ¬ã³ã³ãã³ãã忥ç®çãå¶å©æŽ»åãéæ³è¡çºããã®ä»ã®ç¡èš±å¯ã®çšéã«äœ¿çšããããšã¯ã§ããŸãããæ¬ã³ã³ãã³ããã客æ§ã®æ³çæš©å©ãç¥çè²¡ç£æš©ããã®ä»ã®å©çã䟵害ããå Žåã¯ããé£çµ¡ããã ããã°çŽã¡ã«ç¢ºèªã»åé€ããããŸãã
èšèª: English | äžæ | íêµìŽ | æ¥æ¬èª
ããŒã«ã€ã³ã¿ãŒãã§ãŒã¹
==============
buildTool(definition) ââ> Tool<Input, Output, Progress>
åããŒã«ã¯ä»¥äžãå®è£
ããŸã:
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ã©ã€ããµã€ã¯ã« (LIFECYCLE) â
â âââ validateInput() â äžæ£ãªåŒæ°ãæ©æã«æåŠ â
â âââ checkPermissions() â ããŒã«åºæã®æš©éãã§ã㯠â
â âââ call() â å®è¡ããŠçµæãè¿ã â
â â
â æ©èœ (CAPABILITIES) â
â âââ isEnabled() â æ©èœãã©ã°ã®ç¢ºèª â
â âââ isConcurrencySafe() â 䞊åå®è¡å¯èœãïŒ â
â âââ isReadOnly() â å¯äœçšããªããïŒ â
â âââ 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 察話
âââââââââââ
Web ãšãããã¯ãŒã¯ ãšãŒãžã§ã³ã / ã¿ã¹ã¯ 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 (察話åããã³ãã) âââââââââââââ
â ãŠãŒã¶ãŒãããŒã«å + å
¥åå€ãç¢ºèª â
â ãªãã·ã§ã³: 1åèš±å¯ / åžžã«èš±å¯ / æåŠ â
ââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââ
â
âŒ
ââ 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 â å
±æã¿ã¹ã¯ããŒã
ââ 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:
ã¹ããããå
ã«ãªã¹ãã¢ããããŠããå®è¡ããŸããå®äºçã2åã«é«ããŸãã
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
â
âââ ja/ # æ¥æ¬èª
â âââ [01-ãã¬ã¡ããªãšãã©ã€ãã·ãŒ.md] # ãã¬ã¡ããªãšãã©ã€ãã·ãŒ â åéé
ç®ãç¡å¹åäžå¯ã®çç±
â âââ [02-é ãæ©èœãšã³ãŒãããŒã .md] # é ãæ©èœ â ã¢ãã«ã³ãŒãããŒã ãfeature flagãå
éš/å€éšãŠãŒã¶ãŒã®éã
â âââ [03-ã¢ã³ããŒã«ããŒã¢ãŒã.md] # ã¢ã³ããŒã«ããŒã¢ãŒã â ãªãŒãã³ãœãŒã¹ã§ã®AIèäœé å¿
â âââ [04-ãªã¢ãŒãå¶åŸ¡ãšãã«ã¹ã€ãã.md] # ãªã¢ãŒãå¶åŸ¡ â 管çèšå®ããã«ã¹ã€ãããã¢ãã«ãªãŒããŒã©ã€ã
â âââ [05-ä»åŸã®ããŒãããã.md] # ä»åŸã®ããŒãããã â NumbatãKAIROSãé³å£°ã¢ãŒããæªå
¬éããŒã«
â
âââ 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 ââ> ã³ã³ã·ã¥ãŒãã«ã¹ããªãŒãã³ã° â
ââââââââââââââââââââââââââââââââ¬âââââââââââââââââââââââââââââââââââââââ
æ¬ãªããžããªã®ã³ã³ãã³ãã¯æè¡ç ç©¶ããã³æè²ç®çã§ã®ã¿æäŸãããŸããç¥çè²¡ç£æš©ã¯å ã®äŒç€Ÿã«åž°å±ããŸããæš©å©äŸµå®³ãããå Žåã¯ãåé€ã®ãããé£çµ¡ãã ãããã