中文 | English
DeepSeek Harness 的 Windows 多 Shell 管理插件。DSH 在 Windows 上默认只提供 PowerShell(官方 pwsh 工具),而 LLM 训练语料中 bash 占绝对多数,agent 执行 POSIX 命令时错误率显著升高。本插件把「用哪个 shell」变成一组可增删的 shell 条目:每条目独立启用,填写或自动探测可执行文件路径,自定义模型可见的工具提示词,并可按需开启沙箱完全权限——git-bash 这类依赖兼容层、需要写临时目录或工作区外的 shell 因此不再每次触发沙箱审批。每个启用且可用的条目注册为一个独立 shell 工具,多个 shell 可以同时启用。
来源:本项目 fork 自 LAN-TINA-WS/dsh-windows-shell-policy(MIT)。原项目是「单 shell 三选一」策略;本 fork 改为可增删的多 shell 条目管理,并新增条目级沙箱完全权限、启动参数模板、显示名等能力。上游版权归原作者,见 LICENSE。
| 能力 | 说明 |
|---|---|
| 多 shell 条目 | 面板内任意增删条目(上限 16 条);列表里每条目折叠成一行(名称 / 启用 / 默认),其余设置收进各自的「配置」界面。每个启用且可用的条目注册为一个独立 shell 工具,可同时启用多个 |
| 条目显示名 | 每个条目可设「显示名」,面板里用它区分工具名相同的 shell(例如两个 bash 条目可以叫 Git Bash 与 Cygwin);留空回落到工具名。只影响面板显示与错误提示,不进入工具面 |
| 自动探测 | 路径留空时按家族探测:Git for Windows(系统级 / 用户级 / usr\bin)、MSYS2、Cygwin、PowerShell 7、Windows PowerShell 5.1、PATH;每条另有「探测」按钮 |
| 工具提示词 | 每条目自定义模型看到的工具说明,留空使用默认模板(fresh shell、workdir、exit code 约定) |
| 沙箱完全权限 | 条目级开关:跳过文件沙箱 confine(等同 danger-full-access),执行不再逐次审批,该工具也不再暴露 sandbox_permissions/justification |
| 可执行文件与启动参数 | 可执行文件可填绝对路径,也可只填文件名(填文件名时用 PATH 里的那个,无扩展名自动补 .exe);启动参数是可执行文件之后全部参数的模板({command} 占位实际命令),因此连 -c 这类取命令的开关也能改 |
| 默认项 | 多个 shell 同时启用时用「默认」单选标记优先使用的 shell,引导提示词据此推荐 |
| 提示词裁剪 | 只要有条目注册成功,就在 system-prompt/assemble 隐藏 DSH 内置 bash/pwsh;全部条目停用时保持 DSH 原始工具面 |
| 条目级错误 | 路径未找到、工具名被内置工具或其它插件占用、启用条目间重名、注册抛错都只影响该条目,面板显示原因,其余条目照常工作 |
| 终端卡片 | 与官方 shell 工具一致:对话页可点击查看命令、cwd、输出与 exit 状态标记 |
| 持久化 | 条目写入本插件 profile entry config 的 shells 数组,重启保留 |
| 卸载即净 | dsh plugin --profile web remove一键还原 |
GitHub 直装(推荐,国内网络最快,免等 npm):
dsh plugin --profile web add github:EidnG3lZ/dsh-windows-shell-manager
# 重启 dsh web,打开「插件」页 → 本插件详情页 → 「Shell 工具」面板开始配置在「插件」页打开本插件详情页,面板「Shell 工具」即为条目列表。列表里每条目折叠成一行,只显示名称、「启用」与「默认」;点行尾的「配置」进入该条目单独的配置界面,改完点「‹ 返回列表」回来:
| 控件 | 位置 | 行为 |
|---|---|---|
| 条目名 | 列表 | 只读显示该条目的显示名(留空回落到工具名;再留空则按可执行文件名推导,弱化色显示);显示名与工具名不同时名字后面用弱化色补一个工具名 |
| 启用 | 列表 | 开关;只有启用的条目才会注册为 shell 工具 |
| 默认 | 列表 | 单选;多个 shell 启用时,引导提示词优先推荐它 |
| 配置 | 列表 | 打开该条目单独的配置界面(显示名、工具名、路径、PATH、提示词、启动参数、沙箱权限与删除都在里面) |
| 显示名 | 配置界面 | 面板里区分条目的名字(例如 Git Bash / Cygwin)。留空用工具名。只影响面板显示与错误提示,模型看到的仍是工具名 |
| 工具名 | 配置界面 | 模型看到的工具名。留空按可执行文件名推导(pwsh.exe 因与 DSH 内置工具重名会推导为 powershell);启用条目间必须唯一(重名会被保存拒绝,提示里用对方的显示名标识是哪一条),run_code 是 DSH 保留名 |
| 可执行文件 | 配置界面 | 填绝对路径,或只填文件名(如 bash.exe,此时在 PATH 里查找);留空则按家族自动探测(Git / MSYS2 / Cygwin / PowerShell / PATH),也可点「探测」按当前名称填入第一个命中的候选 |
| 启动参数 | 配置界面 | 可执行文件之后全部参数的模板,{command} 会被替换成实际命令。留空用家族默认(bash -c {command}、PowerShell -NoLogo -NoProfile -NonInteractive -Command {command});要换掉 -c 这类开关就改这里,例如 -l -c {command}、-Command {command},甚至只写 {command}。空白分隔,双引号分组(必须含 {command} 且引号闭合) |
| 工具提示词 | 配置界面 | 模型看到的工具说明;新建条目会自动填入默认模板,改乱了可点标签行右侧「重置为默认」按当前名称/路径/启动参数重新生成(模板只在 host 存在一份) |
| 沙箱完全权限 | 配置界面 | 跳过文件沙箱 confine(等同 danger-full-access),执行不再逐次审批 |
| 添加 shell / 删除 | 列表 / 配置界面 | 增删条目(最多 16 条,可全部删除);「添加 shell」新建后直接进入它的配置界面,「删除」在配置界面里。列表为空时插件不生效(DSH 内置 shell 工具恢复可用) |
| 保存 / 放弃 | 两者 | staged 编辑;保存前做客户端校验(重名、run_code、可执行文件需绝对路径或纯文件名、启动参数需含 {command} 且引号闭合),整表写入配置;保存或放弃后回到列表 |
- 条目名旁出现红色
!圆点表示该条目有问题(鼠标悬停看原因),点「配置」可见完整原因与运行时状态。 - 想同时启用两个同类 shell(例如 Git Bash 与 Cygwin):工具名必须唯一(模型侧),但显示名可以随意取名——例如工具名
bash/cygwin_bash,显示名Git Bash/Cygwin,列表里按显示名区分。 - 条目保存后下一次请求生效;引导文本按会话快照,新会话才看到新内容。
- 文件沙箱为
danger-full-access时条目同样不confine;本插件仅 Windows 生效,Linux/macOS 上不注册工具、不裁剪提示词。
问题、需求、使用体验:提交到 Issues(欢迎反馈)。
| 贡献者 | 贡献 |
|---|---|
| EidnG3lZ | 本 fork 的作者与维护者(多 shell 条目管理、沙箱完全权限、启动参数模板等) |
| LAN-TINA-WS | 上游项目 dsh-windows-shell-policy 作者 |
本项目采用 MIT License。
接手任务时先读 AGENTS.md(长期规则与读写约定),再按 PROJECT_INDEX.md 路由到具体文件:
| 文档 | 内容 |
|---|---|
| AGENTS.md | 长期规则:读取规则、写入规则、权威来源分工、验证要求 |
| PROJECT_INDEX.md | 简短项目定位 +「任务 → 文件/章节」路由 |
| NOW.md | 当前目标、进展、阻塞、下一步与证据入口 |
| MAP.md | 目录、版本、构建工具链、profile/部署与配置持久化映射 |
| RUNBOOK.md | 有依据的操作步骤、前置条件与验证(含执行状态标注) |
| DECISIONS.md | 已确认决策、理由、范围与来源 |
| RISKS.md | 有证据的风险、验证缺口与保护措施 |
| history/README.md | 历史记录索引(按需检索,不默认读取) |
开发工艺(编写规范、DSH 能力清单、组合插件转正流程)见 docs/:
| 文档 | 内容 |
|---|---|
| conventions.md | 插件编写规范与常见失败速查 |
| capabilities-host.md | DSH Host 服务/事件清单(本插件用到的) |
| capabilities-client.md | DSH Client 槽位/服务清单(本插件用到的) |
| roadmap-composition.md | 组合插件转正施工记录 |
仓库结构:src/(host + client 源码)、tests/(假 ctx 集成测试)、scripts/(构建)、docs/(文档与截图)、cordis.patch.yml(bundle patch 装配)。


