dsh-security-judge
Manifest validCode security defense review judge for DeepSeek Harness: detects sessions that are writing code, reviews them against the Code Security Defense Architecture Rules, recommends which security architectu
代码安全防御规则评审判官(dsh-security-judge)
审核正在写代码的会话有没有按《代码安全防御架构规则》v1.0(强制性规则)做代码安全防御、 加入了哪些代码安全防御架构、这些架构之间会不会冲突;用户授权后,未通过评审的代码任务不能算完成。
它做什么
- 自动识别所有活跃会话,判断哪些会话正在做代码(写入/编辑代码文件、构建/测试命令、项目特征), 非代码会话不评审。
- 推荐代码安全防御架构:按技术栈(Android / 服务端 / Web / 桌面 / IoT / AI)与项目特征, 给出这个程序需要几种核心架构(1 种 / 2 种 / 多种)、分别属于哪个层面、为什么需要。
- 检查架构冲突:对推荐架构、会话声明的架构、代码里实际出现的反模式做两两冲突检查 (硬冲突 / 重叠 / 张力),每条都带处理建议;未登记处理结论会阻断评审。
- 规则评审:按 A–J 十组 72 条规则(L1 强制 54 条、L2 基线 12 条、L3 建议 6 条)评审:
- 代码类规则用自动检查扫描本会话写入/编辑过的代码文本,命中即违规;
- 文件类规则检查本会话是否改到对应文件(锁文件、SBOM、混淆配置、签名材料等);
- 其余规则要求会话 AI 在
security_judge工具里逐条提交证据; - L1 不可豁免;L2/L3 由用户在面板登记豁免理由(180 天有效)。
- J 组(分发与可迁移性):检测到要产出安装包时强制做真实分发自检——包清单/入口/资源/bundle patch/绝对路径/依赖可安装性,
保证评审合格的安装包发给别人也装得上、用得了(详见
lib/dist.js)。 - 计数口径:《代码安全防御架构规则》v1.0(2026-10-28)共 67 条安全规则(A–I 九组),本插件 A–I 与之对齐; J 组 5 条是交付规则,不计入 67 条安全规则总数——安全评审按 67 条计,交付评审另计 5 条(共 72 条)。
- 提醒与门禁(需要用户授权):
- 首次检测到写代码时向会话注入评审提醒;
- 评审未通过 = 不合格,不合格必须重做,默认合格为止:每个回合收尾时,如果代码会话不合格,
就拦截「算完成」,要求继续修复/补齐架构/提交评审,直到
verdict=pass(合格); - 默不设重做次数上限(
maxEnforcePerSession=0);用户可自行设保护阈值,或随时在面板 「暂停强制重做」(暂停后结论仍是不合格,只是暂停自动催办)。
- Web 面板:侧栏「代码安全评审判官」入口,展示授权状态、所有会话、推荐架构与「需要几种」、 架构冲突、规则进度、失败/缺失项、规则目录、架构目录、冲突矩阵与设置。
权限边界(底层逻辑,不可修改)
- 本插件权限低于用户最高权限,只用于代码安全防御规则与架构的评审。
- 可以:读取/汇总会话里已经产生的代码与工具痕迹;授权后向代码会话注入评审提醒、拦截未通过评审的代码任务。
- 不能:修改代码、修改配置、代替用户做决定、读取与代码安全防御无关的内容。
- 授权必须由用户给:未授权时插件只读观察,不注入、不拦截。授权入口在面板的「授权」卡, 需要用户两次确认;插件自己不能授权自己。
安装
1. 插件市场(推荐)
DSH Plugins → Discover 搜索「代码安全防御规则评审判官」或 dsh-security-judge,一键安装。
条目数据:data/plugins/youchen-yc__dsh-security-judge.yml(awesome-dsh-plugin 仓库)。
2. GitHub Release 预构建包
从 Releases 下载
dsh-security-judge-1.5.3.tgz,在 DSH 里用 plugin_manager 的 install_bundle 指向该 tarball。
3. 从 GitHub / Gitee 源码
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);1.6.0 需重新授权 npm token 后发布。
plugin_manager install_bundle target: dsh-security-judge
5. 本地目录
plugin_manager install_bundle target: F:\DSH1.0\security-judge
安装后侧栏出现「代码安全评审判官」,插件列表里出现「代码安全防御规则评审判官」。
使用
会话内口令:检查审核评审该会话
在任意已有会话里对 AI 说:
检查审核评审该会话
评审判官会自动受理(也识别「评审这个会话的代码」「代码安全防御评审」「review this session」等说法):
- 回看该会话最多 2000 条历史事件(超过 24 小时的旧代码工作也会找回来),把该会话做的软件 / 插件 / 代码纳入评审;
- 面板对应会话显示「用户已要求评审」;已授权时会向该会话注入受理通知,未授权时只读受理、不注入;
- 不合格就要求该会话按规则重做,直到合格;确实没有代码工作时如实提示不涉及。
面板里每个会话的「评审该会话」按钮走同一套受理逻辑。
- 打开面板 → 「授权」卡 → 请求用户授权 → 确认授权。
- 在设置里选模式:
advisory只提示:只记录评审结论,不打断;remind提醒:不合格时向代码会话注入提醒;block阻断(默认):不合格的代码任务不能算完成,会一直要求重做到合格(需要授权)。 重做上限默认0 = 合格为止;如担心死循环可设一个阈值,或点会话里的「暂停强制重做」。
- 会话 AI 通过
security_judge工具自检与提交:action=status:本会话的代码识别、推荐架构、冲突、评审状态;action=checklist:适用规则逐条状态;action=architectures:这个程序需要几种架构、有哪些冲突;action=submit:提交证据{ architectures?, rules: { "A-02": { verdict:"pass", evidence:"…" } }, notes? };action=conflict-ack:登记架构冲突处理结论;action=authority:查看/请求用户授权。
评审结论怎么算
- 通过:范围内每条 L1 都自动通过或带证据通过;L2 全部满足或已豁免;所有架构冲突已登记处理结论。
- 不合格:任何 L1 自动命中违规、L1/L2 缺证据、冲突未登记、L1 被尝试豁免。
不合格必须重做;只有重新提交并得到
verdict=pass才算合格。 - 失效:合格之后又写了新代码,评审自动失效,需要重新提交并再次合格。
连续不合格后的「教学模式」
连续 2 次不合格后,评审判官不再只喊「重做」,而是开始教该会话 AI 怎么做:
- 回合收尾拦截时,在提醒后面附带教学单:先修哪个自动命中项、每个问题怎么改(改哪个文件、换成什么库/配置)、 哪些规则要按什么判定标准补证据、补哪个核心架构怎么落地、架构冲突怎么登记、分发自检问题怎么修;
- 教学单里带可直接照抄的
action=submit提交格式(rules / evidence / architectures); - 会话 AI 也可以随时调用
security_judge action=coach获取完整教学计划(结构化 + 中文文本); - 面板对应会话显示「已进入教学模式」。
教学单不会代替评审:改完仍要提交,直到 verdict=pass(合格)。
数据与隐私
- 扫描只读取会话事件(工具名、文件路径、写入的代码文本片段)和会话的工作目录文件名,不读与代码无关的文件内容。
- 持久化只有三样:授权状态、设置、评审历史(80 条),位置:
$DSH_PROFILE_DIR/security-judge-data/state.json(没有 profile 时用~/.dsh/security-judge-data/)。 - 会话扫描与代码片段是内存态,不落盘。
- 面板接口鉴权:每次加载生成随机页面令牌,只注入当前页面;写操作(授权/撤销/设置/评审/豁免/冲突登记等 POST)
必须带
x-security-judge-token,缺失/错误 401;跨站 Origin 一律 403。只读 GET 不要求令牌(同源页面直接读, 跨站读取被浏览器同源策略挡住)。令牌不落盘、不写日志、不出现在响应里。 残余风险:能读取本机页面 HTML 的本机进程仍可拿到令牌,这属于本机进程权限问题,不在插件可隔离范围内。
已知边界
- 自动检查是启发式规则匹配,只覆盖规则里可判定的部分;不能被自动判定的规则必须由会话 AI 提交证据, 面板不会替它编造证据。测试 / 夹具文件(路径含 test、spec、fixtures 等)会被自动检查跳过, 避免测试数据里的弱哈希样本被当成生产代码违规。
- 面板只展示「正在运行」或「最近 30 分钟内做过代码」的会话;更早的旧会话不追溯评审。
- 拦截的实现是「在回合收尾时把评审要求再推进会话一步」,不是撤销会话日志;默认合格为止、 不设次数上限;担心死循环可在设置里设阈值,或在面板「暂停强制重做」(暂停后仍是不合格)。
- 架构冲突矩阵来自《代码安全防御架构资料汇编》;冲突处理结论由用户/会话 AI 判断并登记,插件只负责检查与提醒。
- 分发自检是静态包结构检查(清单/入口/资源/补丁/绝对路径/依赖),不替代「在另一台机器实际安装一次」;
插件自身提供
dist/下的可分发 tarball 与干净目录验证记录,可按同样方式验证其他项目。 - Host 插件的代码更新需要重启 DSH 才会加载新模块;面板界面在页面刷新后使用新客户端资源。
开发流程(本机维护)
- 本插件当前为本机使用、冻结版本:修改代码后不 bump 版本、不发布,只做本地
remove_bundle→install_bundle让 Host 重载;两者之间有短暂空窗,别在这时并行跑评审。 remove_bundle/install_bundle会重置本会话的文件读取状态:重装之后要编辑文件, 先重新read一次,再edit/write。撞到file has not been read是保护机制,不是 bug。- 测试入口:
npm test(引擎、Host 核心、教学模式、分发自检、回归 fixture 共 507 项)。 - 代码改动会使评审失效、回 pending,需要重新提交。
- 文档改动(README / SECURITY.md / CHANGELOG)不影响评审状态,但文档不能替代代码检查—— 把不安全的做法写进文档同样是漏洞。
- 用户重新请求评审(「检查审核评审该会话」)会让会话回到 pending,需要重新提交。
规则与架构来源
- 《代码安全防御架构规则》v1.0(2026-10-28):A–I 九组 67 条,含 L1/L2/L3 与豁免条款; 本插件在此基础上补充 J 组「分发与可迁移性」5 条(按用户的发布要求)。
- 《代码安全防御架构资料汇编》(2026-10-28 核对版):判据层、理论层、骨架层、方法层、 供应链安全、AI 层、后量子、授权换代、运行时、合规。
文件
index.js:Host 入口(工具、系统提示、HTTP 接口、事件装配)。lib/core.js:会话跟踪、授权门禁、面板状态、工具动作。lib/engine.js:代码识别、架构推荐、冲突检查、规则评审、提醒文本。lib/catalog.js:规则目录、架构目录、冲突矩阵、自动检查模式。lib/dist.js:分发包自检(包清单/入口/资源/bundle patch/绝对路径/依赖可安装性)。lib/store.js:授权/设置/历史持久化。lib/httpapi.js:面板接口。client.js:Web 面板。test/selftest.mjs:引擎自测(node test/selftest.mjs)。
Versions
| Latest version | Published | Size |
|---|---|---|
| 1.7.0 | — | — |
Comments
Loading…
Similar plugins
by luomeii
DeepSeek Harness 并行多角色代码评审插件:/review 派出安全/正确性/测试/风格四名只读评审员子代理(可各自指定模型与思考强度),汇总为结构化报告。
★ 1
↓ 72/wk
MIT
JavaScript
Sep 20, 2026
dsh plugin --profile web add dsh-review-squadby SteelUnion
DeepSeek Harness gate - per-turn persistent-operation counter: remind, instruct the model to stop, then ask for confirmation. Steps aside under sandbox/read-only modes; follows a live permission switch without restart. Verified on real hardware (full -> workspace-write -> read-only -> full). Crafted on an estimated 0.27 USD of model spend.
★ 29
MIT
JavaScript
Oct 27, 2026
dsh plugin --profile web add @sroada/dsh-confirm-gateby jkrandom-sudo
Security audit for DeepSeek Harness plugins: static permission profile with file/line evidence + a runtime sentinel gating credential access and unknown-host egress · DSH 插件安全审计:静态权限画像(附文件/行号证据)+ 运行时哨
★ 4
↓ 85/wk
MIT
TypeScript
Sep 11, 2026
dsh plugin --profile web add dsh-plugin-auditby 9931666
Crossfire (针锋) for DeepSeek Harness: put a settled result on the stand, let red-team experts attack it from chosen dimensions, and adjudicate every single defect yourself. The machine only finds flaws; the human always owns the verdict.
★ 1
TypeScript
Oct 25, 2026
dsh plugin --profile web add @y9931666/dsh-plugin-crossfireby PerryLink
Second-model AI auto-review for DeepSeek Harness approval requests: a read-only reviewer subagent returns structured allow/deny verdicts with reasons, fail-closed by default, fully auditable from the
★ 245
↓ 2.1k/wk
Apache-2.0
TypeScript
Oct 31, 2026
dsh plugin --profile web add dsh-auto-reviewby PerryLink
Claude Code-style declarative permission rules for DeepSeek Harness: ordered allow/deny/ask rules with tool-name, argument (glob/regex), and workspace-path matching on the tools/pre-execute waterfall,
★ 136
↓ 1.4k/wk
Apache-2.0
TypeScript
Oct 27, 2026
dsh plugin --profile web add dsh-permission-rules