dsh-cd:DeepSeek Harness 工作目錄切換插件

前言

DeepSeek Harness (DSH) 的會話在創建時 cwd(當前工作目錄)會被凍結,它是會話身份的一部分,決定了會話存儲位置、沙箱根目錄以及 AGENTS.md 和 skills 的發現根。當工作重心長期移出原目錄時,文件工具需要寫完整絕對路徑,且項目指令和技能發現可能還停留在舊位置。dsh-cd 插件爲此提供了兩種操作粒度。

是什麼

dsh-cd 是一個爲 DeepSeek Harness (DSH) 提供的插件,由 johnnren 維護。它爲模型增加了一個 cd 工具,併爲用戶增加了 /cd 命令。核心價值在於解決“只換基準”和“真切搬遷”兩種場景。

安裝

安裝插件無需額外配置,安裝命令如下:

dsh plugin --profile web add dsh-cd

安裝後,插件自帶的 cordis.patch.yml 會自動掛載,模型即可使用 cd 工具,輸入框可用 /cd 命令。

核心功能

插件提供兩種粒度的切換模式:

  1. 工作基準覆蓋(輕量)
    • 入口:cd {"path": "..."}
    • 效果:只改變“相對路徑解析基準”。文件工具(read/write/edit/glob/grep 等)和 bash 工具的默認 workdir 會跟隨新目錄,但會話身份不變(存儲位置、沙箱根等不變)。這是一種可逆的快速切換。
  2. 真切工作區搬遷(重量)
    • 入口:cd {"path": "...", "workspace": true, "confirmed": true}
    • 效果:真正改變會話身份。會話的存儲位置、沙箱根、AGENTS.md、skills 發現、側邊欄分組全部跟隨新目錄。這需要會話處於空閒狀態,且用戶明確同意(confirmed: true)。

典型用法

模型調用

模型可以使用以下方式調用 cd 工具:

cd {"path": "/tmp/some-dir"}

請求真切搬遷時,需帶上 workspace: true 和 confirmed: true:

cd {"path": "/path/to/other-project", "workspace": true, "confirmed": true}

其他用法:
* 回到上一個目錄:cd {"path": "-"}
* 查看當前目錄與排隊狀態:cd {}

用戶命令

用戶在輸入框輸入以下命令(不消耗模型回合):
* /cd <directory>:真正搬遷會話到該目錄。
* /cd:查看當前目錄、所屬工作區、覆蓋狀態與排隊中的真切切換。

技術細節與注意事項

  • 狀態持久化:覆蓋狀態會寫入 $DSH_HOME/dsh-cd/state.json,實例重啓後該會話的覆蓋設置會自動恢復。
  • 子代理繼承:從當前會話派生的子代理會繼承父會話的覆蓋目錄。
  • 真切搬遷限制:
    • 必須由用戶明確同意(confirmed: true),模型不得自行補全。
    • 會話必須在回合空閒時執行,否則本輪仍按工作基準工作,回合結束後才完成搬遷。
    • 搬遷會重寫會話日誌,任何一步失敗都會回滾。
  • 環境要求:
    • 需 Node.js >= 22.5。
    • 依賴宿主的 @deepseek-ai/dsh-tools 和 @deepseek-ai/dsh-home-paths。
  • 側邊欄同步:真切搬遷後,會話本身立即可用,但側邊欄分組通常需要刷新頁面(F5)才能更新。

總結

dsh-cd 通過插件化的方式解決了 DSH 會話工作目錄凍結的問題,既提供了輕量的路徑基準覆蓋,也提供了重量的工作區搬遷能力。適合需要在同一會話內頻繁切換上下文,或需要將工作重心永久轉移至其他項目的場景。

  • 插件目錄: https://www.skillhub.cn/plugins/john-walks-slow/dsh-cd
  • GitHub 倉庫: https://github.com/john-walks-slow/dsh-cd
羽毛球分组比赛记分
小程序二维码

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

小夜