dsh-bash-terminal-ts

toolsinstall failsnpmMIT

Shell tool with four Windows backends (PowerShell / Git Bash / WSL / MSYS2) plus an interactive PTY terminal; the MSYS2 backend starts bash.exe with -lc so /etc/profile puts /usr/bin and /mingw64/bin on PATH, and injects MSYSTEM=MINGW64 into the PTY environment. Written in TypeScript, targets DSH 0.

下载量 / Downloads
7,457
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-bash-terminal-ts

Sandbox test results

StageResult
1 install✗
2 list—
3 mount—
4 boot—
First error
dsh: initialized profile web at /home/node/.dsh/profiles/web

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-bash-terminal-ts

🌐 [简体中文](README.md) | [English](README.en.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Italiano](README.it.md) | [Русский](README.ru.md) | [Español](README.es.md) · Сообщество: LINUX DO · GitHub

Плагин DSH (DeepSeek Harness): инструмент shell, единообразно выполняющий в Windows команды четырёх терминалов — PowerShell / Git Bash / MSYS2 / WSL.

Этот репозиторий — переписанный на TypeScript вариант MAXeaglet/dsh-bash-terminal с работающей поддержкой MSYS2/MINGW64. Линии совместимости выделяются по сегменту версии хоста DSH; все линии используют одно имя пакета dsh-bash-terminal-ts и различаются npm dist-tag'ами:
| Сегмент DSH | Ветка | Версия плагина | npm dist-tag |
|--------|------|----------|--------------|
| 0.1.0-rc.2 – 0.2.1-rc.5 (точное перечисление 20 версий) | main (эта ветка, кросс-версионный транк) | 0.8.x | latest |
| >=0.2.0-rc.1 <0.2.1-0 | compat/0.2.0 (историческая, заморожена) | 0.7.x | dsh-0.2.0 |
| 0.1.7-rc.1 – 0.1.7.x | compat/0.1.7 | 0.6.x | dsh-0.1.7 |
| 0.1.5-alpha.1 – 0.1.5-rc.x | ts/0.1.5 (историческая, заморожена) | ≤ 0.5.2 | dsh-0.1.5 |
| 0.1.2-alpha.1 – 0.1.2-rc.x | ранние коммиты main (заморожены по тегу) | ≤ 0.4.2 | dsh-0.1.2 |
Выбирайте линию под вашу версию DSH; серии версий не пересекаются, поэтому установка с ^ не сможет разрешиться через границы линий.

Бэкенд · Фактическое выполнение · Синтаксис / пути · Переменные окружения

powershell (по умолчанию) · pwsh -NoLogo -NoProfile -NonInteractive -Command <cmd> · PowerShell; C:\... · $env:NAME

gitbash · bash -lc <cmd> из Git for Windows · POSIX; /d/workspace; PATH включает /usr/bin и /mingw64/bin · $NAME

msys2 · bash -lc <cmd> MSYS2 (C:\msys64\usr\bin\bash.exe) · POSIX; /c/...; PATH включает /usr/bin и /mingw64/bin (gcc / make) · $NAME (автоматически подставляется MSYSTEM=MINGW64)

wsl · wsl [-d <distro>] -e bash -lc <cmd> · Linux; /mnt/d/... · $NAME (через WSLENV)

Каждый вызов запускает совершенно новую оболочку: состояние не сохраняется (cwd / переменные / алиасы) — передавайте workdir, а не используйте cd.

Предпросмотр интерфейса

Строка «Терминал по умолчанию» в Настройки → Общие: пользователь выбирает между PowerShell / Git Bash / MSYS2 / WSL, а инструмент shell выполняется строго согласно этой настройке — модель не может её обойти:

Ключевые решения дизайна

  • Терминал выбирает пользователь, ИИ не может его сменить: на странице настроек веб-UI (Настройки → Общие) появляется выпадающий список «Терминал по умолчанию» (PowerShell / Git Bash / MSYS2 / WSL); инструмент shell всегда использует только эту настройку и не раскрывает модели параметров терминала. Настройка сохраняется через систему settings DSH (settings.yaml).
  • Не занимает стык возможностей ctx.shell: штатный sandbox-инструмент pwsh из DSH остаётся доступным как есть; инструмент shell этого плагина — дополнительная точка входа к нескольким терминалам.
  • Процессы порождаются через общий seam ctx.subprocess: завершение дерева процессов (в Windows taskkill /T), SIGTERM → льготный период → SIGKILL, spill-файлы вывода — поведение идентично официальным инструментам dsh-tool-bash / dsh-tool-pwsh.
  • Фоновые задачи регистрируются в универсальном реестре jobs с поддержкой run_in_background / job_output / job_kill.
  • Строка «Терминал по умолчанию» на странице настроек фронтенда — это перечисление (UI автоматически рендерит его выпадающим списком); при каждом вызове модель исполняет только согласно этой настройке и не может сменить терминал по собственной инициативе.

Установка (web-профиль)

Стандартная установка (после публикации в npm, официальный механизм bundle)

Плагин несёт собственный официальный манифест dsh.bundle (cordis.patch.yml внутри пакета); как только профиль перечисляет этот пакет, DSH автоматически применяет монтирование, вручную править конфигурацию профиля не нужно:

# 1. Установить пакет плагина
npm install -g dsh-bash-terminal-ts
dsh plugin --profile web add dsh-bash-terminal-ts   # автоматически добавляется в bundles профиля и применяет патч

# 2. Пропатчить whitelist настроек DSH (ограничение DSH, см. пояснение ниже)
powershell -ExecutionPolicy Bypass -File install.ps1 install

# 3. Перезапустить dsh web
Проверено на практике с временным профилем: bundles: [dsh-bash-terminal-ts] → запись tool-bash-terminal автоматически появляется в dump-config.

Установка для локальной разработки (junction, изменения исходников вступают в силу сразу)

# 1. Связать пакет плагина с node_modules профиля (junction, изменения исходников вступают в силу сразу)
$profile = "$env:USERPROFILE\.dsh\profiles\web"
New-Item -ItemType Junction -Path "$profile\node_modules\dsh-bash-terminal-ts" -Target "D:\workspace\projects\dsh-bash-terminal-ts" | Out-Null

# 2. Позволить плагину разрешать зависимости @deepseek-ai/* (junction на дерево зависимостей профиля; плагин и хост используют одни и те же экземпляры модулей)
New-Item -ItemType Junction -Path "D:\workspace\projects\dsh-bash-terminal-ts\node_modules\@deepseek-ai" -Target "$profile\..\node_modules\@deepseek-ai" | Out-Null

# 3. Дать профилю смонтировать плагин через официальный bundle (install.ps1 install делает это автоматически; эквивалентно добавлению "dsh-bash-terminal-ts" в dsh.profile.bundles)
# 4. (только после правок фронтенд-кода) пересобрать клиентский bundle:
#    cd D:\workspace\projects\dsh-bash-terminal-ts && node scripts/build-client.mjs
# 5. Перезапустить dsh web
⚠️ Не запускайте npm install в этом проекте: он удалит junctio

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::24,最后更新 2026-11-06

Links

GitHub · Homepage · npm

Same category