前言¶
DeepSeek Harness (DSH) 是一个用于构建智能体的框架。在实际开发中,如果智能体运行在 WSL 或 Linux 环境下,需要操作 Windows 原生的 Git 仓库,或者直接调用 Windows 下的可执行文件,通常会面临跨系统交互的复杂性。
dsh-plugin-gitbash 插件解决了这个问题。它允许 DSH 在宿主机的 Git for Windows Bash 环境中执行命令,无需在 Windows 和 WSL 之间频繁切换会话。
插件定位¶
这是一个自包含的零依赖 Cordis 插件。它注册了一个名为 gitbash 的模型工具。插件本身不依赖外部运行时,仅使用 Node.js 内置模块。
核心功能¶
- 直接调用 Windows Git Bash:在 DSH 会话中直接执行 Windows 端的命令。
- 零依赖:不需要安装额外的系统依赖,仅作为 Cordis 插件加载。
- 路径自动检测:插件具备 WSL 感知能力,能够自动检测 Git Bash 的安装路径。
- 无状态设计:每次调用都会启动一个新的进程,不保存工作目录或环境变量状态。
安装与启用¶
安装插件需要使用 DSH 的 profile 命令。安装后需要重启 profile 才能生效。
dsh plugin --profile <name> add dsh-plugin-gitbash
安装完成后,重启 profile(通过 dsh web 或 dsh --profile <name>)即可加载 gitbash 工具。
如果需要在 npm 发布前手动安装,可以使用 GitHub URL:
dsh plugin --profile <name> add https://github.com/Jinsight-gif/dsh-plugin-gitbash
配置说明¶
插件的配置项位于 bundle row 或 agent preset 的配置表中。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
gitBashPath |
string | - | 显式指定 bash.exe 的路径,插件会直接信任该路径,不进行检测。 |
autoDetect |
boolean | true |
当未设置 gitBashPath 时,是否自动搜索常见的安装位置。 |
timeoutMs |
number | 120000 |
单次命令调用的超时时间(毫秒)。 |
maxOutputChars |
number | 65536 |
捕获的 stdout/stderr 输出会被截断至该字符数,防止流过大。 |
路径解析顺序:
1. 配置项 config.gitBashPath
2. 环境变量 DSH_GITBASH_PATH
3. 自动检测(仅在 autoDetect: true 时生效)
典型用法¶
使用该插件时,可以通过配置显式路径或环境变量来指定 Git Bash 的位置。
方式一:配置显式路径
- id: tool-gitbash
name: 'dsh-plugin-gitbash'
config:
gitBashPath: '/mnt/e/Program Files/Git/bin/bash.exe'
方式二:使用环境变量
export DSH_GITBASH_PATH='/mnt/e/Program Files/Git/bin/bash.exe'
适用场景与注意¶
- 适用场景:在 WSL 或 Linux 环境下运行 DSH,但需要操作 Windows 原生的 Git 仓库(使用 Windows 版的
git命令),或者执行 Windows 可执行文件(.exe),以及使用原生 Windows 路径(如D:\...或/d/...)。 - 路径语义:这是关键点。在
command中执行的是 Windows Git Bash,因此必须使用 Windows 路径(如/d/tools或D:/tools)。WSL 的/mnt/...路径在命令内部无效。 - 工作目录:
workdir参数会被映射,支持/mnt/X/...、/X/...或X:\...等形式。如果传入无法映射的 WSL 独有路径(如/home/...),调用将在会话工作目录下开始,而不是报错。 - 无状态:每次调用都是一个新的进程,
cwd、环境变量和 shell 函数不会在调用之间保留。如果需要链式操作,请在同一条命令中完成(例如cd /d/tools && git status)。
结尾¶
dsh-plugin-gitbash 提供了一个在 DSH 环境中无缝调用 Windows Git Bash 的能力,适合需要在 Linux/WSL 环境下操作 Windows 文件系统的开发者。
更多详情与源码,请访问:GitHub 仓库