Back to home

Britneycode

dsh-update-center

dsh (DeepSeek Harness) 更新中心与插件市场:自托管 plugins.json 注册表(GitHub dsh-plugin 主题自动聚合 + npm 包名映射秒级安装),一键安装/更新/卸载/禁用插件与更新 dsh 本体。Update center & plugin marketplace for DeepSeek Harness.

Stars
1
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-update-center

npm version

DeepSeek Harness 的本地更新中心:内置插件市场(浏览/搜索/一键安装/卸载/禁用),统一管理已装插件与 dsh 本体、profile 中的 npm/link 插件以及 agent preset 的更新。

安装

插件声明了 dsh.bundle(bundle patch 位于 cordis.patch.yml),构建产物随包分发,用官方 CLI 安装即可挂载为 profile 层。

推荐 npm 安装(秒级,无需构建):

dsh plugin --profile web add dsh-update-center

或从 GitHub 安装:

dsh plugin --profile web add github:Britneycode/dsh-update-center

本地开发时也可以 link 安装:

dsh plugin --profile web add link:<本插件目录>

安装后重启 dsh web,设置页会出现「更新中心」面板。不需要第三方注入器。

插件市场

  • 注册表:本仓库根目录 plugins.json(raw 直链拉取,可独立于插件发版更新),初始内容为 GitHub topic:dsh-plugin 星标前 500 + 本插件,共 501 条。
  • 增量扫描:后台每 12 小时扫描 GitHub topic:dsh-plugin(星标前 500,排除 fork),与注册表按 owner/name 去重合并——重复条目仅刷新星标,新条目追加;掉出扫描窗口的老条目在 plugins.json 中保留(累计语义,上限 2000 防膨胀)。
  • npm 包名映射:同一轮扫描会查询 npm 关键词搜索(keywords:dsh-plugin,约 800+ 包),按 repository 地址与市场条目匹配——仓库一致才映射(天然防抢注);命中的条目显示 npm 标记并走 npm 秒级安装,未命中的走 github: 安装。
  • 更新注册表:npm run refresh:snapshot 会以现有 plugins.json 为基底累计合并最新扫描结果并连同离线快照一起重写,提交推送后生效。
  • 离线兜底:磁盘缓存 → 随包快照(data/registry-snapshot.json);常驻条目(data/extra-plugins.json)无条件并入,保证 0 星新插件始终可见。
  • 清单自动刷新:缓存超过 24 小时会在打开面板时自动拉取最新;「刷新清单」按钮随时强制更新。
  • 出网请求仅允许 https 且 host 白名单(raw.githubusercontent.com 额外限定为清单仓库路径,防 SSRF);安装目标只接受清单内条目,不接受任意包名。
  • 安装优先走 npm 包(秒级),并做防抢注校验:npm 包的 repository 与清单 GitHub owner/repo 不一致时自动回退 github:owner/repo
  • 安装后校验包可解析且存在可运行入口(dsh 清单或 main 文件);校验失败自动回滚卸载,不会留下坏包。
  • 非标准组合套装可作为“手动安装”条目收录:市场只展示项目安装说明,不会误走 pnpm adddsh-routing-suite 即按此方式提供。
  • pnpm ≥10 拒绝或跳过构建脚本时,错误信息会带 pnpm-workspace.yaml 放行指引。
  • 卸载 = pnpm remove + 移出 dsh.profile.bundles,仅对 npm 安装的插件开放;link/preset 插件请直接编辑 profile。
  • 禁用/启用 = 在 profile 的 cordis.patch.yml 写入/移除受管的 disabled: true 条目(按插件自身 insert id 定位,带标记区块与备份),不删文件、可随时恢复,重启后生效。
  • 市场条目与已安装列表互通元数据:已安装插件显示市场描述与 GitHub 链接,市场里已装的插件显示「可更新」徽标。
  • 市场支持排序:星标最多(默认)/ 默认策展顺序 / 最近添加,可叠加搜索与分类筛选。
  • 市场列表默认展示前 500 个筛选结果;结果更多时可在列表底部继续加载,每次增加 500 个。

一键全部更新

  • 检查更新后,工具栏出现「全部更新」:把所有可更新插件(npm 版本落后 + link/preset 落后且无未提交改动)排成一个后台批量任务串行执行。
  • 单个子任务失败不中断其余;结束后汇总「N 成功 / M 失败」,全部失败才标记任务失败。
  • dsh 本体更新有独立的构建语义(完整更新/仅拉取),不并入批量。

当前能力

  • 手动检查远端状态,不在打开设置页时自动发起网络请求。
  • 检查与状态查询全部异步执行(子进程不再阻塞 dsh web 的事件循环),插件检查并行、/status 带 5 秒快照缓存。
  • dsh 完整更新会依次执行快进拉取、pnpm installpnpm run build
  • 更新由 $DSH_HOME/update-center 下的独立 worker 执行,停止或重启 dsh 不会中断任务。
  • npm 插件按包名精准更新,不会因为点击单个插件而更新整个 profile。
  • npm 更新完成后核对 node_modules 中的实际版本;版本没有变化时返回失败。
  • npm 更新/安装/卸载后按官方 dsh plugin 的规则对账 dsh.profile.bundles;模板 bundle 不受影响。
  • link 与 preset 只能通过已安装清单中的包名更新,API 不接受任意目录。
  • Git 插件只更新了 src 而没有更新 lib/dist 时,自动执行包的 build 脚本。
  • 插件来源(upstream)优先读取 git remote 的真实地址,内置映射仅作兜底。
  • dsh 或本地插件存在未提交改动时停止更新,避免覆盖本地工作。
  • 任一步骤失败都会返回失败阶段;不会把依赖安装或构建失败显示成成功。
  • 更新写入磁盘后明确提示重启 dsh web。
  • POST 动作仅接受同源请求(Origin 与 Host 一致)。
  • Start-DSH.ps1 会等待后台更新完成再启动,Stop-DSH.ps1 不会结束更新 worker。

构建

构建脚本支持 Windows、macOS 和 Linux。它会从 DSH_CHECKOUT、相邻目录及常见用户目录中寻找 DeepSeek Harness checkout,并复用 checkout 的 TypeScript 与 tsdown。

npm run typecheck
npm test
npm run build

无法自动找到 checkout 时,先设置 DSH_CHECKOUT

$env:DSH_CHECKOUT = 'D:\App\dsh\deepseek-harness'
npm run build

配置

字段说明默认值
repoDirdsh 源码仓库自动探测
profileDirweb profile$DSH_HOME/profiles/web
presetDiragent preset 目录$DSH_HOME/.agent-presets
proxynpm/pnpm 代理dsh 仓库的 http.proxy
remoteGit 远端名origin
branchdsh 更新分支master
upstreams插件名到 GitHub 仓库的来源映射内置常用插件

更新边界

更新中心只修改已明确识别的 dsh 仓库、profile npm 依赖和已安装的 Git 插件。它不会自动 stash、强制切换普通分支、执行非快进合并,也不会自动结束正在运行的 dsh 进程。