Skip to content

功能规格说明:工具选择 ​

创建日期:2026-02-25

用户场景与测试 (必填) ​

用户故事:选择特定工具(优先级:P1) ​

作为用户,我希望将 agent 可用的工具限制为特定集合(例如仅"Read"和"Edit"),以便控制 agent 在给定会话中可以执行的操作。

为什么是这个优先级:这是请求的核心功能。它允许用户出于安全或专注目的限制 agent 的能力。

独立测试:可以通过使用 --tools "Read,Edit" 启动 CLI 并验证 agent 仅尝试使用这些工具来进行测试。

验收场景:

  1. 假设 CLI 使用 --tools "Read,Edit" 启动,当 agent 被要求执行任务时,则它应该只能访问"Read"和"Edit"工具。
  2. 假设 CLI 使用 --tools "Bash" 启动,当 agent 被要求读取文件时,则它应该失败或报告工具不可用。

用户故事:禁用所有工具(优先级:P2) ​

作为用户,我希望通过向 --tools 参数提供空字符串来禁用所有工具,确保 agent 只能通过文本进行通信。

为什么是这个优先级:提供"安全模式"或"仅聊天"模式,这是受限环境中的常见需求。

独立测试:使用 --tools "" 运行 CLI 并验证没有工具被注册或对 agent 可用。

验收场景:

  1. 假设 CLI 使用 --tools "" 启动,当 agent 初始化时,则提供给底层 SDK 的工具列表应为空。

用户故事:使用默认工具(优先级:P3) ​

作为用户,我希望使用"default"关键字显式请求默认工具集,或者完全省略该标志。

为什么是这个优先级:确保向后兼容并提供显式方式来重置为标准行为。

独立测试:使用 --tools "default" 运行 CLI 并验证其行为与不使用该标志运行完全相同。

验收场景:

  1. 假设 CLI 使用 --tools "default" 启动,当 agent 初始化时,则它应该可以访问完整的标准工具套件(Bash、Edit、Read、Glob、Grep 等)。

用户故事:打印模式工具选择(优先级:P2) ​

作为用户,我希望将 --tools 标志与 --print(或 -p)选项一起使用,以便控制在打印模式下生成输出时可用的工具。

为什么是这个优先级:确保在所有使用 agent 的 CLI 模式中保持一致。

独立测试:运行 wave --print --tools "Read" "some prompt" 并验证 agent 仅使用"Read"工具。

验收场景:

  1. 假设 CLI 使用 --print --tools "Read" 运行,当 agent 处理提示时,则它应该只能访问"Read"工具。

边界情况 ​

  • 无效工具名称:当用户提供不存在的工具名称(例如 --tools "MagicWand")时会发生什么?
    • 假设:系统应该警告用户并忽略无效工具或快速失败。
  • 大小写敏感性:工具名称是否区分大小写(例如"bash"vs"Bash")?
    • 假设:为方便用户,工具名称应不区分大小写,但映射到正确的内部名称。
  • 冗余输入:--tools "Read,Read,Edit" 会怎样?
    • 假设:重复项应被去重。
  • 与 Exec 的关系:Exec 是一个普通内置工具名,因此只有在 --tools 中显式列出它时才会注册;未列出时不注册,MCP 工具照常扁平声明(见 docs/specs/core/exec-tool.md)。把某个 MCP 工具排除出池不是本标志的职责——那是权限拒绝规则的语义(池与扁平声明走同一条拒绝过滤)。