跳转到主要内容
术语表

开放失败 vs 关闭失败

Toshendra Sharma

作者 Toshendra Sharma创始人兼 CEO,AgentCredia · Updated November 13, 2026

当检查无法完成时系统会做什么: 开放失败让请求照常继续,关闭失败则应用更严格的路径或直接拒绝。

术语含义

请求路径中的每一次检查都可能无法给出结果: 依赖超时、信号缺失、密钥无法获取。开放失败表示请求会像这次检查不存在一样继续执行。关闭失败表示请求会走更严格的路径: 被拒绝、被挑战,或者转到现有的更强控制。

通常没有绝对正确的选择。合适的做法取决于路由实际承担的功能,以及错误决策的代价。

为什么这对 actor 检查很重要

actor 检查会为请求增加上下文: 这次交互看起来像 Human、Human + AI、Agent 还是 Unknown。当这些上下文不可用时,应用仍然必须做出响应。常见有两种失败模式:

  • 意外的关闭失败。 超时或信号缺失被当作可疑情况,真实用户在故障期间被阻止。
  • 敏感操作上的意外开放失败。 缺失的结果被静默当作 Human,影响较大的操作以低于预期的审查程度继续执行。

这两种情况都来自把选择留给默认行为。修复方式是按路由显式决定。我们关于为人和 AI agent 设计应用级策略的文章说明了失败行为如何纳入按路由的策略中。

如何选择

一种实用方法是把路由按风险等级分组:

  • 低影响(公开页面、文档、只读目录路由): 开放失败。缺失 actor 结果不应改变任何行为。
  • 中等影响(注册、表单提交、带成本的搜索): 通常采用开放失败并记录日志,或者应用轻微调整,例如标准速率限制。
  • 高影响(账户变更、数据导出、不可逆操作): 关闭失败到你现有的更强控制,例如重新认证或确认。重点不是阻止,而是回退到你本来就会使用的检查。

然后为相关情况定义同样的行为:

  • 超时: 检查未能在规定时间内给出响应。
  • 遥测缺失: 集成未运行,或者某个信号缺失。
  • Unknown: 检查已运行,但证据不足以支持判断。
  • 过期证据: 结果来自更早的时间,不应在更敏感的操作中复用。

常见误解

  • "关闭失败更安全。" 它把成本转嫁给合法用户。对于低影响路由,在故障期间采用关闭失败造成的伤害可能比它防止的风险更大。
  • "Unknown 就是失败。" Unknown 是有效结果。它需要单独、明确地处理,这种处理方式可能与超时处理一致,也可能不一致。
  • "没有结果就表示 Human。" 绝不要根据证据缺失去推断 actor class。

Proof of Actor 如何处理

Proof of Actor 不会因为超时或 Unknown 结果就把对象判定为 Human,安装它也不会阻止任何事情: 团队从观察模式开始。每条路由和风险等级使用开放失败还是关闭失败,由应用所有者决定,并通过 Route 在你自己的代码中执行。这让强制执行保持可预测,也让你能在任何策略正式生效前检查结果。

阅读路由决策如何纳入其中,或申请提前访问。

在你自己的 app 中查看 actor intelligence。

想先聊聊? 联系创始人