跳到主内容

dsh-bash-terminal

13Star2Fork2Issue0Watching

DSH Windows 插件:在 Web UI 让用户自选默认终端后,shell 工具统一调用 PowerShell、Git Bash 或 WSL 执行命令。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
MIT
分支
master
dsh-plugin

安装

命令web profile
$ dsh plugin --profile web add dsh-bash-terminal

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 MAXeaglet/dsh-bash-terminal:先查看仓库 https://github.com/MAXeaglet/dsh-bash-terminal 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

DSH 的 Windows 插件:把 PowerShell、Git Bash、WSL 三种终端统一成一个 shell 工具,默认终端由用户在 Web UI 设置页决定,AI 模型无法绕过用户选择。再附送一个基于 PTY 的交互式 terminal 工具。

核心能力

  • 在 Web UI「设置 → 通用」中选择默认终端(PowerShell / Git Bash / WSL),shell 工具始终按这个选择执行
  • 提供 shell 工具,每次调用启动全新 shell 跑命令,遵守 DSH 沙箱策略(受限模式 fail-closed)
  • 提供 terminal 工具,开启 PTY 交互会话(cwd / 变量 / 别名跨调用保持),适合 REPL / ssh / 交互式 CLI
  • 支持后台任务:长命令可设为 run_in_background,得到 job id 后用 job_output / job_kill 收集输出或终止
  • 沙箱拒绝时给出官方 [sandbox: file access denied] 标记,并允许同轮用 sandbox_permissions + justification 升级一次

技术实现

  • 语言: JavaScript(ESM,主包)+ React JSX(客户端)
  • 关键依赖: @deepseek-ai/cordis、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-sandbox、node-pty、@deepseek-ai/dsh-shell
  • 架构模式: Cordis 插件(通过 cordis.patch.yml 在 profile 加载时插入 tool-bash-terminal 节点),同时注册 host 端(shell + terminal 工具)和 client 端(设置页的"默认终端"下拉)
  • 入口文件: lib/index.js(host 端)、src/client.jsx → dist/client.js(client 端)

适用场景

Windows 用户希望模型在 shell 工具里跑命令时用 Git Bash 或 WSL,而不是 PowerShell;或者需要保留会话状态跑交互式命令(REPL、ssh、长进程)。也适合经常在 PowerShell、Git Bash、WSL 之间切换、希望通过一个下拉统一管理的人。

前置依赖与兼容性

依赖最低版本说明
DSH^0.1.0-rc.6需 cordis / dsh-tools / dsh-sandbox / dh-shell / dsh-settings / dsh-llm / dsh-timeout / 客户端运行时等
Node.js>=20package.json#engines.node
操作系统Windows(win32)非 win32 平台插件跳过注册,lib/index.js:424 直接 return
原生模块node-pty交互式 terminal 工具依赖,Windows 平台由插件直接调用
React^18.2.0仅客户端设置面板使用
PowerShell 7推荐安装PowerShell 5.1 在 ConPTY 下无法启动交互会话(一次性命令不受影响)

安装方式

dsh plugin --profile web add github:MAXeaglet/dsh-bash-terminal

首次安装后还需 powershell -ExecutionPolicy Bypass -File install.ps1 install 给 DSH 的 settings UI 白名单打补丁(加入 bash-terminal namespace),否则设置页改了不生效。升级 DSH 后需重跑此脚本。

配置项

配置类型说明默认值
defaultShell字符串用户在设置页未覆盖时使用的后端(powershell / gitbash / wsl)powershell
timeoutMs数字单次调用的默认超时时间(毫秒)120000
maxTimeoutMs数字调用方 timeoutMs 参数的上限600000
pwshPath字符串锁定 pwsh.exe 的绝对路径,留空时按候选目录自动探测自动探测
gitBashPath字符串锁定 Git Bash bash.exe 的绝对路径,留空时按候选目录自动探测(自动排除 System32 的 WSL forwarder)自动探测
wslPath字符串锁定 wsl.exe 的绝对路径,留空时取 %SystemRoot%\System32\wsl.exe自动探测

用户在 Web UI 设置里改的"默认终端"会持久化到 settings.yaml,优先级高于这里的 defaultShell。

常见问题

Q: AI 模型能自己切换 PowerShell / Git Bash / WSL 吗?

A: 不能。终端选择由你在 Web UI「设置 → 通用 → 默认终端」下拉里改并持久化;shell 工具不暴露终端参数给模型。每次调用都按当前设置执行,模型看不到其他选项。

Q: 跟 DSH 自带的 pwsh 工具会冲突吗?

A: 不会。插件特意避开 ctx.shell 接缝,官方沙箱化的 pwsh 工具保持原样可用;本插件注册的是另一个名为 shell 的工具,是额外的多终端入口。

Q: 可以在 macOS 或 Linux 上装吗?

A: 可以装,但不会生效。apply 在 process.platform !== "win32" 时直接 return,不会注册任何工具。

Q: 怎么启用受限模式下的"升级一次"?

A: 命令被沙箱拒绝时,结果会带 [sandbox: file access denied under <mode> mode] 标记;模型可在同一轮用 sandbox_permissions(如 workspace-write / danger-full-access)+ justification 重试一次,会走 ctx.approval 用户审批。

Q: PowerShell 5.1 跑交互式 terminal 报错怎么办?

A: 这是 ConPTY 的已知限制(0x8009001d)。装 PowerShell 7 即可解决;一次性命令(shell 工具)不受影响。

Q: WSL 交互式 terminal 偶发 RPC 错误怎么办?

A: ConPTY 下偶发 0x8007072c。建议一次性命令继续用 shell 工具(wsl -e bash -lc ... 稳定),交互场景在 Windows Terminal 或 WSL 终端里直接跑,或重试。

Q: 升级 DSH 后设置面板不生效了?

A: DSH 升级会还原 settings UI 白名单补丁。重新运行 powershell -ExecutionPolicy Bypass -File install.ps1 install 即可。

上手难度

入门 — 普通用户只需要在 Web UI 设置里选一次默认终端就能用;要本地开发才需要懂 PowerShell、Junction 链接、install.ps1 等额外步骤。

已知问题与限制

  • 仅在 Windows 上注册工具,macOS / Linux 安装后 shell 和 terminal 工具不会出现
  • PowerShell 5.1 无法在 ConPTY 下启动交互会话(错误 0x8009001d),需装 PowerShell 7;一次性命令正常
  • WSL 在 ConPTY 下交互模式可能触发 WSL 服务 RPC 错误(0x8007072c,偶发),一次性 wsl -e bash -lc ... 正常
  • Windows 上 node-pty 不接受命名信号:只有 SIGINT 能映射为 Ctrl+C,其他信号(SIGTERM / SIGKILL / SIGTSTP / SIGHUP)退化为直接终止会话
  • WSL 后台进程在超时 / 中断后可能在发行版内短暂残留(WSL 实例在最后一个进程退出后自动关闭)
  • Git Bash 是 msys2 环境,与 WSL 的 Linux 行为存在差异(路径映射、可用包)
  • DSH 的 Windows ACL 沙箱 launcher(node-addon-landlock-run-win32-x64)尚未在 npm 发布,本地沙箱后端暂不可用
  • DSH 设置 UI 对第三方 settings namespace 有硬编码白名单限制,必须用 install.ps1 打补丁才能让用户在 UI 写入默认终端偏好

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/MAXeaglet/dsh-bash-terminal)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录