dsh-plugin-finder
Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.
This plugin registers one agent tool, find_plugin: describe a need in natural language, and it searches the dsh.so plugin index for the best-matching plugins, returning name, GitHub stars, topics, description, verification level (L1–L5), security status & risk, an install command, and a detail link.
Powered by dsh.so
the DeepSeek Harness plugin registry — discover, compare and install plugins · 发现、对比并安装 DSH 插件
中文版: README.zh.md
Table of Contents
- Install
- Peer Dependency Warnings (Important)
- Usage
- Output Format
- Search Tips
- Configuration
- Data Source & Matching
- FAQ
- Development
1. Install
Install from the dsh.so marketplace (recommended):
dsh plugin --profile web add dsh-plugins-finder
Other profiles work the same — just change the name:
dsh plugin --profile tui add dsh-plugins-finder
dsh plugin --profile headless add dsh-plugins-finder
Install from a local checkout (development):
dsh plugin --profile web add E:\AgentsWs\PluginBuilder\dsh-plugin-finder
⚠️ Version note: if you have 0.1.0, upgrade first — 0.1.0 installed
@deepseek-ai/dsh-toolsas a regular dependency, which conflicts with the host's copy and crashes the agent loop withCannot read properties of undefined (reading 'prepare'). Fixed in 0.1.1; reinstall with:dsh plugin --profile web add dsh-plugins-finder@^0.1.1
Restart the web profile for the new bundle to load:
dsh web
After the restart, the find_plugin tool appears in the session — just tell the agent what you need (see Usage).
Upgrade / 升级
dsh plugin --profile web add dsh-plugins-finder@latest
dsh web # restart to load the new bundle
Uninstall / 卸载
dsh plugin --profile web remove dsh-plugins-finder
dsh web # restart to unload the bundle
⚠️ Always remove by package name — never pass a local path to
remove/del, or it deletes the source directory's files / 卸载务必用包名,绝不把本地路径传给remove/del,否则会删掉源码目录的文件。
2. Peer Dependency Warnings (Important)
You will very likely see this pnpm output during install:
WARN Issues with peer dependencies found
└─┬ dsh-plugins-finder 0.1.1
├── ✕ missing peer @deepseek-ai/cordis@^4.0.1
├── ✕ missing peer @deepseek-ai/dsh-tools@0.1.0-rc.6
└── ✕ missing peer @deepseek-ai/schemastery@^3.18.1
This is a benign false positive — no action needed; the plugin works normally.
Why it appears
dsh plugin addworks by runningpnpm addin the profile directory; pnpm checks peer dependencies only against the web profile's own declared dependencies (currently justdsh-plugins-finder).- The three
@deepseek-ai/*packages are managed by the DSH host and actually live one level up, in~/.dsh/profiles/node_modules. - At runtime, Node's module resolution walks up the directory tree, so the plugin resolves the host-provided packages just fine.
How to verify it is fine
Just confirm the host-side versions satisfy the plugin's requirements. Verified on the current environment:
| Plugin requires | Host has | Result |
|---|---|---|
@deepseek-ai/cordis@^4.0.1 |
4.0.1 | ✅ |
@deepseek-ai/dsh-tools@0.1.0-rc.6 |
0.1.0-rc.6 | ✅ |
@deepseek-ai/schemastery@^3.18.1 |
3.18.1 | ✅ |
Compatibility with dsh / dsh 适配版本
- Target dependency line / 目标依赖线:
@deepseek-ai/dsh-tools@0.1.0-rc.6·@deepseek-ai/cordis@^4.0.1·@deepseek-ai/schemastery@^3.18.1— the dsh rc.6 release line / 即 dsh rc.6 系列。 - Tested on / 实测环境: dsh 10.28.1 (web profile).
- Status / 状态: author-declared (Declared), not independently verified — follows dsh.so's compatibility-matrix semantics / 作者声明(Declared),未经独立验证——遵循 dsh.so 兼容性矩阵语义。
- After upgrading dsh / 升级 dsh 后自查: restart the profile and confirm
find_pluginappears; if a major dsh upgrade crosses the dependency line, rundsh plugin --profile web update dsh-plugins-finderbefore retrying / 重启 profile 并确认find_plugin存在;若大版本升级跨了依赖线,先执行dsh plugin --profile web update dsh-plugins-finder再试。
In fact, any third-party DSH plugin that correctly declares peer dependencies triggers the same warning when installed into a profile (the harness's own
@deepseek-ai/dsh-tool-cordisdeclares@deepseek-ai/cordisthe same way). It is pnpm being "under-informed", not an error.
Fixes to avoid
- Do not move the plugin's
peerDependenciesintodependencies— every plugin would then ship its own copy of the host's core packages, shadowing the host's singletons and re-triggering thectx.toolscrash (the 0.1.0 bug above). - Avoid explicitly installing the 3 peers into the profile — versions get pinned there; when the host upgrades its core packages, the plugin keeps loading the old ones, causing silent API mismatch.
If you only want a clean CI log, you can install the peers explicitly (in exchange for a one-time declares no dsh.bundle notice):
dsh plugin --profile web add @deepseek-ai/cordis@4.0.1 @deepseek-ai/dsh-tools@0.1.0-rc.6 @deepseek-ai/schemastery@3.18.1
For daily use: just ignore the warning.
3. Usage
find_plugin is an agent tool — no manual command; just tell the agent what you need and it calls the tool automatically. A few example prompts (Chinese works too):
- "Find me a plugin for OCR / screenshots"
- "I need a terminal TUI plugin"
- "What dsh plugins exist for memory / RAG?"
- "Find me a plugin for price tracking"
- "帮我找支持 OCR / 截图转文字的 dsh 插件"
- "有没有能识别图片内容的插件?"
Example conversations
English — OCR / screenshots
- You: Find me a plugin for OCR / screenshots
- Agent: automatically calls
find_pluginwith{"query": "vision OCR screenshots", "limit": 3}and returns a ranked list — see Output Format - You: How do I install the top one?
- Agent: Run
dsh plugin --profile web add dsh-vision-router, then restartdsh web.
中文 — 终端 TUI
- 你: 有没有终端 TUI 插件?
- 助手: 自动调用
find_plugin,query 为"terminal TUI"→ 返回dsh-tianshu-tui、dsh-whale-tui、dsh-tui等结果 - 你: 帮我装第一个
- 助手: 执行
dsh plugin --profile web add dsh-tianshu-tui,然后重启dsh web。
Tool parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
query |
✅ | string | The need, e.g. "vision OCR screenshots", "memory rag". Chinese and English both work; English matches better |
limit |
❌ | number | Max results; defaults to the maxResults config (5), clamped to 1–10 |
4. Output Format
Each result includes: rank, plugin name, stars, topics, verification level (L1–L5) and security status/risk badges, description, install command, detail link. Real examples below were captured from the live registry — ranks and star counts drift over time.
find_plugin("vision OCR screenshots", limit=3)
1. dsh-vision-router — 46★ [developer, vision] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险
Eyes for text-only DeepSeek Harness agents: built-in free vision chain (no key) + pixel-level vision tools (Q&A, grounding, crop, pixel diff, colors, OCR, SVG trace, cutout, screenshots)……
Install: dsh plugin --profile web add dsh-vision-router
https://www.dsh.so/plugins/dsh-vision-router/
2. agent-vision-toolkit — 819★ [developer, vision, automation, ai, ui] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险
为纯文本模型"看图"设计更好的视觉工具箱和技能,支持多图理解,图片问答,
前端UI还原、GUI 自动化等……
Install: dsh plugin --profile web add agent-vision-toolkit
https://www.dsh.so/plugins/agent-vision-toolkit/
3. dsh-vision-toolkit — 317★ [vision, browser, automation, ui] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险
让纯文本模型更好地做视觉任务的DeepSeek Harness插件:带意图的图片问答、长截图 OCR、UI 还原等……
Install: dsh plugin --profile web add dsh-vision-toolkit
https://www.dsh.so/plugins/dsh-vision-toolkit/
find_plugin("terminal TUI", limit=3)
1. dsh-tianshu-tui — 132★ [terminal, ui] · ✔ 基础验证通过 · 🔒 安全通过:低风险
dsh-tianshu-tui — DeepSeek Harness terminal UI
Install: dsh plugin --profile web add dsh-tianshu-tui
https://www.dsh.so/plugins/dsh-tianshu-tui/
2. dsh-whale-tui — 0★ [developer, terminal, ui] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险
grok-build style terminal UI for DeepSeek Harness: a Rust/ratatui TUI shipped as a dsh plugin bundle
Install: dsh plugin --profile web add dsh-whale-tui
https://www.dsh.so/plugins/dsh-whale-tui/
3. dsh-tui — 4★ [developer, terminal, ai, ui] · ✔ 已收录(未功能测试) · 🔒 安全通过:低风险
Claude Code-style terminal UI for DeepSeek Harness agents, as an out-of-tree dsh plugin bundle
Install: dsh plugin --profile web add dsh-tui
https://www.dsh.so/plugins/dsh-tui-4/
find_plugin("memory rag", limit=3)
1. dsh-memory — 2★ [terminal, knowledge, storage] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险
Cited memory over DSH's lossless session log — distilled, human-auditable facts with citations……; memory_read/memory_expand tools, recall index, and a dsh-memory CLI.
Install: dsh plugin --profile web add dsh-memory-2
https://www.dsh.so/plugins/dsh-memory-2/
2. dsh-memory — 1★ [knowledge, storage] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险
Durable cross-session SQLite memory for DeepSeek Harness
Install: dsh plugin --profile web add dsh-memory
https://www.dsh.so/plugins/dsh-memory/
3. mindspace-dsh-session-memory — 1★ [knowledge, storage] · ✔ 基础验证通过 · 🔒 安全通过:低风险
Editable, session-isolated personalization memory for DeepSeek Harness
Install: dsh plugin --profile web add mindspace-dsh-session-memory
https://www.dsh.so/plugins/mindspace-dsh-session-memory/
💡 Query intent matters:
"price tracking"matches cost/balance-tracking plugins (dsh-balance,deepseek-harness-wallet), not price-comparison scrapers — matching reflects what the registry actually describes.
No-match response:
No plugins in the dsh.so registry matched that query. Suggest broader terms (e.g. "image", "terminal", "memory").
Every result (matches or no-match) ends with a Powered by dsh.so footer plus a copyright/license line (dsh-plugin-finder v0.1.8 · © 2026 zhoushimin · Apache-2.0). Disable with attribution: false.
5. Search Tips
- Use English keywords: matching tokenizes the query, so single English words (
ocr,rag,tui) hit far better than long phrases. - Be specific:
"terminal TUI"beats vague descriptions. - Use topic tags: e.g.
vision,browser,automation,ui— topic hits weigh more. - An empty query returns the top entries by stars (the model rarely does this, but the behavior exists).
- Matching is keyword scoring, not AI semantics: name hit +3, topic hit +2, description hit +1, ties broken by stars. If wording differs a lot, try rephrasing.
6. Configuration
Configure in the host composition or an agent preset's cordis.yml (defaults are fine, usually no change needed):
- insert:
- id: dsh-plugin-finder
name: dsh-plugins-finder
config:
indexUrl: https://www.dsh.so/plugins-index.json # override for self-host / testing
maxResults: 5 # default result count
cacheTtlMs: 600000 # cache the index for 10 min
timeoutMs: 15000 # fetch timeout (ms)
| Config | Default | Description |
|---|---|---|
indexUrl |
https://www.dsh.so/plugins-index.json |
Machine-readable dsh.so plugin index URL |
maxResults |
5 |
Default result count when limit is not passed |
cacheTtlMs |
600000 (10 min) |
How long to reuse the fetched index before refetching |
timeoutMs |
15000 |
Fetch timeout in milliseconds |
attribution |
true |
Append a "Powered by dsh.so" promotion and copyright footer to every result |
7. Data Source & Matching
- Data source:
https://www.dsh.so/plugins-index.json— a machine-readable index of every plugin listed on dsh.so (id, name, description, stars, topics, install, url, verification level, security status & risk). - Matching: the query is tokenized and each token is scored — name contains +3, topic contains +2, description contains +1; results sort by score, ties by stars, then take the top
limit. - Cache: the index is reused within
cacheTtlMs; no repeated requests.
8. FAQ
Q: Installed, but no find_plugin tool in the session?
A: Check two things: ① dsh plugin --profile web list confirms it is installed; ② you must restart dsh web for a new bundle to load.
Q: Should I act on the missing peer warnings?
A: No — they are a false positive; see Section 2.
Q: No results for my query?
A: Use broader English terms such as "image", "terminal", "memory", or drop overly specific qualifiers.
Q: How do I update the plugin?
A: dsh plugin --profile web add dsh-plugins-finder@latest, then restart.
Q: How do I uninstall?
A: dsh plugin --profile web remove dsh-plugins-finder, then restart.
Q: PowerShell error "The splatting operator '@' cannot be used..."?
A: That only happens with scoped packages (@scope/name) — PowerShell treats a leading @ as the splat operator, so quote the name: dsh plugin --profile web add '@scope/name'. This plugin is unscoped, so no quotes are needed.
Q: Boot fails with ERR_MODULE_NOT_FOUND: Cannot find package 'dsh-plugins-finder'?
A: A stale install entry (or the bundle patch name) still references the old unscoped name. Remove by package name and reinstall: dsh plugin --profile web remove dsh-plugins-finder, then add again.
Q: The npmjs.com page shows an older version than the registry?
A: The website caches; the registry is authoritative. Verify in a terminal: npm view dsh-plugins-finder version --prefer-online; hard-refresh the page (Ctrl+F5) or wait a few minutes.
Q: How do I check which version is installed?
A: dsh plugin --profile web list shows the profile's dependency; npm view dsh-plugins-finder version shows the latest on npm.
9. Development
pnpm install # or npm install (peers come from the dsh host; devDependencies are for local build/test)
pnpm build # tsc -> lib/
pnpm test # node --test (match logic unit tests)
- The bundle patch is declared in
cordis.patch.yml, referenced bydsh.bundle.patchinpackage.json. - When publishing to npm, include
lib/,cordis.patch.yml,README.md, andREADME.zh.md(see thefilesfield inpackage.json).
License
Apache-2.0 · Copyright (c) 2026 zhoushimin
No comments yet. Be the first to write one.