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

相关文章
|
23天前
|
JavaScript 开发者
DSH plugin 从零怎么写?最小插件目录、本地构建与装进 profile 调试的完整起步流程
写第一个 DSH plugin 只需要一个导出 apply 函数的模块:先用 patch 覆盖层把本地文件插进 Web 界面验证,再做成包用 dsh plugin --profile add 装进 profile,最后用 --dump-config 与日志排错。
183 2
|
9天前
|
JavaScript 开发工具 git
DSH plugin 开发环境搭建:Node 与 pnpm 准备、两种获取 Harness 的方式、工程依赖与脚手架
DeepSeek Harness(DSH)插件开发环境搭建:装 Node 与 pnpm,用 npx @deepseek-ai/dsh 或源码检出获得 Harness,再用 create-dsh-plugin 生成工程,装好 cordis、dsh-tools、schemastery 三类依赖。
143 0
|
1月前
|
人工智能 JavaScript 开发工具
DeepSeek Harness完整实操教程:开源Agent运行框架本地部署、模式选型与插件开发指南
DeepSeek Harness把大模型从单纯对话,推向真实本地环境执行任务,依托Cordis插件架构实现组件完全可替换,给Agent开发者提供了一套能力强大的开源底座。整套工具的使用流程可以概括为:准备适配版本Node.js环境,通过npx一行命令快速拉起Web界面,配置模型密钥或者对接Ollama本地模型,选择隔离的工作目录,根据任务选择合适运行模式,下发指令观察Agent完整执行轨迹。
1159 3
|
26天前
|
人工智能 安全 JavaScript
DeepSeek Harness开源Agent运行框架实战:4种安装方式、WebUI启动、插件管理与排坑全流程
随着AI Agent技术快速发展,单纯依靠大模型对话能力,很难完成复杂的自动化任务。模型需要具备读取本地文件、执行脚本、访问网页、操作文件系统、拆分复杂任务并分步执行的能力。DeepSeek Harness,简称DSH,是开源的AI Agent执行运行框架,遵循“Agent = 大模型 + Harness执行底座”的设计理念,为大模型提供一套安全可控的工具调用、任务编排、沙箱执行与插件扩展能力。它提供Web可视化界面与完整命令行工具,支持插件化扩展,能够让大模型自主拆解复杂需求,调用各类工具分步完成目标,无论是本地电脑调试,还是部署在云服务器上长期运行智能体任务都十分合适。本文为从0到1完整保
1395 1
|
1月前
|
开发工具 git 开发者
DeepSeek Harness 版本怎么选?dsh 版本号怎么看、rc 版说明与锁定指定版本安装
选 DSH 版本先读懂版本号:dsh --version 看当前,npm view 看最新,rc 是候选发布版、接口可能变;要稳定追 latest,尝鲜才装 rc。想锁版本用 npm install -g @deepseek-ai/dsh@版本 或源码 git checkout tag,本文给出完整操作。
958 0
|
2月前
|
缓存
dsh plugin 命令怎么用?DSH 插件安装、卸载、列出命令大全
dsh plugin 是管理 DSH 插件的命令族:add 安装、remove 卸载、list 列出,都配合 --profile 指定环境。安装有 npm 包名、GitHub 源码、本地目录、市场图形化四种方式,卸载有命令行与界面两种,本文逐个展开步骤并附常见问题排查。
2427 1
dsh plugin 命令怎么用?DSH 插件安装、卸载、列出命令大全
|
2月前
|
缓存 人工智能 监控
整理了一份 DeepSeek Harness 必备插件清单!
本文是DeepSeek Harness发布半个多月后的插件精选指南,涵盖10款高实用性插件:从生态入口dsh-market、视觉增强modlens,到界面升级、代码侧栏、文件引用、桌面端、多源搜索、长期记忆、费用监控及知识精读工具。附安装命令与适用场景,新手三步起步建议,助你高效打造个性化AI工作台。
2571 4
整理了一份 DeepSeek Harness 必备插件清单!
|
2月前
|
开发工具 Swift git
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
DeepSeek Harness 插件推荐:ModLens 视觉、Web UI 全家桶、Mac 原生与 GenUI 渲染,4 款开源插件给纯文本模型补齐短板。
3083 7
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
|
2月前
|
安全 API 数据安全/隐私保护
内网 DeepSeek Harness 远程安全访问完整教程
DeepSeek Harness是DeepSeek开源的智能体框架,支持插件化扩展,专注代码开发、仓库修改等任务。配合ZeroNews内网穿透,可安全将本地Web UI(http://127.0.0.1:3080)发布至公网,通过HTTPS域名+BasicAuth+IP/地域围栏多重防护,实现远程、可控、安全的Agent协作。
内网 DeepSeek Harness 远程安全访问完整教程
|
23天前
|
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 收录。
219 3
DeepSeek Harness 源码怎么构建?DSH plugin 本地开发调试与源码版 npx 差异指南

热门文章

最新文章