前言¶
在 DeepSeek Harness(DSH)里装插件,多半会用到社区里的 dshmarket:浏览、安装、分组、备份都顺手。但有三类事市场本身很难包办:市场插件要「先卸再装」,卸载后更新逻辑跑不到;带守护进程的插件运行中更新容易被文件占用顶回去;用 link: 挂进来的本地开发插件,市场也不会帮你盯版本。
如果你不想每次更新都手动退出、进命令行、再重新打开桌面端,又担心某次升级把 DSH 起不来、或者误点「禁用全部插件」把 profile 定制清掉,就需要一层专门补这些缺口的助手。下面介绍维护者 Jackbessaliuz 开源的 dsh-market-expand(GitHub:Jackbessaliuz/dsh-market-expand)。它定位是市场的补丁层,不是替代品;与 dshmarket 可同时安装。
这是什么¶
dsh-market-expand 是 DSH 插件市场的工作流扩展:在界面里勾选要更新的包,退出 DSH 后由助手在后台用桌面端 CLI 完成安装(失败会回退 pnpm),装完自动重新打开宿主;并在重启后做启动自检,必要时只回退本次更新过的插件。另支持对「本地化插件」分组做更新检测,以及快照与回滚。
当前 npm 包版本为 1.3.0(2026-10-22),许可证 MIT。社区目录分类为「工作流」。
核心功能¶
一键更新全部¶
按钮在市场 「分组」 页 「本地化插件」 模块右上角,与「检测更新」并排。若分组结构变化,插件会按三级锚点兜底:优先「本地化插件」分组,否则「未分组」区块,再否则第一个分组。
点开后会扫描当前 profile 里 npm 插件的 registry 最新版(含市场自身);github: 安装的包则对比仓库最高 semver tag。勾选目标后排队,右下角弹出进度窗,显示「已排队 N 个,等待 DSH 退出」。从托盘退出 DSH 后,助手在后台安装并补写 dsh.profile.bundles,完成后自动拉起 DSH。排队成功即可见进度;排队期间再次点击会打开详情,可取消。
更新前风险提示¶
勾选面板会按包标注风险,便于在点「更新」前判断:
- 跨大版本、预发布版(
-beta/-rc)、会改动官方预设注入的包,视为更需要单独处理。 - 仅 GitHub 源的包标为「安装可能较慢」,不代表危险。
- 普通小版本升级不额外提示。有风险项默认仍勾选,表示可能存在破坏性变更;也可取消勾选,先只更相对稳妥的包。
更新安全网(启动失败自动回退)¶
更新后重启若 DSH 起不来,助手会:在约 60 秒内自检;若发现新的 crash-*-web-boot.log,解析肇事插件并只回退本次更新过的包;尽量在「禁用全部插件」对话框被确认前结束处理,装回旧版并再次自检。桌面端启动失败时,若用户确认禁用全部插件,sanitizeProfile() 会改动 patch 与 bundles,定制容易丢失——安全网针对的是在这一步之前把问题收窄到单次更新。
若新宿主进程提前退出(例如旧实例子进程未退净、单实例锁冲突),助手会等待约 8 秒确认是否已有实例接管,避免误判。
v1.3.0 起自检还会查主窗口句柄:约 90 秒仍无窗口则判定卡住,结束进程重开一次,并尝试把窗口恢复到前台;重启宿主前会清理累积的 dsh-auth-* cookie 并备份 cookie 库,缓解认证 cookie 过多导致 Web 认证失败、窗口不出现的情况。
组合破坏检查¶
部分更新不会让进程崩溃,却可能通过 dsh.bundle.patch.yml 改写官方 preset 注入,或依赖已被你在 patch 里 disabled: true 的条目,导致 Agent 预设页空白或会话报 Unknown agent preset。这类问题不一定写入 crash log。更新完成、重启前,助手会扫描本次更新包自带的 bundle patch,把组合风险写入日志与进度窗。更新前还会备份 package.json、cordis.patch.yml、.dsh-market/state.json,便于极端情况下恢复。
本地插件检测与快照¶
需先在市场「分组」页手动新建名为「本地化插件」的分组,把 link: 插件放进去,再点 检测更新。自 v1.2.4 起插件不再自动创建或写入 state.json,避免与市场内存状态冲突导致分组错位。
检测按各插件配置的 npm 包名或 GitHub 仓库比对版本;有更新时行内提示,升级路径为自动快照、合并、校验,冲突会转为建议手动处理。保留最近 3 份快照,可一键回滚。
进度与失败报告¶
点更新后约 1 秒内弹出原生进度窗,四步轨为:更新 → 自检 → 回退 → 重启,并滚动显示 dsh plugin add … 等真实日志行。成功约保留 60 秒,失败窗口常驻;失败时还会在桌面写入 market-expand-更新失败-<时间>.txt,汇总失败包、自检结论、组合风险、日志与备份路径。
安装与启用¶
命令行安装(将 <profile> 换成你的 profile 名):
dsh plugin --profile <profile> add dsh-market-expand
官方桌面端请在应用内 设置 → 插件 安装,该 profile 由应用插件管理器管理。
检测 GitHub 源或查询 registry 时可能需要代理。插件从环境变量读取,不写死地址:
| 变量 | 说明 |
|---|---|
DSH_GIT_PROXY |
优先级最高,如 http://127.0.0.1:7890 |
HTTPS_PROXY / HTTP_PROXY |
标准变量,兜底 |
DSH_GIT_INSECURE=1 |
自签证书环境放宽 git TLS 校验(默认不放宽) |
也可写在 ~/.dsh/.env,启动时自动加载。均未设置则直连。
典型用法¶
- 安装本插件与
dshmarket(若尚未安装市场)。 - 打开市场「分组」页,需要本地开发插件检测时,自建「本地化插件」分组并加入
link:插件。 - 在「本地化插件」或兜底位置点击 更新全部,在面板中根据风险提示勾选包,确认排队。
- 从托盘完全退出 DSH,等待进度窗走完更新、自检;若失败,查看桌面报告或
~/.dsh/market-expand/下的日志与备份。 - 仅维护本地插件时,在同一分组使用 检测更新,按提示升级或回滚快照。
适用场景与注意¶
适合经常批量升级 npm / GitHub 源插件、且希望退出后自动装完并重启 DSH 的用户;也适合担心单次升级导致启动失败或 preset 组合被破坏、需要自动回退与备份的场景。
插件在当前 DSH 进程权限下运行,更新阶段会改写当前 profile 的 package.json、node_modules 与 bundles,并在 ~/.dsh/market-expand/ 写入队列与备份;安装前请阅读源码与 MIT 许可证,确认符合你的安全策略。它不会修改你的 cordis.patch.yml、会话与记忆库;只读 crash 日志。
社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-market-expand 补的是市场做不了的三件事:退出后的一键全量更新、启动与组合层面的安全网、本地 link: 插件的版本检测与快照回滚。需要进一步了解可查看目录页与仓库 README。
- 目录页:https://www.skillhub.cn/plugins/Jackbessaliuz/dsh-market-expand
- GitHub:https://github.com/Jackbessaliuz/dsh-market-expand