示例插件:greet-tool
本页是教程第 3 章的配套可运行示例,位于仓库 examples/greet-tool/。
文件说明
| 文件 | 作用 |
|---|---|
src/index.ts | 插件源码:定义 Config、注册 greet 工具 |
cordis.yml | 插入 Web UI 的 patch 覆盖层 |
package.json | 示例包清单(示例插件,非发布包) |
README.md | 运行说明 |
运行
在 deepseek-harness 仓库 检出根目录执行:
sh
pnpm dsh web --patch /absolute/path/to/examples/greet-tool/cordis.yml打开 http://127.0.0.1:3080,发送:
Use the greet tool to greet Ada.
模型会调用 greet,收到 Hello, Ada!(或你在配置里改过的问候语)。
尝试修改配置
把 cordis.yml 中 config 改为:
yaml
config:
greeting: 'Howdy'
uppercase: true保存后插件会热替换(HMR),无需重启。再调用一次,结果变为 HOWDY, ADA!。
源码速览
ts
import type { Context } from '@deepseek-ai/cordis'
import Schema from '@deepseek-ai/schemastery'
import { defineTool } from '@deepseek-ai/dsh-tools'
export const name = 'greet-tool'
export const inject = ['tools']
export interface Config {
greeting: string
uppercase: boolean
}
export const Config: Schema<Config> = Schema.object({
greeting: Schema.string().default('Hello'),
uppercase: Schema.boolean().default(false),
})
export function apply(ctx: Context, config: Config) {
ctx.tools.register(defineTool({
name: 'greet',
description: 'Greet someone by name.',
parameters: {
name: { type: 'string', required: true, description: 'The name to greet' },
},
output: {
schema: { type: 'string' },
render: (_args, value) => [{ type: 'text', text: value }],
},
async execute(args) {
let message = `${config.greeting}, ${args.name}!`
if (config.uppercase) message = message.toUpperCase()
return message
},
}))
}