写你的第一个 dsh 插件:从 0 到能跑

插件开发 · 2026年8月15日 · 最后更新于 v0.1

写你的第一个 dsh 插件:从 0 到能跑

⚠️ 开发者预览版,API 可能变。本文给「思路骨架」,落地前请以官方 docs/ 最新示例为准。

前面《一切皆插件》讲了概念,这篇给你一个能跑起来的最小插件骨架。目标:注册一个「工具」,让模型能调用你写的能力。

核心思路

dsh 的扩展都在 Cordis 的 ctx 上注册。常见三类:

  • 加模型提供方 → ctx.llm
  • 加模型可见能力(工具)→ ctx.tools
  • 限制执行环境 → ctx.sandbox

一个最简单的「工具插件」骨架(示意,TypeScript):

// my-plugin.ts
import { Context } from 'cordis'

export const name = 'my-first-plugin'

export function apply(ctx: Context) {
  // 在 ctx.tools 注册一个模型可见的能力
  ctx.tools.register({
    name: 'hello_world',
    description: '返回一个问候字符串',
    // parameters 用 JSON Schema 描述入参
    parameters: {
      type: 'object',
      properties: { name: { type: 'string' } },
      required: ['name'],
    },
    async execute({ name }: { name: string }) {
      return `你好,${name}! 这是来自 dsh 插件的回复。`
    },
  })

  ctx.logger.info('my-first-plugin 已加载')
}

让它能跑

  1. 把它作为 bundle / 插件挂到你的 profile(参考官方 dsh-base 的目录结构)。
  2. 在 patch 文件里把该插件加入启动层。
  3. 重启 npx @deepseek-ai/dsh web,模型就能在对话里调用 hello_world

进阶方向

  • 想接安全审批 → 用 ctx.sandbox 后端约束子进程。
  • 想加 UI → 注册前端插件(Web UI 走本地 3080)。
  • 想监听请求 → 订阅 agent / tools 事件瀑布做审计日志。

注意

预览期「会有破坏性变更」——今天写的插件明天可能要改。建议:把插件版本和 dsh 版本一起锁,变动时看官方 docs/architecture.md 的迁移说明。


本站为第三方独立科普站,与 DeepSeek 无官方关联。示例代码为示意,以官方仓库示例为准。

广告
— 预留广告位(接联盟/广告时在此填入代码)—