dsh-plugin-forge-preset

DSH PLUGIN开发与运行时

仓库 wodaimnd/dsh-plugin-forge-preset · npm @local/dsh-plugin-forge-preset

开发与运行时 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

插件工坊是 DSH plugin 预设,内置插件测绘、代码吸收与改造分叉技能,让 Agent 从零写出可安装插件或拆解他人插件。

一句话选型结论

按资料字段整理

dsh-plugin-forge-preset 是开发与运行时类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类开发与运行时 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-11-04 创建于 2026-11-04
README 14.7 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:wodaimnd/dsh-plugin-forge-preset#v1.0.0
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.2-rc.1;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.2-rc.1版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@local/dsh-plugin-forge-preset可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-plugin-forge-preset:DeepSeek Harness 里的插件工坊预设

  • 从零生成可安装插件
  • 测绘他人插件结构契约
  • 吸收代码并验证行为
  • 改造分叉与回归对比
  • 预设容器可扩展新模式

适用场景

智能体编排代码评审

上游标签

deepseekdshdsh-plugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-11-10): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 结论说明 静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。
  • 风险计数 严重 0 / 高 0

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.2-rc.1),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在开发与运行时场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-plugin-forge-preset当前 L5 · 运行验证通过 低风险 0 0.2.2-rc.1 有
deepseek-harness L3 · 安装规范通过 低风险 24.6 万 未标注 无
rea L4 · 沙盒安装通过 低风险 2.6 万 0.1.1-rc.2 有
dsh-TUI L4 · 沙盒安装通过 中风险 4,292 0.1.7-rc.2 等 5 个 有
mirage L3 · 安装规范通过 低风险 3,681 未标注 无
dashi-taskboard L4 · 沙盒安装通过 低风险 3,311 0.1.1-rc.2 有

仓库档案

开发与运行时
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方wodaimnd仓库 dsh-plugin-forge-preset · 默认分支 main
分类开发与运行时developer
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-11-04 · 2026-11-04最后推送 2026-11-04
本站收录2026-11-05首次进入本站目录的时间

README 全文

14.7 KB
作者原文,中文版优先;只做安全转义,不改内容

插件工坊 · plugin-forge

DSH agent 预设:原创插件生成 + 他人插件测绘 / 吸收 / 改造。

装上后模式下拉里多出一项「插件工坊」,会话里可以直接说:

  • 「帮我写个插件:……」
  • 「看看这个插件怎么实现的」
  • 「照它的面板写法做一个」
  • 「把这个插件改成我要的样子」

它与「逆向模式」的区别

两者都做「拆开别人的东西」,但对象不同:

逆向模式(reverse) 插件工坊(plugin-forge)
对象 APK / IPA / PE / SO / 协议 / 游戏客户端 DSH 插件(JS bundle)
拆什么 二进制、壳、算法、通信协议 槽位注册、路由、工具行、UI 结构
产出 算法还原、脱壳产物、协议表 能安装的新插件
验证 产物能跑 / 算法能复现 桩环境注册 + 与原版回归对比

逆向模式的工具链(jadx / Frida / IDA)在这里用不上——插件的源码本来就是可读的 JS。


四个执行角色

角色 干什么 触发时机
插件测绘 出结构地图、契约表、「能改/慎改/别碰」三分 要读懂一个插件时
代码吸收 判断哪块值得吸、迁入并验证行为不变 要借别人写法时
改造分叉 选路线(原地改/复制分叉/补丁层)、七处替换、双验证 要改一个插件时
回归验证 桩环境结构验证 + 与原版差异对比 每次改造后

并发上限 3 个。四个角色都是叶子节点(maxDepth: 1),不会无限往下派。


六个技能

技能 作用 关键产出
plugin-author 从零写插件:对齐 → 代码 → 16 项自检 完整可安装插件 + 规范全文
preset-scaffold 加新 agent 预设:建目录 → 写两件套 → 验证 新模式的完整模板与约束
plugin-search 代码定位:大纲 → 结构化搜索 → 定向读取 精确行号,不整文件读
plugin-index 跨文件盘点:符号 / 引用 / 槽位 / 路由 SQL 级查询,替代重复扫描
plugin-recon 摸清别人的插件 结构地图 + 契约表 + 三分清单
plugin-harvest 吸收可用代码 吸收清单 + 迁入代码 + 验证脚本
plugin-fork 改造成自己的版本 改造方案 + 分叉产物 + 双验证

技能装在哪:$DSH_HOME/plugin-forge/skills/,由本插件启动时从包内同步。


多预设架构(怎么继续加)

本插件不是「一个预设的插件」,而是预设容器:presets/ 下每个子目录就是一个模式。

presets/
plugin-forge/          插件工坊(正式)
preset.yml
agent.cordis.yml
persona.md           人设源文件,用 %%PERSONA%% 注入
demo-mini/             演示模式(架构验证用,可删)

加一个新预设,不需要改任何 JS:

  1. 在 presets/ 下建目录,目录名 = preset id(^[a-z0-9][a-z0-9-]{0,31}$)
  2. 写 preset.yml:name / description / order(前两个必须单行,order 必须数字)
  3. 写 agent.cordis.yml:条目列表,至少含 persona、skill-filesystem、一个 shell 工具
  4. 人设长时用 %%PERSONA%% 占位符 + 同目录 persona.md
  5. 重启 dsh

细节与模板见 skills/preset-scaffold/SKILL.md。

停用与移除

方式 做法 结果
临时停用 放空文件 presets//.preset-off 不落地、不注册,副本保留
约定停用 目录改名加下划线,如 _ 同上
彻底移除 删掉整个预设目录 下次启动自动清掉 .agent-presets/

条目标注册实例

所有预设共享同一个技能库($DSH_HOME/plugin-forge/skills)。所以给插件工坊加的技能,新预设自动可用。

状态文件(多预设版)

{
"ok": true,
"phase": "registered",
"presets": [
{ "id": "demo-mini", "name": "演示模式", "plugins": 11, "ok": true, "broken": null },
{ "id": "plugin-forge", "name": "插件工坊", "plugins": 19, "ok": true, "broken": null }
],
"skipped": [],
"skillsDir": "...",
"source": "...\\presets"
}

phase 取值:registered(全部成功)/ registered-partial(部分失败,看 presets[].broken)/ no-presets / waiting-registry / registry-timeout。


提示词固化在哪(防丢)

这是本插件存在的核心目的:规范不能只活在会话里。

位置 内容 大小
presets/plugin-forge/persona.md 人设与判断规则(唯一真源) 19KB
presets/plugin-forge/agent.cordis.yml 条目列表,人设位置用 %%PERSONA%% 8.6KB
skills/plugin-author/SKILL.md 执行骨架:三步流程、判据表、速查、输出格式 4.2KB(渲染 4261/8192)
skills/plugin-author/references/runtime-contract.md 双半、manifest、patch、槽位、路由、token、持久化、桩验证 10.4KB
.../references/skeletons.md 六份可直接抄的代码骨架(含 verify-client.mjs) 21.3KB
.../references/ux.md 七态、反馈时效、可访问性 10 条、性能、跨页草稿 9.6KB
.../references/data-and-ownership.md 触发方式分级、所有权分级、合规路径表 4.5KB
.../references/gates.md 终极五问 + 16 项自检 + 中文化检查 + 质量线 5.0KB
.../references/failure-modes.md 10 个结构坑 + 12 个实战场坑 + 5 个实测坑 4.5KB
.../references/prohibitions.md 18 条禁止事项 2.4KB
docs/prompt-v2.1.md 完整规范原文(含逐条理由与变更史) 70KB

为什么拆成 SKILL.md + references:宿主对 SKILL.md 有 8192 字符硬上限,超了会被修剪器裁掉后半段。官方技能也是这个结构——SKILL.md 只放骨架与导航,长文按需读 references/,不计入预算。

改人设的正确方式

# 1. 改 presets/plugin-forge/persona.md(唯一真源)
# 2. 校验(不写盘)
python build-composition.py --check
# 3. 重启 dsh

agent.cordis.yml 里只有一行 %%PERSONA%%,落地时自动注入全文。不要直接改落地副本(.agent-presets/plugin-forge/agent.cordis.yml)——下次启动会被源覆盖。


检索工具(省 token 的核心)

四个工具,按问题类型选:单文件降维 → 跨文件查库 → 结构搜索 → 字面量搜索。

工具 路径 用在什么问题上
大纲器 tools/outline.mjs 这个文件里有什么(符号 + 行区间)
索引库 tools/index.mjs 跨文件关系:谁引用了它、哪些插件注册了同一槽位
ast-grep PATH 上的 ast-grep(用户自装) 按语法结构找,排除注释与字符串
宿主 grep 内置 找任意字面量(后端已是 ripgrep,无需装 rg)

实测数据

tokens / 耗时
全文读 6 个真实插件文件 95,064 tokens
只读结构大纲 1,470 tokens(省 98.5%)
单文件最极端(222KB) 全文 60,876 → 大纲 835 tokens
建全库索引(126 文件 / 1.5MB) 456ms
索引库单次查询 0.05ms

用法

# ① 单文件或单插件:先出大纲(读大文件之前必做)
node tools/outline.mjs '<插件目录>' --tokens

# ② 跨文件问题:建一次索引,之后都走查询
node tools/index.mjs build 'G:\AI PGRM\DSH\plugins'
node tools/index.mjs find PanelPage        # 全库几处定义
node tools/index.mjs refs handleOperation  # 谁引用了它
node tools/index.mjs slots                 # 哪些插件注册了什么槽位
node tools/index.mjs routes                # 全部路由
node tools/index.mjs effects network       # 所有网络请求点
node tools/index.mjs stats                 # 库规模 + 同名多定义

# ③ 结构化搜索(注意必须带 $OBJ. 前缀)
ast-grep run -p '$OBJ.slots.register({ name: $NAME, $$$REST }, $COMP)' -l js '<目录>'
ast-grep run -p '$OBJ.webServer.register({ $$$REST })' -l js '<目录>'

# ④ 拿到行号后再定向读
# read client.js offset=279 limit=238

ast-grep 需要自行安装

它 55MB,不在本包内。安装后加进 PATH:

ast-grep --version     # 期望 ast-grep 0.51.1 或更高

Windows 官方包是 app-x86_64-pc-windows-msvc.zip,解压后把含 ast-grep.exe 的目录加入用户 PATH。注意 sg.exe 是弃用别名,不要用。

不在 PATH 时自动降级为「大纲器 + 宿主 grep」,功能可用但结构匹配精度下降。

索引库的三个已知边界

  1. 引用是「调用点 + 大写参数」,不是全量标识符。小写变量名作参数传递(fn(handler))查不到 —— 这时改用 ast-grep。
  2. 动态路由标注为 (动态: route):config.route 这类运行期值静态还原不了,如实标注而非猜测。
  3. 增量更新依赖 mtime:改文件但 mtime 没变时会滞后,删库重建即可。

三个实测踩过的坑

  1. ast-grep 必须带 $OBJ. 前缀。slots.register($$$A) 只匹配独立调用,漏掉 ctx.slots.register(...) 这种最常见写法。
  2. 找注册点别用裸 grep。同一份测试代码,grep 命中 5 行其中 3 行是注释与字符串误报;ast-grep 只命中 1 行真实代码。
  3. 建索引必须开事务。不开事务时 SQLite 逐行同步落盘,1.5MB 语料从 456ms 涨到 2 分钟以上。

预算判据

动作 预期成本
outline 单文件 100–900 tokens
outline 整个插件目录 300–1500 tokens
索引查询(find / refs / slots) 20–200 tokens
ast-grep 单条查询 20–200 tokens
全文读 200KB 文件 约 60000 tokens ← 禁止

硬规则:读任何大于 20KB 的文件之前,必须先跑 outline。


中文优先

  • UI 文案、按钮、错误提示:一律简体中文
  • 插件展示名与描述:一律简体中文
  • 默认不做多语言:不创建 en.json,不留双语字典,不写 locale 切换
  • 只有用户明确要求时才做双语

安装

已在 profile 里装好。若要重装或换机器:

# 1) 包目录放到任意位置,然后加进 profile 依赖
$profile = $env:DSH_PROFILE_DIR
$pkg = Get-Content -Raw -Encoding UTF8 "$profile\package.json" | ConvertFrom-Json
$pkg.dependencies | Add-Member -NotePropertyName '@local/dsh-plugin-forge-preset' `
-NotePropertyValue 'link:<包目录绝对路径>' -Force
$pkg.dsh.profile.bundles += '@local/dsh-plugin-forge-preset'
$pkg | ConvertTo-Json -Depth 12 | Set-Content "$profile\package.json" -Encoding UTF8

# 2) 建 junction,让 Loader 能按包名解析
New-Item -ItemType Junction -Path "$profile\node_modules\@local\dsh-plugin-forge-preset" `
-Target '<包目录绝对路径>'

重启 DSH,模式下拉里就会出现「插件工坊」。


它自己做了什么(运行时行为)

启动时按顺序:

  1. 把 preset.yml + agent.cordis.yml 落到 $DSH_HOME/.agent-presets/plugin-forge/
  2. 把 skills/ 同步到 $DSH_HOME/plugin-forge/skills/
  3. 等 agentPresets 服务就绪(最长 20 秒),然后调 ctx.agentPresets.register() 声明进下拉
  4. 把结果写进 $DSH_HOME/plugin-forge/preset-declare.json

第 3 步是必须的:Web 的模式下拉只认 register(),只把目录写到 .agent-presets 不会被扫到——这是「插件装得完整、下拉里却没有它」的唯一根因。

状态文件

{
"ok": true,
"phase": "registered",
"id": "plugin-forge",
"name": "插件工坊",
"plugins": 19,
"broken": null,
"skillsDir": "...",
"presetDir": "..."
}

装完直接看这个文件判断是 registered 还是 broken。

phase 含义 怎么办
registered 正常 无
registered-broken 已声明但挂载失败 看 broken 字段
waiting-registry 等 agentPresets 服务 通常几秒内自动过去
registry-timeout 20 秒没等到服务 检查 @deepseek-ai/dsh-agent-preset-registry 是否在 profile 里
install-failed 预设文件落地失败 看 error,检查 $DSH_HOME 写权限

配置项

字段 默认 含义
syncSkills true 是否把本包技能同步到 $DSH_HOME/plugin-forge/skills
force false 是否覆盖你改过的预设副本(默认只在源文件更新时覆盖)
registryTimeoutMs 20000 等 registry 就绪的最长时间

关掉技能同步(想自己维护那份技能库时):

- id: dsh-plugin-forge-preset
name: '@local/dsh-plugin-forge-preset'
config:
syncSkills: false

改人设

人设正文在 persona.md。改完重新生成 composition:

python build-composition.py

不要直接改 agent.cordis.yml 里的人设块——它是生成产物,下次生成会被覆盖。

重新生成后需要重启 DSH 才生效(预设只影响之后创建的会话)。


回滚

# 1) 从 profile 拿掉
$profile = $env:DSH_PROFILE_DIR
$pkg = Get-Content -Raw -Encoding UTF8 "$profile\package.json" | ConvertFrom-Json
$pkg.dependencies.PSObject.Properties.Remove('@local/dsh-plugin-forge-preset')
$pkg.dsh.profile.bundles = @($pkg.dsh.profile.bundles | Where-Object { $_ -ne '@local/dsh-plugin-forge-preset' })
$pkg | ConvertTo-Json -Depth 12 | Set-Content "$profile\package.json" -Encoding UTF8

# 2) 删 junction
Remove-Item "$profile\node_modules\@local\dsh-plugin-forge-preset" -Force

# 3) 删落地的预设与技能(可选:保留则重新装回来会复用)
Remove-Item "$env:DSH_HOME\.agent-presets\plugin-forge" -Recurse -Force
Remove-Item "$env:DSH_HOME\plugin-forge" -Recurse -Force

profile 的 package.json 旁边有安装时的备份(package.json.bak-forge-*),可以直接还原。


依赖

依赖 用途
@deepseek-ai/dsh-agent-preset-registry 模式注册表(profile 里已有)
@deepseek-ai/* 各工具行 由 composition 声明,宿主内置
@local/dsh-forge(可选) 装了就有 forge_check / forge_verify 两个体检工具

没有 @local/dsh-forge 也能正常加载——本 preset 不注册它的行。


验收记录

本次安装实测:

  • dsh-forge 体检:14 项 PASS,0 error 0 warn
  • composition 解析(真实 fail-closed 解析器):19 行、3 个 group、无缺 name 行
  • 声明链路(假 registry):registered,ok: true,broken: null
  • 生产路径(经 profile junction):exports / files / patch / entry / lib 全通
  • 技能预算:三份 SKILL.md 渲染后 4214–5862 字符,均 < 8192
  • 人设无 {{...}} 变量(会被当 prompt 变量解析失败)

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin-forge-preset 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:wodaimnd/dsh-plugin-forge-preset#v1.0.0` 即可。对应的 npm 包名是 `@local/dsh-plugin-forge-preset`。

dsh-plugin-forge-preset 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-plugin-forge-preset 安全吗?

低风险。静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。

dsh-plugin-forge-preset 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-plugin-forge-preset 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.2-rc.1。

dsh-plugin-forge-preset 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-plugin-forge-preset 有哪些功能?

从零生成可安装插件、测绘他人插件结构契约、吸收代码并验证行为、改造分叉与回归对比、预设容器可扩展新模式。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

开发与运行时
按星标排序,可作替代方案

rea

rea

L4 · 沙盒安装通过 2.6 万 星

dsh-TUI

dsh-TUI

Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

L4 · 沙盒安装通过 4,292 星

mirage

mirage

把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Sla

L3 · 安装规范通过 3,681 星

dashi-taskboard

dashi-taskboard

把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述

L4 · 沙盒安装通过 3,311 星

wodaimnd 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-11-10。