在鸿蒙PC上安装原版DeepSeek Harness / DSH(让koffi可用,解决硬连接和权限问题)
更新日志:
[2026-08-15 23:55]
更新了硬连接补丁,修复了Workspace Write模式下创建文件失败的问题。请重新执行第7步应用新补丁。
[2026-08-16 00:34]
现在可以直接用 brew install deepseek-harness 安装了,不需要通过 npm 安装再自己打补丁。
当然如果你想安装最新版本,还是可以用我下面的方法手动安装并打补丁。
旧安装的清理方法(没装过的不用清理):
rm ~/.harmonybrew/bin/dsh
rm -rf ~/.npm-global
npm config set prefix "$HOME/.harmonybrew"
然后即可直接通过brew安装DeepSeek Harness(brew的安装方法:https://harmonybrew.atomgit.com/)
brew install deepseek-harness
装完即可启动(不需要打任何补丁):
dsh web
如果找不到dsh命令,就重新链接一下:
ln -s ~/.harmonybrew/Cellar/deepseek-harness/*/bin/dsh ~/.harmonybrew/bin/
手动安装方法(可获取最新版)
-
安装 Harmonybrew:https://harmonybrew.atomgit.com/
-
用
uname-is-linux把系统伪装成Linux,避免koffi安装报错:
brew install -y ohos-sdk devel-base llvm-gcc-compat cmake uname-is-linux
安装完成后请重新打开终端,执行以下命令验证效果:
export LD_PRELOAD=$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so
uname -a
应该会显示Linux而非HarmonyOS。

- 安装 DeepSeek Harness 到单独的 "$HOME/.npm-global" 目录:
brew install python3 node
npm config set prefix "$HOME/.npm-global"
export LD_PRELOAD=$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so
npm install -g @deepseek-ai/dsh --verbose
如果还是在安装koffi的时候报错,请重新打开终端让uname伪装生效。


- 用
ohos-sdk附带的binary-sign-tool命令对koffi库进行签名,让koffi能正常加载(不签名会报Permission denied错误):
f="$HOME/.npm-global/lib/node_modules/@deepseek-ai/dsh/node_modules/koffi/build/koffi/openharmony_arm64/koffi.node"; binary-sign-tool sign -inFile "$f" -outFile "$f" -selfSign 1
完整的签名工具教程(包括另一个可以给claude二进制签名的第三方签名工具):
https://hu60.cn/q.php/bbs.topic.107186.html#nav
- 解决缺少
sharp库的问题:
cd "$HOME/.npm-global/lib/node_modules/@deepseek-ai/dsh"
npm install --no-save --no-package-lock --no-audit --no-fund @img/sharp-wasm32@0.35.3
- 解决
node启动时缺少--expose-internals参数的问题:
sed -i 's@^#!/usr/bin/env node$@#!'"$HOME"'/.harmonybrew/bin/node --expose-internals@' "$HOME/.npm-global/lib/node_modules/@deepseek-ai/dsh/lib/bin.js"
这条命令是把 $HOME/.npm-global/lib/node_modules/@deepseek-ai/dsh/lib/bin.js 的第一行改成 #!/storage/Users/currentUser/.harmonybrew/bin/node --expose-internals
本轮运行失败EACCES: permission denied, link '/storage/Users/currentUser/.dsh/sessions/--storage-Users-currentUser-work-wine-WineHua--/session-207ab6ad-2f89-445f-8e60-c11b72a2de56/session.jsonl.zstd.55acf2760149.tmp' -> '/storage/Users/currentUser/.dsh/sessions/--storage-Users-currentUser-work-wine-WineHua--/session-207ab6ad-2f89-445f-8e60-c11b72a2de56/session.jsonl.zstd'

运行以下命令应用硬连接补丁,脚本会把 DeepSeek Harness 的硬连接操作改为直接复制文件:
curl -o ohos-patch-dsh-hardlink.sh https://raw.gitcode.com/hu60cn/ohos-script/raw/master/ohos-patch-dsh-hardlink.sh
sh ./ohos-patch-dsh-hardlink.sh
备注:如果补丁有问题,可以用以下方式撤销补丁,还原到未打补丁的状态:
# 补丁没问题的时候不用执行
sh ./ohos-patch-dsh-hardlink.sh --restore
- 解决HMDFS权限问题导致第二次启动时报错:
Error: dsh: plugin tree failed to load: failed to apply loader entry include (cordis:include): failed to apply loader entry credentials (@deepseek-ai/dsh-credentials-local): credentials-local: /storage/Users/currentUser/.dsh/.credentials.yaml is readable beyond its owner (mode 660); run "chmod 600 /storage/Users/currentUser/.dsh/.credentials.yaml" before starting again
Error: credentials-local: /storage/Users/currentUser/.dsh/.credentials.yaml is readable beyond its owner (mode 660); run "chmod 600 /storage/Users/currentUser/.dsh/.credentials.yaml" before starting again
以下两种方法任选一种。
方法1:把~/.dsh目录符号连接到可正常chmod的f2fs文件系统:
mv ~/.dsh /data/storage/el2/base/files/dsh
mkdir -p /data/storage/el2/base/files/dsh
ln -s /data/storage/el2/base/files/dsh ~/.dsh
/data/storage/el2/base/files是正常的f2fs文件系统,权限可以正常设为600,不过还是不支持硬连接。
该方法的缺点是各个应用的/data/storage/el2/base/files文件夹是互相独立的,在HiShell里能看到的dsh聊天记录在CodeArts IDE和DevEco Studio里就看不到了。如果想跨应用查看dsh聊天记录,请用方法2。
方法2:打补丁绕过权限检查:
curl -o 0002-credentials-owneronly.patch https://raw.atomgit.com/Harmonybrew/homebrew-core/raw/main/Patches/deepseek-harness/0002-credentials-owneronly.patch
patch -p1 -d ~/.npm-global/lib/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai < ./0002-credentials-owneronly.patch
- 把 dsh 命令链接到 harmonybrew 的 bin 目录,方便后续调用:
ln -s ~/.npm-global/bin/dsh ~/.harmonybrew/bin
- 启动 dsh web 服务:
dsh web

然后就可以访问 http://127.0.0.1:3080 进行使用了。
常见问题
- DeepSeek Harness 无法执行任何命令
安装 bash 即可:
brew install bash


- 读图工具无法使用:
Error: EPERM: operation not permitted, open '/storage/Users'

运行以下命令应用目录持久化边界补丁,在遇到权限为--x的目录时视为到达边界,防止上述错误:
curl -o ohos-patch-dsh-dir-boundary.sh https://raw.gitcode.com/hu60cn/ohos-script/raw/master/ohos-patch-dsh-dir-boundary.sh
sh ./ohos-patch-dsh-dir-boundary.sh
备注:如果补丁有问题,可以用以下方式撤销补丁,还原到未打补丁的状态:
# 补丁没问题的时候不用执行
sh ./ohos-patch-dsh-dir-boundary.sh --restore
- Glob插件报错:
Error: glob could not start its search command (ripgrep launch failed)

# 先安装rg命令
brew install ripgrep
# 再修补DeepSeek Harness源代码解决rg命令找不到
curl -o 0003-ripgrep-fallback.patch https://raw.atomgit.com/Harmonybrew/homebrew-core/raw/main/Patches/deepseek-harness/0003-ripgrep-fallback.patch
patch -p1 -d ~/.npm-global/lib/node_modules/@deepseek-ai/dsh/node_modules/@deepseek-ai < ./0003-ripgrep-fallback.patch
然后重启dsh web即可。
- 海泰浏览器访问 DeepSeek Harness 接口始终返回403错误
[新方法] 去about:extensions里把这个扩展禁用了就好了:

[旧方法] 海泰浏览器(左)的Origin头不含端口,会导致API返回403错误。换成海泰极速浏览器(右)就没有这个问题了。

在海泰浏览器里选择“重置设置”也可以解决该问题。

- node崩溃:
localhost ~ % dsh web
#
# Fatal error in , line 0
# Check failed: 12 == (*__errno_location()).
#
#
#
#FailureMessage Object: 0x7e2c6c48c8
----- Native stack trace -----
zsh: trace trap (core dumped) dsh web
B站网友反馈说只要升级到鸿蒙7就能用了。在“我的华为>升级尝鲜”里面申请。






