DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Local Plugin Source — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
L

dsh-local-plugin-source

Local Plugin Source

DeepSeek Harness Desktop 的本地插件源:浏览应用内的本地插件文件夹,并安装、更新或移除其中的插件包。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:baom1ng/dsh-local-plugin-source#fa981aee830d531852a6d99f7e3b17d94e0ced40
README兼容性版本

兼容性与来源证明

Local Plugin Source 以 dsh-local-plugin-source 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/2

版本

0.1.0stable
2026/10/2

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/4
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Vision Toolkit@anionex/dsh-vision-toolkit面向 Harness 原生集成的 DeepSeek 与 agent-vision-toolkit:图像问答、OCR、定位、UI 还原、像素差异、Artifacts 和 Web UI。Remotedsh-remoteDeepSeek Harness 的远程工作助手:连接 SSH(密码/密钥/代理/键盘交互/代理跳转),选择远程工作区,使用 22 个 rw_* 工具操作该工作区(包括 rw_edit/rw_stat/rw_mkdir/rw_remove/rw_move/rw_forward),具备冲突感知的镜像 syBridge@wenbin_wb/dsh-bridgeDSH 远程连接/远程控制插件(remote control):手机扫码即可在移动端/公网继续用 DeepSeek Harness,人不在电脑前也能接着干。一键局域网二维码、Cloudflare 公网隧道、自建隧道与微信 / QQ / 飞书 / Telegram Bot(多工作区/会话持久化/媒体/卡片审批/流式输出),无需自己搭公网服务器。

README

dsh-local-plugin-source

English | 中文

Turn a local folder (default %USERPROFILE%\.dsh\local-plugins) into an in-app plugin source: it lists the plugin packages in that folder inside Settings → Plugins → Local plugins and lets you install / reinstall / enable / disable / remove them.

It exists so locally developed plugins can be installed back at any time without copying absolute paths around or asking the Agent.

Requirements: DeepSeek Harness Desktop. Desktop profile only — the bundle row carries disabled: !!js "ctx.get('profileContext')?.name !== 'desktop'", so web / headless / tui profiles compose this bundle to nothing.


1. What it solves

A local plugin such as dsh-desktop-archive-manager used to be installable only by pasting its absolute path into Plugins → Add plugin. This plugin turns that folder into a list on a page:

  • after removing a local plugin you can install it back from Settings → Plugins → Local plugins with one click;
  • any DSH bundle dropped into the folder shows up automatically (host-only or with a browser half);
  • an ordinary package without a bundle patch is labelled "no bundle patch" and offers no install button (installing it would activate nothing).

2. Install

It is a bundle itself, so it installs like any other local plugin — through the profile's own Plugin Manager:

# Agent side
plugin_manager: install_bundle(target: "C:\\Users\\<you>\\.dsh\\local-plugins\\dsh-local-plugin-source")

# Or the app: sidebar Plugins → Add plugin, paste the same absolute path

Afterwards Settings → Plugins has an extra Local plugins tab.

3. What each action does

Every action is forwarded to the profile's own Plugin Manager (ctx.pluginManager), so manifest writes, bundle selection, pnpm calls and Loader recomposition behave exactly like the official install path — this plugin contributes a source, not a second installer.

ActionHost callNotes
Install / ReinstallpluginManager.installBundle(<absolute path>, { enabled: true })installs and enables; on an installed bundle it is a reinstall (use it after editing local source)
Enable / DisablepluginManager.setBundleEnabled(name, enabled)toggles the bundle layer only, keeping dependencies and files
RemovepluginManager.removeBundle(name)runs pnpm remove; a bundle the manager protects reports its own error

Card state comes from pluginManager.listBundles() — installed / enabled / disabled / not installed, plus the manager's readOnlyReason and the activation error when a bundle fails to load. The pnpm output of an install is shown at the bottom of the page (last 4 KB; the full log stays in the profile's .plugin-manager/logs).

Safety boundaries:

  • only scanned packages can be installed: the endpoint looks a row up by package name inside the scanned list and never accepts a caller-supplied path, so there is no path traversal;
  • one exact route /local-plugin-source/api with a same-origin check (Origin header + a custom request header);
  • request bodies are capped at 64 KB.

4. Configuration

KeyDefaultMeaning
directory%DSH_HOME%\local-pluginsthe folder that gets scanned

Change it from a profile patch layer:

- id: local-plugin-source
  config:
    directory: D:\\my-dsh-plugins

5. Package layout

dsh-local-plugin-source/
├── package.json          # dsh.bundle.patch + dsh.client
├── cordis.patch.yml      # bundle patch: the local-plugin-source row (patch-relative to lib/manager.js)
├── lib/manager.js        # host half: /local-plugin-source/api → ctx.pluginManager
├── lib/scan.js           # dependency-free scanning/classification (unit-tested)
├── lib/client.js         # browser half: the Settings → Plugins → Local plugins tab
├── test/*.test.mjs       # node --test suite (25 tests)
├── LICENSE
└── README.md / README.zh.md

6. Tests

node --test "test/*.test.mjs"

25 tests cover manifest reading and classification (bundle / browser half / not a package / broken JSON / hidden directories), merging installed state, a missing directory, the endpoint gates (method / cross-origin / bad JSON / unknown op), "only scanned packages are installable", structured reporting of manager failures, both listBundles() return shapes, and the browser half (tab registration, the inject-face flattening contract, the button set of each of the four states, empty state, failure notice, and that the English dictionary covers every key the page uses).

7. Known limitations

  • It only manages packages in that folder: it does not scan arbitrary paths and does not take over npm/git installs — those remain the job of the official Add plugin dialog and the plugin_manager tool.
  • The profile must be writable: the desktop profile is app-managed; this plugin goes through the same service, so it never bypasses the manager's locks or compatibility checks.
  • Reinstall to update code: after editing a local plugin, reinstall it to get the new version into the profile; a module already in memory still follows DSH's module-cache rules, so a restart may be needed.