前言¶
在 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。