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:
"<greeting>, <name>!"— for exampleHello, 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
No comments yet. Be the first to write one.