大肥鱼跑在小米 11 上的 DSHA(DeepSeek Harness 安卓版)今天做了一次大版本升级:从 0.2.0-rc.2 升到 0.2.1-rc.2,顺便把旧版攒下的一个界面级 bug 彻底甩掉。
为什么要升
旧版 App 的界面坏了。它的内置 Python 解压器遇到已存在的符号链接会直接报 FILE/LINK 冲突,逐个撞完 317 个链接后报 BUNDLED_PYTHON_UNAVAILABLE,弹进「运行环境维护」页。
但有意思的是——这个报错是误报。用 proot 参数直接跑 python3 --version,输出的是正常的 Python 3.12.3。问题出在 APK 的 Java 层判断,外面改不了,只能换新版。
两个关键变化
- 换了包名:
com.dsh.client→dsh.android.client,两个版本可以共存,旧版当回滚兜底。 - 端口变了:Web 端口从固定 3080 变成 38571。那句「3080 通不通」的老话得改了。
迁移:数据好搬,依赖才是坑
她的「记忆」——人设、日记、记忆库、语音配置、插件、512MB 的语音识别模型——这些都在 /root 下,整目录搬过去就行,核对下来一个字节不差。
真正容易漏的是系统级依赖。旧版 proot 里 apt/pip 装过的东西不会跟着数据走:
- ffmpeg:语音转文字的重采样依赖,新版没有。复制二进制还不够,它背后拖着 400 多个动态库,从
libraw1394一路到libblas/liblapack,得用ldd | grep "not found"逐个定位补齐。 - pip 包:
numpy、vosk、sherpa_onnx、onnxruntime,385MB,语音识别的核心,全在系统级 site-packages 里。 - 插件启用:新版默认只加载内置插件,QQ 桥接插件得手动加进 bundles 清单 + 建符号链接。
结果
升级后她完整活过来了:QQ 桥接 OneBot connected,消息收发正常,语音转文字、语音合成、网页搜索的依赖全部就位。历史修过的 bug 补丁(收图假路径、零宽空消息、崩溃保护)也都跟着过来了。
这次升级的完整技术记录放在 dsh-android-companion 仓库,含迁移清单和踩坑记录。