DSH Plugins Marketplace

DSH Plugins

Plugins

/

Security & Audit

/

dsh-security-judge

d

dsh-security-judge

Manifest valid

Code 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

UI (client)hasBundlePatch

代码安全防御规则评审判官(dsh-security-judge)

审核正在写代码的会话有没有按《代码安全防御架构规则》v1.0(强制性规则)做代码安全防御、 加入了哪些代码安全防御架构、这些架构之间会不会冲突;用户授权后,未通过评审的代码任务不能算完成。

它做什么

  1. 自动识别所有活跃会话,判断哪些会话正在做代码(写入/编辑代码文件、构建/测试命令、项目特征), 非代码会话不评审。
  2. 推荐代码安全防御架构:按技术栈(Android / 服务端 / Web / 桌面 / IoT / AI)与项目特征, 给出这个程序需要几种核心架构(1 种 / 2 种 / 多种)、分别属于哪个层面、为什么需要。
  3. 检查架构冲突:对推荐架构、会话声明的架构、代码里实际出现的反模式做两两冲突检查 (硬冲突 / 重叠 / 张力),每条都带处理建议;未登记处理结论会阻断评审。
  4. 规则评审:按 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 条)。
  5. 提醒与门禁(需要用户授权):
    • 首次检测到写代码时向会话注入评审提醒;
    • 评审未通过 = 不合格,不合格必须重做,默认合格为止:每个回合收尾时,如果代码会话不合格, 就拦截「算完成」,要求继续修复/补齐架构/提交评审,直到 verdict=pass(合格);
    • 默不设重做次数上限(maxEnforcePerSession=0);用户可自行设保护阈值,或随时在面板 「暂停强制重做」(暂停后结论仍是不合格,只是暂停自动催办)。
  6. 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 小时的旧代码工作也会找回来),把该会话做的软件 / 插件 / 代码纳入评审;
  • 面板对应会话显示「用户已要求评审」;已授权时会向该会话注入受理通知,未授权时只读受理、不注入;
  • 不合格就要求该会话按规则重做,直到合格;确实没有代码工作时如实提示不涉及。

面板里每个会话的「评审该会话」按钮走同一套受理逻辑。

  1. 打开面板 → 「授权」卡 → 请求用户授权 → 确认授权。
  2. 在设置里选模式:
    • advisory 只提示:只记录评审结论,不打断;
    • remind 提醒:不合格时向代码会话注入提醒;
    • block 阻断(默认):不合格的代码任务不能算完成,会一直要求重做到合格(需要授权)。 重做上限默认 0 = 合格为止;如担心死循环可设一个阈值,或点会话里的「暂停强制重做」。
  3. 会话 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 versionPublishedSize
1.7.0——

Comments

Loading…

Similar plugins

dsh-review-squad

by luomeii

DeepSeek Harness 并行多角色代码评审插件:/review 派出安全/正确性/测试/风格四名只读评审员子代理(可各自指定模型与思考强度),汇总为结构化报告。

Workflow & AutomationDevelopment & InfrastructureTerminal & ClientsManifest valid

★ 1

↓ 72/wk

MIT

JavaScript

Sep 20, 2026

dsh plugin --profile web add dsh-review-squad

by 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.

Security & AuditDevelopment & InfrastructureManifest valid

★ 29

MIT

JavaScript

Oct 27, 2026

dsh plugin --profile web add @sroada/dsh-confirm-gate

by 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 插件安全审计:静态权限画像(附文件/行号证据)+ 运行时哨

Manifest valid

★ 4

↓ 85/wk

MIT

TypeScript

Sep 11, 2026

dsh plugin --profile web add dsh-plugin-audit

by 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.

Workflow & AutomationSessions & MessagesManifest valid

★ 1

TypeScript

Oct 25, 2026

dsh plugin --profile web add @y9931666/dsh-plugin-crossfire

by 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

Security & AuditManifest valid

★ 245

↓ 2.1k/wk

Apache-2.0

TypeScript

Oct 31, 2026

dsh plugin --profile web add dsh-auto-review

by 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,

Security & AuditManifest valid

★ 136

↓ 1.4k/wk

Apache-2.0

TypeScript

Oct 27, 2026

dsh plugin --profile web add dsh-permission-rules