前言¶
如果你在给 DeepSeek Harness(dsh)做插件开发,会碰到一个现实问题:dsh 的插件有一套严格的契约规范,apply(ctx) 生命周期函数、defineTool 工具定义、Schema DSL 硬约束。这些 API 对人来说要翻文档,对模型来说更麻烦,dsh 发布不久,模型缺乏针对性训练数据,直接在会话里让 Agent「帮我做一个 XX 插件」,很容易出现 API 幻觉,产出跑不起来的代码。
dsh-plugin-factory 要解决的就是这件事:它给 dsh 会话中的 Agent 提供一套完整的插件开发工具链,让 Agent 自己读契约文档、生成合法骨架、自查校验,最后给出可直接安装的片段,全程不需要人工编写。
这是什么¶
用 README 的原话定位:让 dsh 的 AI 自己编写 dsh 插件,自举式插件生成工具。维护者为 ktziy,License 为 MIT,当前版本 0.3.2。
它的思路是把契约规范打包成「文档 + 脚手架 + 校验器」三个工具,从源头约束 Agent 输出,确保生成代码的合法性。README 还注明本插件由 DeepSeek 模型制作(AI 含量高达 99.99%):因为模型发布不久缺乏相关训练数据,由 DeepSeekV4 闪光版整理、Pro 版分发为提示词包供模型使用。这个背景本身也说明了插件的用途——给没有训练数据的模型补上契约知识。
三个核心工具¶
plugin_doc:按主题读取契约文档¶
Agent 写插件前先查规范,而不是凭记忆猜 API。plugin_doc 支持按主题读取开发契约文档,主题包括:
core / tools / services / llm / compose / preset / client / api
另外支持 file= 按路径读取官方结构化参考(ref/)与官方原文(official/)。
plugin_scaffold:生成六种插件骨架¶
plugin_scaffold 生成插件骨架,支持 6 种 kind:
| kind | 说明 |
|---|---|
tool |
Host 工具(defineTool) |
service |
Host Service 类 |
event |
Host 事件监听 |
llm-adapter |
Host LLM 适配器 |
client |
Web UI 插件(settings.section 槽位) |
client-node |
Web UI 对话节点 |
plugin_validate:落盘前的静态自查¶
plugin_validate 基于守卫规则做静态自查,覆盖 tool 的 defineTool 规则,以及 client 的 apply/inject/slots。生成骨架后先跑一次校验,再进入落盘环节。
Host 侧与 Client 侧的覆盖¶
按 README 的开发进度表,两侧的能力如下。
Host 侧:
- Tool 工具:文档 + 脚手架 + 校验
- Service 服务:脚手架(Service 类 + declare module)
- 事件监听/拦截:脚手架(ctx.on + 分发模式提示)
- 配置:文档 + scaffold 带 Config 示例
- LLM 适配器:脚手架(LlmAdapter + StreamChunk 协议)
- 打包/发布:文档 + 包本身是 bundle
Client 侧:
- Client UI 插件(settings.section 槽位):文档 + 脚手架 + 校验 + 构建 + 挂载实测
- 对话节点 UI:脚手架(ConversationNodeDefinition 全套)
- 其他槽位:文档覆盖(client.md §3 完整清单)+ 两个代表模板
README 记录的自测结果:无模型自测 6 种 kind 全部通过,编译通过,打包 29KB。
安装¶
README 给出三种安装方式,推荐 tarball(免构建):
# 方式一:tarball(推荐,免构建)
dsh plugin --profile web add ./dsh-plugin-factory-0.3.2.tgz
# 方式二:Git 仓库
dsh plugin --profile web add github:ktziy/dsh-plugin-factory
# 方式三:NPM
dsh plugin --profile web add dsh-plugin-factory
三条命令都指定了 --profile web,按你的 profile 实际情况调整。
典型用法¶
安装完成后,直接在 dsh 会话中对 Agent 说:
Use plugin_scaffold to create a plugin named weather-tool with toolName get_weather.
Agent 将自动返回两样东西:合法的插件骨架源码,以及可直接粘贴的 --patch 安装片段。
背后的完整工作流程是这样的:
- Agent 调用
plugin_doc读取契约规范 - 调用
plugin_scaffold生成合法骨架 - 调用
plugin_validate自查校验 - 利用 dsh 的 fs/bash 工具落盘
- 通过
dsh plugin add加载插件
更完整的工作流程和高级用法,可参阅仓库内的核心文档 docs/CORE.md。README 的「效果预览」一节目前标注为待补充,实际效果以你自己环境里的运行为准。
适用场景与注意事项¶
适合两类人:一是经常为 dsh 写插件、想省去反复翻契约文档的开发者;二是希望在会话内让 Agent 代劳插件生成,减少 API 幻觉带来的调试成本。
使用前注意两点:
- 插件以当前 dsh 进程权限运行,上面工作流程里的 fs/bash 落盘操作也在这个权限下执行。安装任何第三方插件前,建议先检查源码与许可证。本插件源码在 GitHub 公开,License 为 MIT,package.json 的 license 字段同为 MIT。
- 插件本身由模型制作,Agent 生成结果仍建议人工过一遍,尤其是通过
plugin_validate之后再看一眼再安装。
小结¶
dsh-plugin-factory 把「人读文档、人写代码、人调试」的插件开发流程,压缩成 Agent 会话内的一次工具链调用。对 dsh 插件生态来说,这类自举工具降低了写插件的门槛,也让「一切皆插件」的理念更容易落地。
- 社区目录页:https://www.skillhub.cn/plugins/ktziy/dsh-plugin-factory (社区独立站点,与 DeepSeek / 幻方无官方从属关系)
- GitHub 仓库:https://github.com/ktziy/dsh-plugin-factory