huyang218/dsh-plugins

Plugins for DeepSeek Harness (dsh) — 18 build-free ESM bundles: model-facing tools, runtime wrappers and web UI extensions. Installable by name, URL or local path from the dsh CLI, dsh Desktop or dsh Android.

项目介绍Project Overview

dsh-plugins 是 DeepSeek Harness 的插件集合,每个包均为纯 ESM 免构建的 dsh bundle,可从 npm、Git 或本地源码直接加载,覆盖 CLI、桌面端与 Android 客户端,按 tools、runtime、ui 三类扩展模型能力、运行时行为与 Web 界面。适用于需要快速为 dsh 代理接入 A 股行情、PDF 签章、电商数据或多模态视觉等能力的场景。提示:必须以命名导出 name、inject、apply,默认导出会导致注入失败。

dsh-plugins is a collection of installable bundles for DeepSeek Harness, each shipped as pure ESM with no build step and loadable from npm, git, or a local checkout. It groups plugins by tools (capabilities the model calls), runtime (waterfall wrappers and shared services), and ui (web client extensions), covering A-share data, PDF sealing, e-commerce research, multimodal vision, and more. Use it to extend a dsh agent without rebuilding the host. Caveat: plugins must export name, inject, and apply as named exports; a default export breaks injection.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add dsh-plugin-astock

huyang218/dsh-plugins 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-plugins

Plugins for DeepSeek Harness — the "everything is a plugin" agent runtime built on Cordis.

License: MIT Build-free ESM Tests: node:test

English · 中文


Every package here is an installable dsh bundle: pure ESM, no build step, so it runs from npm, from git, or straight from a checkout while you edit it.

Anywhere dsh runs, these run: the CLI, dsh Desktop on macOS and Windows — whose plugin manager installs any of them by name, URL or local path — or dsh Android on a phone.

Plugins

Three kinds, told apart by dsh.category in each package — what a plugin extends decides where it can be seen from:

Group Visible to What it extends Guide
tools/… the model capabilities it can call, described in the system prompt authoring tools
runtime/… nobody waterfall wrappers and shared services around the harness itself authoring runtime
ui/… the person web client extensions — result cards, keyboard-driven surfaces authoring ui

The second half of the category is the domain: tools/finance and ui/finance cover A-share market data, information feeds and portfolio state; tools/vision reaches a multimodal model on behalf of a text-only one; tools/ecommerce covers cross-marketplace product research; tools/documents works on the files themselves; tools/game makes 2D game art; runtime/provider, runtime/observability, runtime/reliability and runtime/llm cover shared credentials, measurement, retries and gateway compatibility; runtime/im drives sessions from a chat app; ui/productivity covers the web client's own ergonomics; ui/observability makes what the agent is doing visible to the person watching.

Pick what you need

tools/ — capabilities the model can call

Plugin What it does Package
astock A-share quotes, K-lines, indicators, whole-market screening, financials, money flow, convertible bonds — free, a few tools need a Tushare token dsh-plugin-astock
vision Lets a text-only agent call a multimodal model mid-task — Qwen, Kimi, OpenAI, Claude or Gemini — and get back structured evidence rather than prose dsh-plugin-vision
ainfo A-share news, broker research, earnings pre-announcements, dividends, insider trades, shareholders — needs a Tushare token dsh-plugin-ainfo
seal Seals and signs a PDF — a contract seal, a straddle seal across every page edge, and a PAdES signature over the whole file from your certificate dsh-plugin-seal
aportfolio Holdings and watchlist that survive the session, priced live, with profit, weights and target hits dsh-plugin-aportfolio
ecom Places a product link from Amazon, Shopify, Taobao/Tmall, JD, Pinduoduo or Douyin and reports what sales data that marketplace actually discloses — window, precision and provenance, never a bare number dsh-plugin-ecom
sprite Game-ready 2D sprite sheets: an image model draws the grid, then keying, cutting, shared-scale alignment and geometric QC turn it into transparent frames, a sheet, a preview GIF and an engine atlas dsh-plugin-sprite

runtime/ — behaviour around the harness, invisible to the model

Plugin What it does Package
im Command the agent from a chat app on your phone — Lark, WeCom, DingTalk or QQ drive a real turn and the reply comes back; allowlist denies by default dsh-plugin-im
tushare Shared Tushare Pro access: one token, one quota gate, one calendar, failures an agent can act on dsh-plugin-tushare
ecom-keepa Keepa access for the e-commerce tools: Amazon product records and Product Finder, keeping the disclosed monthly-sold figure as the bucketed value it is dsh-plugin-ecom-keepa
ecom-jd JD Union access for the e-commerce tools: the only real 30-day order count these marketplaces publish for someone else's product — affiliate-channel only, reported as the floor it is dsh-plugin-ecom-jd
tool-health Remembers which tools keep failing and warns the next session before it starts dsh-plugin-tool-health
tool-usage Counts calls, duration percentiles and failures per tool, with an optional budget warning dsh-plugin-tool-usage
tool-retry Retries transient failures — socket resets, rate limits, timeouts — for tools an operator declares repeatable dsh-plugin-tool-retry
gateway-compat Keeps a finished reply from failing when a gateway ends its SSE stream without [DONE] dsh-plugin-gateway-compat

ui/ — web client extensions

Plugin What it does Package
astock-chart Draws astock_data as a candlestick chart with volume, in the reply — needs native or both presentation dsh-plugin-astock-chart
shortcuts Keyboard shortcuts for the web client: 34 features, every binding recordable dsh-plugin-shortcuts
office A pixel-art virtual office in the sidebar: one fixed crew of tool-group specialists that all sessions' activity aggregates onto — working, queueing, or napping dsh-plugin-office

Each plugin's own README, in English and 中文, is the accurate account of what it does and what it costs to run. Install any of them by package name:

dsh plugin --profile web add dsh-plugin-astock

Looking for something this repo does not ship? CATALOG.md lists plugins maintained elsewhere, by category.

[!NOTE] Finance plugins share one credential through the tushare provider rather than each asking for the same token. Every tool that needs it says so in its own description, so the model can choose a free tool when one will do — and tell you exactly what is missing when one will not.

Install

Into a dsh profile, from npm:

dsh plugin --profile web add dsh-plugin-astock

Or from a checkout — also how you develop against a running profile, since the install is a symlink and edits take effect on the next service restart:

dsh plugin --profile web add ./packages/astock

Verify it landed in the composed tree before starting anything:

dsh --profile web --dump-config      # look for the plugin's row

Configure

A plugin that exposes a Schemastery Config is configurable without touching a command line: a desktop shell — dsh Desktop, for one — renders the form at install time. The values end up as an id-targeted override in the profile's cordis.patch.yml, which you can also write by hand:

- id: astock
  config:
    tushareToken: 'your-token'

[!IMPORTANT] Later layers win per row, and a patch replaces a row's whole config rather than merging keys — so restate every key you need when overriding someone else's row.

Tool presentation — whether a session dispatches tools natively, through Code Mode, or both — is chosen once per agent preset and applies to every tool in the session, not per plugin. Some plugins here require a particular mode, and the choice affects every other plugin you install: tool presentation modes.

Develop

npm install                                        # root; resolves peer deps for every package
npm test                                           # every package
npm test -w dsh-plugin-astock                      # one package
node --test packages/astock/test/*.test.js   # one file

Tests use Node's built-in runner (node:test) — no test dependencies, no build, matching the way the plugins themselves load. They exercise the real published entry (lib/index.js) and the real defineTool, so a schema violation fails in unit tests instead of at dsh startup.

[!TIP] Green tests are not the whole bar — they never touch the Loader or a real composition.

CLAUDE.md carries the full working spec — plugin lifecycle, config, tool authoring, waterfall extension points, bundle layering, the test convention, and the verification checklist to run after changing a plugin. It is addressed to AI coding agents, but the rules are the same ones a human contributor needs.

Contributing

  1. Read the guide for what you are building: tools (capabilities the model calls), runtime (waterfall wrappers and shared services) or ui (web client extensions).
  2. Create packages/<name>/ with package.json (including dsh.category), cordis.patch.yml, lib/index.js, README.md and LICENSE.
  3. Export name / inject / apply as named exports. A default export makes the loader drop inject, and the plugin then fails in a way that looks like something else entirely.
  4. Add test/plugin.test.js covering the export shape and every registration.
  5. Run npm test and the checklist in CLAUDE.md.

Four names travel together and are easy to confuse:

Where Value Purpose
package.json name dsh-plugin-astock npm package
lib/index.js exported name astock loader diagnostics — short, no prefix
cordis.patch.yml id astock row id in the composed tree; config overrides target it
cordis.patch.yml name dsh-plugin-astock referenced by package name, never a path

Related projects

Project What it is
DeepSeek Harness The runtime itself — dsh, what every plugin here extends
dsh-desktop Desktop app for macOS and Windows: installs and updates the runtime, owns the server process and its storage, and installs, configures, disables and updates plugins from a window
dsh-android Android app: host and client both on the phone, with no server and no computer kept running. Early — a sideloaded apk, and no shell tool

dsh-desktop and dsh-android come from the same author as this repository. Both are unofficial and unaffiliated with DeepSeek.

License

MIT — see LICENSE.

上一个 Prev dsh-capability-manager 下一个 Next dsh_center-column-shift