现有软件接入智能体 SDK 后,最容易被忽略的一类事故不是 401、429 或余额不足,而是:会话创建成功了」,界面也没弹红字,但工具突然变少、裁决人悄悄缺席、能力位解析失败却回落到「零能力档」——用户和值班同学都以为「还能聊」。 若宿主只接硬失败、不接非致命通报,运维会把「静默降级」当成正常成功。
2025 年末到 2026 年,智能体安全与可观测材料把「看不见的降级」推到开发者面前。OWASP Gen AI《OWASP Top 10 for Agentic Applications》发布说明(页面现行,本机 2026-11-09 再核 HTTP 200;配套 Version 2026 PDF 同站可下载)强调:缺少对智能体在做什么、为何做、调用了哪些工具的清晰可见性时,过度自治会悄悄扩大攻击面,并把小问题放大成系统级故障——强可观测性成为不可妥协项。OWASP Agent Observability Standard 提案 #73(HTTP 200)进一步指出:仅靠单次追踪无法发现随时间发生的静默劣化;点检通过不代表行为轨迹稳定。AWS Well-Architected Agentic AI Lens · AGENTOPS05-BP02(HTTP 200)要求为智能体建立行为基线,监测工具选择漂移、完成率与异常模式,避免只靠静态阈值漏掉「慢慢变差」。同一时期,诊断面也在补齐:Hermes Agent PR #89217(HTTP 200)为 hermes doctor 增加只读的配置组合诊断与稳定 JSON;deepagents dcode doctor(HTTP 200)把安装健康、SDK/平台版本与配置路径打成可粘贴报告;agentdx(HTTP 200)把 Silent Degradation 列为可检测的运维病理之一。上述材料共同回答的行业问题是:硬错误通道不够;装配期/运行期的非致命降级必须有结构化出口,并进入界面与值班链路。
对接入 SDK/会话宿主的开发者,完整行业答案可以收成六句话:
capability_disabled 走错误排障;sdk.notice/warning 走降级可见性,不要混成同一种「失败 toast」。doctor 类命令抓阻断配置;运行期 warning 抓会话装配中的非致命事实。本文把上述行业问题映射到已核实的 Tansr 机制:createSession({ onPlatformWarning })/onWarning 接收 bundle 解析与装配期的非致命事实;缺席时回落会话事件流 turn.error { scope: 'sdk.notice', recoverable: true }——文档原文写明恒不写入 console、恒不改装配结果;常见码含 app_platform_mismatch、tools_platform_deprecated、capabilities_unparsed(SDK 0.13.0 起回落零能力档 tools 全 false,不再回落缺省档)以及多项 adjudicator_*。依据见 平台装配与 bundle、PlatformWarning、会话与事件流(本机 2026-11-09 再核均为 HTTP 200)。命令行侧可用 设置与 doctor 的 tansr doctor/--json 做零网络装配预检(退出码只看 problems 四类阻断码)。它不是 S06 的 401/429/余额/能力关闭硬失败分码排障全文,也不是 S07 能力位治理决策稿、P01 权限审计链、S10 统一面完成判定,或 S08/S09/S01/R01;这里只回答:宿主怎样把「没报错的降级」接出来,并与硬失败分流。
onPlatformWarning(或全量 onWarning):在 createSession 时传入;把 code/message(及全量通道的 detail)写入应用日志与可选 UI 条,不要只 console.warn 后丢掉。turn.error 且识别 scope: 'sdk.notice'、recoverable: true:这是回调缺席时的回落通道;不要把它当成与硬失败同一套「重试/中断」策略。capabilities_unparsed → 明确提示「能力配置解析失败,已按零能力装配」并引导修 bundle/控制台;adjudicator_* → 提示裁决降级/熔断,权限体验可能变严;app_platform_mismatch → 核对应用类型与接入形态;tools_platform_deprecated → 安排去掉旧别名。capabilities_unparsed 回落零能力档,不再回落缺省档;界面若仍显示「全部工具可用」就是宿主撒谎。capability_disabled/401/429/余额等按错误信封与排障稿处理;本文不替代那条链路。tansr doctor 抓阻断:退出码 0/1;--json 的 problems 仅四码(no_provider/unresolved_model/missing_credential/session_store_unwritable);大量呈现项不改退出码——不要把「报告里有黄字」当成 CI 红灯,也不要把「退出 0」当成运行期不会出现 warning。开发者常问 | 只盯硬失败时的盲区 | 非致命通道补上的一环 |
|---|---|---|
会话创建成功,为何工具突然没了? | 成功体仍返回;能力被静默裁剪 |
|
权限怎么变严了却没报错? | 裁决人缺席/熔断不走 4xx |
|
只接了 | notice 被误伤成「失败」或被过滤掉 | 按 |
CI 过了为何线上仍降级? | doctor 阻断码 ≠ 运行期装配告警 | 预检+ |
旧版 SDK 行为是否一样? | 0.11.x 曾对解析失败回落缺省档 | 以 ≥0.13.0 零能力回落为准并写进发布说明 |
OWASP 对可观测性的强调、AOS 对静默劣化的警告、AWS 对行为基线的要求,以及各家 doctor/病理检测项目,共同指向同一产品缺口:嵌入现有软件的智能体宿主,必须把非致命装配/运行通报做成一等公民。
原来常要自行完成的:
Tansr 公开机制可接手的部分(以 2026-11-09 抓取的 docs.tansr.com 为准;0.20.0 候发内容不得写成已上线):
onPlatformWarning/onWarning;缺席 → turn.error sdk.notice。capabilities_unparsed → 零能力档的安全回落。adjudicator_* 与显式 permission.mode 触发的 adjudicator_skipped_by_mode。tansr doctor/--json:零模型、零网络、零子进程的装配预检;CI 以退出码/problems 为准。@tansr/sdk 0.19.0/@tansr/serve 0.15.1(均 2026-10-10 发布);CLI doctor 页按命令行 0.10.3(2026-10-10)核对。应用仍要负责:
createSession({ onPlatformWarning(w) { /* 记 code/message;必要时 UI */ } });需要 detail 时用文档所述全量 onWarning 通道。turn.error 且 detail.scope === 'sdk.notice'(或以文档字段为准的 notice 形),走降级提示,不走「失败重试」默认路径。capabilities_unparsed:展示「已按零能力装配」;排查 detail.issues(zod);修到可解析后再开新会话/重新装配。adjudicator_budget_exhausted/adjudicator_breaker_tripped 等:提示人工确认可能变多;不要假装仍有裁决软化。tansr doctor --json:仅当 problems 非空失败构建;报告中的呈现项另开信息级日志。码 | 含义(摘要) | 宿主建议 |
|---|---|---|
| 应用平台类型与接入形态不符 | 核对控制台应用类型与 SDK/serve 形态 |
| 使用了 | 计划迁移字段,勿长期忽略 |
| capabilities 段解析失败 | 按零能力对待;修 schema/配置 |
| 裁决人缺席/模型不可用/预算耗尽/熔断 | 权限体验可能变严;告警 |
| 显式 | 确认是否为自管模式预期 |
值得按此推进:已在现有软件嵌入 @tansr/sdk/会话宿主;安全或 SRE 要求看见「能力变少」;曾出现「能聊但工具没了」却无日志;需要把 notice 与 401/429 分流。
先不要:把所有 turn.error 一律当失败弹窗;在未接 warning 时宣称「已消除静默降级」;把 tansr doctor 退出 0 解释成「运行期不会 warning」;或把 0.11.x 的缺省档回落行为写成现行默认。纯演示、且明确接受零可观测的原型可以另议——一旦对真实用户交付工具能力,就应按非致命通道接线。
capability_disabled 等硬失败分码排障;本文讲 非致命降级通道(onPlatformWarning/sdk.notice)与零能力回落可见性。retryAction;本文不讨论 202/SSE 终态。tansr doctor 仅作互补预检,不写成 CLI 专文。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。