前言¶
DeepSeek Harness(DSH)的插件以 Host 代码在宿主进程内运行。dsh plugin add 负责包管理,但不展示权限清单、不校验来源、不绑定内容哈希。社区里已有静态扫描器(例如 npm 上的 dsh-trust-check)能列出能力事实,却通常不直接回答:声明与检出差在哪、升级新增了哪些高权限能力、用户确认过的代码能否用哈希对上、沙箱外的网络与子进程意图能否事后追溯。
dsh-plugin-trust-broker(维护者 lightporta,分类 admin-security)面向上述缺口:在第三方插件被加载进 DSH Host 进程之前产出可复核的信任决策,并在加载后对工具调用与上下文写入做只追加审计。它只产出事实、差异、new_capability 标注和建议动作,不做「安全 / 恶意」裁决,不执行插件代码,也不替代沙箱。
这是什么¶
一句话:dsh-plugin-trust-broker 是 DSH Host 侧的信任代理 bundle,版本 0.2.0(MIT),当前 GitHub 星标为 0。
它用两种形态共用同一套核心库:
| 形态 | 入口 | 用途 |
|---|---|---|
| CLI | bin/trust-broker.mjs / npm run cli |
安装前审查、确认、写锚点、查审计;退出码可做 CI 闸门 |
| DSH Host bundle | src/plugin/index.ts(apply) |
注册运行时审计;通过 ctx.provide('trustBroker', …) 暴露 evaluate() |
目录页:SkillHub 插件页。源码:GitHub · lightporta/dsh-plugin-trust-broker。
核心功能¶
安装前:声明、事实与差异¶
插件解析 package.json#dsh.capabilities 等声明,并结合内置启发式检出(标为 heuristic: true)或与操作者信任的 dsh-trust-check 报告对齐。差异分为三类:A 声明不足、B 声明漂移、C 来源-内容不一致;每条可带 file:line 或元数据指针。只有 new_capability: true 会触发强制确认。
终端会给出来源可信度、声明状态、检出能力面、安装脚本、内容哈希与建议动作(proceed / confirm / block_for_review)。
供应链:内容哈希与信任锚点¶
对候选插件树计算规范化 content_hash(例如 sha256:…)。用户确认后可持久化 TrustAnchor;同哈希可跳过重复确认。--accept-hash 与当前哈希不一致,或审查后目录发生 TOCTOU 变化,会拒绝锚定并以退出码 2 结束。
加载后:只追加运行时审计¶
Host bundle 注册 tools/pre-execute、tools/post-execute 等钩子,记录工具名与参数摘要、是否超出声明面(scope_exceeded)、输出改写前后摘要,以及上下文注入/压缩与文件写入事件,以 JSONL 只追加方式落盘。
Web「安全审查」标签页(v0.2.0)¶
DSH 内置「添加插件」弹窗为固定组件、无可注入 slot。本插件在 Plugins → 安全审查 标签页实现等价流程:支持 npm 包名、GitHub/git 地址或本地目录;展示披露信息、能力面、哈希、差异与逐项强制确认;勾选后写锚点再交给原生 install(target)。
说明:内置「安装第三方插件」弹窗仍可绕过该审查;完全强制需 DSH 上游为该弹窗提供 slot。模型通过 plugin_manager 的 install_bundle 安装时,会在原生审批弹窗中展示同一份审查摘要。
明确不做的事¶
- 不做插件市场、评分、黑白名单或人工背书。
- 不替代
dsh-trust-check或沙箱;无声明插件走unstated降级(一次显式确认),而非一律拒绝。 - v1 不含 Web GUI 管理面板;
--json输出即自动化契约。
运行环境要求(摘自 package.json):Node ^22.19.0 || >=24.0.0;DSH >=0.2.0-rc.2 || >=0.2.1-rc.2 || >=0.2.2-rc.1。
安装与启用¶
本仓库是可安装的 bundle:package.json 声明 dsh.bundle.patch,cordis.patch.yml 插入 Host 行。安装前必须先构建,因为 main 指向 dist/plugin/index.js。
cd dsh-plugin-trust-broker
npm ci --ignore-scripts
npm run build
将下面 <本项目的绝对路径> 换成你机器上克隆或解压后的仓库根目录:
# 方式一:DSH Plugin Manager
plugin_manager(install_bundle, target: "<本项目的绝对路径>")
# 方式二:CLI
dsh plugin --profile <profile> add <本项目的绝对路径>
安装本 bundle 后,会注册运行时审计、trustBroker 服务、Web「安全审查」标签页与模型安装审批门禁。本插件自身声明 network.fetch: true(用于 registry/tarball 获取),并暴露同源接口 api/trust-broker/review|confirm|health。
典型用法¶
开发与自检¶
npm run check # typecheck + tests + build
终端审查单个插件目录¶
npm run build
node bin/trust-broker.mjs review ./some-plugin --no-external-scanner
结合 dsh-trust-check 报告¶
先在可信环境生成报告,再传入候选树:
npx dsh-trust-check@0.2.5 --dir ./some-plugin --spec npm:some-plugin@1.2.3 --json > /tmp/report.json
node bin/trust-broker.mjs review ./some-plugin --trust-check-report /tmp/report.json
CI / 非交互 JSON 决策¶
node bin/trust-broker.mjs review ./some-plugin --json --non-interactive
退出码约定:0 = proceed,2 = 需要显式确认,3 = block/unscannable,1 = 用法错误或日志损坏。
确认并写入信任锚点¶
node bin/trust-broker.mjs review ./examples/demo-plugin --store-dir /tmp/tb-demo \
--no-external-scanner --non-interactive \
--acknowledge-new-capability --accept-hash 'sha256:…'
交互场景下,对 new_capability 需按终端提示输入确认口令(例如「确认新增能力」)。
适用场景与注意¶
适合谁
- 在 DSH 上频繁安装第三方 Host bundle、需要在加载前对齐声明与检出的团队或个人。
- 希望在 CI 中用退出码 Gate 安装产物,或需要哈希锚定与升级差异(B 类漂移)可追溯的 Supply-chain 流程。
- 需要在运行后审计工具调用与上下文写入、便于事后复核的场景。
务必注意
- 插件与所有 DSH Host 插件一样,以当前 DSH 进程的权限读写指定目录与日志;安装前请自行阅读源码与 MIT 许可证,并理解信任边界由「调用者选定的来源 + 用户审批」构成。
- Broker 不做恶意判定;最终是否加载仍由用户或上层策略决定。
- SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;本文安装命令来自项目 README,请勿仅凭仓库名拼接未文档化的 CLI 形式。
结尾¶
dsh-plugin-trust-broker 补全了 DSH 生态里「安装前 permission diff + 哈希锚点 + 加载后审计」四层能力,并把 CLI 与 Host Web 审查接到同一决策模型上。若要试用,可从 SkillHub 目录页 跳转仓库,按上文构建后以绝对路径安装 bundle,或在加载前单独运行 dsh-trust-broker CLI。