工具执行层
模块存在意义
工具层定义了模型到底“能做什么”。没有这层,模型只能产出文本;有了这层,模型才拥有读文件、改文件、搜索、调用外部服务、启动子代理等真实执行能力。关键文件与入口
| 文件/目录 | 作用 |
|---|---|
src/Tool.ts | 工具协议、类型定义、权限上下文等基础抽象。 |
src/tools.ts | 工具注册中心,汇总所有可用工具和 feature gate。 |
src/tools/ | 各工具实现目录,例如 BashTool、FileReadTool、AgentTool。 |
src/utils/permissions/ | 权限模式、规则解析、危险操作判断与自动模式控制。 |
对上游 / 下游的依赖关系
- 上游:QueryEngine 发出的工具调用请求。
- 下游:文件系统、shell、网络、MCP、插件、任务系统。
运行时扮演的角色
- 暴露统一的工具抽象给模型层使用。
- 根据当前环境、feature flag 和权限模式决定哪些工具真正可用。
- 对危险操作做拦截、解释和授权流程处理。
新读者建议的阅读顺序
src/Tool.tssrc/tools.tssrc/tools/BashTool/、src/tools/FileReadTool/、src/tools/AgentTool/src/utils/permissions/
这层的设计价值
- 用统一协议约束不同能力,方便扩展新工具。
- 把权限控制收敛到统一入口,避免安全逻辑散落。
- 把“模型能力”与“具体实现”隔离,便于按环境裁剪。