From 0.1.5 to 0.1.7: an upgrade recovery checklist — back up, pin, roll back #7654
Replies: 3 comments 2 replies
|
One addition from the repair side, worth a step 4 next to pin / roll back: a session that is already refused usually does not need a rollback. The v0 artifact is left byte-identical by the migrator, and the refusals seen so far are a small set of released-writer shapes that can be normalized in place — without dropping events, inventing seqs, or changing the generation:
dsh-session-surgeon applies those specific fixes only, with a dry-run first and a |
|
对表一条,纯事实,不影响清单里任何建议(备份、钉精确版本、别在会话中升级这三条我都同意)。 第 0 节版本地图里 复算口径(09-24 本机):取伞包 manifest 里该版本的 边界照旧:这只说明"装得上",不涉及装完后 v4 代次对旧宿主 |
|
版本表再走一格: 顺带回一句可用性验证,比逐包查在架更进一步:把伞包真正装进临时前缀 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
The 0.1.7 line shipped alpha.1 → alpha.2 → rc.1 in three days, and the forum has filled with "upgraded and now nothing works / my settings are gone / my session history is missing" posts. Individual bugs are being reported well and quickly — this post is not another one. It's a recovery checklist compiled from those threads, for people who just want their working setup back. Everything is community-verified where linked; check on a copy before touching real data. (#7373 covered the earlier 0.1.6-alpha wave — this extends that checklist to 0.1.7.)
0. Version map right now (updated 2026-09-27)
settingsScoperemoved (#7445)next; installs clean into a temp prefix (verified by @xiaoshenming); fresh damage: Windows data-dir re-init (#7921), rollback to 0.1.5-rc.2 wipes the session list via a shared persist key (#7983)1. Before you upgrade (or before you retry)
~/.dshfirst — at minimumprofiles/, your session store,settings.yaml, and locally installed plugins. Several of this week's failure modes consume or drop config on a failed boot ([Bug] 0.1.7-alpha.1 and alpha.2: a failed startup still consumes settings.yaml - legacy sections import into a disposed context and are lost permanently #7534, Orphaned profile writer lock silently drops the legacy settings.yaml migration (settings lost, welcome notice cannot be acknowledged) #7634); the copy taken before the upgrade is the only reliable undo. Note that the legacysettings.yamlimport renames the original file before its sections land (settings.yaml legacy import: file is renamed before sections are imported, so a failed import silently loses all settings #7453) — keep one copy outside~/.dsh.npx @deepseek-ai/dsh@<exact-version>.2. Already broken? Match your symptom
Won't install / won't launch
@deepseek-ai/dsh-win32-process→ koffi "Duplicate type name" — [Bug] Windows + npm global install: dsh web cannot boot — duplicate physical copies of @deepseek-ai/dsh-win32-process trigger koffi "Duplicate type name 'DSH_STARTUPINFOW'", and a create-then-check HMR race exits right after printing the URL #7593, [Windows] profile 同时加载 dsh-subprocess-local 与 dsh-sandbox-local 时启动崩溃:dsh-win32-process 双副本共享 koffi 导致原生类型重复注册 #7578ETARGETon 0.1.5-rc.3 — the tag exists on npm but release notes never followed, and some internal subpackages pinned to rc.3 were never published (npx @deepseek-ai/dsh web fails with ETARGET — @deepseek-ai/dsh-client-ui-sidebar-documentpreview@0.1.5-rc.3 was never published #7465, [Bug] npx install fails with ETARGET: missing documentpreview@0.1.5-rc.3 #7500, 为啥npmjs上已经有了v0.1.5-rc.3,但是却迟迟没有发布release notes? #7584). Pin an exact version that actually has a release.Settings lost / reset
settingsScoperemoved silently; third-party plugins hang on boot — 0.1.7-alpha.1: legacy client service settingsScope silently removed — third-party plugins hang on boot and the failure surfaces as a misleading client-half failed #7445Recovery: restore from your pre-upgrade copy. The loss happens at import/boot time, not on disk.
Session history missing / refuses to open
Recovery: don't delete anything. In the linked threads the session files themselves are intact on disk — the refusal is in the read/migration layer.
New (step 4, proposed by @xiaoshenming): refused ≠ broken — repair beats rollback. The migrator leaves the v0 artifact byte-identical, and the refusals so far are a small set of released-writer shapes (extra members on permission/preset — #6189; subagent/descriptor < 3 — #6151; plugin-source form vs summary — #6194; chunk provenance — #6348/#6175; missing id/role — #6559) that normalize in place without dropping events or renumbering.
dsh-session-surgeonimplements exactly this: dry-run first,.bak.<utc>before any write, shapes checked against the real migration stages of 0.1.7-rc.1/rc.2. Stop the writers first; keep the original until the session opens.Plugins stopped working
profiles/node_modules, so child processes die — [Bug] 0.1.7-rc.1 no longer heals $DSH_HOME/profiles/node_modules (0.1.6 did) — profiles with locally installed plugins break every child process: run_code and voice input die with "subprocess scope exited before its bootstrap consumed the launch request" #7635. Workaround that has worked for link/local plugin installs: runnpm installinside the plugin directory so the bundled peer gets materialized locally.cordis-plugin-hmranddsh-acp-app— @deepseek-ai/dsh: internal peer dependency conflict between cordis-plugin-hmr and dsh-acp-app #7610Windows sandbox / ACL
Compaction / oversized sessions
3. The habit that avoids this whole class of problem
Pin an exact version (
npx @deepseek-ai/dsh@0.1.6-alpha.2or your runner's equivalent) and move only on release checkpoints you chose — never chase a tag that has no release notes (#7584). The longer-form proposal for version pinning + long-run reliability assertions is #6542; if you'd rather see an in-product migration path, vote in #7492.If your symptom isn't listed, comment with your from/to versions and the failing step — verified cases will be folded into this checklist.
中文版
0.1.7 线三天内连发 alpha.1 → alpha.2 → rc.1,论坛上挤满了「升级后跑不起来 / 设置丢了 / 会话历史不见了」。单个 bug 已有人报得又快又好——这份帖不是 bug 报告,而是一份升级恢复清单,整理自下方这些帖子,给只想把环境救回来的人。有链接的均已社区验证;动真实数据前请先在副本上确认。(#7373 整理过 0.1.6-alpha 那一波,本帖把清单延伸到 0.1.7。)
0. 当前版本地图(2026-09-27 更新)
settingsScope被移除(#7445)next;临时前缀安装验证通过(@xiaoshenming);新伤:Windows 数据目录重初始化(#7921)、回退 0.1.5-rc.2 因共用 persist key 清空会话列表(#7983)1. 升级前(或重试前)
~/.dsh——至少profiles/、会话库、settings.yaml、本地装的插件。本周多个故障形态会在启动失败时消费或丢掉配置([Bug] 0.1.7-alpha.1 and alpha.2: a failed startup still consumes settings.yaml - legacy sections import into a disposed context and are lost permanently #7534、Orphaned profile writer lock silently drops the legacy settings.yaml migration (settings lost, welcome notice cannot be acknowledged) #7634);升级前留的副本是唯一可靠的后悔药。注意旧版settings.yaml导入会先把原文件改名、再导入分节(settings.yaml legacy import: file is renamed before sections are imported, so a failed import silently loses all settings #7453)——在~/.dsh之外另留一份。npx @deepseek-ai/dsh@<精确版本>。2. 已经坏了?按症状对号入座
装不上 / 起不来
@deepseek-ai/dsh-win32-process双物理副本 → koffi "Duplicate type name" — [Bug] Windows + npm global install: dsh web cannot boot — duplicate physical copies of @deepseek-ai/dsh-win32-process trigger koffi "Duplicate type name 'DSH_STARTUPINFOW'", and a create-then-check HMR race exits right after printing the URL #7593、[Windows] profile 同时加载 dsh-subprocess-local 与 dsh-sandbox-local 时启动崩溃:dsh-win32-process 双副本共享 koffi 导致原生类型重复注册 #7578ETARGET打在 0.1.5-rc.3 上——npm 有 tag 但 release notes 一直没出,部分钉 rc.3 的内部子包从未发布(npx @deepseek-ai/dsh web fails with ETARGET — @deepseek-ai/dsh-client-ui-sidebar-documentpreview@0.1.5-rc.3 was never published #7465、[Bug] npx install fails with ETARGET: missing documentpreview@0.1.5-rc.3 #7500、为啥npmjs上已经有了v0.1.5-rc.3,但是却迟迟没有发布release notes? #7584)。钉一个真实有 release 的精确版本。设置丢失 / 被重置
settingsScope被静默移除,三方插件启动挂死 — 0.1.7-alpha.1: legacy client service settingsScope silently removed — third-party plugins hang on boot and the failure surfaces as a misleading client-half failed #7445恢复:从升级前副本还原。丢的是导入/启动时的事,磁盘上没坏。
会话历史不见了 / 打不开
恢复:什么都别删。相关帖子里会话文件在磁盘上完好,被拒的是读取/迁移层。
**新增(第 4 步,@xiaoshenming 提议):被拒 ≠ 坏了——修复优于回滚。**迁移器对 v0 原件字节级不动,目前所有拒绝都属于一小撮「已发布写入器」形态(permission/preset 多余成员 #6189、subagent/descriptor < 3 #6151、插件源 form vs summary #6194、chunk 溯源 #6348/#6175、缺 id/role #6559),可原位归一:不丢事件、不改序号。
dsh-session-surgeon就是按这个做的:先 dry-run、写前留.bak.<utc>、每个形态对照 0.1.7-rc.1/rc.2 真实迁移阶段验证。先停写入器;会话打开前保留原件。插件失效
profiles/node_modules,子进程随之死 — [Bug] 0.1.7-rc.1 no longer heals $DSH_HOME/profiles/node_modules (0.1.6 did) — profiles with locally installed plugins break every child process: run_code and voice input die with "subprocess scope exited before its bootstrap consumed the launch request" #7635。对 link/本地安装的插件,实测有效的 workaround:进插件目录跑一次npm install,让捆绑 peer 在本地物化。cordis-plugin-hmr与dsh-acp-app的 peer 冲突 — @deepseek-ai/dsh: internal peer dependency conflict between cordis-plugin-hmr and dsh-acp-app #7610Windows 沙箱 / ACL
压缩 / 超长会话
3. 一劳永逸的习惯
钉住精确版本(
npx @deepseek-ai/dsh@0.1.6-alpha.2或你所用运行器的等价物),只在你自己选定的 release 检查点上移动——不追没有 release notes 的 tag(#7584)。钉版本+长跑可靠性的完整提案见 #6542;想要产品内迁移路径的,去 #7492 投票。你的症状不在列?评论留下「从哪个版本升到哪个版本 + 卡在哪一步」,验证过的案例会合并进这份清单。
All reactions