DSH 插件怎么开发?从最小插件到打包安装

简介: DSH 插件是一个导出 apply 函数的 TypeScript 模块,基于 Cordis:通过 name 命名、inject 声明依赖、ctx 注册能力、Config schema 接受配置。本文从最小插件写起,讲清打包成 bundle、用 dsh plugin add 装进 profile 的完整流程。

DSH 插件是一个导出 apply 函数的 TypeScript 模块,基于 Cordis:通过 name 命名、inject 声明依赖、ctx 注册能力、Config schema 接受配置。本文从最小插件写起,讲清打包成 bundle、用 dsh plugin add 装进 profile 的完整流程。

本文转自 DSH Plugin Hub 插件市场


DSH 插件是一个导出 apply 函数的 TypeScript 模块:框架加载时调用 apply 并传入 ctx 上下文,你通过 ctx 注册能力,用 inject 声明依赖,用 Config schema 接受配置。

插件是什么

在 DSH 里,插件就是导出 apply 的模块。 框架加载时调用 apply,传给你一个 ctx(上下文对象),一切能力都通过它注册(来源):

import type {
    Context } from '@deepseek-ai/cordis'

export const name = 'my-plugin'

export function apply(ctx: Context) {
   
  // 在这里注册能力。
}

这就已经是完整的最小插件了。name 是插件的唯一标识,apply 是入口,ctx 提供注册接口。

最小可运行插件

一个会打日志的插件就三行核心代码。 创建 src/my-plugin.ts:

import type {
    Context } from '@deepseek-ai/cordis'

export const name = 'hello-plugin'

export function apply(ctx: Context) {
   
  console.log('[hello-plugin] plugin loaded!')
}

用 --patch 覆盖层把它挂进 Web UI,启动时终端会打印 [hello-plugin] plugin loaded!(来源)。

自动清理

通过 ctx 注册的任何东西——事件监听、工具、定时器——在插件卸载时都会自动清理。 有需要手动清理的资源(比如网络连接),用 ctx.effect() 告诉框架怎么清理:

export function apply(ctx: Context) {
   
  ctx.effect(() => {
   
    const timer = setInterval(() => console.log('heartbeat'), 5000)
    // 返回的函数在插件卸载时执行。
    return () => clearInterval(timer)
  })
}

声明依赖

插件要用别的服务(如 tools、llm),就导出 inject 声明依赖。 框架会确保依赖的服务就绪后才加载你的插件:

export const name = 'my-tool-plugin'
export const inject = ['tools']

export function apply(ctx: Context) {
   
  // 到这里 ctx.tools 已经就绪。
  ctx.tools.register(/* ... */)
}

让插件接受配置

导出 Config 类型和同名的 Schemastery schema,默认值直接写在 schema 里。 插件加载时框架用 schema 校验配置并补默认值(来源):

import Schema from '@deepseek-ai/schemastery'

export interface Config {
   
  greeting: string
  maxRetries: number
}

export const Config: Schema<Config> = Schema.object({
   
  greeting: Schema.string().default('Hello'),
  maxRetries: Schema.number().default(3),
})

export function apply(ctx: Context, config: Config) {
   
  console.log(config.greeting) // 用户值或 schema 默认值。
}

约定:凡是不同部署可能要改的参数都定义成配置字段,别硬编码;无效配置要在加载时响亮报错。

打包成 bundle

分发的插件包叫「组合包」(bundle),由一份 package.json 声明 dsh.bundle。 目录结构:

hello-plugin/
├── package.json       # 声明 dsh.bundle
├── cordis.patch.yml   # 该组合包贡献的配置层
└── index.js           # patch 行引用的插件模块

package.json 长这样(来源):

{
   
  "name": "dsh-hello-plugin",
  "version": "0.1.0",
  "type": "module",
  "main": "index.js",
  "files": ["index.js", "cordis.patch.yml"],
  "dsh": {
    "bundle": {
    "patch": "./cordis.patch.yml" } }
}

cordis.patch.yml 按包名引用这个包:

- insert:
  - id: hello
    name: dsh-hello-plugin

安装进 profile

打好包就用 dsh plugin add 装进 profile。 命令转发给 profile 目录里的 pnpm(来源):

dsh plugin --profile demo add ./hello-plugin

因为包声明了 dsh.bundle,DSH 会把它追加进 dsh.profile.bundles。启动前先用 dsh --profile demo --dump-config 验证层生效,再 dsh --profile demo 启动。

从 GitHub 安装的坑

git 安装拉的是源码,不会跑你的 build 脚本。 所以 TypeScript 包需要作者提供一个 prepare 脚本,在 pnpm 安装后构建出发布入口;用户侧第一次 add 会被 pnpm 的 allowBuilds 拦住,按报错把允许 key 写进 profile 的 pnpm-workspace.yaml 再重试(来源)。不想让用户做这项授权,就发布到 npm 或交付 pnpm pack 出来的 tarball。

用脚手架快速起步

不想手写就一键生成。 社区脚手架 create-dsh-plugin 支持 tool / events / webui 三种模板,并锁定了正确的 @deepseek-ai/dsh-tools 版本:

npx create-dsh-plugin my-plugin -t tool

生成的工程自带 package.json、tsconfig.json、dsh.bundle manifest 和 cordis.patch.yml,加 --verify 还会自动构建并装进临时 profile 验证加载。开发完回到《DSH plugin 怎么安装》把成品装起来试用。


常见问题

DSH 插件是什么?

是一个导出 apply 函数的 TypeScript 模块,框架加载时调用 apply 并传入 ctx 上下文,你通过 ctx 注册能力。

开发 DSH 插件需要从哪开始?

最快用脚手架:npx create-dsh-plugin my-plugin -t tool,一键生成 tool / events / webui 模板。想手动写就从导出 apply 的最小插件开始。

DSH 插件怎么声明依赖其他服务?

导出 inject 数组,比如 export const inject = ['tools'],框架会等依赖的服务就绪后再加载插件。

DSH 插件怎么打包安装?

在 package.json 里声明 dsh.bundle.patch 指向 cordis.patch.yml,然后用 dsh plugin --profile add <包> 装进 profile。

从 GitHub 安装 DSH 插件报 allowBuilds 错误怎么办?

pnpm 默认不放行 git 依赖的构建脚本,按报错提示把允许 key 写进 profile 的 pnpm-workspace.yaml,重新 add 即可。


本文转自 DSH Plugin Hub 插件市场,版权归属 DSH Plugin Hub 插件市场。

分类:插件开发

原文地址:https://dsh-plugin.org/zh/tutorials/develop-dsh-plugin

首页:DSH Plugin Hub

来源:官方「第一个插件」、官方「打包与安装插件」、dsh CLI README

相关文章
|
2月前
|
JavaScript 开发者
DSH plugin 从零怎么写?最小插件目录、本地构建与装进 profile 调试的完整起步流程
写第一个 DSH plugin 只需要一个导出 apply 函数的模块:先用 patch 覆盖层把本地文件插进 Web 界面验证,再做成包用 dsh plugin --profile add 装进 profile,最后用 --dump-config 与日志排错。
433 2
|
2月前
DSH plugin 开发示例:最小插件、工具插件、事件插件、带配置插件与服务插件的完整代码示例
DeepSeek Harness(DSH)插件开发示例合集:最小插件、模型工具、事件监听、带 Config 配置与服务提供者五个可直接抄的示例,每个含目录结构、完整代码与运行方式。
419 1
|
1月前
|
JavaScript
DSH plugin 开发教程:从环境准备、脚手架到打包上架,DSH 插件开发完整教程与新手入门流程
DeepSeek Harness(DSH)插件开发教程:从准备 Node 与 pnpm、创建插件工程、用 cordis.yml 挂载调试,到打包成 bundle 并装进 profile 验证。六步跑通第一个可安装插件。
798 0
|
2月前
|
Shell API
DSH plugin 开发指南:插件形态怎么选、能力注册到哪里、本地怎么调试,DSH 插件开发完整路线图
DeepSeek Harness(DSH)插件开发指南:先判断插件属于函数 / 对象 / 类哪种形态,再决定能力注册到 tools、service 还是事件,最后选 --patch 覆盖层或 profile 安装调试。附可替换提供方的三角色设计。
368 2
|
2月前
|
JavaScript 开发工具 git
DSH plugin 开发环境搭建:Node 与 pnpm 准备、两种获取 Harness 的方式、工程依赖与脚手架
DeepSeek Harness(DSH)插件开发环境搭建:装 Node 与 pnpm,用 npx @deepseek-ai/dsh 或源码检出获得 Harness,再用 create-dsh-plugin 生成工程,装好 cordis、dsh-tools、schemastery 三类依赖。
452 0
|
2月前
|
人工智能 安全 JavaScript
DeepSeek Harness开源Agent运行框架实战:4种安装方式、WebUI启动、插件管理与排坑全流程
随着AI Agent技术快速发展,单纯依靠大模型对话能力,很难完成复杂的自动化任务。模型需要具备读取本地文件、执行脚本、访问网页、操作文件系统、拆分复杂任务并分步执行的能力。DeepSeek Harness,简称DSH,是开源的AI Agent执行运行框架,遵循“Agent = 大模型 + Harness执行底座”的设计理念,为大模型提供一套安全可控的工具调用、任务编排、沙箱执行与插件扩展能力。它提供Web可视化界面与完整命令行工具,支持插件化扩展,能够让大模型自主拆解复杂需求,调用各类工具分步完成目标,无论是本地电脑调试,还是部署在云服务器上长期运行智能体任务都十分合适。本文为从0到1完整保
3802 4
|
2月前
|
JavaScript API 开发工具
DeepSeek Harness 源码怎么构建?DSH plugin 本地开发调试与源码版 npx 差异指南
DeepSeek Harness 从源码构建分五步:装 Node.js 与 pnpm → git clone → pnpm install → pnpm run build → pnpm dsh 启动。源码版最适合本地开发 DSH plugin——dsh plugin 会把参数原样转发给 pnpm,支持本地路径调试;开发完可提交到 DSH Plugin Hub 收录。
490 3
DeepSeek Harness 源码怎么构建?DSH plugin 本地开发调试与源码版 npx 差异指南
|
3月前
|
开发工具 Swift git
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
DeepSeek Harness 插件推荐:ModLens 视觉、Web UI 全家桶、Mac 原生与 GenUI 渲染,4 款开源插件给纯文本模型补齐短板。
5018 7
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
|
3月前
|
缓存 人工智能 监控
整理了一份 DeepSeek Harness 必备插件清单!
本文是DeepSeek Harness发布半个多月后的插件精选指南,涵盖10款高实用性插件:从生态入口dsh-market、视觉增强modlens,到界面升级、代码侧栏、文件引用、桌面端、多源搜索、长期记忆、费用监控及知识精读工具。附安装命令与适用场景,新手三步起步建议,助你高效打造个性化AI工作台。
7305 8
整理了一份 DeepSeek Harness 必备插件清单!
|
3月前
|
缓存
dsh plugin 命令怎么用?DSH 插件安装、卸载、列出命令大全
dsh plugin 是管理 DSH 插件的命令族:add 安装、remove 卸载、list 列出,都配合 --profile 指定环境。安装有 npm 包名、GitHub 源码、本地目录、市场图形化四种方式,卸载有命令行与界面两种,本文逐个展开步骤并附常见问题排查。
7795 1
dsh plugin 命令怎么用?DSH 插件安装、卸载、列出命令大全

热门文章

最新文章