前言¶
DeepSeek Harness(DSH)在 Windows 上的默认配置通常依赖 PowerShell (pwsh)。对于习惯 POSIX 语法或需要 Git Bash 的开发者来说,这有时会导致模型生成不兼容的命令。dsh-gitbash 插件解决了这个问题,它不新增模式或工具,而是将 DSH 现有的 bash 工具直接指向 Git for Windows Bash,并隐藏 PowerShell。
插件简介¶
dsh-gitbash 是 DeepSeek Harness 的一个 bundle 插件,由 yunuo110 维护,采用 MIT 许可证。其设计目标是让模型在 Windows 上自然使用 Git Bash,同时保持 DSH 的架构简洁。
核心功能¶
该插件主要包含以下能力:
* 不新增模式、不新增工具:插件不注册 gitbash 工具,模型看到的仍然是 DSH 原生的 bash 工具。
* 默认 Git Bash:在 Windows 上,bash 工具通过 Git\bin\bash.exe -lc <command> 执行。
* 隐藏 PowerShell:pwsh 从 prompt 中隐藏,且旧缓存尝试调用时会被 guard 拒绝。
* 动态描述:bash 工具的描述被改写为 Git Bash/MSYS2 规则,引导模型使用 bash 语法。
* Windows 专用:非 Windows 系统上插件为 no-op,不影响原生 bash。
* 自动探测路径:插件会自动探测 Git Bash 的安装路径。
安装与启用¶
在插件仓库根目录执行以下命令进行安装。新版 DSH 的 dsh plugin 命令会将参数转发给 pnpm,安装前请确保已安装 pnpm。
dsh plugin --profile web add github:yunuo110/dsh-gitbash
安装完成后,DSH 会自动执行以下操作:
1. 将 dsh-gitbash 作为 bundle 加入 ~/.dsh/profiles/web。
2. 在 Windows 上提供 Git Bash shell executor。
3. 重新启用 host 层 tool-bash。
4. 禁用 pwsh-sandbox / tool-pwsh。
注意:安装后需要完整重启 DSH,新建会话和旧对话都会使用同一个 bash 工具。
配置¶
默认情况下,插件会自动探测 Git Bash 的路径(顺序:环境变量 GIT_BASH -> Program Files / Program Files (x86) / ProgramW6432 / LocalAppData / Scoop -> PATH,排除 System32 的 WSL bash)。
如需固定路径或调整超时等参数,可以在 profile 的 cordis.patch.yml 中覆盖插件配置:
- id: dsh-gitbash
config:
shellPath: 'C:\Program Files\Git\bin\bash.exe'
timeoutMs: 120000
maxTimeoutMs: 600000
maxOutputBytes: 64000
maxSpillBytes: 67108864
graceMs: 3000
| 字段 | 默认 | 说明 |
|---|---|---|
shellPath |
自动探测 | 固定 Git Bash 路径 |
timeoutMs |
120000 | 单条命令默认超时 |
maxTimeoutMs |
600000 | 超时上限 |
maxOutputBytes |
64000 | stdout 内存保留字节数 |
maxSpillBytes |
67108864 | spill 文件上限 |
graceMs |
3000 | SIGTERM → SIGKILL 宽限 |
典型用法¶
在安装并重启 DSH 后,模型看到的工具描述会指向 Git Bash。模型可以直接使用 POSIX/bash 语法执行命令。
示例场景:
* 查看 git 状态:模型调用 bash 工具执行 git status。
* 运行测试:模型调用 bash 工具执行 npm test。
* 修改权限:如果当前会话沙箱不是完全访问,第一次调用可能失败。模型需要按提示将 sandbox_permissions 设置为 danger-full-access。
JSON 调用示例:
{
"command": "git status",
"description": "查看 git 状态",
"sandbox_permissions": "danger-full-access",
"justification": "Git Bash 无法在受限沙箱中启动,需要完全访问以执行 git 状态检查。"
}
兼容性与注意¶
- 环境要求:DeepSeek Harness
0.1.2-rc.1(兼容0.1.0-rc.6起的同一套 shell/工具 seam),Node.js22.19+。 - 工具行为:每次调用都是新的非交互式
bash.exe -lc,不保留cd/export/ alias 状态。 - 语法:使用 POSIX/bash 语法(
$VAR、${VAR}),避免使用 PowerShell 的$env:VAR。 - 许可证:MIT。
结语¶
dsh-gitbash 通过 patch 和配置注入的方式,实现了在 Windows 上无缝切换到 Git Bash 的需求,降低了模型在 Windows 环境下的命令执行门槛。如需查看源码或提交问题,请访问 GitHub。