How to Build a DeepSeek Harness Plugin
Understand the Cordis plugin model, ship one focused capability and make it discoverable to the growing Harness community.
Updated August 14, 2026 · Based on the current developer previewDeepSeek Harness is in developer preview. Query or inspect the interfaces available in your running version and avoid assuming that an old example still matches the current API.
Start with one contribution
DeepSeek Harness is built on Cordis and treats models, tools, sessions, UI and other capabilities as plugins. A first plugin should contribute one narrow behavior that is easy to load, test and remove.
import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply(ctx: Context) {
console.log('hello from my plugin')
}The plugin receives a Cordis context and registers its effects through that context. Keep side effects inside apply so the runtime can stop or replace the plugin cleanly.
Choose the owning platform
- Host: files, commands, processes, networking, agents and durable session behavior.
- Client: theme, layout, page state and UI slots.
- Both: fetch or compute on the Host, then expose a small typed call to a Client view.
Prefer the capability closest to the data owner. A visual feature should not create a broad Host service, and a filesystem tool should not depend on browser DOM access.
Treat lifecycle cleanup as a product feature
Plugins are meant to be stopped, updated and replaced. Register listeners and subscriptions through Cordis lifecycle APIs, retain returned disposers, and avoid process-wide side effects outside apply. A good test is simple: after disabling the plugin, none of its timers, commands, UI or listeners should remain.
For tools, validate the model boundary
A model-callable tool needs a precise name, description, parameter schema and output representation. Validate arguments before execution, return stable structured output and declare only the services the tool actually requires. The official tutorial demonstrates registration through the Harness tools service.
Package the trust signals
Your repository is also your listing source. Before announcing the plugin, include:
- a one-sentence value proposition and current screenshot;
- an exact install command with the intended profile;
- minimum Harness version or a developer-preview compatibility note;
- permissions, network destinations and external service requirements;
- a license, usage example, uninstall or rollback notes and an issue link.
Make the plugin discoverable
The official DeepSeek Harness README asks plugin authors to add the dsh-plugin GitHub topic. dshplugin.dev watches that public ecosystem signal and turns supported repository metadata into an internal detail page.
Add the topic, improve the README and use the listing badge to send users to a stable evaluation page.
Get your plugin listed →Pre-release checklist
- Load the plugin against the current Harness build.
- Exercise its smallest happy path and one failure path.
- Stop or update it and confirm every effect is cleaned up.
- Verify the published command from a clean profile.
- Add
dsh-plugin, a license and a useful repository description.