xu1132/dsh-plugin-hello ↗★ 1

dsh-plugin-hello

最小示例插件,注册一个可被模型调用的 hello 问候工具。 适合想学习插件结构或做首次贡献的开发者,功能仅为示例问候,非实用工具。

包名
dsh-plugin-hello
兼容性
待验证
Harness 依赖范围
^0.0.1-rc.1
Cordis 依赖范围
^4.0.1
版本
0.1.0
许可证
MIT
最近更新
2026年8月14日

同名包的其他仓库

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xu1132/dsh-plugin-hello

dsh-plugin-hello

A minimal DeepSeek Harness community plugin. It registers a single model-callable tool, hello, that greets a caller by name. It is the smallest complete example of a dsh-plugin bundle and a good starting point for a first contribution.

What it does

When the plugin loads, it registers the hello tool on ctx.tools:

  • Input: name (string, required) — the person to greet.
  • Output: ", !" — for example Hello, Ada!.

The greeting prefix is configurable and defaults to Hello.

Install into a profile

dsh plugin forwards to pnpm inside the profile directory, so any pnpm install form works:

dsh plugin --profile demo add github:you/dsh-plugin-hello

The first run initializes the profile with @deepseek-ai/dsh-base, links this package, and appends it to the profile's dsh.profile.bundles because package.json declares dsh.bundle. A git install fetches sources, so pnpm runs the prepare script to build lib/ from src/. pnpm 10+ refuses that script until it is allowlisted; dsh prints the exact allowBuilds entry to copy into the profile's pnpm-workspace.yaml. Verify the composed layer, then boot:

dsh --profile demo --dump-config   # shows a "# == dsh-plugin-hello" layer
dsh --profile demo

Ask the model: Use the hello tool to greet Ada. It calls hello and receives Hello, Ada!.

Configure

Set a custom greeting by overriding the row in the profile's cordis.patch.yml:

- id: hello
  name: dsh-plugin-hello
  config:
    greeting: Howdy

Invalid configuration fails the load.

Development

pnpm install
pnpm run typecheck
pnpm run build     # emits lib/index.js and lib/index.d.ts
pnpm run test

Structure

hello/
├── package.json       # bundle manifest (dsh.bundle), scripts, deps
├── cordis.patch.yml   # the configuration layer the bundle inserts
├── src/index.ts       # the plugin: name / inject / Config / apply
├── tests/hello.spec.ts
├── tsconfig.json
└── vitest.config.ts

License

MIT