第 3 章研究笔记
关键源码
restored-src/src/Tool.ts:Tool 接口、ToolUseContext、ToolResult。restored-src/src/tools.ts:内置工具注册、功能开关、权限过滤、MCP 工具合并。restored-src/src/services/tools/toolOrchestration.ts:工具串并行调度。restored-src/src/services/tools/toolExecution.ts:单个工具执行主链路。restored-src/src/tools/BashTool/BashTool.tsx:Bash 工具案例。restored-src/src/tools/FileReadTool/FileReadTool.ts:读文件工具案例。restored-src/src/tools/FileEditTool/FileEditTool.ts:编辑工具案例。
调用链摘要
text
Tool 定义
-> getAllBaseTools()
-> getTools(permissionContext)
-> assembleToolPool()
-> 模型收到 tool schema
-> 模型输出 tool_use
-> runTools()
-> runToolUse()
-> schema parse / validateInput
-> PreToolUse Hook
-> permission
-> tool.call()
-> mapToolResultToToolResultBlockParam()
-> createUserMessage(tool_result)1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
架构提炼
值得学习:
- Tool 接口把 schema、权限、执行和结果映射集中定义。
- 工具注册和工具执行分离。
isConcurrencySafe()用来决定并发。- UI 展示结果和模型可见结果分离。
- FileEdit 写前检查文件是否被外部修改。
谨慎照搬:
- Claude Code 的
Tool接口非常大,承担 UI、搜索索引、MCP、遥测等职责。 toolExecution.ts职责很多,不适合直接作为新项目模板。- 初期不必支持复杂的工具 defer loading、ToolSearch 和全部 MCP 特例。