yunuo110/dsh-gitbash

Bundle捆绑包 Native原生 ⭐ 8 MIT Dev Workflow开发与代码工作流

DeepSeek Harness (DSH) bundle plugin: makes the existing bash tool run Git Bash on Windows and disables pwsh.

Project Overview项目介绍

This is a Windows-only plugin for DeepSeek Harness. It does not add new modes or tools, redirects DSH's native bash tool to Git for Windows Bash, and hides/disables pwsh. Use it when you want the model to run shell commands via Git Bash on Windows. Note that each command does not retain state like working directory or environment variables.

这是适用于Windows的DeepSeek Harness插件,不新增模式和工具,将DSH原生bash工具重定向到Git for Windows Bash,隐藏并禁用pwsh。适合希望让模型在Windows上用Git Bash执行命令的场景。注意每次调用不保留cd、环境变量等状态。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:yunuo110/dsh-gitbash

yunuo110/dsh-gitbash 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-gitbash

English · 中文

DeepSeek Harness(DSH)bundle 插件:不新增模式、不新增工具,在 Windows 上把 DSH 现有的 bash 工具直接指向 Git for Windows Bash,并隐藏/禁用 pwsh,让模型自然使用 Git Bash。

参考了 Reasonix 的做法。

设计目标

  • 不是 preset 模式:不需要选择新模式,原有模式名不变。
  • 不是额外工具:不注册 gitbash 工具,模型看到的还是 DSH 原生的 bash 工具。
  • 默认 Git Bash:Windows 上 bash 工具通过 Git\bin\bash.exe -lc <command> 执行。
  • 隐藏 PowerShell:Windows 上 pwsh 从 prompt 中隐藏,并且即使旧缓存尝试调用也会被 guard 拒绝。
  • 动态描述bash 工具描述被改写为 Git Bash/MSYS2 规则,模型按 bash 语法写命令。
  • Windows 专用:非 Windows 上插件 no-op,不影响原生 bash。

目录结构

dsh-gitbash/
├── package.json
├── cordis.patch.yml        # 插入 dsh-gitbash,禁用 pwsh,启用 bash
├── lib/
│   ├── index.js            # shell provider + prompt 改写 + guard
│   └── gitbash-core.mjs    # 纯函数:路径探测/argv/渲染/校验
└── test/
    └── gitbash-core.test.mjs

安装(web profile)

在插件仓库根目录执行。如果你是从 GitHub clone 的,先进入 clone 出来的目录:

cd dsh-gitbash

新版 DSH 的 dsh plugin 命令会把参数转发给 pnpm。安装前请先确认本机已有 pnpm(例如执行 pnpm --version);没有的话先运行 npm install -g pnpm

方式 A:dsh 已经在 PATH 里

直接执行:

dsh plugin --profile web add .

方式 B:平时用 npx @deepseek-ai/dsh web 启动 DSH

很多人的 DSH 不是全局安装的,dsh 命令并不在 PATH 里。如果你平时是这样启动的:

npx @deepseek-ai/dsh web

那么安装插件也要通过 npx 调用:

npx @deepseek-ai/dsh plugin --profile web add .

注意:这条命令要在插件仓库根目录下执行,因为 add .. 指向当前目录。

如果你希望以后能直接使用 dsh 命令,可以先把 DSH 装到全局:

npm install -g @deepseek-ai/dsh

之后就能直接:

dsh plugin --profile web add .

安装后

安装会:

  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。

GitHub 安装(推荐)

如果你不想依赖本地源码目录,可以直接从 GitHub 安装:

dsh plugin --profile web add github:yunuo110/dsh-gitbash

如果你之前装过本地版本,先移除再安装:

dsh plugin --profile web remove dsh-gitbash
dsh plugin --profile web add github:yunuo110/dsh-gitbash

建议锁定版本,避免以后仓库变更悄悄影响你(当前最新 tag:v0.1.1):

dsh plugin --profile web add github:yunuo110/dsh-gitbash#v0.1.1

这样 profile 里保存的是 GitHub 依赖,而不是本地 link 依赖,DSH 更新不会把它刷掉。

使用

  • 新会话或旧对话里让模型执行 shell/git 命令,例如“查看 git 状态”“运行 npm test”。
  • 模型看到的是 bash 工具,描述会说明它运行 Git Bash。
  • Windows 上模型看不到 pwsh,即使旧缓存尝试 pwsh 也会被拒绝并提示改用 bash
  • 如果当前会话沙箱不是完全访问,第一次调用可能失败并提示升级。按提示让模型用:
    {
      "command": "git status",
      "description": "查看 git 状态",
      "sandbox_permissions": "danger-full-access",
      "justification": "Git Bash 无法在受限沙箱中启动,需要完全访问以执行 git 状态检查。"
    }
    
    或直接在设置里把会话权限切到完全访问

配置

默认自动探测 Git Bash:GIT_BASH 环境变量 → Program Files / Program Files (x86) / ProgramW6432 / LocalAppData / Scoop → PATH(排除 System32 的 WSL bash)。

要固定路径,在 profile 自己的 cordis.patch.yml~/.dsh/profiles/web/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 内存保留字节数,溢出写入 spill
maxSpillBytes 67108864 spill 文件上限
graceMs 3000 SIGTERM → SIGKILL 宽限

工具行为

  • 每次调用都是新的非交互式 bash.exe -lc不保留 cd / export / alias 状态
  • 使用 POSIX/bash 语法:$VARexportlsgrepfindsedawk、管道、&&/||、命令替换。
  • 路径建议:/d/WorkSpaceC:/WorkSpace;避免未加引号的反斜杠。
  • 环境变量:$VAR / ${VAR},不要用 PowerShell 的 $env:VAR
  • 支持 DSH 原 bash 工具的 workdirtimeoutMsrun_in_backgroundsandbox_permissions + justification

Token 对比

只对比原版 DSH 配置与本插件的差异:

配置 可见 shell 工具 额外系统提示 每轮 token 影响
原版 DSH(Windows) pwsh 基准
本插件 bash(实际执行 Git Bash) 基本持平(只是用 bash schema 替换 pwsh schema,没有新增额外工具)

测试

npm run check

当前测试覆盖:Git Bash 路径探测、argv 构造、环境变量合并、参数校验、超时钳制、workdir 解析、结果渲染、配置校验、shell 工具过滤。

兼容性

  • DeepSeek Harness 0.1.2-rc.1(兼容 0.1.0-rc.6 起的同一套 shell/工具 seam)
  • Windows + Git for Windows(MSYS2)
  • Node.js 22.19+

说明

本工具完全由 DSH 制作而成。

上一个 Prev dsh-comfyui-canvas 下一个 Next capital-generation