版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1ClaudeCode源码深度研究报告XiaoTanX:/tvytlx公众号:XiaoTanAIMarch31,2026Contents1ClaudeCode源码深度研究报告(增强完整版)41.1目录 421.研究范围与结论总览42.11.1这次到底研究了什么 42.21.2关键确认事实 42.31.3先给最重要的总判断 532.源码结构全景:它为什么更像AgentOperatingSystem53.12.1顶层结构暴露出的系统复杂度 53.22.2入口层说明它是平台,而不是单一界面 63.32.3命令系统是整个产品的操作面板 63.42.4Tools层才是模型真正“能做事”的根 743.系统提示词总装:prompts.ts的真实地位74.13.1真正的主入口:src/constants/prompts.ts 74.23.2getSystemPrompt()不是文本,而是编排器 84.2.1静态前缀(更适合cache) 84.2.2动态后缀(按会话条件注入) 84.33.3Promptcacheboundary:基础设施级思维 854.Prompt全量提取与模块级拆解95.14.1身份与基础定位:getSimpleIntroSection() 95.24.2基础系统规范:getSimpleSystemSection() 95.34.3做任务哲学:getSimpleDoingTasksSection() 105.44.4风险动作规范:getActionsSection() 105.54.5工具使用规范:getUsingYourToolsSection() 105.64.6Session‑specificguidance:运行时可变的局部指令 115.74.7Outputefficiency:高价值但常被忽视的section 115.84.8Toneandstyle:统一交互感受 115.94.9DEFAULT_AGENT_PROMPT:子Agent的基础人格 12265.AgentPrompt与built_inagents深挖126.15.1AgentTool/prompt.ts:Agent协议说明书 126.25.2fork语义为什么很强 126.35.3“Howtowritetheprompt”一节非常值钱 136.45.4built‑inagents:职责分工而不是万能worker 136.55.5ExploreAgent:纯读模式的代码探索专家 136.5.1绝对只读 146.5.2核心能力 146.65.6PlanAgent:纯规划,不做编辑 146.75.7VerificationAgent:为什么它非常值钱 1476.Agent调度链深挖:从AgentTool到runAgent再到query157.16.1总体调用链长什么样 157.26.2AgentTool.call():真正的调度总控 157.36.3forkpathvsnormalpath 167.3.1forkpath 167.3.2normalpath 167.46.4为什么fork会强调cache‑identicalprefix 167.56.5backgroundagent与foregroundagent是两套生命周期 177.5.1backgroundpath特点 177.5.2foregroundpath特点 177.66.6runAgent():真正的子Agentruntime 177.76.7agent‑specificMCPservers:真正的additive能力注入 187.86.8frontmatterhooks与frontmatterskills 187.96.9query()才是最终主循环执行器 187.106.10transcript/metadata/cleanup:产品化runtime的证据 1887.Skills/Plugins/Hooks/MCP生态深挖198.17.1Skill:不是文档,而是workflowpackage 198.1.1Skill的本质 198.27.2Plugin:Prompt+Metadata+RuntimeConstraints 198.37.3Hook:运行时治理层 208.47.4Hook与权限的耦合方式非常成熟 208.57.5MCP:不只是工具桥,还是行为说明注入通道 2098.权限、Hook、工具执行链深挖219.18.1toolExecution.ts:真正的工具runtime主线 219.28.2输入校验:先挡低级错误 219.38.3PreToolUsehooks:最关键的拦截点 219.3.1updatedInput 219.3.2permissionBehavior 229.3.3preventContinuation 229.48.4resolveHookPermissionDecision():权限语义的关键粘合层 229.58.5工具执行后也不是结束 223109.为什么ClaudeCode这么强:从源码看它真正的护城河2210.19.1它不是一个prompt,而是一个operatingmodel 2210.29.2它把“好行为”制度化了 2310.39.3它特别懂“上下文是稀缺资源” 2310.49.4Agentspecialization是很深的设计优势 2310.59.5它的生态不是“可安装”,而是“模型可感知” 241110.关键文件索引与后续可继续深挖方向2411.110.1核心Prompt文件 2411.1.1主系统提示词 2411.1.2AgentToolPrompt 2411.1.3SkillToolPrompt 2411.1.4其他可继续挖的tool_specificprompt 2411.210.2核心Agent文件 24 2411.310.3核心Skill/Plugin/Hook/MCP文件 25 2511.3.2Plugin 2511.3.3Hook 2511.3.4Toolexecution 2511.3.5MCP 2511.410.4如果继续做下一轮,还能怎么挖 2511.510.5最终结论 2641ClaudeCode源码深度研究报告(增强完整版)基于@anthropic-ai/claude-codenpm包的cli.js.map还原源码后完成的系统性研究。本文是单文件、长篇、研究报告版,重点覆盖:整体架构、系统提示词、Agent提示词、Skills、Plugins、Hooks、MCP、权限与工具调用机制,以及新增的全量Prompt提取框架分析与Agent调度链深挖。1.研究范围与结论总览2.源码结构全景:它为什么更像AgentOperatingSystem3.系统提示词总装:prompts.ts的真实地位4.Prompt全量提取与模块级拆解5.AgentPrompt与built_inagents深挖6.Agent调度链深挖:从AgentTool到runAgent再到query7.Skills/Plugins/Hooks/MCP生态深挖8.权限、Hook、工具执行链深挖9.为什么ClaudeCode这么强:从源码看它真正的护城河10.关键文件索引与后续可继续深挖方向2.11.1这次到底研究了什么这次不是只看某一个prompt文件,也不是只做“目录级扫一眼”。这次研究的核心,是把cli.js.map中的sourcesContent还原成可读源码后,沿着以下主线做系统性拆解:.ClaudeCode的整体源码结构.主系统提示词如何动态拼装.AgentTool/SkillTool的模型侧协议.built_inagents的角色分工.Agent调度链路如何跑通.Plugin/Skill/Hook/MCP如何接入并影响运行时.Permission/Toolexecution/Hookdecision如何协同.它为什么在体验上比“普通LLM+工具调用器”强很多2.21.2关键确认事实本次已经确认:1.npm包里的cli.js.map包含完整sourcesContent2.已从map中提取出4756个源码文件3.主系统提示词核心文件为:5.src/constants/prompts.ts4.AgentToolPrompt核心文件为:.src/tools/AgentTool/prompt.ts5.SkillToolPrompt核心文件为:.src/tools/SkillTool/prompt.ts6.Agent调度核心文件至少包括:.src/tools/AgentTool/AgentTool.tsx.src/tools/AgentTool/runAgent.ts7.工具执行链核心文件至少包括:.src/services/tools/toolExecution.ts.src/services/tools/toolHooks.ts2.31.3先给最重要的总判断ClaudeCode的强,不是来自某个“神秘systemprompt”,而是来自一个完整的软件工程系.Prompt不是静态文本,而是模块化runtimeassembly.Tool不是直接裸调,而是走permission/hook/analytics/MCP_awareexecutionpipeline.Agent不是一个万能worker,而是多种built_in/fork/subagent的分工系统.Skill不是说明文档,而是prompt_nativeworkflowpackage.Plugin不是外挂,而是prompt+metadata+runtimeconstraint的扩展机制.MCP不是单纯工具桥,而是同时能注入工具与行为说明的integrationplaneClaudeCode的价值,不是一段prompt,而是一整套把prompt、tool、permission、agent、skill、plugin、hook、MCP、cache和产品体验统一起来的AgentOperatingSystem。32.源码结构全景:它为什么更像AgentOperatingSystem3.12.1顶层结构暴露出的系统复杂度从提取出来的src/顶层看,ClaudeCode至少有这些重要模块:.src/entrypoints/:入口层.src/constants/:prompt、系统常量、风险提示、输出规范.src/tools/:工具定义与具体实现.src/services/:运行时服务,例如tools、mcp、analytics6‧src/utils/:底层共用能力‧src/commands/:slashcommand与命令系统‧src/components/:TUI/UI组件‧src/coordinator/:协调器模式‧src/memdir/:记忆/memoryprompt‧src/plugins/与src/utils/plugins/:插件生态‧src/hooks/与src/utils/hooks.js:hook系统‧src/bootstrap/:状态初始化‧src/tasks/:本地任务、远程任务、异步agent任务这已经说明它不是简单CLI包装器,而是一个完整运行平台。3.22.2入口层说明它是平台,而不是单一界面‧src/entrypoints/cli.tsx‧src/entrypoints/init.ts‧src/entrypoints/mcp.ts‧src/entrypoints/sdk/也就是说它从设计上就考虑了:‧本地CLI‧初始化流程‧MCP模式‧SDK消费者这是一种平台化思维:同一个agentruntime,可以服务多个入口和多个交互表面。3.32.3命令系统是整个产品的操作面板src/commands.ts暴露出非常多系统级命令,例如:‧/mcp‧/memory‧/permissions‧/hooks‧/plugin‧/reload-plugins‧/skills‧/tasks‧/plan‧/review‧/status‧/model‧/output-style‧/agents7./sandbox-toggle这说明命令系统不是“锦上添花”,而是用户与系统运行时交互的重要控制面。更关键的是,它不仅注册builtincommands,还统一加载:.plugincommands.skillcommands.bundledskills.可用性过滤后的commands所以commandsystem本身就是生态入口。3.42.4Tools层才是模型真正“能做事”的根从prompt和工具名能确认的重要工具包括:.FileRead.FileWrite.Bash.Glob.Grep.TodoWrite.TaskCreate.AskUserQuestion.Agent.MCPTool.Sleep工具层的本质,是把模型从“回答器”变成“执行体”。ClaudeCode的强,很大程度来自这层做得正式、清晰、可治理。43.系统提示词总装:prompts.ts的真实地位4.13.1真正的主入口:src/constants/prompts.ts这份文件是整个系统最关键的源码之一。不是因为它写了一大段神奇文案,而是因为它承担了:.主系统提示词的总装配.环境信息注入.工具使用规范注入.安全与风险动作规范.Session_specificguidance注入.language/outputstyle注入8‧MCPinstructions注入‧memoryprompt注入‧scratchpad说明注入‧functionresultclearing提示注入‧brief/proactive/tokenbudget等feature‑gatedsection注入ClaudeCode的prompt不是静态字符串,而是一个systempromptassemblyarchi_tecture。4.23.2getSystemPrompt()不是文本,而是编排器getSystemPrompt()里最核心的结构,是先构造静态部分,再加上动态部分。你可以把它理4.2.1静态前缀(更适合cache)‧getSimpleIntroSection()‧getSimpleSystemSection()‧getSimpleDoingTasksSection()‧getActionsSection()‧getUsingYourToolsSection()‧getSimpleToneAndStyleSection()‧getOutputEfficiencySection()4.2.2动态后缀(按会话条件注入)‧sessionguidance‧memory‧antmodeloverride‧envinfo‧language‧outputstyle‧mcpinstructions‧scratchpad‧functionresultclearing‧summarizetoolresults‧numericlengthanchors‧tokenbudget‧brief这个设计非常值钱,因为它不是“把能想到的都写进systemprompt”,而是把prompt当作可编排运行时资源来管理。4.33.3Promptcacheboundary:基础设施级思维源码中明确存在:‧SYSTEM_PROMPT_DYNAMIC_BOUNDARY9并且注释说明:‑边界前尽量可cache‑边界后是用户/会话特定内容‑不能乱改,否则会破坏cache逻辑这点非常重要。因为这说明ClaudeCode已经不是“会写prompt”,而是在做:Promptassemblywithcacheeconomics也就是说,它连systemprompt的token成本与缓存命中都做了工程化优化。54.Prompt全量提取与模块级拆解这一节是本次新增重点:不是只说prompt在哪,而是把主prompt的主要section和行为价值拆出来。5.14.1身份与基础定位:getSimpleIntroSection()这一段做的事包括:‧定义自己是interactiveagent‧说明是帮助用户完成软件工程任务‧指出输出风格会受OutputStyle约束‧注入CYBER_RISK_INSTRUCTION‧明确禁止随意生成或猜URL这段意义不在于“介绍自己”,而在于为后续行为定基调:1.它不是普通聊天机器人2.它是工具驱动的工程协作者3.风险防护从第一屏开始就被注入5.24.2基础系统规范:getSimpleSystemSection()这段本质上在定义runtimereality:‧所有非工具输出都直接给用户看‧工具运行在permissionmode下‧用户拒绝后不能原样重试‧toolresult/usermessage里可能有<system-reminder>等标签‧外部工具结果可能包含promptinjection‧有hooks‧上下文会被自动压缩,不是硬性上下文窗口这段极其重要,因为它把模型从“语言模型幻觉世界”拉回了“受控runtime世界”。105.34.3做任务哲学:getSimpleDoingTasksSection()这部分是ClaudeCode行为稳定性的核心之一。它非常明确地约束模型:.不要加用户没要求的功能.不要过度抽象.不要瞎重构.不要乱加comments/docstrings/typeannotations.不要做不必要的errorhandling/fallback/validation.不要设计一堆future_proofabstraction.先读代码再改代码.不要轻易创建新文件.不要给时间估计.方法失败时要先诊断再换策略.注意安全漏洞.删除确认没用的东西,不搞compatibility垃圾.结果要如实汇报,不能假装测试过这块本质上不是prompt细节,而是:Anthropic对AI工程师行为规范的制度化表达很多codingagent不稳定,不是不会写代码,而是行为发散。这一段就是为了解决行为漂5.44.4风险动作规范:getActionsSection()这部分定义了什么叫“需要确认”的风险动作:.destructiveoperations.hard_to_reverseoperations.修改共享状态.对外可见动作.上传到第三方工具并且还强调:_不要用destructiveactions当捷径_发现陌生状态先调查_mergeconflict这一段值钱的点在于:它把blastradius思维编码进了系统提示词。5.54.5工具使用规范:getUsingYourToolsSection()这里面有非常清楚的工具策略:.读文件优先FileRead,不要cat/head/tail/sed.改文件优先FileEdit,不要sed/awk.新建文件优先FileWrite,不要echo重定向.搜文件优先Glob.搜内容优先Grep‧Bash只保留给真正需要shell的场景‧有任务管理工具时要用TodoWrite/TaskCreate‧没有依赖关系的工具调用要并行这非常关键,因为它不只是说“你有工具”,而是说:你要以正确的操作语法使用这些工具ClaudeCode的稳,和这套toolusagegrammar有很大关系。5.64.6Session_specificguidance:运行时可变的局部指令getSessionSpecificGuidanceSection()是个非常关键的动态section。里面会根据当前工具集和featuregate拼出一些当下约束,例如:‧如果有AskUserQuestion,被拒绝后可以问用户‧非交互模式下的行为差异‧是否启用AgentTool‧Explore/Planagents是否可用‧slashskill的使用规则‧DiscoverSkills工具的调用guidance‧Verificationagent的强制验证合同这一段说明ClaudeCode的systemprompt不是“总规则”,而是“总规则+当前会话的局部规则”。5.74.7Outputefficiency:高价值但常被忽视的section这一段在ant与外部用户上有分支,但核心目标一致:‧用户看的是自然语言,不是日志‧先说动作或结论,不要铺垫‧该更新时更新,但不要废话‧不要过度解释‧不要塞无谓表格‧短句直给这说明ClaudeCode不只管“能不能完成任务”,还管“完成任务时用户体验像不像正式产5.84.8Toneandstyle:统一交互感受‧不要乱用emoji‧响应要简洁‧引用代码位置时用file_path:line_number‧GitHubissue/PR用owner/repo#123‧toolcall前不要加冒号这类细则看起来小,但它们会显著塑造产品质感。5.94.9DEFAULT_AGENT_PROMPT:子Agent的基础人格在prompts.ts里还定义了:‧DEFAULT_AGENT_PROMPT‧你是ClaudeCode的agent‧用工具完成任务‧任务要完整,不要半成品‧完成后给简洁报告这说明主线程与子agent在prompt结构上是有分层的。65.AgentPrompt与built_inagents深挖6.15.1AgentTool/prompt.ts:Agent协议说明书这份文件非常值钱。它不是普通说明文,而是AgentTool的模型侧协议文档。‧如何展示agentlist‧每个agent的描述格式‧何时fork自己‧何时显式指定subagent_type‧fork与freshagent的区别‧什么情况下不要用AgentTool‧如何写给子agent的prompt‧foreground/background的行为差异‧isolation:worktree/remote的语义这说明多agent不是暗箱,而是明确写给模型看的使用协议。6.25.2fork语义为什么很强当fork开启时,prompt明确告诉模型:‧omitsubagent_type就是fork自己‧fork继承完整conversationcontext‧研究任务很适合fork‧实现任务如果会产生大量中间输出,也适合fork‧fork很便宜,因为共享promptcache‧不要给fork单独设model,否则cache命中会变差‧不要偷窥fork输出文件‧不要预言fork结果13这个设计本质上是在解决一个大问题:怎么让复杂子任务并行运行,但不污染主上下文这是多agent系统里非常核心、也非常难做对的一件事。6.35.3“Howtowritetheprompt”一节非常值钱Agentprompt里很明确地教育模型:.freshagent没有上下文,要像对新同事briefing一样写prompt.说明目标和原因.说明你已经排除了什么.提供足够背景,让它能做判断.如果要短答,明确说.不要把理解任务的工作外包给agent.不要写“基于你的发现再去修bug”这种偷懒prompt.应该给到filepath、line、具体改动要求这其实是在限制“懒delegation”。也是为什么ClaudeCode的subagent效果会更稳:主agent被prompt强制要求承担synthesis责任。6.45.4built_inagents:职责分工而不是万能worker从源码能确认至少有这些内建agents:.GeneralPurposeAgent.ExploreAgent.PlanAgent.VerificationAgent.ClaudeCodeGuideAgent.StatuslineSetupAgent这说明Anthropic的方向不是让一个agent什么都做,而是:.探索给Explore.规划给Plan.验证给Verification.通用任务给GeneralPurpose这是典型的specialization思路。6.55.5ExploreAgent:纯读模式的代码探索专家exploreAgent.ts的systemprompt很有代表性。它明确规定:146.5.1绝对只读‧不能创建文件‧不能修改文件‧不能删除文件‧不能移动文件‧不能写临时文件‧不能用重定向/heredoc写文件‧不能运行任何改变系统状态的命令6.5.2核心能力‧用Glob/Grep/FileRead快速探索代码库‧Bash只允许读操作:ls,gitstatus,gitlog,gitdiff,find,grep,cat,head,tail‧尽量并行用工具‧要快,尽快给结果这说明Explore不是“会搜索的普通agent”,而是被故意裁成read‑onlyspecialist。6.65.6PlanAgent:纯规划,不做编辑planAgent.ts的systemprompt也非常清晰:‧只读‧不准改文件‧需要先理解需求‧需要探索代码库、模式、架构‧需要输出step‑by‑stepimplementationplan‧最后必须列出CriticalFilesforImplementation这里最关键的是:PlanAgent被定义成architect/planner,而不是executor。这样做的价值是降低角色混杂。6.75.7VerificationAgent:为什么它非常值钱verificationAgent.ts是本轮挖掘里非常重要的新增部分。它的prompt非常强,核心方向不是“确认实现看起来没问题”,而是:你的工作是trytobreakit它甚至在prompt开头就点出两类失败模式:1.verificationavoidance:只看代码、不跑检查、写PASS就走2.被前80%迷惑:UI看起来还行、测试也过了,就忽略最后20%的问题然后prompt强制要求:‧build15.linter/type_check.根据变更类型做专项验证.frontend要跑浏览器自动化/页面子资源验证.backend要curl/fetch实测响应.CLI要看stdout/stderr/exitcode.migration要测up/down和已有数据.refactor也要测publicAPIsurface.必须做adversarialprobes.每个check必须带command和outputobserved.最后必须输出VERDICT:PASS/FAIL/PARTIAL这说明VerificationAgent不是“再跑一次测试”,而是一个adversarialvalidator。这非常强,因为它把很多LLM常见的“差不多就算了”直接用prompt反制掉了。76.Agent调度链深挖:从AgentTool到runAgent再到query这是本次新增的第二个重点:Agent调度链深挖。7.16.1总体调用链长什么样从AgentTool.tsx与runAgent.ts看,主链路可以抽象为:1.主模型决定调用Agent工具2.AgentTool.call()解析输入3.解析是否teammate/fork/built_in/background/worktree/remote4.选择agentdefinition5.构造promptmessages6.构造/继承systemprompt7.组装工具池8.创建agent_specificToolUseContext9.注册hooks/skills/MCPservers11.runAgent()内部再调用query()12.query产出消息流13.runAgent记录transcript、处理lifecycle、清理资源14.AgentTool汇总结果或走异步任务通知这已经是一条非常完整的subagentruntimepipeline。7.26.2AgentTool.call():真正的调度总控AgentTool.call()的职责远比“转发到子agent”复杂。它要处理:.解析输入参数:description、prompt、subagent_type、model、run_in_background、name、team_name、mode、isolation、cwd16.判断是否multi_agentteammatespawn.解析teamcontext.判断是否允许background.区分forkpath与normalpath.根据permissionrules过滤agent.检查MCPrequirements.计算selectedAgent.处理remoteisolation.构造systemprompt/promptmessages.注册foreground/asyncagenttask.启动worktreeisolation.调用runAgent()也就是说,AgentTool本质上是agentorchestrationcontroller。7.36.3forkpathvsnormalpath源码里有非常明显的分叉:7.3.1forkpath.subagent_type省略且forkfeature开启.继承主线程systemprompt.用buildForkedMessages()构造promptmessages.用父线程完整context.工具集尽量与父线程一致,保证promptcache命中.useExactTools=true7.3.2normalpath.明确指定built_in/customagenttype.基于agentDefinition生成新的agentsystemprompt.只给该agent所需上下文.走该agent的toolrestrictions这里最值钱的地方是:fork不是“再开一个普通agent”,而是为了cache和context继承专门优化过的执行路径。7.46.4为什么fork会强调cache_identicalprefix在注释里可以看出,forkpath会尽量继承父线程的systemprompt和tooldefs,以保持APIrequestprefixbyte_identical,从而提高promptcache命中。这是非常高级的设计:.普通人只想“子任务能跑”.ClaudeCode想的是“子任务能跑,而且尽量复用主线程cache,不白烧token”这就是产品级系统思维。177.56.5backgroundagent与foregroundagent是两套生命周期AgentTool.call()会根据条件决定:.foregroundsyncpath.asyncbackgroundpath.remotelaunchedpath.teammatespawnedpath7.5.1backgroundpath特点.注册asyncagenttask.独立abortcontroller.可以在后台运行.完成后通过notification回到主线程.可选自动summarization.可查看outputFile但prompt里明确不鼓励偷看7.5.2foregroundpath特点.主线程等待结果.可以在执行中被background化.有foregroundtask注册与progresstracking这说明ClaudeCode对agentlifecycle的处理是产品化的,而不是“一次函数调用”。7.66.6runAgent():真正的子Agentruntime.初始化agent_specificMCPservers.过滤/克隆contextmessages.获取system/usercontext.对read_onlyagent做claudeMd/gitStatusslimming.构造agent_specificpermissionmode.组装resolvedtools.获取agentsystemprompt.创建abortController.执行SubagentStarthooks.注册frontmatterhooks.预加载frontmatterskills.合并agentMCPtools.构造subagentToolUseContext.调用query()进入主循环.记录transcript.清理MCP、hooks、perfetto、todo、bashtasks等资源这说明runAgent不是简单wrapper,而是子agent的完整runtimeconstructor。187.76.7agent_specificMCPservers:真正的additive能力注入initializeAgentMcpServers()很有意思。它支持agentDefinition自带mcpServers,并且可以:‧从现有配置按名字引用服务器‧在frontmatter里内联定义agent‑specificMCPserver‧连接server‧拉取tools‧把agent‑specificMCPtools合并进当前agent的tools‧在agent结束时做cleanup这说明agent不只是消费全局MCP,它还可以带自己的外接能力。这对插件agent/专职agent很强。7.86.8frontmatterhooks与frontmatterskills‧registerFrontmatterHooks(...)‧读取agentDefinition.skills‧通过getSkillToolCommands()加载技能‧把skillprompt内容预加载成metausermessages注入初始消息这很关键:说明agent本身也是可配置的promptcontainer,而不是固定硬编码角色。7.96.9query()才是最终主循环执行器虽然这次没有把query.ts全文展开,但从runAgent()能明确看到:‧真正的模型对话循环发生在query({...})‧runAgent()只是子agent的上下文准备与生命周期控制器这就让整个分层很清楚:‧AgentTool:调度与模式分流‧runAgent:子agent上下文构造与生命周期管理‧query:真正的模型消息流与tool‑calling主循环7.106.10transcript/metadata/cleanup:产品化runtime的证据runAgent()里非常多产品级细节:‧recordSidechainTranscript()‧writeAgentMetadata()‧registerPerfettoAgent()‧cleanupAgentTracking()‧killShellTasksForAgent()‧清理sessionhooks19.清理clonedfilestate.清理todosentry这说明Anthropic并不是只让subagent“跑起来”,而是把transcript、telemetry、cleanup、resume都纳入正式生命周期。87.Skills/Plugins/Hooks/MCP生态深挖8.17.1Skill:不是文档,而是workflowpackage源码里:_SKILL_TOOL_NAME='Skill'在SkillTool/prompt.ts以及命令系统相关代码中,它明确要求:.slashcommand可以视为skill入口.如果skill已经通过tag注入,则不要重复调用可以把它理解成:.markdownpromptbundle.带frontmattermetadata.可声明allowed_tools.可按需注入当前上下文.可把重复工作流压缩成可复用能力包这比“在systemprompt里塞一堆固定流程”高级很多。8.27.2Plugin:Prompt+Metadata+RuntimeConstraints关键文件:_src/utils/plugins/loadPluginCommands.ts插件能提供的能力至少包括:.markdowncommands.commandsMetadata.userConfig.shellfrontmatter.allowed_tools.model/efforthints.user_invocable.disable_model_invocation20‧runtime变量替换例如支持:‑${CLAUDE_PLUGIN_ROOT}‑${CLAUDE_PLUGIN_DATA}‑${CLAUDE_SKILL_DIR}‑${CLAUDE_SESSION_ID}‑${user_config.X}所以plugin不是普通CLI插件,而是模型行为层面的扩展单元。8.37.3Hook:运行时治理层关键文件:‑src/services/tools/toolHooks.tsHook支持:‑PreToolUse‑PostToolUse‑PostToolUseFailure而且hook结果不仅仅能“记日志”,还能:‧返回message‧blockingError‧updatedInput‧permissionBehavior‧preventContinuation‧stopReason‧additionalContexts‧updatedMCPToolOutput这意味着Hook是runtimepolicylayer。8.47.4Hook与权限的耦合方式非常成熟resolveHookPermissionDecision()说明:‧hook可以给出allow/ask/deny‧但hook的allow也不自动突破settingsdeny/askrules‧如果需要userinteraction或requireCanUseTool,仍然要走统一permissionflow‧hook还能通过updatedInput满足交互输入这说明Hook强,但没有绕开核心安全模型。8.57.5MCP:不只是工具桥,还是行为说明注入通道从prompts.ts可以明确看到:‧getMcpInstructionsSection()‧getMcpInstructions(mcpClients)逻辑是:‑如果connectedMCPserver提供instructions‑就把这些instructions拼进systemprompt也就是说MCP能同时注入:1.新工具2.如何使用这些工具的说明这让MCP的价值远高于简单toolregistry。2198.权限、Hook、工具执行链深挖9.18.1toolExecution.ts:真正的工具runtime主线ClaudeCode的工具执行并不是“模型决定→直接跑函数”。实际链路大致是:1.找tool2.解析MCPmetadata3.做inputschema校验4.做validateInput5.为Bash启动speculativeclassifiercheck6.运行PreToolUsehooks7.解析hookpermissionresult8.走permission决策9.再次根据permissionupdatedInput修正输入10.真正执行tool.call()11.记录analytics/tracing/OTel12.运行PostToolUsehooks13.处理structuredoutput/tool_resultblock14.失败则走PostToolUseFailurehooks这是一条标准的runtimepipeline,而不是直连函数调用。9.28.2输入校验:先挡低级错误工具执行前会先做:‧Zodschemaparse‧tool‑specificvalidateInput如果失败:‑直接生成tool_result错误消息‑记录tengu_tool_use_error这保证模型随便乱生成参数时不会直接污染执行层。9.38.3PreToolUsehooks:最关键的拦截点在runPreToolUseHooks()中,hook可以产出:‧普通message‧hookPermissionResult‧hookUpdatedInput‧preventContinuation‧stopReason‧additionalContext‧stop最关键的几个能力是:9.3.1updatedInputhook可以改写输入,但不一定做权限决策。229.3.2permissionBehaviorhook可以直接说:一allowaskdeny9.3.3preventContinuation即使没deny,也能阻止流程继续。这使得Hook能真正参与控制流。9.48.4resolveHookPermissionDecision():权限语义的关键粘合层这段逻辑非常值钱。它定义了:.hookallow不一定绕过settings规则.如果tool要求userinteraction,而hook没提供updatedInput,则仍要走canUseTool.ask类型hook会作为forceDecision传递下去.deny类型直接生效也就是说,Hook的权限语义是被严格嵌进总权限模型里的,不是外挂旁路。9.58.5工具执行后也不是结束runPostToolUseHooks()与runPostToolUseFailureHooks()说明,ClaudeCode不把“tool成功返回”当终点。成功后hook还能:一追加message一注入MCPtooloutput进行更新这就是为什么整个系统比“toolcall一把梭”可治理得多。109.为什么ClaudeCode这么强:从源码看它真正的护城河10.19.1它不是一个prompt,而是一个operatingmodel很多人复刻codingagent时只会拿走:.一个systemprompt.一个文件编辑工具.一个bash工具.一个CLI壳但ClaudeCode真实的护城河是:.Promptarchitecture.Toolruntimegovernance.Permissionmodel.Hookpolicylayer.Agentspecialization23‧Skillworkflowpackaging‧Pluginintegration‧MCPinstructioninjection‧Promptcacheoptimization‧Async/background/remotelifecycle‧Transcript/telemetry/cleanup/tasksystem少一个都行,但会显著掉“手感”。10.29.2它把“好行为”制度化了ClaudeCode最大的优势之一,不是模型更聪明,而是:它不把“好习惯”交给模型即兴发挥,而是写进prompt和runtime规则里。例如:‑不要乱加功能‑不要过度抽象‑不要瞎重试被拒绝的工具‑不要未验证就说成功‑不要随便做风险操作‑不要让fork输出污染主上下文‑匹配skill时必须执行skill‑verification不能只看代码,必须跑命令这种制度化,会极大提高系统一致性。10.39.3它特别懂“上下文是稀缺资源”源码中大量设计都在围绕上下文做优化:‧systemprompt动静边界‧promptcacheboundary‧forkpath共享cache‧skill按需注入‧MCPinstructions按连接状态注入‧functionresultclearing‧summarizetoolresults‧compact/transcript/resume这说明他们不是把token当免费空气,而是当runtime预算来管理。10.49.4Agentspecialization是很深的设计优势Explore/Plan/Verification这套built‑inagents的价值,不在于“多了三个agent”,而在‧研究和探索不用污染主线程‧规划和实现分离,降低混乱‧验证独立出来,对抗“实现者bias”很多系统的问题,就是一个agent既研究、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南红河州开远市中医医院招聘4人笔试备考题库及答案详解
- 2026广东深圳市儿童医院儿童保健与心理健康中心招4人考试备考题库及答案详解
- 2026重庆渝中区上清寺街道社区卫生服务中心招聘口腔科工作人员4人笔试备考试题及答案详解
- 2026浙江省宁波农商发展集团第一批统筹招聘13人笔试参考题库及答案详解
- 2026湖南科技学院公开招聘专任教师16人笔试备考题库及答案详解
- 国网江西省电力有限公司2026年高校毕业生招聘(第三批)【314人】笔试备考题库及答案详解
- 2026贵州经贸职业技术学院引进高层次、高技能人才11人笔试参考试题及答案详解
- 2026北京印刷学院招聘工作人员6人笔试备考试题及答案详解
- 2026浙江温州市康居物业管理有限公司所属温州市强城城市服务管理有限公司招聘劳务派遣人员28人笔试参考试题及答案详解
- 2026西北工业大学陕西省冲击动力学及工程应用重点实验室非事业编科研助理招聘1人笔试备考试题及答案详解
- YS/T 433-2016银精矿
- GB/T 6074-2006板式链、连接环和槽轮尺寸、测量力和抗拉强度
- GB 29415-2013耐火电缆槽盒
- 2022年天津市河西区中考数学一模试题及答案解析
- GA/T 1444-2017法庭科学笔迹检验样本提取规范
- 2022年大理白族自治州大理财政局系统事业单位招聘笔试试题及答案解析
- 诺和龙诺和龙在糖尿病心脑血管方面的作用专家讲座
- 阿片类药物中毒的急救处理课件
- 种业现状及发展思考课件
- 某大型化工集团公司导入WCM世界级制造策划资料课件
- DBJ∕T13-354-2021 既有房屋结构安全隐患排查技术标准
评论
0/150
提交评论