# 调整方案 07:红线 — 禁止 dsh 自动获取最新版本 + 版本升级流程 > 2026-09-09 | 状态:**生效**(配置已落地 + 核查记录)| 适用:dshs + dsh 0.1.2-rc.1 生产平台(47.77.182.89) ## 一、红线(用户 2026-09-09 提出,原文) > **禁止启动 dsh 时自动获取最新版本**,避免版本更新带来的功能差异导致运行失败。后续 dsh 版本更新时,需要**单独建立项目升级测试评估和修复**后,再整体更新到现有项目。 含义拆解: 1. 任何"启动/命令时联网拉取 dsh 最新版本"的行为一律禁止——防止运行环境在某次启动后被悄悄切到新版本(功能差异 → 运行失败)。 2. dsh 版本升级 = **独立升级项目**:先在隔离环境做 升级测试 → 影响评估 → 差异修复,验证通过后才允许整体更新生产项目。 3. 红线不阻止日常 dshs 平台层自身功能改造(那是本项目源码,不在此列)。 ## 二、自动获取版本向量核查(2026-09-09,服务器实测) | 向量 | 是否自动查版本 | 核查结果 | 处置 | |---|---|---|---| | dsh 主程序启动(`dsh --profile web`) | ❌ 不会 | grep lib 全部源码:无 checkForUpdate / update-notifier / registry latest 拉取逻辑(零命中) | 无需处理(红线天然满足) | | npm 命令 | ⚠️ 会 | npm update-notifier 默认 **true**,任何 npm 命令联网查 latest 并打印横幅 | `/usr/local/etc/npmrc` 追加 `update-notifier=false` ✅(npm/pnpm 双生效,实测均 false) | | pnpm 命令(含 `dsh plugin` 转发) | ⚠️ 会 | 此前已见横幅 "Update available 9.15.9 → 12.3.4"(仅提示,不自动升级) | 同上,同一条全局配置已覆盖 | | 门户 spawn 实例 | ❌ 不会 | spawner 仅注入 DSH_HOME/DEEPSEEK_API_KEY 等 env,无版本检查 | 无需处理 | | 门户自身升级 | — | dshs 由本项目 git 管理,手动构建部署 | 遵守第三节流程 | **结论**:dsh 本身启动不查版本;真正会联网查版本的只有 npm/pnpm 的 update-notifier(横幅性质,不改变版本),已全局关闭。该配置在 `/usr/local/etc/npmrc`,对所有用户(root + 各 dsh-uid)生效。 ## 三、版本升级流程(红线执行协议) | 阶段 | 动作 | 产出/门禁 | |---|---|---| | 0 触发 | 官方发布新版本 / 修复需要升级时,先建独立任务,**不得直接在现网执行升级** | 任务单 + 本档案更新 | | 1 升级测试(隔离) | 独立项目/目录或临时 profile 安装目标版本,跑冒烟:profile 启动、插件装载、会话、工具、portal 联动 | 测试记录(通过/失败清单) | | 2 影响评估 | 对比当前 0.1.2-rc.1 与目标版:breaking API、profile/bundle 兼容、自定义插件(portal-entry 等)API 依赖面、schema/DB 变化 | 评估表:差异项 → 影响 → 处置 | | 3 差异修复 | 对受影响的自定义插件 / 平台代码做适配修复,在隔离环境回归 | 修复清单 + 回归通过 | | 4 整体更新 | 评估+修复全部完成后,备份 → 更新全局 dsh(含主程序与 bundle)→ 更新自定义插件 → 全量回归(所有用户实例) | 备份归档 + 回归记录 | | 5 回滚预案 | 任一步失败可回滚:备份清单见 `/opt/dsh/backups/` + profile 快照机制(如 profile-web-admin-poc-*.tgz 同法) | 回滚演练确认 | **当前版本基线**:dsh 0.1.2-rc.1(全局 `/usr/local/lib/node_modules/@deepseek-ai/dsh`);dshs master@6f63108;自定义插件 @dsh-local/portal-entry v0.1.1(装于各 profile bundles)。 ## 四、相关 - 档案 05 的既有红线仍有效:不改官方 dsh 主程序与缓存,扩展只走 profile 层官方插件机制(dsh plugin add)。本红线是其"版本侧"补充——**两者都禁改主程序,本红线进一步禁止隐式换版本**。 - 备份:本次仅改 `/usr/local/etc/npmrc`(追加一行,原内容为空)。