☰
撤掉 pi2dsh 要按反序来:插件、适配器、引擎的先后
2026/10/20 14:16:29 网站建设 项目流程

撤掉 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.0dsh plugin add pi2dsh@0.26.0DSH 0.2.0-rc.2
退回 0.25.2dsh plugin add pi2dsh@0.25.2DSH 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 包。

七、回滚后要复核的四件事

  1. dsh plugin --profile <p> list里没有残留的 Pi 包;
  2. 引擎版本与宿主版本能在表里对上;
  3. 重启过,且界面能起来(自定义 profile 尤其要确认载体还在);
  4. 关键会话仍能打开——这一步最容易漏,因为会话格式迁移由宿主负责。

八、什么时候不该回滚

如果问题是「某个 Pi 包功能不完整」,回滚通常解决不了——因为它不是版本问题,而是那个包依赖了桥补不了的能力。这时更省事的做法是:查一下 Level 1 清单里有没有等价包,换一个用过且被验证过的。

README 里pi-btw的例子值得记住:它在黑盒探针里绿了很久,真实会话里却是坏的,原因是缺两个 ABI 缺口,直到 0.11.0 才由通用修复解决。这类问题靠回滚无效,靠「换一个等价包」或「等修复」才有效。

总结

卸载的核心是反序,回滚的核心是成对,复核的核心是「会话还在不在」。更多 DSH 插件的中文说明见 完整插件清单与汉化避坑指南。

适合与不适合

适合:准备把兼容层从生产环境撤下的人;需要退回旧宿主版本的人;遇到「重装后仍不可用」想判断原因的人。

不适合:只想临时停用、过两天再开的人(关掉 profile 更省事);把回滚当成修复万能药的人;不愿导出旧会话就要降级的人。

标签:pi2dsh、DeepSeek Harness、卸载、回滚、profile

本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询