dsh-gitbash-preset README

The project's README from github.com/liceses/dsh-gitbash-preset. As one markdown file: README.md.

dsh-gitbash-preset

DeepSeek Harness 插件:一键安装「极简模式 (Git Bash)」agent preset —— 把 DSH 自带极简模式中的 bash 调用映射到 Git for Windows 的 bash(MSYS),让 Windows 上的极简模式真正可用。

About

DSH 自带的极简模式在 Windows 上无法使用,失败有两层原因:

  1. PTY 平台限制:极简模式的持久 bash 依赖 PTY 后端,而 @deepseek-ai/dsh-subprocess-local 在 win32 上直接拒绝(terminal inspection is unsupported on platform win32),与 bash 是否存在无关;
  2. shell 缺失:即便绕过 PTY,@deepseek-ai/dsh-bash-local 硬编码从 PATH 找 bash,Windows 上默认没有。

本插件交付一个可安装的预设变体:同一套极简 persona + str_replace_editor 双工具表面,但 bash 工具每次命令执行 <git bash> -c <command>,并通过沙箱感知门控保证不绕过安全边界。

特性

工作原理

环节 说明
插件行 cordis.patch.yml 在 web profile 组合中插入 dsh-gitbash-preset,启动时安装预设文件
预设组合 agent.cordis.yml 中 gitbash-shell 组以 entry-local realm 提供 shell 服务,tool-bash 注册模型工具
执行器 gitbash-executor.mjs 通过 host 的 subprocess 服务执行 bash -c,处理超时、后台、输出截断与错误诊断
沙箱门控 run/start 校验策略:仅 danger-full-access(或部署无沙箱)放行,否则抛出带指引的错误

安装

dsh plugin --profile web add @icelily/dsh-gitbash-preset

或手动合并 cordis.patch.yml 到 profile patch 层。重启 DSH 后生效;重启后插件会自动安装预设(已存在则 no-op,不会覆盖你已有的版本)。

也可以不装插件,直接把 agent-presets/minimal-gitbash/ 目录复制到 ~/.dsh/.agent-presets/。

使用

  1. Web 界面新建会话,选择 极简模式 (Git Bash);
  2. 二选一启用 bash:
    • 把会话沙箱切到完全访问,之后所有 bash 调用直接走 git bash;
    • 或保持 workspace-write,让模型在第一次调用失败后按提示用 sandbox_permissions: "danger-full-access" + justification 单次升级(走正常审批流程)。

配置

预设配置(agent-presets/minimal-gitbash/agent.cordis.yml 中 gitbash-executor):

字段 默认 说明
shellPath 自动探测 显式指定时优先(如 'C:\\Program Files\\Git\\bin\\bash.exe')
timeoutMs 120000 单次命令默认超时(上限 maxTimeoutMs)
maxTimeoutMs 600000 超时上限
maxOutputBytes 64000 单流保留字节数(溢出写入 spill 文件)
graceMs 3000 终止进程的 SIGTERM→SIGKILL 宽限

插件配置(cordis.patch.yml 插入行):

字段 默认 说明
force false 预设已存在时是否用包内文件覆盖(保留用户额外文件)

开发

npm run check   # 三个文件语法检查(插件、执行器、测试)
npm run test    # 单元测试:路径转换 / 探测优先级 / 配置校验,10 个用例

限制

License

MIT

dsh-gitbash-preset (liceses/dsh-gitbash-preset)

Searching Database…

Что это?Плагин для DeepSeek Harness (DSH), который устанавливает альтернативный пресет агента 'Minimal Mode (Git Bash)', переназначая вызовы встроенного bash-инструмента минимального режима DSH на bash (MSYS) из Git for Windows, чтобы минимальный режим реально работал на Windows.
Как установить этот плагин?Объедините cordis.patch.yml плагина со слоем патчей профиля DSH и перезапустите DSH; он автоматически установит комплектный пресет в ~/.dsh/.agent-presets/minimal-gitbash/, если такой уже не существует. Можно вовсе обойтись без плагина и просто скопировать папку agent-presets/minimal-gitbash/ туда самому.
Нужен ли установленный Git for Windows?Да — плагину нужен реальный bash.exe, на который можно переназначить вызовы, и он находит его автоматически через переменную окружения GITBASH, обычные каталоги установки Git (ProgramFiles, ProgramFiles(x86), LOCALAPPDATA) или PATH.
Есть ли серьёзные оговорки, прежде чем на это полагаться?MSYS-рантайм Git Bash не может запускаться внутри песочницы Windows с ограниченным токеном, поэтому bash работает только под политикой DSH 'danger-full-access' (или разовым повышением прав); и в отличие от исходной постоянной PTY-сессии, каждый вызов bash здесь стартует свежий шелл, так что cd и export не переносятся между командами.
Это работает и на macOS или Linux?Нет, это исправление только для Windows: на macOS и Linux уже есть пригодный bash для минимального режима DSH, так что этот пресет нацелен именно на пробел Windows/Git Bash.
Почему встроенный минимальный режим DSH просто не работает на Windows?Он полагается на PTY-бэкенд для постоянных bash-сессий, который слой подпроцессов DSH безоговорочно отклоняет на win32, а даже в обход этого он жёстко прописан искать 'bash' в PATH, которого на Windows по умолчанию нет.
Что будет, если песочница моей сессии не в режиме полного доступа?Bash-инструмент падает на первом вызове и показывает подсказку: либо переключить сессию на полный доступ, либо запросить разовое повышение в песочнице с обоснованием — в соответствии с обычным потоком одобрений DSH.
Можно ли указать конкретную установку Git Bash вместо автоопределения?Да, задайте поле shellPath в конфиге gitbash-executor пресета (например, 'C:\Program Files\Git\bin\bash.exe'), чтобы пропустить автоопределение.
Перезапишет ли переустановка плагина мои собственные правки пресета?Нет, по умолчанию установщик пропускает копирование, если пресет уже существует; перезаписать комплектными файлами заставляет только установка force: true.
Creator
liceses
Size
0.4 MB
Stars
135
Updated
CommitOct 07
Age
2mo
Commits · 90 Days