前言¶
DeepSeek Harness (DSH) 默認通過 Bash Shell 執行模型提交的命令。當需要使用 Fish Shell 語法時,可以通過 dsh-fish-shell 插件實現。該插件保持了 bash 工具對外的接口不變,僅修改了內部執行機制。
插件介紹¶
dsh-fish-shell 是一個 DeepSeek Harness (DSH) 配置文件插件,由維護者 nathannli 開發。它的核心作用是將 DSH 中通過模型暴露的 bash 工具命令,在後臺轉換爲使用 Fish Shell 執行。具體表現爲將命令執行鏈路從 bash -c 變更爲 fish -c。
核心功能¶
該插件具備以下核心能力:
- 命令轉換:將模型提交的
bash工具調用轉換爲fish -c執行。 - 會話支持:同時支持前臺和後臺命令的更新。
- 終端兼容:不會改變 Persistent PTY 持久化終端會話的行爲。
- Babelfish 集成:配合 Babelfish 使用時,能預處理包含獨立 Bash 賦值的命令,將其轉換爲 Fish 語法。
安裝與啓用¶
安裝該插件需要進入插件所在的目錄,並使用 DSH 的插件管理命令。
- 進入插件目錄。
- 執行安裝命令:
dsh plugin --profile web add "$PWD"
- 重啓 DSH 主機:安裝後必須重啓 DSH 主機。因爲這是服務端的 Shell Executor 插件,客戶端的 HMR 熱更新不會加載它。
配置與用法¶
路徑配置¶
插件默認會檢測系統 $SHELL 是否以 /fish 結尾,或者在 PATH 中查找 fish。如果需要指定具體的可執行文件路徑,可以在配置文件中進行補丁設置:
- id: fish-shell
config:
fishPath: /opt/homebrew/bin/fish
babelfishPath: /opt/homebrew/bin/babelfish
Babelfish 配置¶
babelfishPath 是可選配置。安裝 Babelfish 後,插件會自動翻譯 Bash 語法。例如:
NAME=value轉換爲set NAME valueexport NAME=value轉換爲set命令NAME=$(command)轉換爲 Fish 語法
測試¶
運行測試用例以驗證插件是否正常工作:
npm test
注意事項¶
使用該插件時,請注意以下限制:
- 版本要求:需要 DSH 版本 0.1.0-rc.6 及以上。
- 運行環境:需要 Node.js 版本 >= 22。
- 不要使用:作者明確指出,這不是一個通用的 Bash 兼容層。如果使用不當(例如處理複雜的 Bash 邏輯或試圖通過語法重寫來繞過限制),這隻會導致更多的重試,因爲語法重寫通常會導致命令執行失敗。
- 錯誤處理:當 Babelfish 翻譯失敗時,會直接停止工具調用,而不會執行未翻譯的 Bash 命令。
- 權限檢查:插件以 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
總結¶
dsh-fish-shell 旨在爲 DSH 提供基於 Fish Shell 的命令執行能力。所有源碼、許可證及更新信息請參考 GitHub。