Appearance
功能规格说明:打印模式
创建日期:2026-06-09
用户场景与测试 (必填)
用户故事:干净的仅响应输出(优先级:P0)
作为运行 wave -p 'message' 的用户,我希望只看到主 agent 的响应文本,以便输出适合管道传递给其他命令和脚本。
为什么是这个优先级:这是打印模式的基本目的——机器可读的干净输出。没有它,-p 无法用于脚本。
独立测试:运行 wave -p 'hi' 并验证只有助手的响应文本被打印到 stdout,没有子 agent 提示、文件列表或内部管理输出。
验收场景:
- 假设通过
wave -p 'hi'的打印模式,当 agent 响应时,则只有主 agent 的内容被写入 stdout。 - 假设打印模式,当主响应后自动记忆提取子 agent 运行时,则没有子 agent 输出(系统提示、文件清单、推理或内容)出现在 stdout 上。
- 假设打印模式,当 agent 使用 Agent 工具时,则不打印子 agent 的用户消息或助手流式输出——只有主 agent 的工具块指示器和最终响应。
用户故事:流式进度指示器(优先级:P2)
作为在终端中运行 wave -p 的用户,我希望看到轻量级的进度指示器(推理、工具调用),以便我知道 agent 正在工作,即使子 agent 内部被抑制。
为什么是这个优先级:增强用户体验,但不是核心功能所必需的。
独立测试:运行 wave -p 'do something complex' 并验证推理标题、工具块名称和主 agent 的响应内容被显示。
验收场景:
- 假设打印模式带有复杂提示,当主 agent 在响应前推理时,则打印
💭 Reasoning:标题后跟推理文本。 - 假设打印模式,当主 agent 调用工具时,则打印
🔧 <tool_name> <compactParams>行。 - 假设打印模式,当错误块被添加时,则打印
❌ Error: <message>行。
用户故事:与 Claude Code 行为兼容(优先级:P1)
作为从 Claude Code 迁移的用户,我希望 wave -p 的行为与 claude -p 一致,以便现有脚本和期望无需更改即可工作。
为什么是这个优先级:与参考实现的一致性确保平滑的迁移路径。
独立测试:比较 claude -p 'hi' 和 wave -p 'hi' 的输出——两者都应该只显示主 agent 的响应文本。
验收场景:
- 假设
claude -p和wave -p两者,当使用相同提示时,则两者都不打印子 agent 内部输出(用户消息、系统提示、文件清单)。 - 假设两个工具,当分叉/后台 agent(如记忆提取)运行时,则其输出完全静默——永远不会发送到 stdout。
- 假设两个工具,当常规 Agent 工具子 agent 运行时,则子 agent 的结果作为 tool_result 返回给主 agent 并纳入主 agent 的最终响应,不单独打印。
用户故事:等待后台工作及主 agent 收尾完成后再退出(优先级:P0)
作为在打印模式下由主 agent 启动后台子 agent 的用户,我希望 wave -p 等待所有后台子 agent 完成、并且主 agent 处理完所有完成通知(产出最终响应)之后才退出,以便最终结果不会丢失。
为什么是这个优先级:后台子 agent 的结果必须通过主 agent 的收尾 turn 纳入最终响应;过早退出会销毁主 agent 进行中的 turn 并丢失结果,等同于功能不可用。
独立测试:运行 wave -p 让主 agent 以后台方式启动多个子 agent,验证所有子 agent 完成、主 agent 输出包含各子 agent 结果的最终响应后进程才退出。
验收场景:
- 假设打印模式下主 agent 启动多个后台子 agent 并结束当前 turn,当所有子 agent 陆续完成时,则主 agent 处理完全部完成通知并输出最终响应后进程才退出。
- 假设最后一个后台任务状态已变为完成、但主 agent 仍在处理通知的 turn 中(isLoading),当退出等待循环检查时,则不得退出也不得 destroy agent。
- 假设消息队列中仍有待处理的通知(主 agent 空闲但通知未消费),当退出等待循环检查时,则不得退出。
- 假设打印模式下启动单个后台子 agent,当子 agent 完成时,则主 agent 的收尾 turn 完整输出后才退出,不被 500ms 轮询窗口截断。
边界情况
- 主 agent 的响应为空怎么办? 仅打印一个换行符。
- 子 agent 出错怎么办? 错误作为 tool_result 传播到主 agent;主 agent 决定如何在其响应中报告。不直接打印子 agent 错误。
- 并发子 agent 怎么办? 无论并发如何,所有子 agent 输出都被抑制。
- 如果自动记忆提取在打印模式等待后台工作时运行怎么办?
hasRunningBackgroundWork循环等待它,但不打印提取输出。 - 多个后台子 agent 错峰完成怎么办? 等待条件必须覆盖主 agent 处理通知的收尾 turn 与队列中未消费的通知,最后一个子 agent 完成不得触发提前退出。