DeepSeek Harness 能在 Android 找到家吗?
DeepSeek Harness (dsh) 在 Android Termux 部署指南
目标:在安卓手机(Termux)里跑起 DeepSeek Harness 的 Web UI,用手机浏览器直接访问
http://127.0.0.1:3080。适用:任何 Android 手机 + Termux(含 Google Play 版)。全程只需在 Termux 里执行命令。
0. 简介
DeepSeek Harness(简称 dsh)是 DeepSeek AI 开源的 agent harness(“一切皆插件”,TypeScript,MIT,开发者预览版)。它不是原生安卓 App,而是 Node.js 命令行 + 本地 Web UI。
在安卓上最干净的用法就是 Termux 里跑 dsh web,手机 Chrome 直连 localhost——因为 Termux 原生运行在安卓上,它的 127.0.0.1 就是手机自己的回环地址,浏览器能直接访问。
1. 前提条件
| 项目 | 说明 |
|---|---|
| Termux | 已安装(Google Play 版 / F-Droid 版均可) |
| 网络 | 能访问 termux.net 和 npm registry |
| 存储 | 约 1 GB(编译工具 + node 依赖) |
| DeepSeek API key | 使用 agent 时需要(安装阶段不需要) |
注意:Google Play 版 Termux 的 Node 报告
process.platform = "android"(而非linux),这会导致 node-gyp 编译原生模块时报错,本指南已在第 2 步处理。
2. 一键安装(推荐)
在 Termux 里逐段粘贴执行即可(共 5 步,约 5~10 分钟)。
第 1 段:基础环境
pkg update -y
pkg install -y nodejs clang make python binutils pkg-config cmake ninja
说明:
node-pty用 node-gyp(需要 clang/make/python),koffi用 cmake,故要一起装。
第 2 段:下载并修补 Node 头文件(关键)
NODE_VER=$(node -v | tr -d v)
HEADER_DIR="$HOME/.cache/node-gyp/$NODE_VER"
if [ ! -f "$HEADER_DIR/include/node/common.gypi" ]; then
mkdir -p "$HOME/.cache/node-gyp"
curl -fsSL "https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-headers.tar.gz" -o /tmp/node-headers.tgz
tar -xzf /tmp/node-headers.tgz -C "$HOME/.cache/node-gyp"
mv "$HOME/.cache/node-gyp/node-v$NODE_VER" "$HEADER_DIR"
rm -f /tmp/node-headers.tgz
fi
sed -i "s#, '-I<(android_ndk_path)/sources/android/cpufeatures'##" "$HEADER_DIR/include/node/common.gypi"
echo "头文件已就绪并修补:$HEADER_DIR"
这一步解决 Google Play 版 Node 的
platform=android导致 node-pty 编译时android_ndk_path变量未定义的报错。
第 3 段:安装 dsh(放行原生模块 install 脚本)
npm install -g --allow-scripts=@deepseek-ai/dsh-subprocess-local,koffi,node-pty,@google/genai,protobufjs @deepseek-ai/dsh
npm 11.17 起有
allow-scripts安全特性,默认拦截所有 install 脚本。这里显式放行 5 个需要编译/初始化的包,node-pty、koffi才能从源码编译出来。
第 4 段:安装 sharp 的 WebAssembly 回退
npm install -g @img/sharp-wasm32
sharp(图像库)没有 Android 预编译二进制,装 wasm 版作为运行时回退。
第 5 段:验证安装
dsh --version
输出 0.1.0-rc.7(或更高)即安装成功。
3. 分步说明(手动版,与一键版等价)
如果不想用一键脚本,手动执行等价步骤:
pkg update -y && pkg install -y nodejs clang make python binutils pkg-config cmake ninja- 下载 Node 头文件并执行:
sed -i "s#, '-I<(android_ndk_path)/sources/android/cpufeatures'##" ~/.cache/node-gyp/$(node -v|tr -d v)/include/node/common.gypi npm install -g --allow-scripts=@deepseek-ai/dsh-subprocess-local,koffi,node-pty,@google/genai,protobufjs @deepseek-ai/dshnpm install -g @img/sharp-wasm32
4. 启动
方式一:封装好的命令(推荐)
先创建启动脚本,之后每次只需一条命令:
cat > "$PREFIX/bin/dsh-web" <<'EOF'
#!/data/data/com.termux/files/usr/bin/bash
pkill -f "dsh/lib/bin.js" 2>/dev/null
sleep 1
nohup node --expose-internals /data/data/com.termux/files/usr/lib/node_modules/@deepseek-ai/dsh/lib/bin.js web > /sdcard/Download/dsh-web.log 2>&1 &
sleep 2
echo "DeepSeek Harness 已启动: http://127.0.0.1:3080"
tail -3 /sdcard/Download/dsh-web.log
EOF
chmod +x "$PREFIX/bin/dsh-web"
以后启动只需在 Termux 输入:
dsh-web
方式二:直接命令
node --expose-internals /data/data/com.termux/files/usr/lib/node_modules/@deepseek-ai/dsh/lib/bin.js web
启动成功的标志是输出:dsh web: http://127.0.0.1:3080
访问
手机浏览器打开:
http://127.0.0.1:3080
5. 使用(配置模型)
- 浏览器打开
http://127.0.0.1:3080 - 欢迎页点「继续」
- 选择工作区、进入「标准模式」
- 配置模型:填 DeepSeek API key(
sk-...) - 开始对话 / 跑 agent
dsh 本身只是"空壳" harness,不配模型无法实际运行任务。
6. 日常维护
保持 Termux 存活
dsh web 进程挂在 Termux 里。若浏览器突然访问不了,多半是 Termux 被系统后台回收了。
建议:
- 启动后下拉 Termux 通知栏,点 Acquire wakelock(获取唤醒锁),减少被 Doze 杀掉。
- 若访问不了,回 Termux 再跑一次
dsh-web即可。
更新 dsh
npm update -g @deepseek-ai/dsh
开发者预览版迭代很快,可能有不兼容变更,更新前留意官方 changelog。
7. 常见问题(FAQ)
| 现象 | 原因 | 解决 |
|---|---|---|
gyp: Undefined variable android_ndk_path | Google Play 版 Node 报 platform=android | 执行第 2 段补丁 |
Error: CMake does not seem to be available | koffi 需要 cmake | pkg install -y cmake ninja |
npm 提示 allow-scripts ... not yet covered | npm 11.17 拦截 install 脚本 | 加 --allow-scripts=... 放行 |
sharp 报 Could not load the "sharp" module | 无 Android 预编译 | npm install -g @img/sharp-wasm32 |
listen EADDRINUSE ... 127.0.0.1:3080 | 3080 端口被占用(旧进程/沙箱) | pkill -f "dsh/lib/bin.js" 后重启 |
| 浏览器打不开 127.0.0.1:3080 | dsh 没在跑 / Termux 被回收 | 回 Termux 跑 dsh-web |
8. 技术要点(原理速记)
- 三个原生模块,全部需要从源码编译(Android 无 glibc/musl 预编译):
node-pty(终端子进程)→ node-gyp,需 patchandroid_ndk_pathkoffi(FFI,文件系统/目录选择)→ cmakesharp(图像)→ 无预编译,用 wasm 回退
--expose-internals:web profile 的 HMR 插件要求这个 Node 启动参数,用npx dsh web默认启动会崩,必须node --expose-internals .../bin.js web。process.platform = "android":Google Play 版 Termux 的 Node 特性,是上述 node-gyp 报错的根因;F-Droid 版若报linux则无需第 2 段补丁。
9. 安装完成
下图为本指南在真机(Termux)上安装完成并成功启动后的实际效果:

更多推荐


所有评论(0)