🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件管理器 TAOxxx7/dsh-plugin-manager

DeepSeek Harnessv0.1.3
TAOxxx776 天前有提交已提供中文文档扫描:含敏感能力需联网ui

按分类管理已装插件,搜索市场并一键安装更新

32.8/100
综合分
2
GitHub 星标
68
npm 周下载
—/5
用户评分

数据截至 2026/8/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-manager-community
npm 源 · dsh-plugin-manager-community 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 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.com
    lib/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.com
    lib/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.com
    lib/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.org
    lib/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.com
    src/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.com
    src/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.com
    src/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.org
    src/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 配置档打包

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。
预览分享卡片长什么样 ↓TAOxxx7/dsh-plugin-manager
分享 · DeepSeek Harness Hub
TAOxxx7/dsh-plugin-manager

按分类管理已装插件,搜索市场并一键安装更新

这是你的仓库?认领条目

回到顶部