Skip to content

0.1.5-rc.2 被误判为无法打审计标记:审批正常工作,但计数/审计恒为 0 #38

Description

@DobyChao

环境

  • 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。

修复建议

两种任选:

  1. 把预发布线的分类限定在 docstring 所列的确实不能打标记的集合(0.1.0-rc.、0.1.1-rc.、0.1.2 全部预发布、0.1.3-alpha.2、0.1.5-alpha.1);
  2. 或者去掉 minor >= 2 分支,让未知的 rc 线落入 append probe——probe 在运行时本来就能正确探测标记支持。

临时解决

在插件挂载配置行加 allowUnmarkedAudit: true 即可恢复审计;在 rc.2 宿主上这是安全的,因为该宿主确实会打 ignorable 标记。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions