前言¶
DeepSeek Harness(DSH)是 DeepSeek 開源的智能體運行時,核心理念是「一切皆插件」——能力通過 Cordis 插件與 agent preset 組合拼裝,而不是寫死在覈心代碼裏。社區裏已經沉澱了不少實用插件,目錄可在 SkillHub 插件庫 瀏覽;需要說明的是,該目錄由社區維護,與 DeepSeek / 幻方並無官方從屬關係。
如果你用過 DSH 自帶的「極簡模式」,大概會認同它的設計取向:固定 persona、只暴露 str_replace_editor 與 bash 兩個工具,上下文不壓縮,適合需要穩定、可預期行爲的編碼任務。但在 Windows 上,這套預設長期以來幾乎無法正常工作——不是 Git Bash 沒裝,而是底層有兩層硬限制:
- PTY 平臺限制:極簡模式依賴持久 bash 會話,而
@deepseek-ai/dsh-subprocess-local在 win32 上直接拒絕終端檢查(報錯terminal inspection is unsupported on platform win32); - shell 缺失:即便繞過 PTY,
@deepseek-ai/dsh-bash-local會從 PATH 裏找bash,而 Windows 默認並沒有這個可執行文件。
社區維護者 liceses 發佈的 dsh-gitbash-preset(GitHub 倉庫 liceses/dsh-gitbash-preset,SkillHub 分類「工作流」,約 135 stars)正是爲解決這一痛點而來:一鍵安裝名爲「極簡模式 (Git Bash)」的 agent preset,把 bash 調用映射到 Git for Windows 自帶的 MSYS bash,讓 Windows 用戶也能用上同一套極簡工具面。
這是什麼¶
dsh-gitbash-preset 是一個 DSH 工作流類插件,npm 包名爲 @icelily/dsh-gitbash-preset(MIT 許可證)。它不改動 DSH 核心,而是在 web profile 裏插入一行 Cordis bundle patch,啓動時把打包好的 minimal-gitbash 預設複製到用戶預設目錄(${DSH_HOME:-~/.dsh}/.agent-presets/minimal-gitbash/)。
交付的預設與官方極簡模式保持同一套工具表面——固定 persona、str_replace_editor、無上下文壓縮——區別在於 bash 執行器:每次以 bash -c <command> 方式調用 Git for Windows 的 bash,並配合沙箱感知門控,在受限策略下不會悄悄繞過安全邊界。
核心功能與亮點¶
根據倉庫 README 與 SkillHub 目錄頁,插件的主要能力可以概括爲以下幾點:
- 冪等安裝:插件啓動時自動部署預設文件;目錄已存在則跳過,只有配置
force: true時纔會覆蓋已有文件。 - 自動探測 bash 路徑:按優先級依次嘗試
GIT_BASH環境變量、ProgramFiles / ProgramFiles(x86) / LOCALAPPDATA 下的常見安裝目錄、PATH 中的bash.exe,最後兜底bash,無需手寫絕對路徑。 - 沙箱感知門控:MSYS 運行時無法在 Windows 受限令牌沙箱內啓動(無法創建 signal pipe),因此命令僅在「完全訪問」(
danger-full-access)策略下執行;受限時會拋出帶升級指引的明確錯誤,而不是靜默失敗。 - 極簡體驗不變:模型側看到的仍是熟悉的極簡 persona 與雙工具組合,適合習慣官方極簡模式工作流的開發者。
工作原理上,插件通過 cordis.patch.yml 把 dsh-gitbash-preset 行插入 web profile;agent.cordis.yml 裏 gitbash-shell 組以 entry-local realm 提供 shell 服務;gitbash-executor.mjs 負責超時、後臺任務、輸出截斷與錯誤診斷。
安裝與啓用¶
官方推薦的安裝方式(見 GitHub README 與 cordis.patch.yml 註釋)如下。注意需要指定 web profile,安裝後重啓 DSH 纔會生效:
dsh plugin --profile web add @icelily/dsh-gitbash-preset
也可以不裝插件,手動把倉庫裏 agent-presets/minimal-gitbash/ 目錄複製到 ~/.dsh/.agent-presets/;或者把 cordis.patch.yml 合併進自己的 profile patch 層。
若希望覆蓋已存在的預設文件,可在插件行配置裏設置 force: true(默認 false,保留用戶額外文件)。
典型用法¶
安裝並重啓 DSH 之後,按以下步驟使用:
- 在 Web 界面新建會話,agent preset 選擇 極簡模式 (Git Bash);
- 啓用 bash 有兩種方式:
- 把會話沙箱切換到完全訪問,之後所有 bash 調用直接走 Git Bash;
- 或保持workspace-write,在首次調用失敗後,按提示用sandbox_permissions: "danger-full-access"加 justification 做單次升級(走正常審批流程)。
預設執行器支持若干可調參數(在 agent-presets/minimal-gitbash/agent.cordis.yml 的 gitbash-executor 段),例如:
| 字段 | 默認值 | 說明 |
|---|---|---|
shellPath |
自動探測 | 顯式指定 bash 路徑時優先使用 |
timeoutMs |
120000 | 單次命令默認超時 |
maxTimeoutMs |
600000 | 超時上限 |
maxOutputBytes |
64000 | 單流保留字節數 |
graceMs |
3000 | SIGTERM 到 SIGKILL 的寬限時間 |
適用場景與注意事項¶
適合誰用:
- 在 Windows 上日常跑 DSH Web 版,想用官方極簡模式做文件編輯 + shell 操作的開發者;
- 已安裝 Git for Windows、希望模型命令走 MSYS bash 而非 PowerShell 的團隊;
- 需要與 Linux/macOS 上極簡模式相近工具面、又不想自己手寫 Cordis patch 的用戶。
需要留意的限制:
- 會話沙箱爲
workspace-write或更窄時,Git Bash 無法啓動——這是 MSYS 與受限令牌的已知限制,插件不會繞過沙箱;需切換完全訪問或單次升級。 - 與原極簡模式不同,bash 爲每次調用新建 shell,不保持
cd/export等會話狀態——因爲 Windows 上 PTY 持久會話不可用,這是替代設計而非疏漏。 - 插件以當前 dsh 進程權限運行;安裝前建議閱讀 GitHub 源碼 與 MIT 許可證,確認符合你的安全策略。倉庫要求 Node.js >= 20。
若你需要的是「所有 agent 模式都把 pwsh 改道 Git Bash」,同維護者還有 dsh-all-gitbash 等兄弟插件,可按場景另行選擇;本篇聚焦的 dsh-gitbash-preset 只解決極簡模式在 Windows 上的可用性問題。
小結¶
對 Windows 上的 DSH 用戶來說,極簡模式長期「看得見、用不了」是個實實在在的痛點。dsh-gitbash-preset 用社區插件的方式補齊了這條路徑:保留極簡模式的工具哲學,把 bash 落到 Git for Windows,並用沙箱門控守住安全邊界。如果你正好在 SkillHub 上翻工作流類插件,不妨把它列入試用清單。