语音控制 AI Agent 真正执行前,需要一份“动作回执”
面向创始人的语音 Agent 上线闸门:用结构化确认、动作回执、风险分级、失败测试与回滚规则,避免一句话触发错误操作。
这个星期,语音不再只是另一种输入提示词的方法。
7 月 23 日,Anthropic 把 Claude Voice 从追求速度的 Haiku 扩展到 Opus 和 Sonnet,同时接入用户已经连接的工具,并支持更多语言。同一天,OpenAI 展示了桌面端语音如何指挥 ChatGPT Work 与 Codex 中的多个 Agent。用户可以先用语音讨论方案,然后留在同一段对话里,让软件移动会议、起草回复、修改工作内容,或协调其他 Agent。
这种体验确实有价值,但产品问题也随之改变。过去,语音主要负责回答问题,转写错误通常只会带来一个错误答案。现在语音能够调用工具,同样的错误可能找错人、改错记录、排错时间,甚至把用户还在讨论的方案当成已经批准的操作。
对 AI 应用构建者、非技术创始人和小型产品团队来说,上线前真正要问的不是“声音够不够自然”,而是:用户能否看清系统理解了什么、批准一个精确动作、知道哪个 Agent 真正执行、验证最终结果,并在语音识别或推理出错后撤回操作?
本文把这次热点发布转化为一套可复用的上线闸门。你会拿到动作回执模板、风险矩阵、一个具体的创始人场景、五项失败测试、可量化验收标准、停止条件,以及 48 小时实施清单。本文不是对 Claude 或 ChatGPT 新桌面功能的实测评测,也不会声称它们已经实现本文建议的全部控制。
7 月 23 日到底变了什么,演示又没有证明什么
Anthropic 的官方发布确认,Claude Voice 现在可以使用 Opus、Sonnet 和 Haiku。用户能够在对话过程中切换模型,也能在文字与语音之间切换而不必重新开始,还可以调用 Gmail、Slack 等已连接工具。
官方给出的例子非常具体:把 Google Calendar 里的会议延后,把一段客户提案讨论整理成 Canva 单页,汇总当天邮件并起草重要回复。Anthropic 表示,Claude 在使用连接工具前会请求用户许可。免费方案可使用 Haiku、一个连接工具和新增语言;付费方案可以使用更多模型与全部已连接工具。
OpenAI 在 7 月 23 日的官方产品帖子中展示了相似但不同的方向:桌面端 GPT-Live 语音可以控制电脑,并指挥 ChatGPT Work 或 Codex 中运行的多个 Agent。这项变化建立在 7 月 8 日发布的 GPT-Live 之上。GPT-Live 支持全双工对话,还能把搜索、推理和长时程任务委派给后台的前沿模型。
这些内容可以证明厂商公开的产品范围,却不能证明日历修改、外发消息、文件编辑、多 Agent 定位和回滚在真实环境中的错误率。OpenAI 公布了 GPT-Live 的内部对话与任务评测,Anthropic 描述了能力与开放范围;但两家厂商的 7 月 23 日发布都没有提供本文五类失败场景的独立测试。
这里必须拆开两个概念。自然轮流说话,是交互体验的进步;正确且获得授权地改变业务状态,是交易可靠性的进步。语音 Agent 两者都需要,但前者不能代替后者的证据。
六个术语,先把危险的语音设计说清楚
转写文本(transcript),是系统对用户语音的文字理解。它能证明系统“听到了什么”,却不能证明用户“想表达什么”。Claude 的语音帮助文档说明,语音对话的文字转写会像普通聊天一样保存在历史记录中;在嘈杂环境下,官方建议使用按住说话模式。可见转写很有用,但一条错误转写同样可能语法完整、读起来十分自然。 待执行动作(proposed action),是已经结构化、但尚未执行的变更,其中应包含工具、目标、参数、预期效果和风险。“帮我处理一下日程”只是意图;“把事件launch-review-184 从周五日本时间 15:00 移到周一 15:00,并通知 8 名参会者”才是动作提案。
批准(approval),是用户对这一项精确动作的授权。它不应只是脱离目标和参数的一句模糊“可以”。只要参数、执行者、政策或上下文发生了实质变化,原批准就应该失效。
执行(execution),是工具或 Agent 真正尝试改变状态。批准不等于执行成功;工具返回 success,也不一定能证明业务世界中已经出现了用户想要的结果。
动作回执(action receipt),是把用户意图、系统理解、批准、执行、验证和恢复串起来的可见记录。它要回答:用户要求了什么,系统理解了什么,实际改变了什么,哪个 Agent 或工具执行了操作,什么证据确认结果,以及如何撤销。
纠正窗口(correction window),是用户无需发起客服事件,就能停止、修改或撤销动作的时间。窗口可以出现在执行前、执行后,或两个阶段都有;长度应随风险而变化,而不是给所有动作套一个统一倒计时。
这些术语把“聊天”与“交易”分开。语音 Agent 是否能安全上线,关键就在这一步。
为什么语音改变了授权问题
文字界面允许用户放慢速度、重读请求、比较 diff、复制标识符,并注意到收件人或数字不对。语音追求的却是连续流动。用户可能正在走路、开车、看另一块屏幕,或身处嘈杂办公室。流畅自然的回答很容易在用户检查实际变更之前,就建立过度信心。
全双工系统让边界更加复杂。OpenAI 的 GPT-Live 系统卡说明,模型会持续判断自己应该倾听、回答、暂停、打断还是委派。这种能力能改善自然对话,但“一条指令什么时候算结束”也就不再像提交网页表单那样清楚。用户可能说:“把评审改到周一——不,等一下”,而 Agent 已经开始规划或把任务交给后台。
技术实现里还有一个容易忽略的时序问题。OpenAI 的 Voice Agents SDK 指南特别提醒,工具调用时拿到的对话历史只是当时的快照,用户刚刚说完的最后一句话甚至可能尚未完成转写。同一份指南也提供了 tool_approval_requested 事件,让工具在用户批准或拒绝前暂停。
对产品负责人来说,重要的不是方法名,而是:实时语音、转写完成、规划、批准和工具执行是五只不同的时钟。
多 Agent 语音又增加了一只时钟和一层身份。正在说话的 Agent 可能把工作交给后台推理模型、日历 Agent、编码 Agent 或浏览器操作 Agent。如果产品不能告诉用户“它”究竟指向哪一个待执行动作,那么一句“就做那个”并不安全。批准必须绑定到一个执行者、一个目标、一组标准化参数,以及计划的一个明确版本。
因此,语音需要的不是一个麦克风图标加通用确认弹窗,而是一套能承受打断、委派与纠正的交易语义。
一个具体场景:启动评审改对了时间,却改错了工作
设想一位创始人刚结束客户会议。她打开语音助理,说:
“把周五的启动评审改到周一三点,告诉产品团队,再让 Maya 在那之前更新 onboarding 文案。”
公司日历里有两个同名的“Launch review”:一个是日本时间 15:00 的核心产品会议,另一个是太平洋时间 15:00 的合作伙伴发布评审。团队中有两个 Maya,一个是正式员工,另一个是外部承包商。路上噪声遮住了“产品”两个字,转写结果变成了“项目团队”。多 Agent 规划器随即拆出三个任务:
- 修改一个日历事件;
- 向一个群组发消息;
- 分配一次文档编辑。
- 事件: 核心产品启动评审,周五日本时间 15:00,8 名内部参会者。
- 新时间: 周一日本时间 15:00。
- 消息范围:
#product,23 名成员。 - 文档负责人: Maya Chen,正式员工,产品市场。
- 文档: Onboarding copy v7。
- 外部影响: 发送日历通知和 1 条 Slack 消息。
- 执行 Agent: Scheduler Agent 修改日历;Comms Agent 发送 Slack;Content Agent 创建文档任务。
执行以后,产品也不能只说一句“完成”。它应返回可以核验的状态:
- 日历事件 ID 与最终时区;
- API 接受或拒绝结果;
- 实际通知人数;
- Slack 消息链接;
- 任务或文档链接;
- 政策版本与批准 ID;
- 撤销控件及到期时间;
- 失败或仍在等待的动作。
可复用交付物:语音动作回执
只要语音触发的操作会改变数据、对外沟通、花钱、授予权限或启动另一个 Agent,就可以使用下面这份结构。
| 回执字段 | 执行前 | 执行后 |
|---|---|---|
| 用户意图 | 用自然语言说明目标 | 把原始请求链接到最终结果 |
| 系统听到的内容 | 最终语音转写片段 | 保留文本及用户纠正 |
| 动作 ID | 稳定的待执行 ID | 稳定的执行 ID |
| 执行者 | 明确 Agent 和工具 | 实际 Agent、工具与版本 |
| 目标 | 人类可读名称加稳定 ID | 最终目标 ID 与链接 |
| 参数 | 标准化日期、金额、收件人和范围 | 实际发送给工具的参数 |
| 风险 | 读取、可逆写入、外部、敏感、不可逆 | 最终风险分类与适用政策 |
| 批准 | 谁批准、看到什么、何时过期 | 批准 ID 与时间戳 |
| 结果 | 预期状态 | 工具结果加独立状态复查 |
| 例外 | 已知歧义或暂缺证据 | 部分失败与未完成工作 |
| 恢复 | 取消、修改、撤销或升级路径 | 可用控件与最后期限 |
一条最小化结构记录可以写成:
action_id: va_20260724_0142
intent: "移动内部启动评审并通知团队"
heard_text: "把周五的启动评审移到周一三点"
actor:
agent: scheduler
tool: calendar.update_event
target:
label: "核心产品启动评审"
id: event_184
parameters:
from: 2026-07-24T15:00:00+09:00
to: 2026-07-27T15:00:00+09:00
notify_attendees: true
risk: reversible_external_write
approval:
status: approved
approved_by: user_27
expires_at: 2026-07-24T10:18:00+09:00
verification:
source: calendar.read_event
observed_state: 2026-07-27T15:00:00+09:00
recovery:
method: calendar.restore_event
available_until: 2026-07-24T10:27:00+09:00
动作回执不是把原始调试日志扔给用户。它应隐藏密钥,避免暴露可重放凭证,并把内部工具名翻译成用户能理解的表达。运营人员仍然需要底层审计事件;用户看到的则应该是简洁产品界面,并可以展开查看证据。
重要动作要用三个渠道共同确认
如果系统可能在同一条音频链路里误解了指令,只靠语音确认会很脆弱。对有实质后果的动作,确认应该协调三个渠道:
- 说出真正关键的差异。 只回读会改变结果的字段,例如收件人、金额、日期、时区、权限、删除范围或发布状态,不要把它们埋在一段友好但冗长的话里。
- 显示结构化提案。 用卡片展示稳定目标和可编辑参数。如果用户当时无法看屏幕,产品应允许延后执行,而不是给他一套更低的安全标准。
- 要求明确操作。 使用按钮、输入短语、设备确认,或绑定到可见动作 ID 的窄范围语音回答。不要把“对”“好”“继续”这样的对话性反馈当作通用批准。
不过,不要让每个无害动作都弹确认。确认过多会训练用户不看内容就点同意。总结、搜索、草稿和可恢复的私人笔记通常可以自动运行;外发消息、破坏性修改、财务操作、权限授予、公开发布和大批量记录变更,才值得增加摩擦。
创始人不写政策代码,也能使用的风险矩阵
风险应按业务后果分类,而不是按工具品牌或模型自信程度分类。
| 级别 | 例子 | 默认行为 | 回执要求 |
|---|---|---|---|
| 0:观察 | 搜索、总结、读取日历 | 可执行,但显示数据来源范围 | 来源、Agent、时间 |
| 1:私人草稿 | 起草邮件、准备方案、新建私人笔记 | 可执行,但不得发送或发布 | 草稿链接、输入范围、无外部影响声明 |
| 2:可逆写入 | 移动内部会议、编辑可恢复文档 | 预览关键字段,并提供简单撤销 | 精确 diff、批准、核验状态、撤销 |
| 3:外部或敏感 | 发送消息、邀请外部人员、修改客户记录 | 对参数进行明确绑定的批准 | 收件人、内容或 diff、执行者、结果、恢复 |
| 4:不可逆或受监管 | 付款、删除、授权、法律提交 | 强确认或人工操作,通常不允许纯语音执行 | 身份、政策、批准、证据、升级路径 |
“始终允许”不能把这些层级压平。用户可以允许 Agent 反复读取日历,却仍然要求每次邀请外部地址时确认。批准应按工具、动作类型、目标类型和额度限制来划分,而不是只按 connector 划分。
OWASP 进一步建议,把批准绑定到精确的执行者、工具、目标、标准化参数、时间戳和到期时间。这很适合第 3、4 级动作。批准后只要关键内容发生变化,就应生成新的动作提案。
上线前必须跑的五项失败测试
原始 τ-Voice benchmark 论文提醒我们,不能只用干净的转写文本测试语音 Agent。研究者在 278 个有明确最终状态的任务上测试后发现,语音 Agent 的任务完成率明显低于对应的文字推理结果;加入噪声与不同口音后,表现进一步下降。错误分析包括工具参数错误、做错动作、丢失对话状态、漏掉确认,以及在用户拼读姓名或邮箱时转写失败。
这些结果只适用于论文测试的系统与设置,不是所有产品通用的错误率。不过,它的方法很值得采用:评估最终状态,而不是评估对话听起来是否讨喜。
对每一个第 2 至第 4 级工作流,都要运行下面五项测试。
1. 错误目标测试
准备两个显示名称相似的人、事件、文件或客户,然后只用有歧义的名字要求 Agent 执行。只有当系统主动展示候选项、在提案里使用稳定 ID,并在歧义解决前拒绝执行,才能算通过。
2. 说话过程中纠正测试
说:“发给 Maya——不,是产品部门的 Maya Chen,不是那个承包商。”改变纠正前的停顿长度。只有当纠正会让旧计划和旧批准失效,并且后台 Agent 不会继续使用过时目标,才能算通过。
3. 噪声参数测试
在真实噪声下测试金额、日期、时区、邮箱拼读、账户后缀和否定词。关键字段只要存在不确定性,系统就应继续澄清,而不能静默做“合理化”修正。验收时要比较结构化参数是否精确,不要只看字错率。
4. 多 Agent 归因测试
同时启动两个以上任务,打断其中一个,然后说:“批准那个。”只有当产品要求明确是哪一项,或展示不同动作 ID,才能算通过。回执必须记录真正执行的 Agent 和工具,包括中间发生的委派。
5. 部分失败与撤销测试
让第一步成功、第二步失败,例如日历已经移动,但团队消息发送超时。系统只有在回执中明确写出“部分完成”、指出已经持久化的变化、提供安全重试或补偿,并且不谎称整个任务完成,才能算通过。接着使用界面上的恢复控件,再通过一次读取操作验证状态已经恢复。
每轮测试都应保存音频样本、产品版本、模型、转写、动作提案、批准事件、工具请求、观察到的最终状态和恢复结果。一张写着“Done”的截图不是合格证据。
用有效业务状态验收,不要只测对话质量
一份实用的上线计分卡至少包含六项指标:
| 指标 | 统计内容 | 上线判断 |
|---|---|---|
| 有效完成 | 用户预期的最终状态存在,且符合政策 | 最核心成功指标 |
| 错误动作 | 未授权目标、参数或副作用 | 关键测试集必须为零 |
| 澄清质量 | 是否在执行前发现歧义 | 所有预设关键歧义都应被识别 |
| 批准完整性 | 实际执行参数与批准参数完全一致 | 不允许出现不一致 |
| 回执完整度 | 必填字段与证据可用 | 第 3、4 级应达到 100% |
| 恢复成功 | 在承诺窗口内恢复可逆操作 | 每条支持的撤销路径都要测试 |
不要脱离工作量和伤害模型,给所有动作设一个统一百分比。一万次低风险草稿和十次权限授予不能放在同一个分母里。按风险级别、语言、设备、噪声条件、connector 版本和 Agent 配置分别统计。
还要把“虚假放心”当作缺陷。部分失败后仍说“一切完成”、没有稳定目标却说“我明白了”、用户说“停”之后动画仍显示正在执行,这些表现有时比明确报错更危险,因为它们掩盖了人工介入的必要性。
时间指标同样重要:分别记录语音结束到提案、提案到批准、批准到工具结果、结果到独立复核,以及失败到恢复所需时间。语音更快当然有价值,前提是交易仍然可检查。
看起来很安全,实际上并不安全的常见实现
只显示转写。 转写能提供帮助,但用户往往只判断句子是否通顺,而不会逐个检查专有名词、数字和否定词。产品应突出关键字段,并把它们映射到稳定目标。 通用的“允许”按钮。 允许使用 Gmail,不等于允许向任意收件人发送任意消息。Connector 授权、会话授权与单次动作批准是三个不同决定。 用一大段语音回读。 长确认很难比较,也容易被打断。只读出关键差异,再显示结构。 只弹成功 toast。 工具结果可能过度乐观、部分成功、已经过期,或根本没有反映最终状态。能读取变更后的记录时,就应复查;无法验证时,要诚实标记。 隐藏委派。 语音人格可能一直不变,但工作已经跨模型或跨 Agent 转移。声音一致不代表权限一致。即使整体体验保持连贯,回执仍应显示真正的执行组件。 永久批准捷径。 “始终允许”适合读取或受限私人草稿,却不应静默扩展到新目标、外部沟通、消费、删除或权限变更。 牺牲无障碍的安全方案。 如果必须看视觉卡片,却没有非视觉复核路径,依赖语音的用户反而被排除。产品应提供结构化语音复核、键盘或屏幕阅读器访问、延后执行与人工路径;不能因为存在歧义就强迫用户立即执行。哪些任务不应该把语音当成执行界面
语音非常适合构思、搜索、导航、查询状态、生成草稿,以及在少量清楚选项中做选择。只要动作提案会转化为结构化界面,并且有另一条确认渠道,语音也可以发起有实质后果的工作。
但出现以下情况时,语音不应该成为唯一执行界面:
- 精确字符串、账户标识、长收件人列表或复杂 diff 决定安全性;
- 当前环境无法进行私密复核;
- 动作很难或无法撤销;
- 身份保证不足;
- 多个 Agent 或任务无法清楚区分;
- 用户之后无法查看回执;
- 政策要求第二人批准或更强身份验证;
- 产品无法独立核验最终状态。
创始人的 48 小时检查清单
最初两小时- 列出语音 Agent 可以访问的所有工具。
- 按业务后果给每种动作标记 0 至 4 级。
- 对未知动作和第 4 级动作关闭纯语音执行。
- 找出当前产品中所有“没有验证状态就说完成”的位置。
- 为使用量最高的第 2 或第 3 级动作实现结构化提案。
- 把批准绑定到动作 ID、执行者、目标、参数、时间戳与到期时间。
- 增加部分成功、拒绝、取消和超时状态。
- 返回一份用户可见回执,并提供真正可用的恢复路径。
- 运行错误目标、纠正、噪声、多 Agent 与部分失败测试。
- 把最终状态、转写质量与对话质量分开评分。
- 在每个上线语言,以及噪声最大的支持设备环境中复测。
- 只要出现关键错误动作、批准参数不一致,或回执隐藏部分失败,就暂停上线。
语音正在成为真实工作的控制界面。最终胜出的产品,不只是听起来更像人,而是让机器动作更容易被人理解、授权、核验和撤销。
参考资料
- Anthropic:Think through hard problems in voice mode
- Claude Help Center:Use voice mode
- OpenAI:ChatGPT 桌面语音与多 Agent
- OpenAI:Introducing GPT-Live
- OpenAI:GPT-Live System Card
- OpenAI Agents SDK:Building Voice Agents
- τ-Voice:Benchmarking Full-Duplex Voice Agents on Real-World Domains
- W3C:Understanding Error Prevention for Legal, Financial, and Data Actions
- OWASP:AI Agent Security Cheat Sheet
- TechCrunch:Anthropic updates Claude voice mode with more capable models