在 HarmonyOS 或 OpenHarmony 设备上使用 DeepSeek Harness 时,子进程的运行环境往往存在兼容性问题。默认 shell 为 mksh(不支持标准配置文件),系统缺少 /etc/shells 注册表,且 /tmp 目录可能只读。这些问题会导致工具调用失败或配置丢失。dsh-ohos-shell 旨在解决这些问题,为子进程提供完整的 harmonybrew 环境和 zsh 支持。
dsh-ohos-shell 是 DeepSeek Harness 的一个插件(bundle),由 CyberQin 维护。它专门针对 HarmonyOS 和 OpenHarmony 平台设计,主要功能是补齐子进程的运行环境,包括提供 zsh 函数库、设置默认 shell 为 zsh 或 bash,以及处理 OpenHarmony 特有的 shell 差异(如 /etc/shells 不存在、/tmp 只读、沙箱 uid 问题)。
核心功能¶
- 插入
ohos-shell-env和ohos-shell-facts到 profile。 - 为子进程提供 HarmonyOS 环境变量(PATH, SHELL, TMPDIR, HOMEBREW_* 等)。
- 提供 zsh 函数库。
- 将侧栏默认 shell 更改为 zsh 或 bash。
- 处理 HarmonyOS/OpenHarmony 特有的 shell 差异(如 /etc/shells 不存在、/tmp 只读、沙箱 uid 问题)。
环境要求¶
- 设备运行 HarmonyOS 或 OpenHarmony。
- 已安装 harmonybrew(默认前缀为
~/.harmonybrew)。 - 已通过 harmonybrew 安装 deepseek-harness。
- 系统提供
/usr/bin/zsh。
安装与启用¶
通过 Harness 的插件管理器安装:
dsh plugin --profile web add dsh-ohos-shell
插件管理器会将包写入 dsh.profile.bundles。安装后,profile 的 package.json 应包含 "dsh-ohos-shell" 依赖。
功能细节¶
安装后,插件会向 profile 插入两行 Host 插件:
ohos-shell-env:将环境变量写入主进程的process.env,卸载时还原。ohos-shell-facts:通过ctx.shellEnv发布DSH_OHOS*信息,供模型 shell 读取。
它会设置以下环境变量:
PATH:去重并按~/.zshrc顺序将 harmonybrew 放在最前。SHELL:设置为第一个可用的 zsh 或 bash。TMPDIR:优先使用可写的目录(如$HOME/.tmp),解决 /tmp 只读问题。FPATH:指向本包的 zsh-functions 目录,补齐函数库。HOMEBREW_*:设置 Homebrew 相关路径。NODE_OPTIONS:当存在userinfo-shim.cjs时,前置--require。
注意事项¶
- 仅在 HarmonyOS 和 OpenHarmony 上生效。
- Node 的
os.userInfo()在应用沙箱 uid 下会抛出错误。 /tmp目录可能只读,需要设置可写的TMPDIR。- 模型 shell 的 bash 工具不受影响(它固定执行
bash -c)。 - 安装前请检查源码与许可证。
该插件通过修复环境变量和 shell 配置,解决了在鸿蒙系统上运行 DeepSeek Harness 子进程的兼容性问题。若需查看源码或提交反馈,可访问其 GitHub 仓库。