dsh-security-judge:按《代码安全防御架构规则》做会话级评审与门禁

前言

在 DeepSeek Harness(DSH)里用智能体写代码时,安全往往依赖提示词或事后人工扫一眼,很难系统化对照一套固定规则,也很难在「任务算完成」之前拦住未达标的结果。社区插件 dsh-security-judge(代码安全防御规则评审判官)面向「正在写代码的会话」:自动识别代码工作、按《代码安全防御架构规则》v1.0 做架构推荐与冲突检查、对 A–J 规则做评审,并在用户授权后把「评审未通过」与「会话完成」分开——不合格则继续修复,直到 verdict=pass。维护者为 youchen-yc,分类为 admin-security;插件条目见 SkillHub 目录页,源码与说明在 GitHub。

这是什么

dsh-security-judge 是 DSH 的 Host 插件:权限 deliberately 低于用户最高权限,只用于代码安全防御规则与架构评审。未授权时只读观察;用户在 Web 面板「授权」卡两次确认后,才可向代码会话注入提醒,并在选定模式下拦截未通过评审的代码任务完成标记。

核心功能

下面按 README 已说明的能力逐项介绍。

自动识别代码会话

插件扫描活跃会话,依据写入/编辑代码文件、构建或测试命令、项目特征等判断是否在「做代码」。非代码会话不参与评审。

架构推荐与冲突检查

按技术栈(Android、服务端、Web、桌面、IoT、AI)与项目特征,推荐该程序需要几种核心架构(1 种 / 2 种 / 多种)、各属哪一层及理由。对推荐架构、会话声明的架构、代码中的反模式做两两冲突检查(硬冲突 / 重叠 / 张力),每条带处理建议;未登记处理结论会阻断评审。冲突矩阵来源为《代码安全防御架构资料汇编》。

规则评审(A–J,72 条)

  • A–I:与《代码安全防御架构规则》v1.0(2026-10-28)对齐,共 67 条安全规则(L1 强制 54、L2 基线 12、L3 建议 6)。
  • J 组:分发与可迁移性 5 条交付规则,不计入 67 条安全规则总数;安全评审按 67 条计,交付评审另计 5 条。

评审方式:

  • 代码类规则:自动扫描本会话写入/编辑过的代码文本,命中即违规。
  • 文件类规则:检查本会话是否改动锁文件、SBOM、混淆配置、签名材料等对应文件。
  • 其余规则:要求会话 AI 在 security_judge 工具中逐条提交证据。
  • L1 不可豁免;L2/L3 可在面板登记豁免理由(180 天有效)。
  • J 组:检测到要产出安装包时强制做真实分发自检(包清单、入口、资源、bundle patch、绝对路径、依赖可安装性),逻辑详见仓库 lib/dist.js。

自动检查为启发式匹配;测试/夹具路径(含 test、spec、fixtures 等)会被跳过,避免测试样本误判。

提醒与门禁(需授权)

首次检测到写代码时可注入评审提醒。默认模式 block:每个回合收尾时,代码会话若不合格则拦截「算完成」,要求继续修复或补齐架构并重新提交,直到 verdict=pass。默认重做上限 maxEnforcePerSession=0(合格为止);可在设置中设保护阈值,或在面板「暂停强制重做」(暂停后结论仍不合格,仅暂停自动催办)。模式还有 advisory(只记录)、remind(注入提醒)。

Web 面板

侧栏入口「代码安全评审判官」,展示授权状态、会话列表、推荐架构与「需要几种」、架构冲突、规则进度、失败/缺失项、规则目录、架构目录、冲突矩阵与设置。写操作 POST 需同源页面令牌 x-security-judge-token;只读 GET 不要求令牌。

连续不合格后的教学模式

连续 2 次不合格后,回合拦截时会附带教学单(修自动命中项、补证据、落地架构、登记冲突、分发自检等),并给出可照抄的 submit 格式;也可调用 security_judge action=coach。教学不代替评审,改完仍须提交直至合格。

评审结论

  • 通过:范围内 L1 均通过;L2 满足或已豁免;架构冲突均已登记。
  • 不合格:L1 自动违规、缺证据、冲突未登记、或试图豁免 L1;须重做并重新得到 verdict=pass。
  • 失效:合格后又写入新代码,评审自动失效,需重新提交。

安装与启用

DSH 生态里插件可通过市场、Release 包、源码目录、npm 或本地路径安装;以下命令与路径均来自项目 README,请勿自行拼接未在文档出现的 dsh plugin add 形式。

1. 插件市场(推荐)

在 DSH Plugins → Discover 搜索「代码安全防御规则评审判官」或 dsh-security-judge 一键安装。条目数据位于 awesome-dsh-plugin 仓库的 data/plugins/youchen-yc__dsh-security-judge.yml。

2. GitHub Release 预构建包

从 Releases 下载 dsh-security-judge-1.5.3.tgz,在 DSH 中用 plugin_manager 的 install_bundle 指向该 tarball。

3. 从 GitHub / Gitee 源码

克隆仓库后,用克隆目录的绝对路径作为 install_bundle 的 target(README 示例):

git clone https://github.com/youchen-yc/dsh-security-judge
git clone https://gitee.com/youchen-yc/dsh-security-judge    # Gitee 镜像
plugin_manager install_bundle  target: <克隆目录的绝对路径>

4. npm

npm 上文档记载的最新版本为 1.5.3(https://www.npmjs.com/package/dsh-security-judge);安装示例:

plugin_manager install_bundle  target: dsh-security-judge

5. 本地目录

plugin_manager install_bundle  target: F:\DSH1.0\security-judge

安装后侧栏出现「代码安全评审判官」,插件列表中出现「代码安全防御规则评审判官」。运行要求:node >= 20,dsh >= 0.2.1-rc.1(见仓库 package.json)。

启用门禁前,在面板「授权」卡完成两次确认;在设置中选择 advisory / remind / block(默认 block)。

典型用法

口令触发评审

在已有会话中对 AI 说:

检查审核评审该会话

也识别「评审这个会话的代码」「代码安全防御评审」「review this session」等说法。评审判官会回看该会话最多 2000 条历史事件(超过 24 小时的旧代码工作也会纳入),面板显示「用户已要求评审」;已授权时会注入受理通知。面板中每个会话的「评审该会话」按钮逻辑相同。

security_judge 工具

会话 AI 通过 Host 提供的 security_judge 自检与提交:

action 用途
status 代码识别、推荐架构、冲突、评审状态
checklist 适用规则逐条状态
architectures 需要几种架构、有哪些冲突
submit 提交证据,如 { architectures?, rules: { "A-02": { verdict:"pass", evidence:"…" } }, notes? }
conflict-ack 登记架构冲突处理结论
authority 查看或请求用户授权
coach 获取完整教学计划(连续不合格或主动调用)

适用场景与注意

适合谁:在 DSH 中长期用智能体改生产向代码、希望对照《代码安全防御架构规则》做结构化评审,并可选地在任务完成前强制「先过审再收尾」的团队或个人。

权限与信任:插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,自行评估是否纳入环境。插件不能代替用户改代码或改配置;授权必须由用户在面板完成。

数据:持久化仅授权状态、设置、评审历史(80 条),路径为 $DSH_PROFILE_DIR/security-judge-data/state.json(无 profile 时为 ~/.dsh/security-judge-data/)。会话扫描与代码片段为内存态,不落盘。

已知边界:面板主要展示正在运行或最近 30 分钟内做过代码的会话;分发自检是静态包结构检查,不替代在另一台机器真实安装;Host 插件代码更新需重启 DSH 后加载新模块。

结尾

dsh-security-judge 把「代码安全防御架构规则 + 架构冲突 + 可选完成门禁」收进 DSH 会话生命周期,适合作为 admin-security 类插件与现有开发流程并列使用。目录与说明:SkillHub - dsh-security-judge,GitHub - youchen-yc/dsh-security-judge。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye