dsh-bash-terminal-ts
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.
Install
dsh plugin --profile web add dsh-bash-terminal-ts
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✗ |
| 2 list | — |
| 3 mount | — |
| 4 boot | — |
dsh: initialized profile web at /home/node/.dsh/profiles/webFour 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: завершение дерева процессов (в Windowstaskkill /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