撤掉 pi2dsh 要按反序来:插件、适配器、引擎的先后
兼容层的卸载比安装更难,因为它夹在两层之间:上面是 Pi 包,下面是 DSH 宿主。顺序错了会留下挂不上的残留。这篇把卸载、降级、以及「回滚后仍然不可用」的判断写清楚。想先看同类插件清单,见 完整插件清单与汉化避坑指南。
一、正确的卸载顺序
README 给的规则只有一句:remove plugins before removing the engine。展开成可执行的四步:
dsh plugin remove <pi 包名> # 先卸所有通过 pi2dsh 装的 Pi 包 dsh plugin remove pi-mcp-adapter # 再卸适配器 dsh plugin remove pi2dsh # 最后卸引擎 # 重启 dsh顺序的道理很直接:Pi 包是挂在引擎上的,引擎先走,那些包就变成了「在 profile 里但没有宿主」的条目,下次启动可能连报错都看不到。
卸载完必须重启。插件在启动时挂载,remove只是改了 profile 记录。
二、降级回滚:退回上一个已知组合
版本是成对的,所以回滚也要成对:
| 目标 | 命令 | 对应宿主 |
|---|---|---|
| 退回 0.26.0 | dsh plugin add pi2dsh@0.26.0 | DSH 0.2.0-rc.2 |
| 退回 0.25.2 | dsh plugin add pi2dsh@0.25.2 | DSH 0.1.5-rc.2 |
注意这里用的是add而不是remove:dsh plugin add pi2dsh@<version>会把该版本写回 profile,等价于覆盖安装。
如果你想的是「退回旧宿主」,那要一起退:宿主变了,引擎版本也要跟着变,否则就是那张表里不存在的组合。
还有一个无法回滚的层面:存储会话格式的迁移由 DSH 负责。也就是说,升级宿主后产生的会话格式,退回旧宿主不一定能读。回滚前先把要保留的会话导出,别指望降级能恢复一切。
三、坑一 · 先卸引擎会留下挂不上的插件
现象。先remove pi2dsh,再重启,发现一堆 Pi 包还在list里,但功能全没了;后续remove某些包时又报依赖问题。
原因。Pi 包是通过引擎挂载的,引擎不在,它们的挂载点消失,但 profile 记录仍在。
解决。按反序重来:先清 Pi 包,再清适配器,最后清引擎。已经乱序的情况下,逐个dsh plugin remove <pkg>清干净,再重装一次确认状态。
四、坑二 · 自定义 profile 卸完没有界面载体
现象。在自定义 profile(例如dsh-tui)里卸完 pi2dsh,再启动这个 profile,界面出不来。
原因。DSH 内置模板只有web与headless。一个自定义 profile 之所以可用,是因为它的 bundle 里装了界面载体(比如@deepseek-harness-tui/dsh-tui)。如果你把载体和引擎一起卸了,这个 profile 就没有可驱动的东西。
解决。先确认dsh.profile.bundles里的界面还在,再谈卸载。清理时保留载体,只卸兼容层。
五、坑三 · 浏览器半边装回来却空着
现象。重新装回 pi2dsh,服务端能力恢复了,但界面上的状态条、侧栏面板一片空白。
原因。浏览器半边走的是宿主自己的槽位机制,而宿主加载它有两个硬条件:包必须导出./package.json(宿主按子路径解析清单),且./client是一个闭包工厂产物,不是普通 ESM 打包结果。
解决。正常通过 npm 安装的发行版满足这两条;自己 fork 或本地 link 时最容易破坏它们。回滚到官方发布版本,或按文档检查exports字段。
六、坑四 · 删干净了能力却还显示不可用
现象。卸载重装、版本也对,某几个 Pi 包仍然被标为不可用,提示里说某个能力没有映射。
原因。这是设计行为:无法安全映射的能力会每个插件报一次,需要它才能启动的插件被标不可用并给移除提示,而不是半可用。它不是「没删干净」。
解决。读那条提示——它通常直接说明了缺哪个能力。能换路径就换(例如把 MCP 交给dsh-mcp-client),不能换就移除该 Pi 包。
七、回滚后要复核的四件事
dsh plugin --profile <p> list里没有残留的 Pi 包;- 引擎版本与宿主版本能在表里对上;
- 重启过,且界面能起来(自定义 profile 尤其要确认载体还在);
- 关键会话仍能打开——这一步最容易漏,因为会话格式迁移由宿主负责。
八、什么时候不该回滚
如果问题是「某个 Pi 包功能不完整」,回滚通常解决不了——因为它不是版本问题,而是那个包依赖了桥补不了的能力。这时更省事的做法是:查一下 Level 1 清单里有没有等价包,换一个用过且被验证过的。
README 里pi-btw的例子值得记住:它在黑盒探针里绿了很久,真实会话里却是坏的,原因是缺两个 ABI 缺口,直到 0.11.0 才由通用修复解决。这类问题靠回滚无效,靠「换一个等价包」或「等修复」才有效。
总结
卸载的核心是反序,回滚的核心是成对,复核的核心是「会话还在不在」。更多 DSH 插件的中文说明见 完整插件清单与汉化避坑指南。
适合与不适合
适合:准备把兼容层从生产环境撤下的人;需要退回旧宿主版本的人;遇到「重装后仍不可用」想判断原因的人。
不适合:只想临时停用、过两天再开的人(关掉 profile 更省事);把回滚当成修复万能药的人;不愿导出旧会话就要降级的人。
标签:pi2dsh、DeepSeek Harness、卸载、回滚、profile
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。