Appearance
功能规格说明:工具选择
创建日期:2026-02-25
用户场景与测试 (必填)
用户故事:选择特定工具(优先级:P1)
作为用户,我希望将 agent 可用的工具限制为特定集合(例如仅"Read"和"Edit"),以便控制 agent 在给定会话中可以执行的操作。
为什么是这个优先级:这是请求的核心功能。它允许用户出于安全或专注目的限制 agent 的能力。
独立测试:可以通过使用 --tools "Read,Edit" 启动 CLI 并验证 agent 仅尝试使用这些工具来进行测试。
验收场景:
- 假设 CLI 使用
--tools "Read,Edit"启动,当 agent 被要求执行任务时,则它应该只能访问"Read"和"Edit"工具。 - 假设 CLI 使用
--tools "Bash"启动,当 agent 被要求读取文件时,则它应该失败或报告工具不可用。
用户故事:禁用所有工具(优先级:P2)
作为用户,我希望通过向 --tools 参数提供空字符串来禁用所有工具,确保 agent 只能通过文本进行通信。
为什么是这个优先级:提供"安全模式"或"仅聊天"模式,这是受限环境中的常见需求。
独立测试:使用 --tools "" 运行 CLI 并验证没有工具被注册或对 agent 可用。
验收场景:
- 假设 CLI 使用
--tools ""启动,当 agent 初始化时,则提供给底层 SDK 的工具列表应为空。
用户故事:使用默认工具(优先级:P3)
作为用户,我希望使用"default"关键字显式请求默认工具集,或者完全省略该标志。
为什么是这个优先级:确保向后兼容并提供显式方式来重置为标准行为。
独立测试:使用 --tools "default" 运行 CLI 并验证其行为与不使用该标志运行完全相同。
验收场景:
- 假设 CLI 使用
--tools "default"启动,当 agent 初始化时,则它应该可以访问完整的标准工具套件(Bash、Edit、Read、Glob、Grep 等)。
用户故事:打印模式工具选择(优先级:P2)
作为用户,我希望将 --tools 标志与 --print(或 -p)选项一起使用,以便控制在打印模式下生成输出时可用的工具。
为什么是这个优先级:确保在所有使用 agent 的 CLI 模式中保持一致。
独立测试:运行 wave --print --tools "Read" "some prompt" 并验证 agent 仅使用"Read"工具。
验收场景:
- 假设 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 工具排除出池不是本标志的职责——那是权限拒绝规则的语义(池与扁平声明走同一条拒绝过滤)。