{"_id":"@cyber-moshen/dsh-plugin-market","_rev":"8-564c6a35fde9389606592486e6e72755","name":"@cyber-moshen/dsh-plugin-market","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.1.0","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.1.0","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"d385feaf32d7b1c549bf6351087341b13e8b78d1","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.1.0.tgz","fileCount":9,"integrity":"sha512-QR/wx5x4dwZLr2ALAuIXSBCWRF53u8q1lezvBwMjNTdaNbL0Wr1Xi2Ur0vcO959WmwWi+F3FfZvXmfMSzVcsjg==","signatures":[{"sig":"MEUCIQDQq7r69dz1fgPJhM4qRyZuG60GBOWyvJfvkopIy+9iygIgWUHGPy7bv8SSdf9FOyEWqikL+P7YnM1BSOrtwoNsemU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101013},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"b47304c3c60270635c51df8361dea927c254243b","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.1.0_1786716739478_0.7650359193772736","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.1.1","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.1.1","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"50a6bc967b6cd11b7107d727071572cd592bec0a","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.1.1.tgz","fileCount":9,"integrity":"sha512-ro4puQD2T0bV3+zWFbTaF6WR/XvpA7ue7vxr5jyejzE8mXq/KpLL6+9uIFw/oy4Al2dqgGY+BB9BJRFqXrLP5g==","signatures":[{"sig":"MEYCIQDSZYn26Ky0alsVUMWpb216hlkH0sHaMl0bLMubOe9w1AIhAMqKrkoPdrqSgX9hOi42SHnor0MbgqakZD7Z4DL57V0x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100905},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"3e5a719a7425db755831f5d9eb4e401a9dac6905","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.1.1_1786718139815_0.07123289211877437","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.1.2","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.1.2","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"ad062471f73b23802dbd01c78c6bb63887885c9d","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.1.2.tgz","fileCount":9,"integrity":"sha512-bQZkyPocHZdptNWTCsDBEdm/cMbxOc52+H6cTBi94WxI5Nl90icIATaFHFFywRb/EKl7IJdY0sH5+RptisOvBw==","signatures":[{"sig":"MEUCIEh+17GhBSks4yQvcpGvIl+JDX/1vnPfYrlmmgBGZkmaAiEAyXXaCQ+3kuWg+PbC0AURhv9p18ndvkFnugUK+P9DZok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101218},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"31754c544ab19a9cb4bb64cd60cbd3b56b3a09b2","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.1.2_1786719361107_0.8011528716487948","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.1.3","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.1.3","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"6b22777b4b04add366b099a1d1913bceab562e38","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.1.3.tgz","fileCount":9,"integrity":"sha512-0pHfnkUmz9rNydDPoTCA6zVQXadPszR33Zah7GQzh/xeAr+2fgzjrhoXdMwAW8kuBe7/NpaeCaQ12lFr+MTM3g==","signatures":[{"sig":"MEUCIQDmwGrVxctcAXhRGlolIhwqLokYFbAdqCDvJIecNTtEugIgDp7FaBNpQEtafAWYnH4Mq3GkFq0cSsOWqUAgtyPiDp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101213},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"4021f77151ffba5fa8f4e5ae36ef1c2e806c4567","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.1.3_1786720625435_0.7701820307852001","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.2.0","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.2.0","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"277542369e3d4bf73911a1c65e8c455a9532c968","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.2.0.tgz","fileCount":9,"integrity":"sha512-+8M+RV6T1y5ZhjmprU/xcd6qomAAlKusaZHW1LxCWdRR0e2NDQzwk0Z0oa0klcbNfXEruaZIVrUdRd74+pJYMQ==","signatures":[{"sig":"MEQCIFE2/V12wyXMQ73m8P7ILlVYUwFtr/1eAzQGVw/eKsEHAiAkdmtcyfQvpc+MW/bIxY0NVvuSQBzVPqN1uU6PdMA1Rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118086},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"8fdf24beac78dcf5813482e85aac12bad54f43d9","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.2.0_1786785552496_0.22307111032264726","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.2.1","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.2.1","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"d067653e06c5ef6db0efa8a6bcdaf74b72dd8712","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.2.1.tgz","fileCount":9,"integrity":"sha512-yFjSyzASuNvKINAk0woi3sWtHJS+74O46g3k90olVAwLDNG0GlwXCC55t187rzgy6LjkMpoiN83oAotO1S+jbA==","signatures":[{"sig":"MEUCIHo8BqkiddhC7WHnWvBFBD2fgP0EgjoDrerEsbNy2PWuAiEAv20uSZmormSPCfIrhlsAbdbe+CG3dazUBjcki25zdlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118422},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"0a2c5fb64a5418ac8d7cf23b2f99f31eb508cd53","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.2.1_1786788628643_0.16120539501919073","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.2.2","keywords":["dsh","dsh-plugin","market","marketplace"],"license":"MIT","_id":"@cyber-moshen/dsh-plugin-market@0.2.2","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"dist":{"shasum":"b701f3c25a49c964af7e30ebcdef29f148d61956","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.2.2.tgz","fileCount":9,"integrity":"sha512-es7EPJ7FsYym20p877AKcIa87NxOUxNdO0IaNHN1Vm6o5+xc17x8CYO1w8sStVuqb2Q+K3AZ86DV8blgoQlhcg==","signatures":[{"sig":"MEUCIQCqLMldBND1TdluZkwxvfmEVZebJcu4evwZ6516s3t6VwIgGZeSxuEplk9giF/cKmcGcHf1oD98bU++LGXcRcQtjws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115466},"main":"lib/host.js","type":"module","exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"89fb1fa9b8ba63a404960bb837e73a059ab58599","scripts":{"test":"node scripts/validate.mjs data/plugins.json"},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"_npmVersion":"10.8.2","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*"},"_npmOperationalInternal":{"tmp":"tmp/dsh-plugin-market_0.2.2_1786798774597_0.09115866105639414","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cyber-moshen/dsh-plugin-market","version":"0.3.0","description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","type":"module","main":"lib/host.js","license":"MIT","scripts":{"test":"node scripts/validate.mjs data/plugins.json && node scripts/test-compose-check.mjs"},"publishConfig":{"access":"public"},"keywords":["dsh","dsh-plugin","market","marketplace"],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"}},"exports":{".":"./lib/host.js","./client":"./lib/client.js","./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"peerDependencies":{"@deepseek-ai/cordis":"*","@deepseek-ai/dsh-client-runtime":"*","@deepseek-ai/dsh-client-ui-slots":"*","react":"^18.2.0"},"_id":"@cyber-moshen/dsh-plugin-market@0.3.0","gitHead":"39c395832fccd2f00266b39ddd7cb6d0c31dbeb4","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-9XPy9RONIqrHZy0JjarxQ8beCTJQ4kUSk43atFqPRWcVX5gUC+Cwhu4ZtY6BIE1p3v0KRo7ZzE9aJSYmnXrgqw==","shasum":"7d62ba0d2f51f48f3700d8a9b4231f8dd6345a80","tarball":"https://registry.npmjs.org/@cyber-moshen/dsh-plugin-market/-/dsh-plugin-market-0.3.0.tgz","fileCount":15,"unpackedSize":161889,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD0A2+LS/TI6VKhkeDUbK1Q3tsl3t9z1X0FiZRvtkSf7wIgIikpTpv64aPf7GzDzQC5TEPNb7D17MxDjIhBq3bRLdA="}]},"_npmUser":{"name":"cyber-moshen","email":"2234411029@qq.com"},"directories":{},"maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-plugin-market_0.3.0_1786807596268_0.5375617892698736"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T14:12:19.293Z","modified":"2026-08-15T15:26:36.570Z","0.1.0":"2026-08-14T14:12:19.638Z","0.1.1":"2026-08-14T14:35:39.969Z","0.1.2":"2026-08-14T14:56:01.298Z","0.1.3":"2026-08-14T15:17:05.573Z","0.2.0":"2026-08-15T09:19:12.643Z","0.2.1":"2026-08-15T10:10:28.796Z","0.2.2":"2026-08-15T12:59:34.765Z","0.3.0":"2026-08-15T15:26:36.413Z"},"license":"MIT","keywords":["dsh","dsh-plugin","market","marketplace"],"description":"Open-source plugin market for the DSH web GUI: card grid with GitHub stars, last-commit freshness, and one-click install/uninstall. The catalog is this repo's own data/plugins.json — anyone can add a plugin via pull request. · 开源 DSH 插件市场：卡片式排布、星数、最近提交、一键","maintainers":[{"name":"cyber-moshen","email":"2234411029@qq.com"}],"readme":"# @cyber-moshen/dsh-plugin-market\n\n[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web GUI 的**插件工坊**——一个精心筛选的插件目录，目录本身就在本仓库里。\n\n[English](README.md) · [日本語](README.ja.md)\n\n## 这是什么\n\n**设置 → 插件工坊**页面，提供：\n\n- **卡片式插件列表**——每张卡片显示**标签**（点标签即可搜索）、**GitHub 星标**、**最近提交时间**（带颜色维护信号）、**已安装版本/更新状态**；\n- **搜索**匹配插件名、作者**和标签**；常驻**过滤栏**（安装状态、星标/提交排序、维护状态）；\n- **一键安装 / 更新**（后台调用真实 `dsh plugin` CLI）；\n- 每张卡片右上角的 **GitHub 图标按钮**直达仓库；\n- **设置弹窗**：**GitHub Token** 输入（解除 API 限流）、**启动时自动更新**开关；\n- **整个插件跟随应用自身的语言设置**（设置 → 通用 → 语言：中文 / English）；\n- **热重载生效**——纯 JS 插件安装/更新/卸载后自动热重载并刷新页面，无需重启；含原生模块（`.node`）的插件会弹出提示，需重启 DSH 生效；启动时自动更新同样走热重载；\n- **安装全程带兜底保护**——安装/更新前做依赖审计、完成后自动做\"启动组合校验\"，失败立即回滚，**绝不让插件把 DSH 装到无法启动**（详见[安全机制](#安全机制兜底)）。\n\n**目录就是本仓库的 `data/plugins.json`**——任何人想上架插件，提一个 PR 即可（见[提交 PR 上架](#提交-pr-上架你的插件)）。运行时**实时**抓取，**没有离线缓存和快照**。\n\n## 安装\n\n发布到 npm 后，一条命令任意位置安装：\n\n```sh\ndsh plugin --profile web add @cyber-moshen/dsh-plugin-market\n```\n\n本地源码安装：\n\n```sh\ndsh plugin --profile web add ./dsh-plugin-market -w\n```\n\n重启 Web 服务，然后打开 **设置 → 插件工坊**。之后安装/更新纯 JS 插件无需再重启。\n\n## 使用教学\n\n### 工坊页面\n\n1. 打开 **设置 → 插件工坊**。\n2. **搜索**——匹配插件名、作者**和标签**；点击卡片上的 `#标签` 直接搜索该标签。\n3. **过滤栏**（搜索框下方常驻）：\n   - 安装状态：全部 / 已安装 / 未安装\n   - 排序：星标升序 / 星标降序 / 提交升序 / 提交降序\n   - 维护：全部 / 活跃 / 较久未更新 / 可能停更 / 未知\n4. **卡片操作**：\n   - ⭐ 星标、🕓 最近提交**实时**来自 GitHub API；维护色标：绿=3 个月内推送，黄=1 年内，红=更久或已归档。\n   - **未安装** → `安装` 按钮（一律通过 npm 包安装）。\n   - **已安装且有新版** → `已安装 vX` + `更新 → vY`。\n   - **已安装且最新** → 只显示 `已安装 vX`。\n   - 已安装的插件还有 **卸载** 按钮（在\"更新\"右边）。\n   - 右上角 GitHub 图标打开仓库页面。\n\n### 设置弹窗（搜索框右侧\"设置\"按钮）\n\n- **GitHub Token（可选）**——填入令牌把 API 限流从每小时 60 次提升到 5000 次。获取方法见[如何获取 Token](#如何获取-github-token)。环境变量 `GITHUB_TOKEN` / `GH_TOKEN` 优先。空输入保存不会清空已存 Token；清除请用\"清除\"按钮。\n- **启动时自动更新已安装插件**——开启后，每次 Web 服务启动会检查已安装插件，有新版自动更新；纯 JS 插件热重载生效，含原生模块的插件弹窗提示重启。\n\n## 安全机制（兜底）\n\n插件装坏 DSH 是这类市场工具最致命的问题：`dsh plugin` 会把**每个声明了 `dsh.bundle` 的依赖都自动挂载为 profile 层**，因此\"全家桶\"型插件（比如 `dsh-web-ui` 全家桶）经常在启动时因**重复的 loader 条目**（`duplicate loader entry id: ui-skin-center`）让整个 DSH 起不来。本插件从三层做了防护：\n\n1. **安装前依赖审计（bundle 扇出检测）**——安装前会抓取目标插件及其依赖树，找出所有同样声明 `dsh.bundle` 的包。发现\"扇出\"（一个插件会连带挂载多个 profile 层）时，会弹出明确警告，必须勾选\"我了解风险\"才会继续安装。\n2. **安装/更新后的启动组合校验（权威闸门）**——`pnpm` 装完之后、热应用之前，会用与 DSH 启动**完全相同的组合逻辑**（`scripts/compose-check.mjs`，复用官方 loader/include 机制）在子进程里试组合新的 bundle 栈：重复 loader 条目、非法配置、包缺失都会在这里现形。\n3. **自动回滚**——校验失败时立即把 profile 的 `package.json` 恢复到操作前快照并卸载已装的包，任务状态显示\"已自动回滚\"并说明原因。**无论安装什么插件，profile 都不会停留在无法启动的状态。**\n\n另外还附带一个**离线修复脚本**：如果 profile 已经因为别的原因（比如直接在命令行装的插件）起不来了，可以在任意终端运行：\n\n```sh\nnode <dsh-plugin-market 目录>/scripts/repair.mjs --profile web\n```\n\n它会反复执行组合校验，逐个移除非基础 bundle 层，直到组合通过。\n\n## 如何获取 GitHub Token\n\n1. 打开 <https://github.com/settings/tokens>（Settings → Developer settings → Personal access tokens）。\n2. 点击 **Generate new token (classic)**。\n3. 起个名字（如 `dsh-plugin-market`），设置有效期。\n4. 勾选 **`repo`** 权限（本插件只需要这一个）。\n5. 点 **Generate token**，**立即复制**（只显示一次）。\n6. 粘贴到插件工坊的**设置**弹窗，点**保存**；保存成功后会显示 `✓ Token 已保存（···xxxx）`。\n\n> 令牌等于你仓库的写权限，请妥善保管，不要外泄。\n\n## 提交 PR 上架你的插件\n\n目录是一个 JSON 文件：[`data/plugins.json`](data/plugins.json)。\n\n1. 在本仓库 GitHub 页面上打开 `data/plugins.json`。\n2. 点铅笔（**Edit**）按钮。\n3. 复制一条现有条目改成你的插件，插入到 `\"plugins\": [...]` 里。\n4. **Commit changes… → Propose changes → Create pull request**。\n\n每个 PR 会自动跑校验，JSON 格式错误或缺字段会标红（本地可先跑 `node scripts/validate.mjs data/plugins.json`）。\n\n条目结构（越简单越好，其余全部从链接自动推导）：\n\n```jsonc\n{\n  \"url\": \"https://github.com/you/your-plugin\",  // 你的仓库链接（必填、唯一）\n  \"tags\": [\"记忆增强\", \"UI美化\"],                 // 0-5 个可搜索标签（可选）\n  \"npm\": \"your-npm-package\"                     // 必填——安装/更新一律通过 npm 包\n}\n```\n\n卡片上的名字、作者、星标/提交时间都会自动从 `url` 推导；**`npm` 必填**——安装和更新都走 npm 包（不使用 GitHub 安装）。\n\n详见 [CONTRIBUTING.md](CONTRIBUTING.md)。\n","readmeFilename":"README.zh.md"}