DeepSeek Harness(DSH)的设计理念是“一切皆插件”。在开发智能体或工作流时,如果需要模型具备特定的工具能力,开发者需要自行编写插件。dsh-greet-plugin 是一个最小化的示例插件,它向 Harness 注册了一个 greet 工具,演示了纯 JavaScript 插件的编写方式。
插件简介¶
这是一个由 imiss1314520 维护的插件,许可证为 MIT。它通过纯 JavaScript 实现,不依赖构建步骤,适合作为开发自定义工具的起点。
核心功能¶
- 注册
greet工具 - 纯 JavaScript,无构建步骤
- 通过
package.json声明配置层 - 通过
cordis.patch.yml向组合中插入插件
安装与启用¶
使用官方命令从 GitHub 安装:
dsh plugin --profile myprofile add github:<用户名>/<仓库名>
安装后,先验证配置层是否生效,再启动 Harness:
dsh --profile myprofile --dump-config # 输出里应出现 "# == dsh-greet-plugin" 这一层
dsh --profile myprofile
典型用法¶
在会话中输入:
Use the greet tool to greet Ada.
模型将调用 greet 工具,并收到工具结果 Hello, Ada!。
组成与实现¶
该插件由三个核心文件组成:
package.json:声明dsh.bundle.patch,以及运行时依赖。cordis.patch.yml:贡献配置层,向组合中插入一行插件,按包名引用本包。index.js:插件入口,导出name、inject、apply,在apply中通过defineTool注册工具。
inject = ['tools'] 确保在工具注册表就绪后再调用 apply。defineTool 依据 parameters 校验参数,execute 返回 output.schema 声明的规范值,output.render 再把它转成面向模型的内容。
如何修改¶
若要将其改造成自己的插件:
- 改
package.json的name,例如dsh-my-plugin。这个包名才是别人安装和引用时用的名字,与仓库名无关。 - 改
cordis.patch.yml中插件行的name,必须与上面的包名完全一致。 - 改
index.js的name导出、工具名、参数与返回值。 - 需要用户可配置的项时,导出一个 Schemastery schema 作为
Config,并把默认值写在 schema 里。
注意事项¶
- 不要引入构建步骤。
dsh plugin add github:...拉取的是源码而不是构建产物:包若需要build,使用者安装会失败,还得在 profile 的pnpm-workspace.yaml中写allowBuilds授权。保持纯 JavaScript 就没有这个问题。 - 运行时依赖写进
dependencies;别人通过 git 或 npm 安装时,pnpm 会自动装上它们。 - 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
发布与发现¶
- 发布到 npm:
pnpm publish。 - 让别人找到这个插件:给 GitHub 仓库加上
dsh-plugin话题。
相关链接¶
- 插件目录:https://www.skillhub.cn/plugins/imiss1314520/dsh-greet-plugin
- GitHub 仓库:https://github.com/imiss1314520/dsh-greet-plugin