{"_id":"@dsh.so/dsh-plugin-finder","_rev":"7-5352fcb6c9898bd25d35e68666428006","name":"@dsh.so/dsh-plugin-finder","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.2":{"name":"@dsh.so/dsh-plugin-finder","version":"0.1.2","license":"Apache-2.0","_id":"@dsh.so/dsh-plugin-finder@0.1.2","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"0db440ff60b7a42ec7fa441d209790480cf2d3c0","tarball":"https://registry.npmjs.org/@dsh.so/dsh-plugin-finder/-/dsh-plugin-finder-0.1.2.tgz","fileCount":10,"integrity":"sha512-pLQajSWHuF2y9GZOc+loSUcQofLUDBoenirxkM58ajF1zfRwojJa4JXKeMIxMMakJbTumk9jFtf/liHlIUZYeQ==","signatures":[{"sig":"MEUCIQD4U2BzuuhZCpMKQ20Wqc1DKc7BzFc6JnqXnyBUZIUqhgIgGef6B12dtKU++zwMz4GEArC5OrvmqpoXEWAtva3L24k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46667},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","gitHead":"76d371644efd7ce1ec7c4f6242fba82a4738f6bb","scripts":{"test":"node --test","build":"tsc -p tsconfig.json","prepare":"tsc -p tsconfig.json"},"_npmUser":{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"},"_npmVersion":"11.9.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-finder_0.1.2_1786765063227_0.07648552463813751","host":"s3://npm-registry-packages-npm-production"},"deprecated":"已迁移至 dsh-plugins-finder(无前缀包名)。Migrated to dsh-plugins-finder."},"0.1.3":{"name":"@dsh.so/dsh-plugin-finder","version":"0.1.3","license":"Apache-2.0","_id":"@dsh.so/dsh-plugin-finder@0.1.3","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"f720838382d35b5efbe480f0bfcfd5f5f075b4c1","tarball":"https://registry.npmjs.org/@dsh.so/dsh-plugin-finder/-/dsh-plugin-finder-0.1.3.tgz","fileCount":10,"integrity":"sha512-TLy5QSXnYj6AruHSR8EYRZSiXa3MlABrGW1oN40MrH3NH0Bvn0643E8IudTSa8NONQmPlixj9ItJHblGe221eg==","signatures":[{"sig":"MEUCIHGkYwiSSwlhWs7zA/L1s0g4JZ8mO5+GaG/MbBl32Lg2AiEAoT/H17Y9ScfHIrcZTlAeTP68IoXhPMSNspzTas6+/Yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46797},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","gitHead":"adb78153595b1a89a62a3cb432e10a49713f217f","scripts":{"test":"node --test","build":"tsc -p tsconfig.json","prepare":"tsc -p tsconfig.json"},"_npmUser":{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"},"_npmVersion":"11.9.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-finder_0.1.3_1786765452071_0.2177231491390219","host":"s3://npm-registry-packages-npm-production"},"deprecated":"已迁移至 dsh-plugins-finder(无前缀包名)。Migrated to dsh-plugins-finder."},"0.1.4":{"name":"@dsh.so/dsh-plugin-finder","version":"0.1.4","license":"Apache-2.0","_id":"@dsh.so/dsh-plugin-finder@0.1.4","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"eb9958eca6d58553266e0d54754dc6786224b261","tarball":"https://registry.npmjs.org/@dsh.so/dsh-plugin-finder/-/dsh-plugin-finder-0.1.4.tgz","fileCount":10,"integrity":"sha512-LmCBC7Of1MlHT8A8NLVyrfdBnT1ShkjFTlLUdGhbEAIZGENxSlNSjN8hG6HNascXy4VelO89y4VDWt6rEFkzTQ==","signatures":[{"sig":"MEUCICY5WpDaV1BaOgichjFKfQudJtudhgmKP6zYnn0OwwG5AiEA6W+Oqty6guJyk5nO1nTbTR2vOT9zi/QWyZzWL4cseIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46907},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","gitHead":"fa69e004993bed921e3afb6fb4672cd9df2217a4","scripts":{"test":"node --test","build":"tsc -p tsconfig.json","prepare":"tsc -p tsconfig.json"},"_npmUser":{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"},"_npmVersion":"11.9.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-finder_0.1.4_1786765557621_0.9843177572054593","host":"s3://npm-registry-packages-npm-production"},"deprecated":"已迁移至 dsh-plugins-finder(无前缀包名)。Migrated to dsh-plugins-finder."},"0.1.5":{"name":"@dsh.so/dsh-plugin-finder","version":"0.1.5","license":"Apache-2.0","_id":"@dsh.so/dsh-plugin-finder@0.1.5","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"8ef994f9af86ee19f54fc0cb6c8efeedbf680692","tarball":"https://registry.npmjs.org/@dsh.so/dsh-plugin-finder/-/dsh-plugin-finder-0.1.5.tgz","fileCount":10,"integrity":"sha512-n3L9KYC6MXYy689qxp8DWqmyb822vDD/bw2GrNmyk1gQ9OFRrxOZ2NpVg86arI1MiszGhxH6QqsbvwB3qv8enw==","signatures":[{"sig":"MEUCIQDuKkNwna6pzIHriNVSYGj5CkH4JeXDiRs0SCysgZVSDAIgLyKFP2VnOjRhayNV56uzeXt2bJKPpF8G+DERSZiJgNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51971},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","gitHead":"3bf0dc4741d621d1cc47c6adc62ef9109a325db4","scripts":{"test":"node --test","build":"tsc -p tsconfig.json","prepare":"tsc -p tsconfig.json"},"_npmUser":{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"},"_npmVersion":"11.9.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-finder_0.1.5_1786775573756_0.14219976875799167","host":"s3://npm-registry-packages-npm-production"},"deprecated":"已迁移至 dsh-plugins-finder(无前缀包名)。Migrated to dsh-plugins-finder."},"0.1.6":{"name":"@dsh.so/dsh-plugin-finder","version":"0.1.6","license":"Apache-2.0","_id":"@dsh.so/dsh-plugin-finder@0.1.6","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"8c61d6e42fcc929fb09921733251791d40a3546f","tarball":"https://registry.npmjs.org/@dsh.so/dsh-plugin-finder/-/dsh-plugin-finder-0.1.6.tgz","fileCount":10,"integrity":"sha512-Frw/I+pyFQ7fzZGbm0TwDEsRLQpeVzuL76qixRPqUpy0JbmNniNPbYy4vwdtNOIWR4SsspjVPN6bNx8UkgTirQ==","signatures":[{"sig":"MEQCIDVqCq8wGfuQaPHbb59KacJrx/fsUzALH7GxgZUQTkvxAiBelORwfutLCQEfC/zL3x+reXLGOXgeY8arVms1AEp0xQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52137},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","gitHead":"820f6277517312191a052ccfa25c001d097bb2e5","scripts":{"test":"node --test","build":"tsc -p tsconfig.json","prepare":"tsc -p tsconfig.json"},"_npmUser":{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"},"_npmVersion":"11.9.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-finder_0.1.6_1786833670408_0.17604673529829662","host":"s3://npm-registry-packages-npm-production"},"deprecated":"已迁移至 dsh-plugins-finder(无前缀包名)。Migrated to dsh-plugins-finder."},"0.1.7":{"name":"@dsh.so/dsh-plugin-finder","version":"0.1.7","license":"Apache-2.0","_id":"@dsh.so/dsh-plugin-finder@0.1.7","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"318009d9dafbb939c9ba903d05f50577d66a4c16","tarball":"https://registry.npmjs.org/@dsh.so/dsh-plugin-finder/-/dsh-plugin-finder-0.1.7.tgz","fileCount":10,"integrity":"sha512-pJekO6CZOHf58KQP6v4W6KjxnAhoKjkAuv/gbO8rr1CsPb4xzUO3QkjGDIAQgNGztmScZG0hz2045OuqnqxsMA==","signatures":[{"sig":"MEYCIQDOHJhqr724hWclzjGvrF1M1E0IzP32nMSbIx7zrcaeuwIhAIixa/3HZ+rurcdTTXHKZrIOG83MV7X2peeGwkQNnwqL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53620},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","gitHead":"b2116c18a3c15ade26b418c02b78dcdc48fa4484","scripts":{"test":"node --test","build":"tsc -p tsconfig.json","prepare":"tsc -p tsconfig.json"},"_npmUser":{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"},"_npmVersion":"11.9.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-finder_0.1.7_1786833974576_0.05216210845763114","host":"s3://npm-registry-packages-npm-production"},"deprecated":"已迁移至 dsh-plugins-finder(无前缀包名)。Migrated to dsh-plugins-finder."}},"time":{"created":"2026-08-15T03:37:43.111Z","modified":"2026-08-16T07:35:26.253Z","0.1.2":"2026-08-15T03:37:43.364Z","0.1.3":"2026-08-15T03:44:12.219Z","0.1.4":"2026-08-15T03:45:57.754Z","0.1.5":"2026-08-15T06:32:53.914Z","0.1.6":"2026-08-15T22:41:10.548Z","0.1.7":"2026-08-15T22:46:14.711Z"},"license":"Apache-2.0","description":"Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.","maintainers":[{"name":"ihuajiu","email":"smith.chou.2023@gmail.com"}],"readme":"# dsh-plugin-finder\r\n\r\nFind DeepSeek Harness plugins from the [dsh.so](https://dsh.so) registry — like *find-skill*, but for dsh plugins.\r\n\r\nThis 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.\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://www.dsh.so\" rel=\"dofollow\">\r\n    <img src=\"https://raw.githubusercontent.com/ihuajiu/dsh-plugin-finder/main/assets/dsh-so-logo.svg\" alt=\"dsh.so logo\" width=\"72\">\r\n  </a>\r\n  <br>\r\n  <strong>Powered by <a href=\"https://www.dsh.so\" rel=\"dofollow\">dsh.so</a></strong>\r\n  <br>\r\n  <em>the DeepSeek Harness plugin registry — discover, compare and install plugins · 发现、对比并安装 DSH 插件</em>\r\n</p>\r\n\r\n**中文版**: [README.zh.md](https://github.com/ihuajiu/dsh-plugin-finder/blob/main/README.zh.md)\r\n\r\n## Table of Contents\r\n\r\n1. [Install](#1-install)\r\n2. [Peer Dependency Warnings (Important)](#2-peer-dependency-warnings-important)\r\n3. [Usage](#3-usage)\r\n4. [Output Format](#4-output-format)\r\n5. [Search Tips](#5-search-tips)\r\n6. [Configuration](#6-configuration)\r\n7. [Data Source & Matching](#7-data-source--matching)\r\n8. [FAQ](#8-faq)\r\n9. [Development](#9-development)\r\n\r\n---\r\n\r\n## 1. Install\r\n\r\nInstall from the dsh.so marketplace (recommended):\r\n\r\n```sh\r\ndsh plugin --profile web add '@dsh.so/dsh-plugin-finder'\r\n```\r\n\r\nOther profiles work the same — just change the name:\r\n\r\n```sh\r\ndsh plugin --profile tui add '@dsh.so/dsh-plugin-finder'\r\ndsh plugin --profile headless add '@dsh.so/dsh-plugin-finder'\r\n```\r\n\r\nInstall from a local checkout (development):\r\n\r\n```sh\r\ndsh plugin --profile web add E:\\AgentsWs\\PluginBuilder\\dsh-plugin-finder\r\n```\r\n\r\n> ⚠️ **Version note**: if you have **0.1.0**, upgrade first — 0.1.0 installed `@deepseek-ai/dsh-tools` as a regular dependency, which conflicts with the host's copy and crashes the agent loop with `Cannot read properties of undefined (reading 'prepare')`. **Fixed in 0.1.1**; reinstall with:\r\n>\r\n> ```sh\r\n> dsh plugin --profile web add '@dsh.so/dsh-plugin-finder@^0.1.1'\r\n> ```\r\n\r\n**Restart the web profile** for the new bundle to load:\r\n\r\n```sh\r\ndsh web\r\n```\r\n\r\nAfter the restart, the `find_plugin` tool appears in the session — just tell the agent what you need (see [Usage](#3-usage)).\r\n\r\n---\r\n\r\n## 2. Peer Dependency Warnings (Important)\r\n\r\nYou will very likely see this pnpm output during install:\r\n\r\n```\r\nWARN  Issues with peer dependencies found\r\n└─┬ @dsh.so/dsh-plugin-finder 0.1.1\r\n  ├── ✕ missing peer @deepseek-ai/cordis@^4.0.1\r\n  ├── ✕ missing peer @deepseek-ai/dsh-tools@0.1.0-rc.6\r\n  └── ✕ missing peer @deepseek-ai/schemastery@^3.18.1\r\n```\r\n\r\n**This is a benign false positive — no action needed; the plugin works normally.**\r\n\r\n### Why it appears\r\n\r\n- `dsh plugin add` works by running `pnpm add` in the profile directory; pnpm checks peer dependencies **only against the web profile's own declared dependencies** (currently just `@dsh.so/dsh-plugin-finder`).\r\n- The three `@deepseek-ai/*` packages are **managed by the DSH host** and actually live one level up, in `~/.dsh/profiles/node_modules`.\r\n- At runtime, Node's module resolution **walks up the directory tree**, so the plugin resolves the host-provided packages just fine.\r\n\r\n### How to verify it is fine\r\n\r\nJust confirm the host-side versions satisfy the plugin's requirements. Verified on the current environment:\r\n\r\n| Plugin requires | Host has | Result |\r\n|---|---|---|\r\n| `@deepseek-ai/cordis@^4.0.1` | 4.0.1 | ✅ |\r\n| `@deepseek-ai/dsh-tools@0.1.0-rc.6` | 0.1.0-rc.6 | ✅ |\r\n| `@deepseek-ai/schemastery@^3.18.1` | 3.18.1 | ✅ |\r\n\r\n### Compatibility with dsh / dsh 适配版本\r\n\r\n- **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 系列。\r\n- **Tested on / 实测环境**: dsh 10.28.1 (web profile).\r\n- **Status / 状态**: author-declared (Declared), not independently verified — follows dsh.so's compatibility-matrix semantics / 作者声明(Declared),未经独立验证——遵循 dsh.so 兼容性矩阵语义。\r\n- **After upgrading dsh / 升级 dsh 后自查**: restart the profile and confirm `find_plugin` appears; if a major dsh upgrade crosses the dependency line, run `dsh plugin --profile web update '@dsh.so/dsh-plugin-finder'` before retrying / 重启 profile 并确认 `find_plugin` 存在;若大版本升级跨了依赖线,先执行 `dsh plugin --profile web update '@dsh.so/dsh-plugin-finder'` 再试。\r\n\r\n> 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-cordis` declares `@deepseek-ai/cordis` the same way). It is pnpm being \"under-informed\", not an error.\r\n\r\n### Fixes to avoid\r\n\r\n1. **Do not move the plugin's `peerDependencies` into `dependencies`** — every plugin would then ship its own copy of the host's core packages, shadowing the host's singletons and re-triggering the `ctx.tools` crash (the 0.1.0 bug above).\r\n2. **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.\r\n\r\nIf you only want a clean CI log, you can install the peers explicitly (in exchange for a one-time `declares no dsh.bundle` notice):\r\n\r\n```sh\r\ndsh 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\r\n```\r\n\r\nFor daily use: **just ignore the warning**.\r\n\r\n---\r\n\r\n## 3. Usage\r\n\r\n`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):\r\n\r\n- \"Find me a plugin for OCR / screenshots\"\r\n- \"I need a terminal TUI plugin\"\r\n- \"What dsh plugins exist for memory / RAG?\"\r\n- \"Find me a plugin for price tracking\"\r\n- \"帮我找支持 OCR / 截图转文字的 dsh 插件\"\r\n- \"有没有能识别图片内容的插件?\"\r\n\r\n### Example conversations\r\n\r\n**English — OCR / screenshots**\r\n\r\n- **You:** *Find me a plugin for OCR / screenshots*\r\n- **Agent:** *automatically calls `find_plugin` with `{\"query\": \"vision OCR screenshots\", \"limit\": 3}` and returns a ranked list — see [Output Format](#4-output-format)*\r\n- **You:** *How do I install the top one?*\r\n- **Agent:** *Run `dsh plugin --profile web add dsh-vision-router`, then restart `dsh web`.*\r\n\r\n**中文 — 终端 TUI**\r\n\r\n- **你:** *有没有终端 TUI 插件?*\r\n- **助手:** *自动调用 `find_plugin`,query 为 `\"terminal TUI\"`* → 返回 `dsh-tianshu-tui`、`dsh-whale-tui`、`dsh-tui` 等结果\r\n- **你:** *帮我装第一个*\r\n- **助手:** *执行 `dsh plugin --profile web add dsh-tianshu-tui`,然后重启 `dsh web`。*\r\n\r\n### Tool parameters\r\n\r\n| Parameter | Required | Type | Description |\r\n|---|---|---|---|\r\n| `query` | ✅ | string | The need, e.g. `\"vision OCR screenshots\"`, `\"memory rag\"`. Chinese and English both work; English matches better |\r\n| `limit` | ❌ | number | Max results; defaults to the `maxResults` config (5), clamped to 1–10 |\r\n\r\n---\r\n\r\n## 4. Output Format\r\n\r\nEach 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.\r\n\r\n**`find_plugin(\"vision OCR screenshots\", limit=3)`**\r\n\r\n```\r\n1. dsh-vision-router — 46★ [developer, vision] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险\r\n   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)……\r\n   Install: dsh plugin --profile web add dsh-vision-router\r\n   https://www.dsh.so/plugins/dsh-vision-router/\r\n\r\n2. agent-vision-toolkit — 819★ [developer, vision, automation, ai, ui] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险\r\n   为纯文本模型\"看图\"设计更好的视觉工具箱和技能,支持多图理解,图片问答,\r\n   前端UI还原、GUI 自动化等……\r\n   Install: dsh plugin --profile web add agent-vision-toolkit\r\n   https://www.dsh.so/plugins/agent-vision-toolkit/\r\n\r\n3. dsh-vision-toolkit — 317★ [vision, browser, automation, ui] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险\r\n   让纯文本模型更好地做视觉任务的DeepSeek Harness插件:带意图的图片问答、长截图 OCR、UI 还原等……\r\n   Install: dsh plugin --profile web add dsh-vision-toolkit\r\n   https://www.dsh.so/plugins/dsh-vision-toolkit/\r\n```\r\n\r\n**`find_plugin(\"terminal TUI\", limit=3)`**\r\n\r\n```\r\n1. dsh-tianshu-tui — 132★ [terminal, ui] · ✔ 基础验证通过 · 🔒 安全通过:低风险\r\n   dsh-tianshu-tui — DeepSeek Harness terminal UI\r\n   Install: dsh plugin --profile web add dsh-tianshu-tui\r\n   https://www.dsh.so/plugins/dsh-tianshu-tui/\r\n\r\n2. dsh-whale-tui — 0★ [developer, terminal, ui] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险\r\n   grok-build style terminal UI for DeepSeek Harness: a Rust/ratatui TUI shipped as a dsh plugin bundle\r\n   Install: dsh plugin --profile web add dsh-whale-tui\r\n   https://www.dsh.so/plugins/dsh-whale-tui/\r\n\r\n3. dsh-tui — 4★ [developer, terminal, ai, ui] · ✔ 已收录(未功能测试) · 🔒 安全通过:低风险\r\n   Claude Code-style terminal UI for DeepSeek Harness agents, as an out-of-tree dsh plugin bundle\r\n   Install: dsh plugin --profile web add dsh-tui\r\n   https://www.dsh.so/plugins/dsh-tui-4/\r\n```\r\n\r\n**`find_plugin(\"memory rag\", limit=3)`**\r\n\r\n```\r\n1. dsh-memory — 2★ [terminal, knowledge, storage] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险\r\n   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.\r\n   Install: dsh plugin --profile web add dsh-memory-2\r\n   https://www.dsh.so/plugins/dsh-memory-2/\r\n\r\n2. dsh-memory — 1★ [knowledge, storage] · ✔ 基础验证通过 · ⚠️ 安全提示:中风险\r\n   Durable cross-session SQLite memory for DeepSeek Harness\r\n   Install: dsh plugin --profile web add dsh-memory\r\n   https://www.dsh.so/plugins/dsh-memory/\r\n\r\n3. mindspace-dsh-session-memory — 1★ [knowledge, storage] · ✔ 基础验证通过 · 🔒 安全通过:低风险\r\n   Editable, session-isolated personalization memory for DeepSeek Harness\r\n   Install: dsh plugin --profile web add mindspace-dsh-session-memory\r\n   https://www.dsh.so/plugins/mindspace-dsh-session-memory/\r\n```\r\n\r\n> 💡 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.\r\n\r\nNo-match response:\r\n\r\n```\r\nNo plugins in the dsh.so registry matched that query. Suggest broader terms (e.g. \"image\", \"terminal\", \"memory\").\r\n```\r\n\r\nEvery result (matches or no-match) ends with a **Powered by dsh.so** footer plus a copyright/license line (`dsh-plugin-finder v0.1.7 · © 2026 zhoushimin · Apache-2.0`). Disable with `attribution: false`.\r\n\r\n---\r\n\r\n## 5. Search Tips\r\n\r\n- **Use English keywords**: matching tokenizes the query, so single English words (`ocr`, `rag`, `tui`) hit far better than long phrases.\r\n- **Be specific**: `\"terminal TUI\"` beats vague descriptions.\r\n- **Use topic tags**: e.g. `vision`, `browser`, `automation`, `ui` — topic hits weigh more.\r\n- **An empty query returns the top entries by stars** (the model rarely does this, but the behavior exists).\r\n- **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.\r\n\r\n---\r\n\r\n## 6. Configuration\r\n\r\nConfigure in the host composition or an agent preset's `cordis.yml` (defaults are fine, usually no change needed):\r\n\r\n```yaml\r\n- insert:\r\n    - id: dsh-plugin-finder\r\n      name: '@dsh.so/dsh-plugin-finder'\r\n      config:\r\n        indexUrl: https://www.dsh.so/plugins-index.json   # override for self-host / testing\r\n        maxResults: 5                                      # default result count\r\n        cacheTtlMs: 600000                                 # cache the index for 10 min\r\n        timeoutMs: 15000                                   # fetch timeout (ms)\r\n```\r\n\r\n| Config | Default | Description |\r\n|---|---|---|\r\n| `indexUrl` | `https://www.dsh.so/plugins-index.json` | Machine-readable dsh.so plugin index URL |\r\n| `maxResults` | `5` | Default result count when `limit` is not passed |\r\n| `cacheTtlMs` | `600000` (10 min) | How long to reuse the fetched index before refetching |\r\n| `timeoutMs` | `15000` | Fetch timeout in milliseconds |\r\n| `attribution` | `true` | Append a \"Powered by dsh.so\" promotion and copyright footer to every result |\r\n\r\n---\r\n\r\n## 7. Data Source & Matching\r\n\r\n- **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).\r\n- **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`.\r\n- **Cache**: the index is reused within `cacheTtlMs`; no repeated requests.\r\n\r\n---\r\n\r\n## 8. FAQ\r\n\r\n**Q: Installed, but no `find_plugin` tool in the session?**\r\nA: Check two things: ① `dsh plugin --profile web list` confirms it is installed; ② you must **restart** `dsh web` for a new bundle to load.\r\n\r\n**Q: Should I act on the `missing peer` warnings?**\r\nA: No — they are a false positive; see [Section 2](#2-peer-dependency-warnings-important).\r\n\r\n**Q: No results for my query?**\r\nA: Use broader English terms such as `\"image\"`, `\"terminal\"`, `\"memory\"`, or drop overly specific qualifiers.\r\n\r\n**Q: How do I update the plugin?**\r\nA: `dsh plugin --profile web add '@dsh.so/dsh-plugin-finder@latest'`, then restart.\r\n\r\n**Q: How do I uninstall?**\r\nA: `dsh plugin --profile web remove '@dsh.so/dsh-plugin-finder'`, then restart.\r\n\r\n---\r\n\r\n## 9. Development\r\n\r\n```sh\r\npnpm install     # or npm install (peers come from the dsh host; devDependencies are for local build/test)\r\npnpm build       # tsc -> lib/\r\npnpm test        # node --test (match logic unit tests)\r\n```\r\n\r\n- The bundle patch is declared in `cordis.patch.yml`, referenced by `dsh.bundle.patch` in `package.json`.\r\n- When publishing to npm, include `lib/`, `cordis.patch.yml`, `README.md`, and `README.zh.md` (see the `files` field in `package.json`).\r\n\r\n---\r\n\r\n## License\r\n\r\nApache-2.0 · Copyright (c) 2026 zhoushimin\r\n","readmeFilename":"README.md"}