插件开发:写一个自己的 plugin(加新能力)
这是"框架扩展"的核心动手。做完它,你就真的给 DSH"加了一样本事"了。
📖 理解轨:plugin 到底怎么加
plugin 就是一段能插进 DSH、让它多一个新能力的代码/配置。你把它放在约定好的位置,DSH 启动时就会"接上"它。
- 打个比方:给瑞士军刀加装一个新功能头——插上,它就有这个本事了。
- 和 skill 的区别:skill 是"教它怎么干某件事"(作业手册);plugin 是"让它多出一样本事"(新能力)。
关键心法:写 plugin 不是重写 DSH,而是在它留好的"接口"里塞进你的一小块功能了。 DSH 已经按"一切皆插件"来设计,你只要按它约定好的样子插。
⚠️ 先看清楚"真格式"再看下面的例子:在真源码里,给 DSH 加一个"能动手的本事",是用
ctx.tools.register(defineTool({...}))注册一个工具(有名字、描述、参数 schema、execute执行体)。下面的"它做什么 / 怎么接入 / 输出什么"是帮你先想清楚这三件事的思考骨架——不是某版本的字面文件格式。要抄真实格式,请看深度参考 · 真实接口里那份照着能跑的真工具例子。
🛠 动手轨:最简能跑的一个
我们来做一个超级简单的 plugin,让你立刻有感觉:"给 DSH 的输出加一个特定结尾格式"。
第 1 步:先看一个现成的 plugin 长什么样
动手前,先找到 DSH 里一个现成的 plugin,打开看它的骨架:通常有"这段是做啥的 + 怎么接入 + 输出什么"。照着它的样子来,最省事。
第 2 步:建一个 plugin 文件(跟着填)
新建一个文件(放 DSH 约定的插件目录,名字随你、用小写):
# 你的插件名:report-footer(报告落款)
## 它做什么
给 DSH 生成的报告,统一加一个落款。
## 怎么接入
在报告生成结束后,调用这个插件,附加落款内容。
## 它输出什么
一份带落款的报告文本。(具体字段请以版本页与你 DSH 里现成 plugin 的样子为准——这里教你思路,不背命令。)
再给一个更具体的例子:给它"加一个本事"
上面那个是"改输出"。这回是加一个真正的新能力——比如"让 DSH 能输出你们组专用的那种表格":
# 你的插件名:group-table(组内表格)
## 它做什么
让 DSH 生成表格时,自动套用你们组固定的表头和格式。
## 怎么接入
在 DSH 生成表格的环节,调用这个插件,替换成你们的表头。
## 它输出什么
一份带你们组表头的表格。看出和 skill 的区别了吗?skill 是"教它这件事怎么做"(改标准);plugin 是"让它多一个本事"(加能力)。 上面这个
group-table是"让它能产出这种表格",是能力。
你可能想加的"能力"清单(挑一个当练习)
| 你想让 DSH 多什么本事 | 你的插件叫啥 |
|---|---|
| 输出你们单位固定的文件表头 | unit-table |
| 给所有图统一加一个水印/角标 | figure-watermark |
| 把结果自动转成你们要求的格式 | to-our-format |
| 接进一个 DSH 现在没有的接口 | connect-my-tool |
| 给生成的内容固定加一句免责声明 | disclaimer-note |
练法:挑一个跟你工作贴的,照着上面的骨架写——它做什么、怎么接入、输出什么。不用一步到位,先跑到"能用"就行。
第 3 步:接入并测一下
让 DSH 跑一个会用到你的 plugin 的场景,看它是不是真的加上了你写的落款。
✅ 做对了的样子:输出的报告末尾,带了你写的落款。 ❌ 卡住了:没生效 → 检查放对位置没有(在 DSH 约定的插件目录)、名字对不对。
你现在做了什么?
你给 DSH 加了一个新能力——哪怕很小,这也是从"用 DSH 做东西"跨到"扩展 DSH 本身"了。
两个提醒
- 从最简开始:先做"加个落款"这种最小的,跑通,再往上加。
- 先读后写,以官方为准:不同版本的插件字段/写法会变,动手前对照版本页和一个现成 plugin,别背旧写法。
接着走 → 架构解读(看懂 DSH 核心结构,知道该往哪儿加)。