在 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 倉庫。