第 4 章:工具系统
工具系统是 Claude Code 能力的载体:60+ 内置工具,加上 MCP 接进来的外部世界。
Claude Code 的所有能力——文件读写、Shell 命令、代码搜索、子 Agent 派生、MCP 外部服务调用——都通过统一的工具系统暴露给模型。模型不直接操作文件系统或网络,而是通过调用工具来完成一切副作用操作。工具系统是连接"模型智能"与"真实世界"的唯一桥梁。
这套系统的核心架构分为三层:
- 设计层:
src/Tool.ts的Tool泛型接口——定义每个工具必须实现的契约:执行逻辑、输入 Schema、只读/破坏性/并发安全三类安全语义标记、权限检查、UI 渲染 - 组装层:
src/tools.ts里getAllBaseTools()、getTools()、assembleToolPool()三级接力——从编译时裁剪到运行时过滤,最终将内置工具和 MCP 工具合并为统一的工具池 - 执行层:
src/services/tools/的StreamingToolExecutor——在模型流式输出的同时并发执行工具,处理权限检查、Hook 回调和结果格式化
这种设计带来两个关键优势:新增工具只需实现 Tool 接口,无需修改执行流水线或权限系统;安全语义(isReadOnly、isDestructive)编码为接口方法而非外部配置,确保安全属性与工具实现始终同步。
本章路线图:4.1-4.2 介绍接口定义与组装流水线;4.3 列出内置工具全景;4.4-4.5 讲解执行生命周期与并发控制;4.6-4.7 深入分析最复杂的两个工具(BashTool 和 AgentTool);4.8-4.10 覆盖大结果处理、MCP 集成和延迟加载;4.11-4.12 总结设计洞察与 UI 渲染模式。