dsh plugin 按 profile 更新怎么操作?DeepSeek Harness 多套环境插件各自升级
dsh plugin 更新是按 profile 分开的:每个 profile 在 $DSH_HOME/profiles/<name> 下有独立的 package.json 与 node_modules,dsh plugin --profile <name> update 只作用于你指定的那个环境,其他 profile 的插件版本不受影响(来源)。
「一次更新所有环境」是个常见误区:DeepSeek Harness 没有跨 profile 的全局插件更新入口。想搞清楚桌面端和命令行各自的 DSH插件 边界,见《DeepSeek Harness 桌面端和命令行更新冲突吗》;想指定升到哪个版本,见《dsh plugin 怎么更新到指定版本》。这篇专讲按 profile 分别更新怎么做、怎么核对。
为什么 dsh plugin 更新要按 profile 分开
Profile 是 DeepSeek Harness 的隔离单位:每个 profile 有自己的 package.json 与 node_modules,插件装在哪、装到哪个版本,都只属于那一个 profile(来源)。
先把 profile 和它的归属摆开:
| profile | 目录 | 谁管理 |
|---|---|---|
| web | $DSH_HOME/profiles/web | 命令行 |
| headless | $DSH_HOME/profiles/headless | 命令行 |
| desktop | $DSH_HOME/profiles/desktop | 桌面端独占 |
| 自定义 | $DSH_HOME/profiles/<name> | 命令行 |
五点决定了必须分开更新:
- 依赖目录独立 — 每个 profile 的依赖在
$DSH_HOME/profiles/<name>下。预期:你能分别看到 web、headless 或自定义 profile 各自的插件清单。 - 版本可以不同 — 同一个插件在不同 profile 里可以是不同版本。预期:为验证新版本,先在某个 profile 升级、出问题不影响别的环境。
- 没有全局入口 — 不存在一条命令跨所有 profile 更新的做法。预期:要更新几个环境就执行几次,每次针对一个 profile。
- 隔离靠目录边界,不靠命令自觉 — 每个 profile 的依赖落在物理上分开的 node_modules 里。预期:同一个插件即使是同一版本,也是两份独立副本,改一份不会动另一份。
- 核对隔离用只读命令 — 执行
ls -l "$DSH_HOME/profiles"。预期:一个环境一个目录,彼此不覆盖。
dsh plugin 按 profile 更新的写法与顺序
写法就是在 dsh plugin 后面用 --profile 指定环境,更新该 profile 里的单个插件或全部依赖;顺序上建议一次一个 profile,逐个验证(来源)。
按六条来做:
- 先看目标 profile 有什么可更新 —
dsh plugin --profile web outdated。预期:列出该 profile 内可更新的插件。 - 更新单个插件 —
dsh plugin --profile web update dsh-memory。预期:只有 web 这个 profile 里的该插件被更新。 - 更新该 profile 全部依赖 —
dsh plugin --profile web update(不带包名)。预期:只更新 web profile 的全部依赖,其他 profile 不动。 - 换成别的 profile 重复 — 把
--profile web换成--profile headless或你的自定义 profile 名。预期:逐个环境完成,互不串味。 - 先确认 profile 目录存在 — 执行
ls -l "$DSH_HOME/profiles"(Windows 用dir)。预期:目标 profile 名在已有环境清单里,而不是拼错后落到一个并非你要的环境上。 - 逐个 profile 验证再推进下一个 — 每更新完一个 profile 就跑一次
list确认。预期:问题在哪个环境当场暴露,不扩散到下一个。
要更新 desktop 环境时注意边界:desktop profile 由桌面端独占,命令行不得启动或修改它,所以桌面端插件要在应用内更新(来源)。
更新后怎么核对只改了目标 profile
核对办法是对涉及的 profile 各跑一次 outdated 或 list 做对比,目标 profile 版本变了、其他没变,就说明隔离生效(来源)。
五步核对:
- 查目标 profile —
dsh plugin --profile web list,确认目标插件已是新版本。预期:版本号与预期一致。 - 查另一个 profile —
dsh plugin --profile headless list,看同一插件的版本。预期:如果之前没更新过,这里应保持旧版本,说明没被连带更新。 - 必要时看 profile 目录 — 直接查看两个 profile 目录下的 package.json。预期:范围与版本各记各的,进一步确认隔离。
- 用只读命令直接看目录 — 执行
ls -l "$DSH_HOME/profiles/web"与ls -l "$DSH_HOME/profiles/headless"。预期:两个目录各有一份 node_modules,物理上就是两套依赖。 - 对比两个 profile 的 package.json — 执行
cat "$DSH_HOME/profiles/web/package.json"与cat "$DSH_HOME/profiles/headless/package.json"。预期:同一插件的范围与版本各记各的,改了一个另一个原样不动。
dsh plugin 按 profile 更新的注意事项
- 别把「更新全部」当成「更新所有环境」 — 不带包名的 update 只覆盖一个 profile 的全部依赖。
- 一次一个 profile 更稳 — 出问题能快速定位是哪个环境的哪次更新引起的。
- desktop 走应用内 — 命令行碰不到 desktop profile,这一点由独占锁保证。
- 自定义 profile 名要写对 —
--profile后面跟的是你的 profile 名,写错会操作到别的环境。 - 更新前先 outdated — 看清目标 profile 里到底哪些插件可动。预期:不会顺手升级了并不想动的插件。
- 留一个不更新的 profile 作对照 — 挑一个环境保持不动。预期:出问题时手里有一个干净的旧版本基线可比。
不想一个个 profile 敲命令,用 DSH Plugin Hub 更方便:已安装列表把当前环境的 DSH plugin 和可更新状态集中展示,点一下即可更新,确认弹窗后再动手。

来源:DeepSeek Harness CLI README(官方仓库)、DeepSeek Harness 桌面端 README(官方仓库)
常见问题
不会。dsh plugin 更新只作用于你用 --profile 指定的那一个 profile,每个 profile 在 $DSH_HOME/profiles/<name> 下有独立的 package.json 与 node_modules。所以给 web 更新插件不会改动 desktop 或其他自定义 profile 的插件版本。
在 dsh plugin 后面加 --profile 指定环境,例如 dsh plugin --profile web update dsh-memory。不带包名的 dsh plugin --profile web update 会更新该 profile 里的全部依赖,但依然只影响 web 这一个 profile。
因为每个 profile 是独立的依赖集合,没有跨 profile 的全局更新入口。要更新多个环境就逐条对每个 profile 执行一次 dsh plugin --profile <name> update,这也保证你能逐个环境验证,不会一次把全部环境改坏。
不能。desktop profile 由桌面端独占,Electron 在访问任何 profile 前先取得单实例锁,命令行不得启动或修改该 profile,所以 desktop 的插件要在桌面端应用内更新。命令行能管理的是 web、headless 与自定义 profile。
分别对两个 profile 跑 outdated 或 list 对比即可,例如 dsh plugin --profile web outdated 与 dsh plugin --profile headless outdated。目标 profile 里该插件版本变了、另一个没变,就说明更新保持了 profile 隔离。
相关术语
- Profile(profile)
- Profile 是 DeepSeek Harness 中一套独立的运行环境,拥有自己的配置、会话与插件依赖;用 --profile 指定后,dsh plugin 的包操作只落在该 profile 内。— DeepSeek Harness CLI README
- profiles/<name>
- profiles/<name> 是某个 profile 在 $DSH_HOME 下的独立目录,例如 $DSH_HOME/profiles/web,里面记录该 profile 的 package.json 与 node_modules,不同 profile 互不共享。— DeepSeek Harness CLI README
- web profile
- web profile 是通过 dsh web 启动的 Web 界面环境,属于命令行可管理的 profile,插件更新用 dsh plugin --profile web update 完成。— DeepSeek Harness CLI README
- desktop profile
- desktop profile 是 DeepSeek Harness 桌面端独占的 profile,路径为 $DSH_HOME/profiles/desktop,命令行不得启动或修改它,插件更新在桌面端应用内进行。— DeepSeek Harness 桌面端 README
来源
- DeepSeek Harness CLI README(Profile 用法)· deepseek-ai
- DeepSeek Harness 桌面端 README· deepseek-ai