DSH Hub

KannaKuron/dsh-gitbash-shell

dsh-gitbash-shell

UIWeb UI41 GitHub stars· updated 2026-10-27

DSH plugin: Git Bash shell for all agent modes on Windows (replaces pwsh executor)

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-gitbash-shell

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-gitbash-shell DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-gitbash-shell.svg)](https://dshhub.dev/plugins/dsh-gitbash-shell)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from KannaKuron/dsh-gitbash-shell, cleaned of badges and images.

dsh-gitbash-shell

简体中文 | English

Unreleased/实验性实现讨论:下述 fail-closed 与两个显式工具尚未正式发布,不是发布候选;安装公开 npm 包不保证包含这些变更。详见设计、接口与待讨论决定、验证矩阵与复现及 CHANGELOG。

让 DeepSeek Harness (dsh) 在 Windows 上默认用 Git Bash 跑命令的官方风格插件 —— 不替换宿主执行器(官方 PowerShell 执行器原样保留):新增自有 bash 工具 (私有 Git Bash 执行器实例,不注册为服务),并为所有模式注册对应的 Git Bash 版 agent preset。

它解决什么

官方 Windows 组合默认把 dsh-pwsh-sandbox 作为 ctx.shell(PowerShell 执行器), 且各 preset 的 tool-bash 行在 win32 上被禁用——因为在 Windows 上裸 bash 会解析到 C:\Windows\System32\bash.exe(WSL 占位)。本插件不替换这个执行器: 它新增一个自有 bash 工具,执行在私有的 Git Bash 执行器实例上(继承官方 @deepseek-ai/dsh-bash-sandbox,bashPath 只认 Git for Windows)。沙箱语义在 POSIX 宿主上完整保留; Windows 宿主上受限模式有一处重要例外——见下方 「安全语义:Windows 上的受限模式」。

安装本插件后(v0.35.0 起,默认):

  • 官方四个模式直接获得 Git Bash——模式列表保持官方原样,不再新增变体: 每个会话创建时,本插件探测该模式的工具面,「有 pwsh 无 bash」(官方 Windows 组合的形态)即在该会话内注册自有 bash 工具(对官方 tool-bash 逐调用镜像: 后台任务、审批升级、渲染行为不变)。宿主官方 pwsh 工具是真正的 PowerShell(v0.39.0 起,本插件不再替换执行器),默认被隐藏、开关显示——见下一条。

  • bash 工具说明附带路由规则:能用 Git Bash 就用 Git Bash;只有必须用到 Windows 原生能力(cmdlet/注册表/服务/WMI)时才用 PowerShell;bash 出错在 bash 里修,禁止在 bash 里嵌 pwsh -Command(变量展开与输出编码会在那里坏掉)。

  • pwsh 工具(官方 PowerShell,默认隐藏,开关显示):宿主官方的 pwsh 工具 就是真正的 PowerShell(官方解析器自动优先 PowerShell 7),可直接用于 Windows 原生操作(cmdlet/注册表/服务/WMI)。默认关闭(pwshTool 开关):该工具对本插件 会话隐藏,主机保持 bash 优先;开启后它直接可见可用——无需安装任何额外组件。 旧 PowerShell 7 旁路工具(v0.37–v0.38.5 的独立工具)已随 v0.39.0 新架构退役; 命令仍然首选 bash 工具。

  • gb_* FastCtx 文件工具(默认关,v0.39.4 起弃用):gb_inspect_local_file/gb_grep/ gb_glob/gb_replace(Rust 实现:批量范围读取带 token 预算、grep 截断 标注、编码探测)。它们是官方 read/grep/glob/edit 的补充——官方工具接 文件沙箱,仍是默认推荐。dsh-ops 0.3.0 起原生 ops_* 文件工具取代了 FastCtx 上游,本组默认关闭(fastctxTools 显式开启可恢复);已安装 dsh-ops 时无论开关如何都会自动让位。与 dsh-ops 并存时本插件继续负责 /c/ 方言统一:ops_* 的入参(含 root/operations[].path/protect) 自动转换、返回与报错路径自动回流 /c/。

  • 与 dsh-ops 并存:bash 只留一份(v0.42.0):宿主机制决定「可见但拒绝」到不了「看不见」—— tools.restrict 只能过滤继承面,而 ops_bash 注册在 agent 自有层。于是本插件直接接管 dsh-ops 自带的 publishBashTool 开关(经官方 configEditor 通道写为 false):安装本插件时 ops_bash 不再出现在模型工具面;ops 的 pwsh7 overlay(给官方 pwsh 工具供路径)与文件/后台增强不受影响 ——publishBashTool 的门只套在 mountSessionBash 上,pwsh 走 mountBundledPwsh 独立路径。 ops_run 无需处理:它在 dsh-ops 的 bundle 装配中本就没有发布路径——bundle 只有 shell/file/background/ptc 四行,全插件唯一一处 new FastCtxTools 只在 background 组件挂 后台四件套(run_background/job_*),前台 ops_run 只是未被任何调用点使用的默认参数; 本机 dsh-ops-background 行默认关闭,后台四件套同样不存在。 停用或卸载本插件的瞬间自动还原(dispose 钩子撤回覆盖,同 row 的其它设置原样保留),重新启用 又会自动接管。两个边界:①关机状态下卸载的残余覆盖,用 dsh-ops 设置卡「恢复默认」一键撤回; ②停用时若覆盖值已被你手动改回 true,视为你的选择、不动它。无设置开关——想用 ops_bash 就停用本插件,还原是自动的。 后台任务与文件/PTC 增强全部让给 dsh-ops(2026-10-19 用户决策):剔除清单被守卫测试 锁死为 ops_bash + ops_run 两项,永不含 ops_run_background/ops_job_*——你启用 dsh-ops 的「后台任务」组件后,这组全局工具在普通会话与 PTC 创造模式下原样可见可用, 本插件不做任何 deny。bash 归 gitbash,后台与增强归 dsh-ops,职责互不越界。

四个「· Git Bash」变体 preset 仍保留,默认关闭(variantPresets 开关, 设置卡可开):开启后注册 standard-gitbash/minimal-gitbash/code-gitbash/ cordis-gitbash 四个变体并停用官方模式的工具补位(两者互斥)。

⚠️ 从 0.34.x 升级:变体默认关闭。全局默认模式会自动迁移——若你之前把默认设成 某个变体(*-gitbash),升级后首次启动会经官方设置通道切到对应官方模式 (standard-gitbash→standard、minimal-gitbash→minimal、code-gitbash→ptc、 cordis-gitbash→cordis);打开 variantPresets 则不迁移、一切照旧。钉在变体上的 旧会话无法被迁移(官方 agent-preset/locked 锁定),请新建会话。

…

Related plugins