dsh-fish-shell:使用 Fish Shell 執行 DSH 中的 Bash 命令

前言

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。

核心功能

該插件具備以下核心能力:

  1. 命令轉換:將模型提交的 bash 工具調用轉換爲 fish -c 執行。
  2. 會話支持:同時支持前臺和後臺命令的更新。
  3. 終端兼容:不會改變 Persistent PTY 持久化終端會話的行爲。
  4. Babelfish 集成:配合 Babelfish 使用時,能預處理包含獨立 Bash 賦值的命令,將其轉換爲 Fish 語法。

安裝與啓用

安裝該插件需要進入插件所在的目錄,並使用 DSH 的插件管理命令。

  1. 進入插件目錄。
  2. 執行安裝命令:
    dsh plugin --profile web add "$PWD"
  1. 重啓 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 value
  • export 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜