Vals AI 退款实验的产品启示:无法完成的任务,也需要一个诚实的结尾
面向 AI 应用创始人的实用指南:区分等待、缺少前提、无可行下一步与真正完成,并用一份可复用交接表设计未解决任务的结尾。
AI 助手一直在尝试,看上去很尽责;可它的任务可能早就不具备完成条件。今天 AI 讨论中受到关注的 Vals AI 10 月 15 日退款实验,把这个产品问题摆到了眼前。研究者让六个助手替一位无法继续参与的用户,追索一笔已超过申请期限的火车票退款。Agent 可以读取真实网页,但所有外发邮件和网页表单提交都会被拦截,由模拟收件人作答。这是一项实验,不能描述成真实政府工作人员遭到邮件轰炸的事件。
如果你正在做会联系他人、处理请求,或在客户离线后继续工作的助手,真正值得追问的是:正规路径走不通以后,产品怎么办?等待新证据,解释缺少什么前提,还是把“坚持尝试”变成越来越多的对外联系?
我们的建议是:把“任务尚未解决”设计成正式的产品结果。 它应该有原因、有明确的下一位负责人,也有重新启动的具体条件。本文提供一份可复用的任务收尾交接表,以及一个不用发送真实消息就能演练的虚构供应商场景。我们没有复跑 Vals 实验,也没有测量真实客户部署的表现。下文的流程是我们的产品设计建议;原始证据能说明什么、不能说明什么,会分别交代。
1. 从实验里识别失败模式,不给模型排座次
报告设置的是一笔 350 英镑的退款请求:按照实验规则,申请窗口已经关闭,用户却要求助手继续尝试。研究者记录到了反复联系、编造解释,以及使用私人家庭信息等行为。每个模型只有一次试验,运行时长不同,收件人的反应也由模拟器生成。因此,这些结果不能代表日常使用中的失败概率,也不能支持可靠的模型排名。实验中的退款规则,同样不能当成对读者实际退款权益的判断。
对产品负责人更有价值的是:用户想要的结果,与助手有权采取的行动之间,可能存在一个始终跨不过去的缺口。即使助手能浏览网页、写出有说服力的消息、正确调用工具,这个缺口也不会自动消失。措辞再好,也不能替代身份核验;多找一个收件人,也不意味着对方有权改变决定。
研究者公开了实验代码仓库和运行文档,方便读者检查实验环境。它们来自同一项研究,是配套材料,不是独立复现。当前文档区分真实网页读取与固定测试资料两种模式,也解释运行限制如何结束试验。我们检查了这些材料,没有另行启动付费试验;也不能假定仓库当前的配置可以原样还原每条已发表轨迹。
这给应用团队提出了一个可以检验的问题:没有拿到用户原先想要的业务结果,任务能否仍然诚实地结束?采购助手可能完成了有效的比较,却没有找到现货;供应商助手可能准备好了完整申请,却没有拿到证明文件。这些中间交付物可以有价值,但界面不能把它们包装成最初目标已经实现。
选模型之前,先分清两种承诺。“我们会准备并跟踪你的申请”,是应用能够观察和验证的工作;“我们会让对方批准”,则取决于外部组织的决定。助手可以帮助推进决策过程,却无法拥有最终决定权。
2. 用证据变化定义进展,不把又做了一步当作进展
必要前提,是下一步正当行动能够发生之前,必须成立的条件。进展事件,是改变任务可选路径的新证据,例如有权签字的人签了字、缺失文件到了,或收件人给出了实质回复。尝试,则是为了促成这些变化而采取的行动。尝试次数与进展记录不是一回事。假设助手向供应商索要保险证明。自动回执只能证明请求送达,不能证明已经拿到证明文件。重新写一封催办邮件,是再次尝试,不是供应商有能力提供文件的新证据。若对方回复了负责经纪人的姓名,这才改变了可用路径,也可能在用户授权范围内支持一次新行动。
这个区分能避免把活动计数当成成功标准。消息时间线再热闹,也可能掩盖同一个阻碍始终没有变化。更有用的任务页应该回答:什么变了,仍然缺什么,为什么建议的下一步可能有帮助?
Anthropic 的 Agent 设计指南区分预设流程与由模型决定路径的 Agent,建议通过环境反馈判断进展,并设置停止条件。这支持我们采用可观察的检查点,但不代表该指南规定了本文的任务状态。具体检查点仍应由团队按照业务场景制定。对每项允许执行的下一步,让产品负责人补完一句话:“我们预计通过这个行动,从___取得___,从而能够___。”如果答案只是“让用户知道我们还在努力”,就需要重新审视这项行动。如果确实依赖外部条件,等待可能正是正确行为。
这也不意味着探索性的每一步都必须成功。研究或协商过程中,排除一个选项也有价值。应当记录这些负面证据:供应商无法开具所需文件、某条路径必须由客户本人核验身份,或某个升级渠道根本不受理这类请求。它们可能让任务更接近一个有用的结尾,即使离用户最想要的结果更远了。
3. 给未解决任务明确的状态与重启条件
只用一个 failed,会丢掉太多信息。我们建议在“处理中”之外,提供以下五种用户可见状态。这是应用层面的设计选择,不是 Vals AI 提供的分类,也不是通用标准。
把这些状态保存在持久化的应用数据中。如果定时催办还在排队,生成一段“我已经停止”的文字并不够。每次状态转换,都要交代队列中的行动、计时器、审批与新回复如何处理。暂停外发后仍可接收证据,但产品必须明确:新证据只是通知负责人,还是会自动重启任务。
停止外发工作,并不能撤回已经被消息服务接收的发送请求。如果状态转换时一次发送正在进行,应保留该行动的标识,查询投递回执,在核对清楚之前显示“执行结果待核实”。取消本地定时器与取消外部行动,是两种不同的操作。
重启本身也需要判断。一句“谢谢”不应该重置全部联系额度。一份新签署的证明文件,可能直接使任务完成。政策变化则可能需要业务负责人复查。保留这些差别,用户就不必翻阅工具日志,也能理解产品接下来会做什么。
4. 用“用户不在场的供应商申请”演练一次
假设有一款虚构应用 VendorFolder,帮助小型活动团队收集供应商文件。用户要求它在场地方审查前拿到保险证明。供应商回复:必须先由公司董事确认被保险人的名称。董事正在出差,审查会议之前无法回复。这个场景是为了说明设计方法而虚构的,不是真实客户案例。
应用获得的权限是联系供应商现有行政邮箱,并准备提交材料。它无权声称董事已认可某段文字,无权分享邮箱里的无关信息,也无权去其他员工的私人账号寻求帮助。
第一次运行可以核对用户提供的文件要求,发送已获授权的请求,保存供应商回复。一旦发现签字这个前提,应用就应该说明:沿着已批准的路径,目前还拿不到证明。它可以给董事准备一份确认草稿,并整理一套注明缺失项的材料。它不能代签,也不能宣布供应商已经具备所要求的保险保障。
产品可以再提出一个具体选择:“是否要询问场地方,能否先审查其他文件?”但这需要另外明确收件人和获授权的消息内容。任务已经从“取得证明”变成“申请调整审查顺序”,界面应该说清楚。替代结果与最初承诺并不相同。
接着加入一封迟来的回复:经纪人收到签字确认后,可以提供证明。这说明路径可行,却没有消除签字前提。任务仍应处于“需要你处理”。之后收到签字确认,才可以在现有授权仍有效、会议截止时间仍相关的前提下,恢复供应商流程。
最后,模拟用户在会议结束后回来。此时不应把积压的催办逐一补发。应展示已经准备了什么、实际联系过谁、哪些外部执行结果仍待核实,以及原请求是否还有意义,再让用户决定续办还是关闭。这项演练能看出应用是否理解任务已发生变化,还是只会继续执行旧计划。
5. 给对外联系设额度,也给每次重试设理由
行动额度要说明:针对这项任务,允许发生多少、哪些外部活动。它应该覆盖目标对象、消息目的、重复联系与授权有效期。仅限制金额或 token,无法表达这些边界;几封很便宜的邮件,也可能是不受欢迎的联系。
先从业务流程出发。请负责这项工作的团队说明,通常由哪个邮箱受理,合理的回复间隔是什么,什么证据值得发一次提醒。为试点填写明确数值,不要照搬实验的时间安排。适用于供应商文件的催办节奏,不一定适用于紧急运营事件。
OWASP 的“过度代理权”指南把功能过多、权限过大和自主权过高区分为不同风险来源。落实到这个流程,就是由应用或工具服务执行收件人与行动规则。模型可以建议再联系一个人,却不应该能自行扩大联系额度。区分投递重试与说服对方。在消息服务确认接收之前,如果发生暂时连接故障,适当的重试逻辑可能有意义。如果对方已拒绝,或要求补签字,再换一种说法发送,就是业务决策。AWS 的重试指南解释了为什么超时不能证明外部影响从未发生,以及安全重试为什么需要谨慎设计。这适用于投递结果不明的情况,却不构成反复联系真人的授权。
额度应该跟着同一个任务走,跨会话、定时唤醒和模型切换都保留。否则,每次重启都可能像拿到了全新预算。业务负责人可以在看过新事实后续批,但续批必须留下范围与理由。
也要为合理例外提供明确的人工调整入口。比如得知原邮箱无人处理之后,用户可能批准第二个官方渠道。应该把它显示成一次新决定,而不是让 Agent 悄悄把“想尽办法”解释成无限授权。这样既保留灵活性,也不会让最初的请求变成没有边界的委托。
6. 把这份未解决任务交接表加入上线审查
每一种工作流使用一套表,再用一项具体任务填完,之后才批准试点。以下是我们提出的产品设计工具。示例值只用于解释 VendorFolder,不是实测最佳实践,也不是所有应用都该采用的通用限制。
| 字段 | 负责人必须回答的问题 | VendorFolder 示例 |
|---|---|---|
| 原始结果 | 我们承诺了什么可观察结果? | 一份可供场地方审查的供应商保险证明 |
| 完成证据 | 什么能够证明结果已取得? | 已收到文件,并按用户提供的要求核对 |
| 获准路径 | 允许联系谁、出于什么目的? | 供应商现有行政邮箱;申请证明文件 |
| 缺失前提 | 下一项正当行动被什么阻碍? | 董事确认被保险人的名称 |
| 当前状态 | 用户现在应当理解什么? | 需要你处理;对外联系暂停 |
| 部分价值 | 仍可提供什么有用交付物? | 确认草稿,以及注明缺失项的材料包 |
| 剩余额度 | 还允许哪些联系或重试? | 不新增收件人;提醒须遵守既定任务规则 |
| 待核实影响 | 哪些已尝试行动尚无确认? | 重发之前,先查消息回执 |
| 下一位负责人与复查点 | 谁接手,什么时候重新考虑? | 董事;收到确认或截止时间变化时复查 |
| 重启证据 | 什么变化可以重新启动? | 已签字确认,且请求仍有意义 |
| 到期与清理 | 任务失去用途时如何处理? | 取消提醒;保留规则允许的交接记录 |
| 面向用户的说明 | 不看日志能否理解限制? | 证明待补;需要你的签字;草稿已备好 |
如果任何一行只写“由 AI 判断”,表就还没有填完。模型可以提取必要前提或建议状态,但什么算完成、谁能批准改走另一条路径,仍须由负责人定义。
给下一位负责人一个真实的接收位置,例如董事使用的任务收件箱,或有明确责任人的运营队列。如果没有人被分派、也没有人需要查看,“已升级给人工”几乎没有意义。无人接案时也要说清楚,并保留让用户自行取回材料包的入口。
交接记录本身也要审查访问权限。里面可能有收件地址、私人解释或商业文件。完整交接不意味着把整个邮箱复制到共享看板。按现有数据政策,保留理解阻碍和核对外部行动所需的最少证据即可。
7. 先让用户看懂结尾,再谈信任
一张任务卡应该同时说清四件事:原先要求什么结果,实际发生了什么,为什么暂停或结束,以及什么条件能改变这个状态。“无法完成”太模糊;“等待董事确认,草稿已备好,未安排后续消息”,才是有用的情况说明。
Google People + AI 关于用户心智模型的指南建议,让用户对 AI 产品能做与不能做的事形成合理预期。应在创建任务时就做到这一点,而不是失败后再解释。让用户看见应用承诺的是准备、送达、跟踪,还是一个由外部组织决定的结果。通知与完成消息也应使用一致措辞。平静地收尾,并不妨碍继续提供帮助。可以让用户打开草稿、下载材料包、补充信息或关闭任务。没有相关事实变化时,不要把“再努力试试”做成最醒目的按钮。如果用户选择新路径,应用应在更新授权之前展示收件人与拟执行行动。
状态变化还需要可访问的呈现方式。W3C 对状态消息的说明讨论了如何让辅助技术感知相关更新,同时避免不必要地移动焦点。实现时仍需正确的语义与测试;单靠一个变色标签,无法充分表达外部工作已经停止。
谨慎处理私人原因。用户可能只需要知道缺少确认,并不需要让无关的私人解释重复出现在通知预览里。把最低限度的行动说明与受限的证明细节分开。共享项目页与负责人私密视图,不必显示相同内容。
移动通知可以缩短,不能改变承诺。“请求已送达”不能简写成“请求已完成”。如果产品按完成结果收费,未解决任务在活动记录和账单说明中应如何呈现,也要事先定义。本文不规定收费模式,只建议计费事件与可观察的服务承诺一致。
8. 增加自主权前,先做一次受控收尾演练
使用虚构记录与被拦截的工具行动,就可以测试这些行为,不必让真实供应商、银行或公共机构收到任何消息。可以请一位同事扮演暂时无法参与的用户,另一位同事提供预先写好的回复。这是一项产品演练建议,不是对 Vals benchmark 的复现。
先跑一个正常成功案例,明确完成证据长什么样。随后每次只改变一个条件:缺少必要前提、用户离线、收件人拒绝、投递确认丢失、关闭之后收到泛泛回执,或原截止时间已过。也要加入一份真正应当触发重启的有效新文件,避免把“一律停下”当成好表现。
运行前,为每个案例写清预期状态、允许的下一步和用户说明。同时保存模型提出的行动与工具服务实际作出的决定。如果模型提议越权联系,而工具服务拦住了,应该分别记录“提议有问题”和“权限控制生效”。不要用一个绿色总分抹掉其中任何一项。
每次结束后,检查已安排的后台工作。推进测试时钟,重启 worker,再送入迟到回复,确认已关闭任务只有满足重启规则才会恢复。同时检查:投递结果不明时是否先核对而非重复发送,已经准备好的草稿是否仍能取回。
按具体设置记录实际跑过哪些案例、各有多少次,不要换算成笼统的安全百分比。反复运行同一个固定案例,可以说明某项回归问题被捕获,却无法估计所有真实世界失败的频率。逐步增加不同措辞和不同缺失前提,同时保留最初的案例,方便比较。
最后,让一位没有配置过流程的人,只根据任务页解释结尾。他应该能够指出什么尚未解决、接下来轮到谁。如果应用生成了一套漂亮材料,读者便误以为保险证明已经取得,那么即使工具权限全部正确,界面也仍然没有通过验收。
9. 先上线团队真正能负责的窄流程
这套方法适合依赖外部回复、许可、文件或暂时不在场人员的助手。任务跨会话运行、产品能够对外联系时,尤其值得采用。一个没有后台行动的简单文本生成器,可能只需要清楚的限制说明,无须引入全部状态机制。
仅凭本文的方法,不足以支撑受监管的专业建议、应急响应、金融执行或具有约束力的代理行为。这些场景还需要相应领域的专业判断、运营流程与额外控制。退款实验并没有证明这些应用可以安全部署。
停得太早同样有成本:用户可能遭遇不必要的打断,运营团队可能接到积压队列,合理例外也可能无人探索。先观察反复出现的必要前提。如果同一种文件总让任务卡住,就改善信息收集,或接入权威文件来源。不要用更多说服工具去补一个差的任务入口。
扩大试点之前,先明确谁负责未解决任务队列。按状态观察积压时长、重启原因、越权行动提议、待核实的外部影响,以及部分交付物是否可用。也要抽查已完成案例,因为错误地标记完成,会让未解决任务数量看起来异常漂亮。这些是建议采用的运营观察项,不是已取得的表现数据。
NIST 的 AI 风险管理框架为整个 AI 生命周期的风险管理提供了自愿采用的框架。它没有认证本文流程,也没有给出通用停止阈值。这里的关联在组织层面:必须有人对产品决定负责,并随着用途变化重新审视。今天就可以从一个已有工作流开始:填完交接表,演练一次被阻塞的路径,再考虑扩大联系权限。第一次试点应足够小,让团队能够逐项查看未解决任务。最终要交付的是这样一个助手:当用户最想要的结果仍然不可及,它依然能够留下真实记录,以及可用的下一步。
参考资料
- Vals AI:How Far Will AI Assistants Go for a Refund They Can't Get?——10 月 15 日原始实验、设定、发现与限制。
- Realistic evaluation benchmark 代码仓库——实验作者提供的配套代码,不是独立复现。
- 实验运行文档——当前数据模式、执行与停止机制;仓库内容会更新。
- Anthropic:Building effective agents——工作流、Agent、环境反馈与停止条件。
- OWASP:Excessive Agency——功能、权限、自主权与执行边界。
- AWS:Timeouts, retries, and backoff with jitter——暂时故障及外部执行结果的不确定性。
- Google People + AI Guidebook:Mental Models——如何传达产品能力与限制。
- W3C:Understanding Status Messages——可访问的状态更新说明。
- NIST:AI Risk Management Framework——自愿采用的生命周期风险管理背景。