工具执行层

模块存在意义

工具层定义了模型到底“能做什么”。没有这层,模型只能产出文本;有了这层,模型才拥有读文件、改文件、搜索、调用外部服务、启动子代理等真实执行能力。

关键文件与入口

文件/目录作用
src/Tool.ts工具协议、类型定义、权限上下文等基础抽象。
src/tools.ts工具注册中心,汇总所有可用工具和 feature gate。
src/tools/各工具实现目录,例如 BashToolFileReadToolAgentTool
src/utils/permissions/权限模式、规则解析、危险操作判断与自动模式控制。

对上游 / 下游的依赖关系

  • 上游:QueryEngine 发出的工具调用请求。
  • 下游:文件系统、shell、网络、MCP、插件、任务系统。

运行时扮演的角色

  • 暴露统一的工具抽象给模型层使用。
  • 根据当前环境、feature flag 和权限模式决定哪些工具真正可用。
  • 对危险操作做拦截、解释和授权流程处理。

新读者建议的阅读顺序

  1. src/Tool.ts
  2. src/tools.ts
  3. src/tools/BashTool/src/tools/FileReadTool/src/tools/AgentTool/
  4. src/utils/permissions/

这层的设计价值

  • 用统一协议约束不同能力,方便扩展新工具。
  • 把权限控制收敛到统一入口,避免安全逻辑散落。
  • 把“模型能力”与“具体实现”隔离,便于按环境裁剪。