DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Plugin List Sync — DeepSeek Harness 插件(DSH Plugin)
← Plugins
P

dsh-plugin-list-sync

Plugin List Sync

通过 S3 兼容存储(AWS S3、MinIO、RustFS、R2、OSS)同步 DeepSeek Harness 插件列表配置。· 面向多端 DSH 的 S3 插件列表同步与安全回滚插件。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:smellgamed3/dsh-plugin-list-sync#e31d10978c8d4066006afa23ce5292f7cb084a0c
README兼容性版本

兼容性与来源证明

Plugin List Sync 以 dsh-plugin-list-sync 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.2.0stable
2026/10/1
0.1.0stable
2026/9/29

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Ab Publishdsh-ab-publish浏览器自动化发布工具,可登录任意网站并发布内容,整合为一个可发布的插件包Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Im@xmanrui/dsh-im将微信、飞书、企微、钉钉、QQ、Telegram、WhatsApp、Slack、Discord 和 Matrix 接入 DSH。

README

dsh-plugin-list-sync

中文文档 · Architecture(架构) · Operations(部署与排错) · Contributing(贡献指南) · Changelog

Synchronize the plugin-list configuration of DeepSeek Harness (DSH) clients through any S3-compatible object store — AWS S3, MinIO, RustFS, Cloudflare R2, Aliyun OSS (S3 gateway), etc.

DSH 插件列表多端同步:把当前客户端的插件清单上传到任意 S3 兼容存储,在其他客户端下载并应用,实现多端插件配置一致。

What gets synced

The plugin-list configuration is exactly two files in a DSH profile:

FileCarries
package.jsonthird-party dependency versions + dsh.profile.bundles enable order
cordis.patch.ymlthe user patch layer — disabled rows, plugin config overrides

Both directions are MERGE-only by default. Uploading never deletes remote-only plugins; downloading never removes a locally installed plugin and never downgrades a locally higher version (per-package the HIGHER side wins; an older remote revision is reported as kept-local, never applied).

Force overwrite exists as an explicit, one-shot, never-persisted opt-in: two red-bordered checkboxes in the settings page ("force overwrite remote" on upload / "force overwrite local" on apply). They are stored nowhere (not in localStorage, not in settings.json), reset automatically after every operation, and force-local additionally requires re-previewing the replace plan and passing a confirmation dialog that spells out the exact removals/downgrades. See the operations section in the Chinese README.

  • Official @deepseek-ai/* bundles are never synced: they track each client's own DSH runtime, and syncing them would re-create the peer-dependency breakages the DSH plugin gate exists to prevent.
  • LLM provider config is excluded by default (the config: blocks of rows like llm-pi-ai / agent-default-model carry baseURLs and model catalogs). Enable includePatchConfig if you want it synced; when disabled, those rows keep only their structural keys (id / name / disabled).
  • dsh-plugin-list-sync itself is skipped (self-bootstrap): it must be installed on each client manually — once.

Install

dsh plugin add smellgamed3/dsh-plugin-list-sync

or from a checkout:

dsh plugin add file:C:/path/to/dsh-plugin-list-sync

Configure

Open Settings → Plugin Sync in the DSH web UI and fill in:

  • S3 endpoint — e.g. https://s3.amazonaws.com, http://127.0.0.1:9000 (MinIO/RustFS)
  • Region — real region on AWS; auto (maps to us-east-1) works for MinIO/RustFS
  • Bucket + optional key prefix
  • Path-style addressing — on by default (MinIO/RustFS need it); turn off for virtual-host-style endpoints
  • Allow plain HTTP — opt-in only for local/test endpoints
  • Request SSE-S3 AES256 encryption — off by default; enable only when the S3 backend has SSE-S3/KMS configured (keep it off for RustFS without RUSTFS_SSE_S3_MASTER_KEY)
  • Request SSE-S3 AES256 encryption — off by default; enable only when the S3 backend has SSE-S3/KMS configured (keep it off for RustFS without RUSTFS_SSE_S3_MASTER_KEY)

Credentials are never written to config files and never included in the sync manifest. Provide them either via:

  • the settings page — AccessKey / SecretKey fields with Save/Clear buttons; stored locally in <profile>/.dsh-plugin-list-sync/credentials.json (priority over env vars), or
  • environment variables DSH_PLUGIN_SYNC_S3_KEY / DSH_PLUGIN_SYNC_S3_SECRET (used when no saved pair exists).

Use

Settings page buttons: Preview diff (dry-run against the remote manifest), Upload current list, Download && apply, Rollback (restores the latest snapshot; every apply snapshots both files first).

Command surface (any DSH chat):

/plugin-sync status
/plugin-sync upload
/plugin-sync diff
/plugin-sync pull
/plugin-sync rollback [snapshot-id]

Semi-automatic sync

Both automation switches are off by default. After saving settings, the Host can debounce-upload local package.json / cordis.patch.yml changes and periodically check remote differences. It never downloads, installs, removes, or applies remote plugin configuration automatically; a user must still preview and explicitly apply any remote change.

Non-secret automation settings live in <profile>/.dsh-plugin-list-sync/settings.json; credentials remain separate and never enter a manifest.

Safety model

  1. Merge-only by default — upload merges local INTO the remote manifest (remote-only plugins are preserved); apply merges remote INTO the local profile (local-only plugins survive, local versions never move backwards). Force-replace requires an explicit, per-operation, never-persisted opt-in with confirmation.
  2. Download-side strict validation — a remote manifest is applied only after schema whitelisting (format/version/revision, npm-style package names, bounded sizes). Anything outside the schema refuses to apply; a corrupt remote object also refuses to be overwritten by an upload (unless force is deliberately ticked).
  3. Snapshot-first apply — package.json + cordis.patch.yml are captured to .dsh-plugin-list-sync/snapshots/ before any write; rollback is one command and itself snapshots first.
  4. Revision monotonicity — uploads increment the remote revision; a pull never applies an older revision silently.
  5. Same-origin fence — every mutating route rejects cross-site requests (Origin/Host discipline).
  6. Optimistic locking — uploads carry If-Match with the observed ETag where the server supports it.
  7. Minimal peer surface — the only peer dependency is @deepseek-ai/cordis (ships with DSH). Everything else (commands, webServer, pluginManager, credentials, settings) is feature-detected at runtime; a host missing a service keeps that surface disabled instead of failing to load.

Manifest format

{
  "format": "dsh-plugin-list-sync/manifest",
  "version": 1,
  "revision": 42,
  "updatedAt": "2026-09-29T08:00:00.000Z",
  "source": { "label": "office-desktop" },
  "runtime": { "dshVersion": "0.2.0-rc.1" },
  "packages": { "dsh-context": "0.59.0" },
  "bundles": ["dsh-context"],
  "patch": { "kind": "rows", "rows": [{ "id": "cost-meter", "disabled": true }] }
}

One JSON object per profile: s3://<bucket>/<prefix>/<profile-name>.json.

Development

pnpm run check          # syntax checks + core regression suite
pnpm test               # core regression suite
pnpm run test:s3-mock   # terminal A: local SigV4-validating S3 mock
pnpm run test:e2e       # terminal B: full S3 upload/download/apply/rollback flow

Pure Node built-ins (node:https, node:crypto, node:fs, node:path); zero runtime dependencies; SigV4 implemented in ~200 lines (lib/s3.js).

License

MIT