Agent Platform · Detail Design

治理与 HITL 设计

把危险动作挡在执行前:风险矩阵、Policy 自动规则、HITL 四级审批、Break-Glass、成本治理,构成 Harness 双守门员的完整治理栈。

返回文档目录查看 Harness 内核

双守门员

Policy 处理已知规则(毫秒级),HITL 处理边缘高风险(分钟级),二者互补不可替代

风险三档

Low 自动 / Medium 本人确认 / High 审批人或双人复核,按"是否不可逆 + 影响范围"自动分流

Break-Glass

紧急通过只缩短等待,不绕审计:身份、权限、Policy、Trace 全程不变

Core Flow Diagram
Governance
Action→Risk Level→Policy→HITL→Approve / Reject→Audit
Timeout
HITL Timeout→TIMEOUT→TRACING→CLOSED_REJECTED

详细设计说明

DESIGN DOCUMENT · GOVERNANCE & HITL

把危险动作挡在执行前,把人工审批纳入状态机

这份文档把"治理"从一句口号还原成可执行的工程契约:风险如何分档,Policy 如何写规则,HITL 如何分级,AWAITING_HITL 如何持久化沙箱,Break-Glass 如何在不绕开审计的前提下加速,以及成本如何在 Run / User / Workspace / Skill 四维度收敛。

设计主张

治理不是 Harness 之外的"加层",而是 Harness 八步管道里的双守门员——⑤ Policy 校验和 ⑦ HITL 审批同处执行阶段,承担"准入 + 责任分担",让所有外部副作用都在被授权的前提下发生。

双守门员风险三档四级审批Break-Glass成本四维

评审关注点

  • 已知规则是否进 Policy、是否会偷懒丢给 HITL
  • AWAITING_HITL 期间沙箱是否被回收
  • Break-Glass 是否真的不绕过 Trace 与 Policy
  • 成本超限的降级是否会引发"沉默失败"
D1 双守门员Policy 自动 + HITL 人工
D2 风险三档不可逆 × 影响范围分流
D3 沙箱不释放AWAITING_HITL 续跑
D4 破窗受控缩短等待非绕审计
D5 成本四维Run/User/WS/Skill 限额

1. 定位与概念

SECTION GOAL

用一张总体架构图和两段时序图,把"治理与 HITL"放回 Harness 八步管道的实际位置:它是 ⑤ 和 ⑦ 两道守门员,不是平行于内核的另一套系统。

1.1 总体架构图

下图把治理与 HITL 的三层职责和双守门员位置叠加在一张图上:横向 3 个 tier 带(T1 蓝 / T2 紫 / T3 金),T1 区画"审批策略配置 + 审批 UI",T2 区画"Team 权限边界",T3 区把 Harness 八步管道画成一条横向流水线,⑤ Policy 校验和 ⑦ HITL 审批用金色虚线边突出,下方画出风险三档分流。

Governance Architecture · 三层职责 + 双守门员 + 风险分流
T1 · Agent Platform 审批策略配置 + UI CONFIG · APPROVAL UI 风险矩阵注册 Action 类型 → 三档 Policy 规则配置 结构 / 权限 / 成本 / 安全 审批人 / 审批流 L1 / L2 / L3 / L4 配置 成本预算面板 Run / User / WS / Skill Break-Glass UI 紧急通道 + 事后审查 AUDIT & REPLAY UI 审批记录查询 · Break-Glass 事后审查 · 合规报表(按时间 / Skill / Workspace)· Trace 索引检索 T2 · Coordinator Team 权限边界 SCOPE GUARD Team 级阈值注入 hitl_threshold / cost_budget 写入 caller_extra,由 T3 读取 CallerIdentity 透传 user / team / workspace 作为 Policy 评估输入 审批回执路由 approve / reject 信号回送 恢复 AWAITING_HITL → EXECUTING 协作群成本聚合 workspace 级别名 GROUP BY 超限通知 → T1 仪表板 T3 · Harness Policy + HITL 拦截 EIGHT-STEP PIPELINE — HARNESS 八步管道(治理嵌入位置)— ① Run 创建 ② Context ③ Skill 加载 ④ Plan ⑤ Policy ⚑ 守门员 1 ⑥ Tool 调用 ⑦ HITL ⚑ 守门员 2 ⑧ Trace — 风险三档分流(⑤ + ⑦ 决议依据)— Low · 自动通过 只读 / 个人沙箱写 L1 直跑 ⑥ Medium · 本人确认 项目空间写 / 中等成本 L2 inline 确认 High · 审批人 / 双人 生产 / 不可逆 / 金额 L3 / L4 异步审批 Break-Glass 缩短等待 不绕审计 High 紧急通道 COST GOVERNANCE RAIL · 成本治理(贯穿 ⑤ ⑥ ⑦ 三步) Run 级 token 上限(⑤ 校验)· User 日预算(⑤ 校验)· Workspace 月预算(⑤ 校验)· Skill 单次成本(⑥ 收集 → ⑧ 落 Trace)· 超限触发 HITL L4 审批 + 降级到低成本模型 规则注入 审批人路由 ⚑ 守门员节点(⑤ ⑦)= 金色虚线边 · T1 蓝(配置)· T2 紫(注入)· T3 金(拦截)· 风险三档颜色对应 Low/Med/High
总览:T1 把"风险矩阵 + Policy 规则 + 审批人 + 成本预算"配出来 → T2 透传 CallerIdentity 与 Team 阈值 → T3 在 ⑤ Policy 校验和 ⑦ HITL 审批两道门里执行决议。所有路径必经 ⑧ Trace。

1.2 双场景时序图

下面两张时序图分别可视化双守门员的两条典型决议链。点击顶部 lifeline 头部色块可跳到下面对应章节的详细规则。

Scenario A · 高风险动作 HITL 介入

⑤ Policy 评估为 high → T3 暂停(AWAITING_HITL)→ 审批人审批 → 通过后 T3 恢复 → ⑥ Tool 执行 → ⑧ Trace。沙箱在等待期不释放。

User · 发起人REQUESTER T1 · 审批 UIAPPROVAL UI T3 · HarnessPIPELINE ⑤ Policy ⚑守门员 1 ⑦ HITL ⚑守门员 2 · 审批人 — PHASE A · 高风险动作触发 — 1 "删除生产数据库 X" · 启动 Run ①②③④ Run/Context/Skill/Plan(略) 2 提交 Plan + CallerIdentity 3 ↻ 评 high · await_hitl 4 await_hitl 决议 — PHASE B · AWAITING_HITL · 沙箱不释放 — 5 ↻ EXECUTING → AWAITING_HITL 6 投递审批请求 · L3 双人 7 推审批 UI(含 risk + plan) 8 ↻ 双人独立批准(含备注) 9 approve · reviewer_id × 2 — PHASE C · 恢复执行 + 收口 — 10 通行 · AWAITING → EXECUTING 11 ↻ ⑥ Tool 执行(同一沙箱) 12 ↻ ⑧ Trace · HITLTrace 完整留痕 13 SUCCEEDED 终态推回
关键不变量:T3 在 AWAITING_HITL 期间沙箱不释放、上下文不丢、Tool 续跑使用同一执行环境;HITLTrace 含 reviewer_id × 2、决议时间、备注;任意一方拒绝则改走 Scenario B 的拒绝收口。
Scenario B · Policy 自动拒绝

⑤ Policy 命中"已知拒绝规则" → 直接 reject → 跳过 ⑥ ⑦ → ⑧ Trace(PolicyTrace + ErrorTrace)→ CLOSED_REJECTED。无需人工。

User · 发起人REQUESTER T3 · HarnessPIPELINE ⑤ Policy ⚑守门员 1 ⑧ TraceAUDIT TRAIL 终态 · CLOSEDREJECTED 1 "超出 token 月预算的 Run" 2 提交 Plan + budget 估算 3 ↻ 命中规则:CostRule.MonthlyExceeded 4 reject · 原因 + rule_id 5 写 PolicyTrace · ErrorTrace · CostTrace ⑥ Tool · ⑦ HITL 跳过(不进入) 6 TRACING → CLOSED_REJECTED 7 推回:"已超月预算 80%"
关键不变量:Policy 拒绝毫秒级返回,不进 ⑥ ⑦,但必须经 ⑧ Trace——PolicyTrace 含 rule_id 与决议原因;用户可在 T1 仪表板根据 rule_id 申请重试或申请预算扩容。

1.3 为什么要做双守门员(不做的痛点)

当前缺口:

缺口具体表现影响
没有 Policy,全靠 HITL把所有"该不该执行"的判断推给人审批审批人被低风险动作淹没;真正的高风险被淹没在噪音里;P95 等待时间分钟级
没有 HITL,全靠 Policy试图把所有规则写死在代码里新型攻击 / 边缘场景规则永远滞后;高风险动作没有责任人
风险分档拍脑袋同一动作不同 Run 走不同路径用户体验割裂;审计无法解释"为什么这次要审批那次不要"
AWAITING_HITL 沙箱被回收等审批期间释放容器批准回来要重跑前 6 步,浪费成本 + 可能产生不一致
Break-Glass 等于绕审计紧急情况直接跳过 Policy 与 Trace合规审查无证据;事后无法定责
成本只看总账只统计租户月消耗无法定位是哪个 Skill / User / Workspace 异常;超限只能粗暴关停

双守门员解决的具体技术问题:

  1. Policy 处理"已知规则"——结构 / 权限 / 成本 / 安全四类规则,毫秒级裁决,承载 95% 流量
  2. HITL 处理"边缘高风险"——剩余 5% 进人工审批队列,分钟到小时级,由审批人承担责任
  3. 风险三档自动分流——Skill 元数据 + 动作属性两路输入,确定性输出 Low / Med / High,决策树不靠人
  4. 沙箱与 AWAITING_HITL 绑定——审批期间 RunState 保留、上下文不丢、容器不回收,批准即续跑
  5. Break-Glass 只缩短等待——身份、权限、Policy、Trace 一项不少;唯一的不同是审批通道从异步改实时
  6. 成本四维聚合——Run / User / Workspace / Skill 都是 Policy 的拒绝依据,超限 → 自动降级或转 HITL L4

1.4 三层职责定位

层承担不承担
T1 · Agent Platform风险矩阵注册;Policy 规则配置;审批人 / 审批流配置;审批 UI;Break-Glass UI;成本预算面板;审计 / Replay UI不直接拦截 Run;不在请求路径上做决议
T2 · CoordinatorTeam 级阈值注入(hitl_threshold / cost_budget);CallerIdentity 透传;审批回执路由;协作群成本聚合不存储 Policy 规则;不实施拦截;不发起 HITL 请求
T3 · Harness双守门员实施层——⑤ Policy 校验和 ⑦ HITL 审批两道门,AWAITING_HITL 状态机维护,Trace 强制写入不存配置;不画 UI;规则不落 T3 的代码
关键边界:治理是一条"配置在 T1 → 注入到 T2 → 实施于 T3"的纵向链路。规则改动只在 T1 落库;T2 在协作群上下文里组装 CallerIdentity;T3 是纯执行层——任何 Run 进 ⑤ ⑦ 时读到的就是 T1 当下生效的规则。

2. 风险矩阵

SECTION GOAL

把"什么动作算高风险"从主观判断变成可注册、可演进的工程清单:决策树两步走,三档穷举有兜底,新增动作有评估流程。

2.1 决策树:不可逆 × 影响范围

Risk Routing · 两步决策树
Tool 调用动作准备执行的外部动作
→
第一步:是否不可逆?读写差异 / 恢复成本
否 · 只读查询、检索、计算 → Low
是 · 写操作继续判第二步
第二步:影响范围?资源边界 / 受众边界
个人沙箱个人空间内可逆 → Low
项目空间团队 / 项目可见 → Medium
生产 / 金额 / 权限 / 外部不可逆 + 大影响 → High
特殊修正:BatchPhase(批量操作)强制 High;外部对外发布动作(邮件 / 公告 / API 暴露)至少 Medium。

2.2 三档穷举表

Low · 自动通过

#类别具体动作影响范围
L1只读查询检索文档、查询数据库、查日历、查天气无
L2内部生成生成草稿、整理资料、写在个人沙箱个人沙箱
L3临时计算数据汇总、格式转换、本地脚本运行个人沙箱
L4个人记忆写更新个人偏好、记录个人笔记个人范围

Medium · 本人确认

#类别具体动作影响范围
M1代码变更提交 PR、合并代码、修改 CI 配置项目空间
M2文档修改编辑共享文档、修改项目 Wiki项目空间
M3付费 API调用付费 API、调用第三方服务超阈值项目空间 + 成本
M4任务分配派单给他人、修改 OKR项目空间
M5对外消息发邮件给客户(无金额)、发 IM 通知外部可见
M6浏览器写操作表单提交、登录态操作项目空间
M7项目空间写写入项目级资源、修改项目设置项目空间
M8workspace 不可逆操作用户 workspace 内文件 / 目录删除、覆写已有文件、git reset --hard用户私有空间

M8 注解:技术隔离上沙箱挂载只能动 /data/users/<user_id>/workspace(详见 沙箱边界 §F ↗),不会越界。但用户私有空间内仍可能误删用户自己的代码 / 数据,所以走本人确认(L2)。HITL 文案必须带可判断信息:完整 path、子项数量、总大小、最近修改时间——避免审批疲劳让用户秒批。批量删除一次审批一次列表(含全部 path),不要拆成 N 次。

High · 审批人 / 双人

#类别具体动作影响范围审批级别
H1生产部署部署 / 回滚 / 重启生产服务生产环境L4 双人
H2数据破坏删除记录、清空表、降级数据生产环境L3 / L4
H3权限变更添加管理员、修改 IAM、开通访问租户全局L3
H4金额操作付款、退款、合同签订涉及金额L3
H5批量操作BatchPhase 执行(强制升级)项目 / 生产L3
H6Shell 执行沙箱外或高权限 Shell 命令项目空间 +L3
H7对外承诺含金额客户邮件、对外公告、API 公开外部可见L3

2.3 风险等级重写规则

管理员可对自动判定的风险等级进行升降级覆盖。重写记录写入治理审计表,不可物理删除。

规则说明
降级需双人批准任何 downgrade 操作需两名管理员独立批准
降级不可低于 MediumHigh → Medium 允许;High → Low 一律禁止(安全底线)
升级即时生效upgrade 操作无需等待,写入即生效
审计不可删除重写记录仅追加,含 reason / approved_by / effective_until
优先级user 级 > tenant 级 > global 级;同级别按生效时间倒序取最新

2.4 新增 Action 类型评估流程

Action Onboarding · 新动作接入治理矩阵
新增 Action 类型准备接入治理矩阵
→
填写动作属性不可逆 / 影响范围 / 是否对外
→
跑决策树自动产出 Low / Med / High
注册风险矩阵表分配编号 + 落表
→
治理委员会评审认可或调整等级
→
部署到 Policy 引擎规则正式生效

评估检查清单:

  1. 确认动作的不可逆性(是否能 5 分钟内恢复原状)
  2. 确认影响范围(个人沙箱 / 项目空间 / 生产环境 / 外部可见)
  3. 确认是否涉及金额、权限变更、数据删除
  4. 确认是否对外发出消息(邮件 / IM / 公告 / API)
  5. 对应 Skill 等级是否匹配(L1 沙箱内 / L4 系统级)
  6. 在风险矩阵表中注册并分配编号
  7. 提交治理委员会评审通过

3. Policy 自动规则

SECTION GOAL

定义守门员一号(⑤ Policy)的规则结构、四类规则的语义、决议输出契约。Policy 处理"已知规则",毫秒级返回。

3.1 评估输入与决议输出

Policy 引擎在 ⑤ Policy 校验步骤接收"Plan + CallerIdentity + 上下文",按规则路由分发到四类引擎,最后统一输出三选一决议。

项载荷来源
Plan步骤序列 / DAG / tool_calls / budget_estimate④ Plan 规划输出
CallerIdentityuser_id / role / tenant_id / team_id / workspace_idT2 通过 caller_extra 注入
Skill 元数据skill_id / level / hitl_risk_level / 沙箱要求③ Skill 加载锁定
动作属性是否不可逆 / 影响范围 / 是否对外Skill 声明 + Plan 推断
预算上下文Run 已用 / User 日 / Workspace 月 / Skill 单价成本治理实时聚合

决议输出三选一:

决议含义下一步
pass所有规则通过,可以直跑→ ⑥ Tool 调用
reject命中已知拒绝规则(成本超限 / 权限缺失 / 安全护栏)→ ⑧ Trace → CLOSED_REJECTED
await_hitl风险判定为 high,需要人工授权→ AWAITING_HITL → ⑦ HITL

3.2 四类规则

结构性规则 · 校验 Plan 自身的合法性,最先执行。

规则检查点命中行为
DAG 合法性步骤间依赖无环 / 无悬空引用reject · 原因:plan_dag_invalid
步骤上限steps 数量 ≤ 当前 tier 上限reject · 原因:plan_too_long
BatchPhase 标记批量步骤必须 requires_authorization=true升级为 await_hitl
Skill 引用一致性tool_calls 引用的 skill_id 在加载列表内reject · 原因:unknown_skill_ref

权限规则 · 基于 RBAC 矩阵和 Skill level 校验。

规则检查点命中行为
Skill 可见性CallerIdentity 是否有权使用该 Skillreject · 原因:skill_not_visible
Workspace 边界动作目标资源是否属于 caller 可访问 workspacereject · 原因:cross_workspace_denied
租户隔离跨 tenant 的资源访问reject · 一票否决
Team 级 hitl_thresholdTeam 配置 high 阈值低于全局默认时收紧升级为 await_hitl

成本规则 · 在 Tool 执行前预扣,超限即拒。

规则检查点命中行为
Run 级 token 上限Plan budget_estimate ≤ tier 配额reject · 原因:run_budget_exceeded(详见第 7 章)
User 日预算用户当日累计 + 预估 ≤ 日上限reject · 原因:user_daily_exceeded
Workspace 月预算工作区当月累计 + 预估 ≤ 月上限升级 await_hitl L4 或自动降级
Skill 单次成本单步 Skill 预估超阈值升级 await_hitl
Escalation 门控Plan 已 escalate 次数 ≤ 上限(默认 2)reject · 原因:escalation_capped

安全护栏 · 拦截已知危险模式,独立于风险矩阵硬规则。

规则检查点命中行为
敏感字段写Plan 含写 OAuth / 密钥 / PII 字段的步骤reject · 一票否决
跨租户串数据动作目标 tenant ≠ caller tenantreject · 一票否决
外部出站白名单HTTPS 请求域名不在租户白名单内reject 或 await_hitl(按租户配置)
提示词注入特征用户输入命中已知 prompt injection 模式reject · 原因:prompt_injection_suspected
Shell 命令模式命中黑名单(rm -rf 根、kill -9 1 等)reject · 一票否决

3.3 规则优先级与短路

四类规则按"结构性 → 安全护栏 → 权限 → 成本"顺序短路评估:任一类命中拒绝即直接返回 reject 决议,不再评估后续。这保证:结构非法不会被算成本浪费时间;安全一票否决永远第一线;成本规则放最后是因为它最有可能"升级到 HITL"而非"直接拒"。

每条命中的规则都会单独写入 PolicyTrace(rule_id / 决议 / 原因 / 用时),即使被短路也不丢。


4. HITL 四级审批

SECTION GOAL

定义守门员二号(⑦ HITL)的四级审批模型、触发条件、超时升级链路、审批人权限。HITL 处理 Policy 给不出确定答案的边缘场景。

4.1 四级审批模型

级别名称触发条件审批人典型时延
L1自动通过风险 Low / 只读 / 个人沙箱写无实时(绕过 ⑦)
L2本人确认风险 Medium / 项目空间写 / 中等成本任务发起者秒级(inline 确认)
L3审批人审批风险 High / 金额 / 权限变更 / Skill L4指定审批人(直属上级 / 项目 Owner)分钟到小时
L4双人复核生产操作 / 数据破坏 / 跨租户 / Break-Glass两名独立审批人数小时

升级链路只有一条:L2 超时 → L3;L3 超时 → L4;L4 超时 → 终态 CLOSED_REJECTED(不再无限升级)。

4.2 每层权限模型

审批层谁能批准拒绝权限修改权限
L2任务发起者本人本人可拒绝自己的操作不可修改 Plan 参数
L3指定审批人(上级 / Owner)审批人可拒绝审批人可修改参数后批准
L4两名独立审批人任一人拒绝即驳回需两人一致修改才能改写
L4 · 平台平台管理员(Break-Glass / 跨租户争议)管理员可拒绝管理员可修改并加批注

4.3 超时升级链路

当前级别首超时阈值升级动作二超时阈值终态动作
L2 · 本人确认5 分钟升级到 L3 · 通知直属上级——
L3 · 审批人审批2 小时升级到 L4 · 通知上级审批人24 小时TIMEOUT → CLOSED_REJECTED
L4 · 双人复核4 小时(每人 2 小时)升级到平台管理员通道——
L4 · 平台管理员48 小时——TIMEOUT → CLOSED_REJECTED

超时由独立的"看门狗"进程定时扫描 AWAITING_HITL 状态的 Run,命中阈值即推进升级或终态。看门狗每次检查都写一条 HITLTrace 记录"等待时长 / 当前级别",便于事后分析瓶颈。

4.4 审批记录契约

字段含义
record_id审批记录 UUID
run_id关联的 Run
hitl_levelL1 / L2 / L3 / L4
risk_levellow / medium / high
requester_id发起人
reviewer_id审批人(L4 时为列表)
decisionapprove / reject / skip / timeout
comment审批意见(拒绝时必填)
modified_action审批人修改后的动作(如有)
decided_at决议时间戳
escalation_from从哪一级升级而来(如有)
break_glass是否走紧急通道(详见第 6 章)

所有审批记录通过 ⑧ Trace 通道写入审计表,仅追加、不可修改。审批 UI 的查询入口按 run_id / requester_id / reviewer_id / hitl_level / decision / 时间范围聚合检索。


5. AWAITING_HITL 持久化

SECTION GOAL

HITL 是异步审批,等待期间 Run 不能被当作"挂起任务"丢掉——状态、上下文、沙箱必须全部留住。这一章定义这条 D3 不变量的工程实现。

5.1 状态机定位

AWAITING_HITL 是 11 个 RunState 中唯一可由外部唤醒的中间态。它的合法转移有三条出路:通过审批 → 回到 EXECUTING 续跑;拒绝 → 进 TRACING → CLOSED_REJECTED;超时 → 进 TRACING → CLOSED_REJECTED。状态机不允许 AWAITING_HITL 直接进 CLOSED_*,必须先经 ⑧ Trace。

5.2 三个不释放

资源不释放原因实现要点
RunState批准回来要回到 EXECUTING 续跑,丢了状态就要重跑前 6 步RunState 持久化在 Redis + MySQL 双写;TTL 按最长审批时延 ×2 设置
上下文AssembledContext + Plan 必须可还原;Skill manifest_hash 必须锁住上下文以 hash 存储,走 ⑧ Trace 同样的 hash 链;批准时按 hash 还原
沙箱容器容器内可能已经有"准备好的工作目录 / 已下载依赖",回收要重做沙箱 Provider 上 Run 的 lifecycle 与 RunState 绑定;AWAITING_HITL 期间标记 idle 但不回收

5.3 续跑契约

批准回来时,HITL 控制器把审批记录附加到 caller_extra,向 T3 发"通行 + 审批人修改后的参数(如有)"信号。T3 按以下步骤恢复:

  1. 核对 RunState 仍在 AWAITING_HITL(防止重复批准 / 已超时)
  2. 如审批人改了参数,用 modified_action 替换 Plan 中对应 tool_call 的入参
  3. 状态转移 AWAITING_HITL → EXECUTING
  4. 沙箱拉起 idle 容器到工作态,直接进 ⑥ Tool 执行
  5. Tool 执行完后正常进 ⑧ Trace,HITLTrace 链接到 PolicyTrace 形成完整决议链

5.4 超时与僵尸 Run

独立看门狗进程每分钟扫描所有 AWAITING_HITL 的 Run:到达终极超时阈值(L4 平台管理员 48 小时)→ 强制 TIMEOUT → 进 ⑧ Trace → CLOSED_REJECTED → 释放沙箱。事后告警通知 requester 与最后一级审批人。

对于"看门狗自身挂了"的情况,部署架构上看门狗是无状态的多实例 + 抢锁;MySQL 上有冗余的扫描查询作为兜底,最坏情况下一天内必然回收所有僵尸 Run。


6. Break-Glass · 紧急通道

SECTION GOAL

定义"紧急通过"的工程边界——只缩短等待,不绕审计。Break-Glass 不是后门,它是一条"用速度换事后审查强度"的合规通道。

6.1 三个不变量

不变量含义
身份不绕Break-Glass 仍要 CallerIdentity 完整鉴权;权限矩阵仍生效,没权限的人不能 Break-Glass 自己没权限的动作
Policy 不绕四类规则仍跑——结构 / 权限 / 成本 / 安全护栏一项不少;只是把 await_hitl 的等待时长压短到分钟级
Trace 不绕HITLTrace.break_glass=true 写入审计表;事后审查任务自动创建

6.2 触发条件与申请字段

字段说明
触发场景只允许"生产事故止血 / 安全事件响应 / 高优先客户合同窗口"三类
原因描述必填,至少 50 字;描述紧急原因 + 不走正常审批的理由
申请人需是对应资源的合法操作人,且通过当前级别的权限矩阵
实时通知申请同时通知平台管理员和正常审批链路上的所有审批人
事后审查窗口48 小时内必须完成事后审查,否则封禁该用户后续 Break-Glass 一个月
频率限制同一用户每月最多 3 次;同一 Workspace 每月最多 10 次

6.3 与正常审批的差异点

正常 L4 走完整异步审批,等待时长 = 审批人 SLA(小时级);Break-Glass 改为"申请即走,平台管理员有 5 分钟窗口可中止"。差异只发生在审批通道这一段,前后链路(鉴权 / Policy / Trace / 沙箱)一致。

阶段正常 L4Break-Glass
鉴权完整 RBAC完整 RBAC(不变)
Policy 评估四类规则四类规则(不变)
等待审批异步等待人审5 分钟管理员中止窗口
Trace 写入HITLTraceHITLTrace + break_glass=true + 申请原因
事后审查无48 小时内必审;不通过 → 封禁

6.4 异常路径

情况处理
5 分钟内管理员主动中止Run 直接进 ⑧ Trace → CLOSED_REJECTED;Break-Glass 申请记一次"被中止"
事后审查未通过生成安全事件报告;该用户 Break-Glass 权限封禁一个月
申请理由低于 50 字 / 频率超限申请直接 reject,不进入紧急通道
申请人无对应资源权限权限矩阵拦截,返回 403;不算 Break-Glass 次数

7. 成本治理

SECTION GOAL

把"成本"作为治理的第四类规则,覆盖 Run / User / Workspace / Skill 四个维度,超限触发拒绝、降级或升级 HITL,让平台不会因为某一个失控的 Run 把全月预算烧光。

7.1 四维度限额

维度典型阈值命中行为聚合粒度
Run 级token 上限按 tier 阶梯:trivial 3K / simple 8K / standard 25K / complex 60K / epic 120KPlan 预估超限直接 reject;Tool 执行中实时超限触发 Run FAILED每 Run 独立
User 级日预算(按用户角色 / 套餐配置)当日累计接近时降级模型;超限 reject 或转 await_hitl L4按 user_id 当日聚合
Workspace 级月预算(按工作区合同配置)80% → 通知 Owner;100% → 强制降级;120% → 写操作必须 L4 审批按 workspace_id 当月聚合
Skill 级单次成本阈值(按 Skill 单价)单步 Skill 预估 > 阈值 → 升级 await_hitl按 skill_id 单次

7.2 八步管道的成本归集

步骤成本类型归集口径
① Run 创建0仅状态机写入,无 token
② Context 装配input tokenssystem + history + memory 召回的 token 量
③ Skill 加载0内存读取,仅 metadata
④ Plan 规划input + output tokensLLM 推理;可能跨多 stage
⑤ Policy 校验0本地规则评估
⑥ Tool 调用Tool 内部消耗Skill 自身的 token / 沙箱时长 / 第三方 API 单价;按 skill_id 聚合
⑦ HITL 审批机会成本等待期间不烧 token,但占沙箱资源 → 折算"沙箱 idle 单价"
⑧ Trace 留痕0批写到 OSS / MySQL,不计 token

每步的 token 与时延通过 ⑧ Trace 写入 CostTrace;按 Run / User / Workspace / Skill 四个维度的 GROUP BY 聚合即可生成各级仪表板。

7.3 超限降级策略

Cost Degradation · 超限降级链路
正常执行主模型 + 全 Skill
→
当前预算利用率?实时聚合 User 日 / Workspace 月
< 80%Normal 正常执行
80% – 100%L1 降级:切低成本模型,暂停 Skill L3 / L4
100% – 120%L2 降级:全部低成本模型,仅保留 L1 Skill
> 120%L3 降级:仅只读;写操作转 HITL L4 审批
恢复链路:L1 在预算回落到 70% 时自动恢复 Normal;L2 先回到 L1;L3 必须管理员手动解除。

7.4 超限告警与白名单升级

告警触发条件严重度动作
RunBudgetExhaustedHighbudget_exhausted 持续 > 1/secinfo通知运维检查 tier → budget 映射
TokenOverrunHighp95 output tokens > 200Kinfo排查 Agent 是否陷入循环
CostSpikeDetected单 Run 成本 > tier 平均值 3 倍warning自动触发降级 + 通知 Workspace Owner
UserDailyExceeded用户日消耗 > 日预算warning限制非关键 Skill 调用
WorkspaceMonthlyCritical月消耗 > 月预算 80%critical强制降级 + 通知 Workspace Owner + 平台管理员

Escalation 白名单:单个 Plan 最多 2 次预算追加,每次最多 8 个 jobs,理由必须命中白名单(stage1_underestimated / attachment_workload_grew / user_requested_more / admin_override),否则 reject。

7.5 仪表板与 Trace 字段对齐

面板核心指标数据源
Token 消耗趋势实际 output / thinking tokens(按 tier 分组 p50 / p95)CostTrace 时间序列聚合
Skill 成本排行Top 10 高成本 SkillCostTrace GROUP BY skill_id
预算利用率当前 / 预算 比率(按 Run / User / Workspace 三档展示)实时聚合 + Trace 持久化
降级事件L1 / L2 / L3 触发次数降级控制器写入的事件流
HITL 等待成本沙箱 idle 时长 × 单价HITLTrace 等待时长字段
Workspace 成本汇总按 Workspace 聚合的日 / 月成本CostTrace + caller_extra.workspace_id

所有仪表板的数据来源都是 ⑧ Trace 写入的 CostTrace + HITLTrace;不存在另起一套度量的"影子表",保证账单与审计一致。