DeepSeek Harness plugin

dsh-plugin-forge

AI-native DSH 插件生成工具:forge_plugin 工具让 AI 自发发现能力缺口、子代理开发、迁移为独立 git 仓库并自动提交与热挂载

Jump to install

Source facts

Repository
csiroqa/dsh-plugin-forge
Latest update
Aug 15, 2026
Category
Development & Runtime
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/csiroqa/dsh-plugin-forge
Plugin: dsh-plugin-forge
Author: csiroqa

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-plugin-forge

![CI](https://github.com/csiroqa/dsh-plugin-forge/actions/workflows/ci.yml)

AI-native DSH 插件生成器。forge_plugin 由 AI 在执行任务时调用:子代理开发 → 迁移为「项目根/dsh-plugins/<name>」独立 git 仓库(功能完成即英文 Conventional Commit)→ 热挂载当前会话。

借由一切皆插件理念的智能体自迭代探索,现已实现自举(?

English: README.en.md

工具 forge_plugin

参数类型默认说明
requirementstring必填插件需求(中文优先,尽量具体)
namestring自动仓库目录名(kebab-case,从需求派生)
targetRootstring项目根/dsh-plugins迁移根目录(参数 > 配置 > 默认)
migratebooleantrue迁移为独立仓库并提交
updatebooleanfalse更新既有仓库(防误覆盖)
installboolean缺省自动装入 profile:缺省自动装入当前 profile;false 关闭;installProfile 可显式指定
hotbooleantrue热挂载到当前运行时

输出 JSON:

字段说明
ok pluginName committed build files必填;build = passed / skipped / 失败原因
migratedTo仓库绝对路径(正斜杠);migrate=false 时缺省
commitSubject提交 subject;未提交时缺省
childReport子代理 REPORT notes(截断 500 字符)
installed installDetail hotMounted hotDetailprofile 装入(installed=falseinstallDetail 为未装入原因)/ 热挂载结果;两者失败均不阻塞交付
duplicated existingName子代理判定与既有插件重复:拒绝新建,返回既有仓库名

失败(子代理未完成 / 迁移后构建失败 / 加载冒烟未通过)throw,staging 保留。

命令 /forge status

逐仓库输出:

- <name>(<path>)
  HEAD:<短哈希> <subject>;工作区:干净|有未提交改动|目录不存在;最近提交:<本地时间>,累计 <n> 次

registry 为空时输出「plugin-forge 尚未创建任何插件仓库。」

流程

staging → 子代理开发(typecheck/test/build)→ 重复检测 → 迁移 → 目标重建 → 加载冒烟 → git init/commit → 登记 → 装入 profile(缺省自动)→ 热挂载。

  • staging:<stagingRoot>/<name>,默认 工作区/.forge-staging/<name>;子代理仅写此处
  • 同名任务进程内互斥;stagingTtlDays > 0 时启动前清理过期目录
  • 迁移:link/CI 中 deepseek-harness 路径按深度改写、拒绝 registry 版 @deepseek-ai/* 依赖、写入 .gitignore(排除 node_modules/.git/.pnpm-store/lib/dist)
  • 更新模式额外 syncRemoveStale:删除目标中 staging 已不存在的源文件
  • 提交:<type>: <name>[: <summaryEn>],header ≤ 72 字符,summary 超预算截断;type 非法回退 feat
  • 登记:$DSH_HOME/plugin-forge.json,形状 {version: 1, repos: [{name, path, createdAt, lastCommitAt?, commitCount, summaryZh?}]},tmp+rename 原子写
  • push 仅配置显式开启时执行(默认关,遵守 AGENTS.md)

防重复

引导节不注入插件清单(省上下文)。子代理开发前自检:读 registry 与 dsh-plugins/ 目录,需求重复则 REPORT duplicate_of → 宿主拒绝新建,返回 duplicated: true + existingName;迭代走 update=true

配置(cordis.patch.yml)

默认说明
targetRoot''迁移根;空 = 工作区父目录/dsh-plugins
stagingRoot''staging 根;空 = 工作区/.forge-staging
harnessRoot''deepseek-harness 检出根;空 = 自动查找
subagentProviderspawn子代理 provider
maxChildDepth2子代理委托深度上限(1–5)
childTimeoutMs2700000子代理/构建超时(≥ 60000)
commitTypefeatConventional Commit 类型
pushfalse提交后 push
gitAuthorNamecsiroqa提交作者名
gitAuthorEmailjustinwangyj@163.com提交作者邮箱
keepStagingtrue保留 staging 供排查
stagingTtlDays0staging 保留天数;0 = 不清理
installProfile''装入的 profile 名;空 = 自动探测当前 profile
autoInstalltrue成功后自动装入当前 profile(install: false 参数可关闭单次)

质量门

staging 内 typecheck/test/build → 迁移后目标 pnpm install && pnpm build → main/types 存在 → 拒绝 registry 版 @deepseek-ai/*加载冒烟(真实 cordis Context 执行 apply,拦截 apply 期崩溃——真实事故:命令 input.hint 为空导致 DSH 启动即崩)→ 宿主工具名冲突拦截(机制确认:dsh-tools 跨 scope 同名注册不报错但模型侧遮蔽;加载冒烟与热挂载双重拦截)→ 提交前检查 diff。

安装

pnpm install && pnpm build
dsh plugin --profile web add link:D:\2-OGP\dsh-plugin-forge

重启 dsh web。前置:Node ≥ 22、pnpm、本地 deepseek-harness 检出(依赖 link: ../deepseek-harness)。

交付方式

1. 热挂载(默认):生成后挂载当前运行时,本会话即用 2. 装入 profile(缺省自动):探测当前 profile(installProfile 可显式指定),重启生效 3. repository 源(家目录层 plugin-console):$DSH_HOME/cordis.patch.ymlrepository-plugins.repositories,面板行管理——添加=安装、更新=锁定远端最新 commit、删行=卸载、立即生效;行格式 github:owner/repo#ref(monorepo 子包加 &path:/packages/<子包>)。forge 产物是单包独立仓库,push 后可直接作源;update=true 迭代 push 后面板更新即拉新 commit

真实 LLM 测试(免重启 GUI)

node scripts/llm-e2e-host.mjs prompt <name> <stagingDir> <targetRoot> <harnessRoot> "<需求>"
node scripts/llm-e2e-host.mjs run <name> <stagingDir> <targetRoot> <harnessRoot> "feat: <name>: <摘要>"

prompt:生成真实子代理提示词;run:执行宿主侧全流程(迁移/link+CI 改写/构建/提交/登记);--update 走更新链路。

安全

  • forge 启动子代理、联网 pnpm install、目标目录构建、执行 git commit——只传可信需求
  • 提交前 diff 检查、.gitignore 排除构建产物与依赖、不自动 push/tag/release
  • 子代理只写 staging(工作区内)

演示

agent 自发提出建插件需求的会话截图:

![demo-1:agent 自发提出「每次会话结束自动把对话要点存档为 Markdown」](docs/demo-1.png)

![demo-2:审查后 agent 自发提出固化流程的任务](docs/demo-2.png)

![demo-2](docs/demo-2.png)