研究范围与结论总览
本次研究基于@anthropic-ai/claude-codenpm 包的cli.js.map还原的Claude Code源码,对整体架构、系统提示词、Agent提示词、Skills、Plugins、Hooks、MCP、权限与工具调用机制,以及新增的全量Prompt提取框架和Agent调度链进行了系统性分析。
核心结论: Claude Code的强大并非源于某个“神秘system prompt”,而是其作为一个完整的软件工程系统,将Prompt、Tool、Permission、Agent、Skill、Plugin、Hook、MCP、Cache和产品体验等要素统一起来,构建了一个Agent Operating System。
源码结构全景:Agent Operating System
Claude Code的源码结构展现出高度的复杂性和平台化思维,包含入口层、常量定义、工具层、运行时服务、UI组件、协调器、记忆模块、插件和Hook系统等模块,表明其并非简单的CLI包装器,而是一个完整的运行平台。
系统提示词总装:prompts.ts的真实地位
src/constants/prompts.ts是整个系统的核心,承担了主系统提示词的总装配、环境信息注入、工具使用规范、安全与风险动作规范、Session-specific guidance注入、language / output style注入、MCP instructions注入、memory prompt注入、scratchpad说明注入、function result clearing提示注入、brief / proactive / token budget等feature-gated section注入等功能。Claude Code的prompt并非静态字符串,而是一个system prompt assembly architecture。
Prompt 全量提取与模块级拆解
研究对主Prompt的主要section和行为价值进行了拆解,包括身份与基础定位、基础系统规范、做任务哲学、风险动作规范、工具使用规范、Session-specific guidance、Output efficiency、Tone and style、DEFAULT_AGENT_PROMPT等,揭示了Prompt在系统中的重要作用和设计哲学。
Agent Prompt 与 built-in agents 深挖
AgentTool/prompt.ts定义了Agent协议说明书,描述了如何展示agent list、每个agent的描述格式、何时fork自己、何时显式指定subagent_type、fork与fresh agent的区别、何时不要用AgentTool、如何写给子agent的prompt、foreground / background的行为差异、isolation: worktree / remote的语义等内容。研究还深入分析了fork语义、Agent prompt编写指南、built-in agents的职责分工(Explore Agent、Plan Agent、Verification Agent等),揭示了Claude Code在Agent设计上的专业性。
Agent 调度链深挖:从 AgentTool 到 runAgent 再到 query
研究分析了Agent调度链的总体调用链、AgentTool.call()的调度总控作用、fork path与normal path的区别、fork强调cache-identical prefix的原因、background agent与foreground agent的生命周期差异、runAgent作为子Agent runtime的完整功能、agent-specific MCP servers的注入机制、frontmatter hooks与frontmatter skills的配置方式、query作为最终主循环执行器,以及transcript / metadata / cleanup等产品化runtime细节,揭示了Claude Code在Agent调度和生命周期管理上的成熟设计。
Skills / Plugins / Hooks / MCP 生态深挖
研究深入分析了Skill、Plugin、Hook、MCP的生态设计,揭示了Skill作为workflow package的本质、Plugin作为模型行为层面的扩展单元、Hook作为runtime policy layer的作用、MCP作为工具桥和行为说明注入通道的功能,以及它们之间的协同关系。
权限、Hook、工具执行链深挖
研究深入分析了toolExecution.ts中的工具执行链,包括输入校验、PreToolUse hooks作为最关键的拦截点、resolveHookPermissionDecision()作为权限语义的关键粘合层、工具执行后的hook处理等,揭示了Claude Code在权限控制、Hook设计和工具执行方面的严谨性和可治理性。
为什么 Claude Code 这么强:从源码看它真正的护城河
研究总结了Claude Code的护城河,包括Prompt architecture、Tool runtime governance、Permission model、Hook policy layer、Agent specialization、Skill workflow packaging、Plugin integration、MCP instruction injection、Prompt cache optimization、Async/background/remote lifecycle、Transcript / telemetry / cleanup / task system等,强调了其作为一个Agent Operating System的完整性和系统性优势。
关键文件索引与后续可继续深挖方向
研究列出了核心Prompt文件、核心Agent文件、核心Skill / Plugin / Hook / MCP文件,并提出了后续可继续深挖的方向,包括query.ts、resumeAgent.ts、loadSkillsDir、pluginLoader、systemPromptSections.ts、coordinator/*、attachments.ts、AgentSummary等,为后续研究提供了参考。