风险分级(risk tier) 安全与工程
别名:
风险档位 · 风险分级
给每个工具声明风险档位:`auto`(自动放行)/ `suggest`(提示但不阻断)/ `approve`(必须人工批准)。风险是**策略**不是模型知识——`risk` 字段放在工具 spec 上、不给模型看。分级越准,被打断的次数越少,每一次打断越值得认真对待。
它是什么
风险分级(risk tier)给每个工具声明风险档位:auto(无副作用或只读,直接执行零交互)、suggest(有轻微副作用,发提示但不阻断)、approve(破坏性/不可逆/影响他人,暂停等人批准)。分级判断一句话:这个动作执行后,如果它不该被执行,后果能撤销吗? 能撤销(写个临时文件)→ suggest 或更低;不可撤销(删文件)或影响范围超出当前会话(改共享配置、发消息、推生产)→ approve。
风险是策略,不是模型知识
risk 字段放在工具注册表的 spec 上,模型看到的工具列表里没有它(modelTools() 只输出 name/description/schema)——模型连风险档位都不知道,自然无法在 prompt 里辩称「这个删除其实很安全」。分级是注册表作者(人)的决定,不是模型的参数。
为什么分级而不是全问/全放
全放让 Agent 过度自主,全问引发审批疲劳(93% 的提示被随手批准)。分级越准,被打断的次数越少,每一次打断越值得认真对待。Claude Code 的每工具 allow/ask/deny 三动作与 auto mode 的「白名单直接放行 + 其余交给分类器」分层裁决、OpenAI Agents SDK 的 needs_approval,都是同一哲学;OWASP Agentic 列表把「过度授权/缺失审批」列为独立风险(ASI02 工具误用与利用)。
在本教程的位置
第 18 章「风险分级与三模式」一节;risk 决定主循环走哪条路径(直接执行 / 提示即执行 / 审批门暂停),也是审批双向流里 approval_request 的 risk 字段来源。