用自然语言发现并安全加载所需插件
24.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add QLM1234/dsh-plugin-dynamic-assembler该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 68 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 33 处,展示前 33 条)
- 读取本地文件src/compare.ts:106
if (!existsSync(p)) return { fetchedAt: '', byRepo: {} } - 读取本地文件src/compare.ts:107
const data = JSON.parse(readFileSync(p, 'utf8')) as CacheEntry - 读取本地文件src/compare.ts:120
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件src/compare.ts:120
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件src/compare.ts:122
writeFileSync(join(dir, COMPARE_CACHE), JSON.stringify(payload, null, 2), 'utf8') - 读取本地文件src/compare.ts:552
if (!existsSync(p)) return [] - 读取本地文件src/compare.ts:553
const data = JSON.parse(readFileSync(p, 'utf8')) as { plugins?: Array<{ repo: string; npmName: string; description: string; stars: number }> } - 读取本地文件src/discovery.ts:55
if (!existsSync(p)) return [] - 读取本地文件src/discovery.ts:56
const raw = readFileSync(p, 'utf8') - 读取本地文件src/discovery.ts:70
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件src/discovery.ts:70
if (!existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件src/discovery.ts:72
writeFileSync(join(dir, DISCOVERY_CACHE), JSON.stringify(payload, null, 2), 'utf8') - 发起网络请求src/discovery.ts:172
const res = await fetch(url, { - 读取本地文件src/dynamic-assembler.ts:596
const meta = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')) as { name?: string } - 读取本地文件src/dynamic-assembler.ts:1345
return existsSync(pkg) ? pkg : undefined - 写入本地文件src/dynamic-assembler.ts:1566
mkdirSync(AUDIT_LOG_DIR, { recursive: true }) - 写入本地文件src/dynamic-assembler.ts:1568
appendFileSync(AUDIT_LOG_PATH, lines, 'utf8') - 发起网络请求src/dynamic-assembler.ts:1808
const res = await (globalThis as any).fetch(url, init) - 发起网络请求src/dynamic-assembler.ts:1887
const res = await (globalThis as any).fetch(url, init) - 写入本地文件src/dynamic-assembler.ts:2206
mkdirSync(presetDir, { recursive: true }) - 写入本地文件src/dynamic-assembler.ts:2208
writeFileSync(presetPath, yaml, 'utf8') - 写入本地文件src/events.ts:58
mkdirSync(EVENT_DIR, { recursive: true }) - 写入本地文件src/events.ts:59
appendFileSync(EVENT_PATH, JSON.stringify(evt) + '\n', 'utf8') - 读取本地文件src/events.ts:68
const raw = readFileSync(EVENT_PATH, 'utf8').trim() - 读取本地文件src/inspect.ts:148
const raw = readFileSync(AUDIT_CACHE_PATH, 'utf8') - 写入本地文件src/inspect.ts:159
mkdirSync(AUDIT_CACHE_DIR, { recursive: true }) - 写入本地文件src/inspect.ts:162
writeFileSync(AUDIT_CACHE_PATH, JSON.stringify(obj), 'utf8') - 读取本地文件src/inspect.ts:286
if (existsSync(abs)) return c - 读取本地文件src/inspect.ts:294
const s = await readFile(abs) - 读取本地文件src/inspect.ts:413
integrityParts.push(readFileSync(join(root, meta.entry), 'utf8')) - 读取本地文件src/inspect.ts:459
if (!existsSync(cand)) continue - 读取本地文件src/inventory.ts:63
if (existsSync(p)) { - 读取本地文件src/inventory.ts:64
raw = readFileSync(p, 'utf8')
扫描于 2026/10/31(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-timeout@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
自然语言驱动、带安全校验的动态装配插件,用于 DeepSeek Harness(dsh)
README
由 DeepSeek 最新模型翻译生成dsh-plugin-dynamic-assembler
面向 DeepSeek Harness (dsh) 的自然语言驱动、安全闸门式动态组装插件。
用自然语言告诉 dsh Agent 你想"组装"什么——它在运行时发现所需插件(官方优先、第三方可选),生成组装方案,经你确认后通过 Cordis 动态加载。任何非官方插件在加载前都会先通过内置静态安全审查。
对自进化 Agent 而言,安全闸门不是功能,是前提。
📦 已发布到 npm — npm i dsh-plugin-dynamic-assembler(v0.3.5)
为什么做
dsh 的核心是"一切皆插件"。自然的下一步是自我组装:Agent 根据需求组合自己的工具链——这正是官方时空可组合性论文点名的下一个验证方向:自进化 Agent Harness。
本插件让这件事既可行又安全:
- 运行时发现:可用插件通过 ctx.registry 运行时遍历,无任何硬编码插件清单。
- 官方优先:任何能力优先选 @deepseek-ai/ 官方插件;官方无匹配才考虑第三方。
- 用户知情同意:涉及第三方插件的方案会显式标注并要求 allow_unofficial 确认(策略可配:ask / allow / deny)。
- 加载前审查:每个非官方插件先做静态扫描(危险模式 + 元数据),0-100 评分。
展开完整文档(README 剩余 1 节)
dsh-plugin-dynamic-assembler
面向 DeepSeek Harness (dsh) 的自然语言驱动、安全闸门式动态组装插件。
用自然语言告诉 dsh Agent 你想"组装"什么——它在运行时发现所需插件(官方优先、第三方可选),生成组装方案,经你确认后通过 Cordis 动态加载。任何非官方插件在加载前都会先通过内置静态安全审查。
对自进化 Agent 而言,安全闸门不是功能,是前提。
📦 已发布到 npm — npm i dsh-plugin-dynamic-assembler(v0.3.5)
为什么做
dsh 的核心是"一切皆插件"。自然的下一步是自我组装:Agent 根据需求组合自己的工具链——这正是官方时空可组合性论文点名的下一个验证方向:自进化 Agent Harness。
本插件让这件事既可行又安全:
- 运行时发现:可用插件通过 ctx.registry 运行时遍历,无任何硬编码插件清单。
- 官方优先:任何能力优先选 @deepseek-ai/ 官方插件;官方无匹配才考虑第三方。
- 用户知情同意:涉及第三方插件的方案会显式标注并要求 allow_unofficial 确认(策略可配:ask / allow / deny)。
- 加载前审查:每个非官方插件先做静态扫描(危险模式 + 元数据),0-100 评分。red(<60 分)默认拒绝。
特性
| 🧭 运行时发现 | ctx.registry 遍历——全量可见,零硬编码 |
| 🥇 官方优先 | 优先 @deepseek-ai/;第三方仅作兜底且全程可见 |
| 🔐 第三方闸门 | unofficialPolicy: ask(默认)/ allow / deny |
| 🛡️ 内置安全审查 | assemble_inspect——模式扫描 + 元数据检查 → 评分 → 绿/黄/红 |
| ⚠️ 敏感确认 | 联网/文件/命令/子代理/MCP/代码/凭据类能力必须显式确认 |
| 🗑️ 级联卸载 | 动态加载的插件在本插件卸载时全部 dispose(Cordis 时间可组合性) |
| 🧩 八个工具 | assemble_inspect · assemble_discover · assemble_plan · assemble_execute · assemble_unload · assemble_freeze · assemble_auto · assemble_compare(v0.3.3 同类候选横向对比,v0.3.4 修复 Star/功能要点/审计列渲染缺陷,v0.3.5 修复审计列管线层根因:npm 未发布候选跳过 inspect 置 N/A,v0.3.6 新增 assemble_inspect 的 github_repo 发行物审计路径,v0.3.8 将该发行物审计接入对比表审计列 + 占位包语义识别) |
| 🔭 外源发现(重装版) | assemble_discover + discoveryMode 配置:主动把 GitHub dsh-plugin 生态的社区插件纳入候选(只发现不裁决,经双重兜底) |
| 🤖 全自动模式(重装版) | assemble_auto:说一句需求 → 自动规划并装载「官方+非敏感+策略允许」插件,失败自动回滚;敏感/未授权非官方自动跳过并回显需确认清单(绝不静默放行) |
安装
从 npm 安装(推荐)。安装后 dsh 自动发现,无需指向本地目录:
npm i dsh-plugin-dynamic-assembler
或由 dsh profile 托管:
pnpm dsh plugin --profile web add dsh-plugin-dynamic-assembler
之后重启 web 服务
pnpm dsh web
配置(可选)
在 profile 的 cordis.patch.yml 中追加(新条目必须用 - insert: 包裹):
- insert:
- id: dynamic-assembler
name: dsh-plugin-dynamic-assembler
config:
denyList: [] # 永不被组装的能力名子串
unofficialPolicy: ask # ask | allow | deny
pluginSources: [] # 未加载的第三方插件候选(npm 包名或本地目录)
discoveryMode: github-topic # github-topic | awesome-list | off(重装版外源发现开关)
pluginSources 用于声明尚未加载的第三方插件;已加载的插件(官方或第三方)由运行时自动发现,无需配置。
工具
| 工具 | 作用 | 关键参数 |
| assemble_inspect | 审查插件包(官方/非官方):模式扫描 + 元数据 → 评分与分级;v0.3.6 新增 github_repo 参数——仅发 GitHub Releases、未上 npm 的社区插件传 owner/repo 走发行物审计路径,产出有意义报告而非死红"无法定位";v0.3.8 该发行物审计算法已接入 assemble_compare 对比表 | plugin, github_repo? |
| assemble_discover | (重装版)主动刷新社区插件索引:拉取 GitHub dsh-plugin 生态候选并缓存 | force? |
| assemble_plan | 分析自然语言需求,发现匹配能力(官方优先 + 社区索引),生成方案(不加载) | requirement |
| assemble_execute | 经 Cordis 动态加载并启动插件。需确认;非官方需 allow_unofficial;red 审查需 force | names, confirm, confirm_sensitive, allow_unofficial, force?, configs? |
| assemble_unload | 卸载本插件动态加载的所有插件(安全回滚) | — |
| assemble_freeze | 把确认过的方案固化为 agent.cordis.yml preset(重启不丢、可版本管理) | names, preset_name?, base_dir?, configs? |
| assemble_auto | (重装版)一句话全自动组装:自动规划 + 安全分层自动装载(敏感/未授权非官方跳过并回显) | requirement |
| assemble_compare | (v0.3.3)同类候选横向对比:Star/版本/发布日期/安装包大小/校验文件/npm 发布核实/核心功能/静态审计分;可显式点名或复用索引。仅信息呈现,不改信任闸门。v0.3.4 修复:补 repo 详情请求补全 Star/Fork/描述、支持 README 异构特性形态(bullet/HTML-h3/加粗段首)、审计列未发布代码显示 N/A(无 npm 包)而非 0/100 | repos?, max_candidates? |
示例对话
用户:"我需要一个能联网搜索并整理成 Markdown 文档的机器人。"
1. 模型调用 assemble_plan({ requirement: "联网搜索并整理成 Markdown 文档" }) → 运行时发现已加载插件,官方优先匹配能力,返回方案与推荐顺序。
2. 用户确认后,模型调用
assemble_execute({ names: ["tool-web","web-search-deepseek"], confirm: true, confirm_sensitive: true, allow_unofficial: false })
→ 已加载的标记可用;未加载的官方插件按约定包名 @deepseek-ai/dsh-<name> 动态 import。
3. 随时回滚:assemble_unload()。
安全模型
assemble_inspect 执行两层静态审查:
1. 元数据——npm scope(官方/第三方)、license、仓库、install/postinstall 脚本(高危)、peer 依赖完整性。
2. 源码——入口文件(及邻近源码文件,限制大小)扫描危险模式:
| 级别 | 模式 |
| 🔴 高危 | eval / new Function、child_process/exec/spawn、安装脚本、疑似硬编码密钥 |
| 🟡 中危 | 文件写/删、网络请求、动态导入、base64 解码、字符混淆 |
| 🔵 提示 | process.env 访问、预发布版本、缺 license/仓库、非官方 scope |
评分:100 分起步逐项扣减 → green ≥ 80 / yellow ≥ 60 / red < 60。
- green:可加载。
- yellow:可加载但需知晓(第三方仍要求 allow_unofficial)。
- red:默认拒绝;仅 force: true(高风险)可强制覆盖。
⚠️ 边界声明(务必知晓):静态审查是风险提示,不是安全保证。插件本质是 JS 模块,ctx.plugin() 加载后即拥有完整 Node 进程权限,恶意代码可轻易绕过正则扫描。请只安装可信来源的插件。隔离沙箱执行列为 v2 方向。
扩展能力词典
意图→能力映射在 CAPABILITY_RULES(src/dynamic-assembler.ts)。每条规则把自然语言关键词映射到候选插件名子串:
{ keywords: ['搜索', 'search', '联网', 'fetch', '网页', '抓取'], label: '联网搜索/抓取',
match: ['tool-web', 'web-search', 'web-fetch-http', 'web'],
dependsOn: ['web'],
sensitive: true }
- match 是插件名子串,在运行时发现结果中匹配(官方优先)。
- 未加载的官方插件按约定名 @deepseek-ai/dsh-<name> 动态 import。
- sensitive: true 要求显式确认。
- 欢迎 PR 补充规则——词典只是启发式,绝不是硬编码清单。
开发
npm install
npm test # node --test(ESM strip-types,审查引擎 + 官方优先逻辑 + 回归)
- src/inspect.ts —— 纯审查引擎(不依赖 cordis,可独立单测)
- src/discovery.ts —— 重装版外源发现(GitHub 生态索引纯逻辑,可单测)
- src/dynamic-assembler.ts —— 插件入口、七个工具、官方优先规划 + 全自动安全分层
- test/ —— node:test 测试(cordis/dsh-tools 用 stub,它们只存在于 dsh monorepo 内)
当前能力边界(轻量版 vs 完全体)
本项目当前是 「完全体 v0.3.5」:外源发现(阶段一)+ 信任增强(阶段三)+ 全自动模式(阶段四)+ 语义级组合编排蓝图(阶段二)+ 会话粒度事件日志(尾款①)+ 同类候选横向对比 assemble_compare(黎叔实测驱动,v0.3.4 修复 Star/功能要点/审计列渲染三项缺陷,v0.3.5 修复审计列管线层根因) 全部落地。
| 维度 | 现在能做的(v0.3.5 已落地) | 完全体后续增强 |
| 插件发现 | 运行时发现已加载插件 + pluginSources 点名的包 + GitHub dsh-plugin 生态社区索引(assemble_discover / discoveryMode) | 同左(对接型,不重造搜索引擎) |
| 同类候选对比 | assemble_compare(v0.3.3):Star/版本/发布日期/安装包大小/校验文件/npm 发布核实(幻影名标"仅 GitHub 发行物")/核心功能/静态审计分横向对比;assemble_plan 同类≥2 候选自动附精简引导 | 历史对比趋势 / 自动刷新 |
| 任务→能力 | 关键词/真实工具信号 → 官方优先 + 依赖拓扑排序 + 语义级组合编排蓝图(角色分工 / 执行步骤 / 能力竞争预警) | 同左 |
| 第三方信任 | 静态审计 + unofficialPolicy 闸门 + 社区候选双重兜底 + Cordis 版本兼容提示 | 信任评分 / 沙箱预演 / 签名校验 |
| 非专业体验 | assemble_auto:说目标 → 自动装好安全插件并兜底回滚(敏感/未授权非官方自动跳过并回显需确认) | 同一体验 + 社区插件信任评分后也可纳入自动 |
| 事件日志 | 会话级 scope 粒度(scopeFromExec 安全提取,恢复真实会话标识;守卫对象兜底 <global>) | 同左 |
对非专业用户:你只需用自然语言描述「想让 Agent 做什么」,本插件会挑出合适的官方插件、排出装载顺序、做安全检查并自动装载安全部分;敏感操作或未经授权的第三方插件会自动停下、列清单请你确认,而不是默默装错东西或悄悄放行危险操作。
不会重复造轮子:官方若推出官方插件市场/商店,本插件会改为「对接」而非「重造」;本插件的价值护城河在安全编排层(敏感闸门、供应链审计、失败回滚),这部分官方通常不会替你做。
License
MIT © 2026 黎叔玩AI预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
QLM1234/dsh-plugin-dynamic-assembler
用自然语言发现并安全加载所需插件
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7