插件价值裁判:装前审核(源码静态扫描 + LLM 裁判)与装后审计已装插件,模型切换时弹窗提醒复核;判断插件对当前模型是增强还是压制。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-plugin-judge
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:pengxuding/dsh-plugin-judge
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
判断一个 DeepSeek Harness 插件值不值得用:装前审核,装后审计,模型切换时提醒复核。
这个插件解决什么问题
插件分两种性质:
- 能力型:给模型加新能力(新工具、skills、MCP 服务器、服务、命令)——相当于给模型"多长一只手"。
- 约束型:给模型立规则、上栅栏(注入 system prompt section、persona、写 AGENTS.md、
拦截
agent/pre-step/tools/pre-execute、restrict/guard工具、complete: true整块替换提示词)——相当于给模型"套一个笼子"。
约束型插件有一个隐蔽的代价:模型会乖乖按规则做(合规完成得好),但它真正要解决的任务 反而完成得差——规则抢占上下文、压制自主判断,等于给模型的天花板盖了一层低矮的顶。 而且模型一升级,很多"给旧模型打补丁"的规则就从补丁变成了天花板,插件随之失效甚至有害。
所以:一个插件的价值不是它单方面好坏,而是"插件 × 当前模型"的二元关系。 本插件就是做这个判断的。
功能
| 功能 | 时机 | 形式 |
|---|---|---|
| 装前审核 | 安装之前 | /plugin-audit <github:owner/repo 或 npm:pkg> 命令、judge_plugin 工具、设置页输入框。拉取插件源码 → 静态扫描 + LLM 裁判 → 给"值不值得装"结论 |
| 装后审计 | 已安装 | 枚举 profile 已装插件 → 逐个扫描分类(能力型/约束型/妆饰型/混合型)→ 压制风险分 → 设置页报告面板 |
| 模型切换提醒 | 模型改变时 | 监听默认模型变化 → 复核"结论依赖旧模型"的插件 → 浮层弹窗提醒复核 |
判定方法(两层结合)
- 规则启发式(免费、确定):对插件源码与注入内容做信号扫描,加权得 0–100 压制风险分, 分类为能力型 / 约束型 / 妆饰型 / 混合型。
- LLM 裁判(精细、按需):把扫描结果 + 注入内容摘要 + 当前模型身份 交给模型, 判断"这套规则对当前这个模型是在帮忙还是压制",输出结论与理由。
使用
# 安装(需要先有一个 web profile)
dsh plugin --profile web add dsh-plugin-judge
# 或从源码安装
dsh plugin --profile web add <本仓库路径>
装好重启 harness 后:
- 聊天里输入
/plugin-audit github:some/repo做装前审核; - 让模型调用
judge_plugin工具也可以; - 设置面板里出现「插件裁判」页面:全部已装插件的扫描报告、装前审核输入框、审核历史;
- 切换模型后,若有需要复核的插件,页面浮层会弹出提醒。
Design
数据流
已装插件: profile manifest (~/.dsh/profiles/<profile>/package.json → dsh.profile.bundles)
+ 每包的 package.json / lib 源码(node:fs 本地读取)
待装插件: npm registry / jsDelivr / GitHub raw 拉取 package.json + 入口源码(Node fetch)
启发式扫描: 能力信号(+) vs 约束信号(−) 加权 → class + 压制风险分
LLM 裁判: llm.stream(生成式判定, 携带当前模型身份) → verdict + reasons
模型监听: agentDefaultModel.currentSelection() 轮询(回退:agent/request 瀑布观察)
持久化: ~/.dsh/plugin-judge/audits.json(审核历史 + 模型指纹)
桥接: Host ctx.connection.rpc.handle('/plugin-judge', …) ← Client rpc.call 轮询
提醒: Host 产出 pending-reminders → Client 轮询 → shell.overlay 弹窗
报告: Client settings.section「插件裁判」页 + judge_plugin 工具卡片
信号表(启发式)
能力信号:tools.register / defineTool / skills / MCP / webServer.register /
registerFetchProvider / commands.register / provide( …
约束信号:systemPrompt.section / ctx.systemPrompt / persona / 写 AGENTS.md /
agent/pre-step / tools/pre-execute / tools/execute 瀑布监听 /
restrict( / guard( / complete: true 整块替换 / 强指令词密度(必须、不得、禁止、
always、never、MUST、NEVER)/ 固定模板指令(严格按照、按以下格式)…
目录
judgePlugin/
├── package.json # dsh.bundle.patch + dsh.client.inject + exports(Node >= 18)
├── cordis.patch.yml # insert: plugin-judge
├── lib/
│ └── index.js # Host 半:清单盘点 / 拉取源码 / 启发式扫描 / LLM 裁判 /
│ # 模型监听与提醒 / 工具与命令 / connection RPC 桥 / 持久化
└── client/
└── client.js # Client 半(__ModuleLoader__ 格式,无需构建):
# settings.section 报告面板 + shell.overlay 切换提醒浮层
免责声明
审核结论是启发式 + 模型判断的参考意见,不是安全审计;装任何插件都在你机器上 以你的权限运行第三方代码,安装前请自行阅读源码。
链接
同类插件
liustack/modlens★ 1465
为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
Anionex/dsh-vision-toolkit★ 372
让纯文本模型更好地做视觉任务:带意图的图片问答、长截图 OCR、UI 还原等。
zhaoolee/notes★ 141
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
Lum1104/dsh-browser★ 107
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
liustack/modsearch★ 98
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
ysr666/dsh-vision-router★ 83
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。