环境
- dsh-auto-review:0.12.3(0.12.2 同样可复现)
- 宿主:
@deepseek-ai/dsh 0.1.5-rc.2(npm next 标签),@deepseek-ai/dsh-session 0.1.5-rc.2
- 平台:Windows,web profile
症状
审查功能本身端到端正常:每个审批请求都会派生 auto-review: <tool> 一次性子代理,返回结构化裁决 {decision, reason, riskLevel},提权也据此放行/拒绝。但审查面板和 /auto-review status 的计数永远为 0:
AI verdicts this turn: 0/10
All-time: 0 allows, 0 denies, 0 fallbacks, 0 never rejects (avg 0 ms per verdict).
Session-log audit is disabled on this host: its Session.append predates the
ignorable marker and unmarked audit events would make the session unresumable...
根因
src/audit.ts(编译后在 lib/index.js)中的 isUnmarkedHostVersion():
const rc = /^0\.1\.(\d+)-rc\.(\d+)$/.exec(v);
if (rc !== null) {
const minor = Number(rc[1]);
const patch = Number(rc[2]);
return minor === 0 && patch <= 8 || minor === 1 && patch <= 2 || minor >= 2;
}
对 "0.1.5-rc.2" 求值:minor >= 2 → 5 >= 2 → true(判为 unmarked host)。minor >= 2 这个分支本意应该是覆盖 0.1.2 那条不能打标记的预发布线,但它把 0.1.3 和 0.1.5 线的所有 rc 也一并捕获了。
这与函数自己的 docstring 矛盾——docstring 列出 0.1.5 线不能打标记的版本止于 0.1.5-alpha.1,并明确写道:
Non-matching (later rc, stable 0.2+, or unresolvable) versions are treated as possibly-marker-aware and verified by the append probe.
0.1.5-rc.2 命中 rc 正则,永远走不到 append probe:auditSupport 直接被 peer 版本预检置为 "unsupported",审计 fail-closed 自行停用,autoReview/* 审计事件从不写入——而面板读的正是这些事件,于是尽管每次裁决都成功,计数恒为 0。
修复建议
两种任选:
- 把预发布线的分类限定在 docstring 所列的确实不能打标记的集合(0.1.0-rc.、0.1.1-rc.、0.1.2 全部预发布、0.1.3-alpha.2、0.1.5-alpha.1);
- 或者去掉
minor >= 2 分支,让未知的 rc 线落入 append probe——probe 在运行时本来就能正确探测标记支持。
临时解决
在插件挂载配置行加 allowUnmarkedAudit: true 即可恢复审计;在 rc.2 宿主上这是安全的,因为该宿主确实会打 ignorable 标记。
环境
@deepseek-ai/dsh0.1.5-rc.2(npmnext标签),@deepseek-ai/dsh-session0.1.5-rc.2症状
审查功能本身端到端正常:每个审批请求都会派生
auto-review: <tool>一次性子代理,返回结构化裁决{decision, reason, riskLevel},提权也据此放行/拒绝。但审查面板和/auto-review status的计数永远为 0:根因
src/audit.ts(编译后在lib/index.js)中的isUnmarkedHostVersion():对
"0.1.5-rc.2"求值:minor >= 2→5 >= 2→true(判为 unmarked host)。minor >= 2这个分支本意应该是覆盖 0.1.2 那条不能打标记的预发布线,但它把 0.1.3 和 0.1.5 线的所有 rc 也一并捕获了。这与函数自己的 docstring 矛盾——docstring 列出 0.1.5 线不能打标记的版本止于
0.1.5-alpha.1,并明确写道:0.1.5-rc.2命中 rc 正则,永远走不到 append probe:auditSupport直接被 peer 版本预检置为"unsupported",审计 fail-closed 自行停用,autoReview/*审计事件从不写入——而面板读的正是这些事件,于是尽管每次裁决都成功,计数恒为 0。修复建议
两种任选:
minor >= 2分支,让未知的 rc 线落入 append probe——probe 在运行时本来就能正确探测标记支持。临时解决
在插件挂载配置行加
allowUnmarkedAudit: true即可恢复审计;在 rc.2 宿主上这是安全的,因为该宿主确实会打ignorable标记。