前言¶
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 上翻工作流类插件,不妨把它列入试用清单。