Skip to content

05 · 风险分档与倒计时矩阵

Risk tiers × timeout actions

5.1 静态风险分档 classifyStaticRisk index.ts:L1651-1679

档位判定含义
LOWassessTool(...).decision === 'allow'静态评估认为安全(工作区内读/写、只读查询、常规命令)
HIGHreason 命中 RISK_REASON_PATTERN 或 工具名命中 RISK_NAME_PATTERNdestructive / external write / credential / security-boundary…
DENYassessTool(...).decision === 'deny'riskFromAssessmentdecision.ts:L436-440静态引擎判死(凭据/受保护/插件运行态目标),走策略层终端拒绝
MEDIUM其余一律「需要语义判断」的模糊区(含评估为 ask 的全部)

返回形状除 risk 外可携带 reason? / assessment? / category? / directive? / mode?——类别标签与指令随风险一次算出,供决策序的类别层与审计字段复用。

单一事实源 风险正则集中在 risk-tokens.ts(NAME 匹配 delete/destroy/remove/…/credential/secret/auth 等约 30 个动词;REASON 匹配 external write/security-boundary/destructive/protected path/credential/private-key/stateful terminal)。

5.2 倒计时秒数 riskSeconds —— 默认 5 / 8 / 10

档位默认秒数来源
LOW5 sTHRESHOLD_DEFAULTS.lowRiskSeconds(constants.ts:L7)
MEDIUM8 s…mediumRiskSeconds(L8)
HIGH10 s…highRiskSeconds(L9)

单一事实源

倒计时(5/8/10)、熔断(3/20)、截断(4000)等数值默认值唯一集中在 src/auto/constants.tsTHRESHOLD_DEFAULTS;host schema、host 回退、客户端草稿/重置均引用同一常量。查默认值以代码(constants.ts)为准,README 仅为速查(已同步 5/8/10)。

5.3 超时动作矩阵 riskTimedOutAction index.ts:L294-299

「没人回答,倒计时走完」之后做什么,由 timeoutAction × 风险档 × 是否 unattended 三方决定:

配置 \ 风险LOWMEDIUMHIGH说明
reject(默认)拒绝拒绝拒绝拿不准就「不做」—— fail-closed 基线
low-risk-allow放行拒绝拒绝只放行低风险,中高危仍拒
allow放行放行放行用户显式「全放」—— 强烈不建议
unattended 模式放行放行转人/拒绝无人值守:HIGH 永不自动放行,覆盖 timeoutAction

5.4 LLM 参与范围(两个施力点)

配置取值含义
llmReviewScope
哪些档送 LLM 复审
low-or-above(默认)全部档都送
medium-or-above仅 MEDIUM + HIGH
high仅 HIGH
llmTakeoverScope
哪些档允许 LLM 结论直接接管
medium-or-below(默认)LOW + MEDIUM 可被 LLM 结论直接结案
low仅 LOW
high-or-belowmedium-or-below 等价:HIGH 永远只建议、不接管(高危由人/超时兜底)。该取值保留仅为兼容旧配置,不建议新用

默认姿态

全部档都送审(low-or-above),但只有 LOW/MEDIUM 允许 LLM 直接拍板(medium-or-below)—— 高危永远是人的事。high-or-below 并不放开 HIGH 接管:HIGH 分支只有建议、没有人/超时以外的决议方。