前言¶
DeepSeek Harness(dsh)把能力拆成插件,由 Cordis 在运行时加载。实际做智能体时,需求往往是「这次要联网搜、下次要写 Markdown、再下次要多一步 MCP」——若每次都在 profile 里手工增删插件,列表会越堆越长,和当前任务也对不齐。
更自然的方向是让 Agent 根据任务说明,在运行时从已注册插件里挑能力、按需加载。难点在于:第三方插件和官方包混用时,谁被加载、是否经过审查,不能靠模型静默决定。下面介绍社区插件 dsh-plugin-dynamic-assembler(维护者 QLM1234,目录分类 admin-security),它用自然语言驱动「发现 → 计划 → 确认 → 加载」,并对非官方插件做静态审计与用户确认。
这是什么¶
dsh-plugin-dynamic-assembler 是面向 dsh 的「动态组装」插件:Agent 用 plain language 描述要构建的能力,插件在运行时遍历 ctx.registry 发现可用插件,生成组装计划,经你确认后通过 Cordis 加载;非 @deepseek-ai/* 的插件在加载前会走内置静态安全审计。npm 包名与仓库一致,GitHub 为 QLM1234/dsh-plugin-dynamic-assembler。
核心功能¶
运行时发现与官方优先¶
可用插件从 ctx.registry 读取,不维护硬编码列表。匹配能力时优先 @deepseek-ai/*;仅当没有官方插件匹配时,才考虑第三方(且需在计划里显式列出)。
用户确认与 unofficial 策略¶
涉及第三方插件时不会默认静默加载。配置项 unofficialPolicy 可选 ask(默认)、allow、deny。执行加载时,非官方插件通常需要 allow_unofficial;涉及网络、文件系统、shell、subagent、MCP、代码、凭证等敏感操作时,需要 confirm_sensitive 等显式确认。
静态安全审计¶
工具 assemble_inspect 对插件包做静态扫描:元数据(scope、license、repository、install/postinstall 脚本、peer 依赖等)与源码中的危险模式(如 eval、child_process、硬编码密钥等)。评分从 100 起扣,划分为 green(≥80)、yellow(≥60)、red(<60);red 默认拒绝加载,仅在高风险场景下可通过 force 覆盖。README 明确说明:静态审计是风险信号,不是安全保证;插件以 Node 进程权限运行,恶意代码可能绕过正则扫描。
工具一览¶
除上述审计外,插件还提供(README 列出的 8 个工具):
| 工具 | 作用概要 |
|---|---|
assemble_discover |
发现当前环境中可用插件与能力 |
assemble_plan |
根据自然语言需求生成计划(不加载) |
assemble_execute |
按计划经 Cordis 加载并启动 |
assemble_unload |
卸载本插件动态加载的全部内容(回滚) |
assemble_freeze |
冻结当前组装状态(见仓库文档) |
assemble_auto |
自动化组装流程(见仓库文档) |
assemble_compare |
同类插件对比(含审计列等,版本演进见 CHANGELOG) |
意图到能力的映射在源码 CAPABILITY_RULES(src/dynamic-assembler.ts)中,支持中英文关键词;未加载的官方插件可按约定名 @deepseek-ai/dsh-<name> 动态导入。
卸载与生命周期¶
插件卸载时会级联 dispose 其动态加载的内容,便于与 Cordis 的时间可组合性对齐。
安装与启用¶
推荐从 npm 安装,dsh 会自动发现,无需本地路径:
npm i dsh-plugin-dynamic-assembler
若由 dsh profile 管理,可使用:
pnpm dsh plugin --profile web add dsh-plugin-dynamic-assembler
安装后需重启 Web 服务,例如:
pnpm dsh web
运行环境要求 Node.js >= 22(见 package.json engines)。许可证为 MIT。
可选配置¶
在 profile 的 cordis.patch.yml 中新增条目时需包在 - insert: 下:
- insert:
- id: dynamic-assembler
name: dsh-plugin-dynamic-assembler
config:
denyList: [] # 永不组装的 capability 名称子串
unofficialPolicy: ask # ask | allow | deny
pluginSources: [] # 尚未加载的第三方:npm 包名或本地目录
尚未加载的第三方可通过 pluginSources 声明,例如 npm 包名或 /path/to/local-plugin。已在 Cordis 中加载的插件(官方或第三方)会自动被发现,无需额外配置。
典型用法¶
README 中的对话示例:用户希望「能搜网页并把结果写成 Markdown 文档」。
-
模型调用
assemble_plan,传入requirement(自然语言需求)。插件在运行时发现已加载插件,按官方优先匹配能力,返回计划与推荐顺序,此时尚未加载任何新插件。 -
用户确认后,模型调用
assemble_execute,例如传入计划中的插件名,并设置confirm: true、confirm_sensitive: true、allow_unofficial: false(若计划不含第三方则保持 false)。已加载的插件被激活;未加载的官方插件按约定动态 import。 -
需要回滚时调用
assemble_unload(),清理由本插件动态加载的部分。
单独审计某个包时,可使用 assemble_inspect,参数 plugin;对仅发布在 GitHub Releases、不在 npm 的社区包,可传可选参数 github_repo(owner/repo)做 release 制品审计(v0.3.6+ 能力,见 README)。
适用场景与注意¶
适合谁: 已在用 dsh、希望 Agent 按任务临时组合工具链、又希望第三方插件必须经过审计与确认的开发者或团队。与 DeepSeek 论文方向中的「时空可组合、自演化 harness」验证场景一致,但实现与维护在社区仓库,不属于 DeepSeek 官方应用商店;插件目录见 SkillHub 条目。
务必注意:
- 插件与所加载的任意 dsh 插件共享当前 dsh 进程的 Node 权限;安装前请自行查看源码、许可证与发布来源。
- 静态审计不能替代信任边界;只安装你信任的来源,对第三方保持警惕。
denyList可用于禁止组装某些 capability 名称子串,降低误装风险。
本地开发与回归测试(维护者流程):
npm install
npm test
审计引擎位于 src/inspect.ts,与 Cordis 解耦,便于单测。
结尾¶
dsh-plugin-dynamic-assembler 把「用自然语言说明要什么能力 → 运行时发现与计划 → 确认后加载 → 可随时 unload」做成一条可操作流程,并把 admin-security 类需求落在 unofficial 策略与 assemble_inspect 评分上。若你要在 dsh 里做按需 toolchain 而非静态堆插件,可从 npm 安装并在 profile 中按需配置 unofficialPolicy 与 pluginSources。
- 目录页:https://www.skillhub.cn/plugins/QLM1234/dsh-plugin-dynamic-assembler
- GitHub:https://github.com/QLM1234/dsh-plugin-dynamic-assembler