按分类管理已装插件,搜索市场并一键安装更新
32.8/100
综合分
2
GitHub 星标
68
npm 周下载
—/5
用户评分
数据截至 2026/8/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-manager-communitynpm 源 · dsh-plugin-manager-community 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 76 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-plugin-manager-community @ 0.1.3
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/17 12:42:19
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 44 处,展示前 42 条)
- 读取本地文件lib/index.js:187
return existsSync(path) && statSync(path).isFile(); - 读取本地文件lib/index.js:187
return existsSync(path) && statSync(path).isFile(); - 执行外部命令来自配置/变量lib/index.js:304
const child = spawn(shellScript && resolved.command.includes(" ") ? `"${resolved.command}"` : resolved.command, [...resolved.prefixArgs, ...args], { - 读取本地文件lib/index.js:427
source = await readFile(workspacePath, "utf8"); - 写入本地文件lib/index.js:444
await writeFile(workspacePath, `${lines.join("\n").replace(/ +$/, "")}\n`, "utf8"); - 写入本地文件lib/index.js:449
await writeFile(workspacePath, `${lines.join("\n").replace(/ +$/, "")}\n`, "utf8"); - 请求外部主机api.github.comlib/index.js:501
const repoResponse = await fetch(`https://api.github.com/repos/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)}`, { - 发起网络请求lib/index.js:501
const repoResponse = await fetch(`https://api.github.com/repos/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)}`, { - 请求外部主机raw.githubusercontent.comlib/index.js:512
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)} - 发起网络请求lib/index.js:512
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)} - 请求外部主机raw.githubusercontent.comlib/index.js:558
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${candidate.item.fullName}/${encodeURIComponent(branch)}/package.json`, { - 发起网络请求lib/index.js:558
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${candidate.item.fullName}/${encodeURIComponent(branch)}/package.json`, { - 请求外部主机registry.npmjs.orglib/index.js:567
const registryResponse = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`, { - 发起网络请求lib/index.js:567
const registryResponse = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`, { - 读取本地文件lib/index.js:593
const manifest = JSON.parse(await readFile(join(dir, "package.json"), "utf8")); - 读取本地文件lib/index.js:604
const value = JSON.parse(await readFile(join(profileDir, "package.json"), "utf8")); - 读取本地文件lib/index.js:660
source = await readFile(join(profileDir, "pnpm-lock.yaml"), "utf8"); - 发起网络请求lib/index.js:712
const response = await fetch(`${GITHUB_REPOSITORY_API}/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)}/releases/latest` - 发起网络请求lib/index.js:738
const response = await fetch(url, { - 写入本地文件lib/index.js:825
await writeFile(join(profileDir, "package.json"), `${JSON.stringify({ - 执行外部命令来自配置/变量lib/index.js:1134
spawn(process.execPath, [...process.execArgv, ...process.argv.slice(1)], { - 读取本地文件src/host/index.ts:260
return existsSync(path) && statSync(path).isFile() - 读取本地文件src/host/index.ts:260
return existsSync(path) && statSync(path).isFile() - 执行外部命令来自配置/变量src/host/index.ts:379
const child = spawn(command, [...resolved.prefixArgs, ...args], { - 读取本地文件src/host/index.ts:497
source = await readFile(workspacePath, 'utf8') - 写入本地文件src/host/index.ts:518
await writeFile(workspacePath, `${lines.join('\n').replace(/ +$/, '')}\n`, 'utf8') - 写入本地文件src/host/index.ts:523
await writeFile(workspacePath, `${lines.join('\n').replace(/ +$/, '')}\n`, 'utf8') - 请求外部主机api.github.comsrc/host/index.ts:586
const repoResponse = await fetch(`https://api.github.com/repos/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)}`, { - 发起网络请求src/host/index.ts:586
const repoResponse = await fetch(`https://api.github.com/repos/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)}`, { - 请求外部主机raw.githubusercontent.comsrc/host/index.ts:597
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)} - 发起网络请求src/host/index.ts:597
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)} - 请求外部主机raw.githubusercontent.comsrc/host/index.ts:653
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${candidate.item.fullName}/${encodeURIComponent(branch)}/package.json`, { - 发起网络请求src/host/index.ts:653
const manifestResponse = await fetch(`https://raw.githubusercontent.com/${candidate.item.fullName}/${encodeURIComponent(branch)}/package.json`, { - 请求外部主机registry.npmjs.orgsrc/host/index.ts:663
const registryResponse = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`, { - 发起网络请求src/host/index.ts:663
const registryResponse = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`, { - 读取本地文件src/host/index.ts:690
const manifest = JSON.parse(await readFile(join(dir, 'package.json'), 'utf8')) as unknown - 读取本地文件src/host/index.ts:707
const value = JSON.parse(await readFile(join(profileDir, 'package.json'), 'utf8')) as unknown - 读取本地文件src/host/index.ts:778
source = await readFile(join(profileDir, 'pnpm-lock.yaml'), 'utf8') - 发起网络请求src/host/index.ts:834
const response = await fetch(`${GITHUB_REPOSITORY_API}/${encodeURIComponent(repository.owner)}/${encodeURIComponent(repository.repo)}/releases/latest` - 发起网络请求src/host/index.ts:858
const response = await fetch(url, { - 写入本地文件src/host/index.ts:964
await writeFile(join(profileDir, 'package.json'), `${JSON.stringify({ - 执行外部命令来自配置/变量src/host/index.ts:1189
const child = spawn(process.execPath, [...process.execArgv, ...process.argv.slice(1)], {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:api.github.com、raw.githubusercontent.com、registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-invariants@deepseek-ai/dsh-typert-protocol给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图功能亮点
- 按分类管理已装插件
- 搜索市场插件
- 一键安装更新
DSH 设置插件管理器,为桌面端和原生 Web 配置档打包
最近更新
在 GitHub 查看全部 →v0.1.32026-08-19
· v0.1.3
· 新功能
Web 端「立即重启」优雅断开
· 宿主会等当前 HTTP/RPC 响应结束后,再退出旧的 Web 进程。
· 只有在主动重启且 profile=web 时,Web 客户端才屏蔽 Failed to fetch / NetworkError。
· 桌面端重启失败仍会显示真实错误。
· 新增双语界面提示:Web 运行时正在重启,当前断开是预期行为。
GitHub Releases 更新检测
· 用 npm 安装的插件继续使用 pnpm outdated。
· 用 GitHub 源码安装的插件改为查询 /repos/{owner}/{repo}/releases/latest。
· 支持 semver 风格的 Release 标签(v1.2.3、1.2.3)。
· 即使 GitHub 插件安装时锁定了某个 commit 也能用;版本仍与最新 Release 标签比较,据此触发更新提示。
· 未锁定 commit 的 GitHub 插件,在没有 semver Release 时回退到检查最新 commit。
· 非 semver 的 Release 不会被悄悄当成更新。
· 本次构建包含的文件
· lib/index.js、lib/client.js(宿主 + 客户端打包产物,已同步)
· src/host/index.ts、src/client/client/PluginManagerSettingsTab.tsx、src/client/client/locales.ts
· 安装
npm install dsh-plugin-manager-community@0.1.3
· npm:
v0.1.22026-08-19
· v0.1.2
· Docs
· README/README.zh.md: clarify DeepSeek Harness (DSH) Desktop support; npm page now reflects the same documentation.
· Repository topics expanded: dsh, deepseek, harness, ai-agent, cordis, deepseek-desktop, dsh-plugin.
· Install
npm install dsh-plugin-manager-community@0.1.2
· npm:
原文(未汉化)
v0.1.12026-08-19
· v0.1.1
· 修复
· pnpm 解析:Web 配置档不再硬编码 pnpm.cmd,改为依次通过 DSH_PNPM_BIN、profile/shared node_modules/.bin、DSH 内置 pnpm(优先 11.7.0)、PNPM_HOME/npm 全局、PATH、Node.js Corepack 解析。
· Windows 路径引号:.cjs/.exe 直接由 Node 启动;.cmd/.bat 仅在必要时通过 shell 启动;含空格的路径加引号(修复 C://Program is not recognized)。
· GBK/GB18030 回退:命令输出先按 UTF-8 解码,失败则回退到 Windows 代码页,修复 pnpm 中文诊断信息显示为 ????。
· 文档:README/README.zh.md 补充 Web pnpm 环境说明。
· 安装
npm install dsh-plugin-manager-community@0.1.1
· npm:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成DSH 插件管理器
English ·
这是一个可独立发布的 DSH 组合包,在 设置 → 插件 中增加分类插件管理器。
这个仓库按照社区插件的标准形态组织:
- 根目录 package.json 就是可安装的 npm 包;
- dsh.bundle.patch 挂载 Host 网关;
- dsh.client 在原生 Web 客户端加载浏览器设置页;
- lib/ 保存已经构建并验证过的 Host/Client 产物;
- GitHub 用于源码、文档和 dsh-plugin 市场发现;
- npm 是普通用户安装和更新的渠道。
界面预览
插件管理 Tab — 按分类展示已安装的组合包
插件市场搜索 — dsh 主题仓库发现
功能
- 按分类整理当前 profile 的所有已安装包;
- 搜索 GitHub dsh-plugin 市场;
- 已安装插件去重提示;
- 市场仓库有正式 npm 包时优先从 npm 安装;
- 没有 npm 发布时回退到 GitHub 源码安装;
- 卸载、单个更新、更新检查和启动时自动检查;
- 对带语义化版本标签的 GitHub 源码插件检查 Releases;没有 Release 时对未固定 commit 的源码回退到最新提交比较;
- 捕获 pnpm 构建许可错误,并提供明确的允许/重试流程;
展开完整文档(README 剩余 1 节)
DSH 插件管理器 English · 这是一个可独立发布的 DSH 组合包,在 设置 → 插件 中增加分类插件管理器。 这个仓库按照社区插件的标准形态组织: - 根目录 package.json 就是可安装的 npm 包; - dsh.bundle.patch 挂载 Host 网关; - dsh.client 在原生 Web 客户端加载浏览器设置页; - lib/ 保存已经构建并验证过的 Host/Client 产物; - GitHub 用于源码、文档和 dsh-plugin 市场发现; - npm 是普通用户安装和更新的渠道。 界面预览 插件管理 Tab — 按分类展示已安装的组合包 插件市场搜索 — dsh 主题仓库发现 功能 - 按分类整理当前 profile 的所有已安装包; - 搜索 GitHub dsh-plugin 市场; - 已安装插件去重提示; - 市场仓库有正式 npm 包时优先从 npm 安装; - 没有 npm 发布时回退到 GitHub 源码安装; - 卸载、单个更新、更新检查和启动时自动检查; - 对带语义化版本标签的 GitHub 源码插件检查 Releases;没有 Release 时对未固定 commit 的源码回退到最新提交比较; - 捕获 pnpm 构建许可错误,并提供明确的允许/重试流程; - 安装完成后询问是否立即重启生效; - DSH Desktop 与 npx @deepseek-ai/dsh web 使用同一套 profile 逻辑。 发布后安装 如果发布者更换了包名,请替换下面命令中的包名: dsh plugin --profile desktop add dsh-plugin-manager-community@latest 原生 Web profile npx -y @deepseek-ai/dsh plugin --profile web add dsh-plugin-manager-community@latest npx -y @deepseek-ai/dsh web 安装新版本后,需要重启当前 DSH 进程才能加载新的组合层;从市场安装成功后,设置页会询问是否立即重启。 原生 Web 重启会替换当前 Node 进程。根据浏览器时序,触发重启的 HTTP 请求可能显示为 Failed to fetch;当前 lib/client.js 会仅把 Web 端这种预期断连识别为重启过程,并显示正在恢复连接。发布时请确保 lib/index.js 与 lib/client.js 来自同一个版本。 兼容性 插件管理器已验证支持 DeepSeek Harness(DSH)桌面版 以及同一应用的原生 Web profile。dsh.client.platform: "web" 表示浏览器端部分的目标平台,不代表只能从 GitHub 安装。远程浏览器实际操作的是运行 DSH 的那台机器,其 npm/pnpm 操作也发生在对应的 Host/profile 上。 Windows 原生 Web 端会按以下顺序寻找 pnpm:DSH_PNPM_BIN、当前 profile/共享 DSH pnpm 包、PNPM_HOME/npm 全局目录、PATH,最后尝试 Node.js 自带的 Corepack。直接运行 .exe/pnpm 脚本,避免 C:\\Program Files 这类路径被 shell 截断;需要运行 .cmd 时会自动加引号。命令输出优先按 UTF-8 解码,检测到 Windows GBK/GB18030 输出时自动回退,避免中文错误变成乱码。如果这些位置都没有 pnpm,请安装 Node.js/Corepack,或把 DSH_PNPM_BIN 设置为完整的 pnpm.cmd 路径,然后重启 Web 进程。 开发说明 lib/ 是从已经验证过的 Harness 构建中复制出的发布产物;src/ 用于审阅和后续维护。当前交接流程直接发布已验证产物,不要求发布 AI 先准备 Harness monorepo。 具体发布步骤见 HANDOFF.zh.md 和 PUBLISH.zh.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
TAOxxx7/dsh-plugin-manager
按分类管理已装插件,搜索市场并一键安装更新
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目