写你的第一个 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 已加载')
}
让它能跑
- 把它作为 bundle / 插件挂到你的 profile(参考官方
dsh-base的目录结构)。 - 在 patch 文件里把该插件加入启动层。
- 重启
npx @deepseek-ai/dsh web,模型就能在对话里调用hello_world。
进阶方向
- 想接安全审批 → 用
ctx.sandbox后端约束子进程。 - 想加 UI → 注册前端插件(Web UI 走本地 3080)。
- 想监听请求 → 订阅 agent / tools 事件瀑布做审计日志。
注意
预览期「会有破坏性变更」——今天写的插件明天可能要改。建议:把插件版本和 dsh 版本一起锁,变动时看官方 docs/architecture.md 的迁移说明。
本站为第三方独立科普站,与 DeepSeek 无官方关联。示例代码为示意,以官方仓库示例为准。