Changelog
August 16, 2026 · View on GitHub
本插件采用语义化版本(SemVer)。
[0.1.0] - 2026-08-17
首个可用版本:Windows 上所有 pwsh 命令执行改道 Git for Windows bash。
新增
- 执行器改道:实例级替换已挂载
SandboxPwshExecutor的argv()为[gitBash, '-c', 翻译后命令],前台 / 后台 / 沙箱链三条路径全部生效; - 原生 bash 工具:镜像官方
dsh-tool-bash注册bash工具(win32 上官方行被禁用, 名字空闲),含沙箱升级面、后台任务、终端卡片; - pwsh 工具禁用:tools registry 全部层(每个 agent 预设各一份)的 pwsh 定义直接 删除——模型工具面只剩 bash,不会先调 pwsh 报错再换 bash;卸载/关开关时原样恢复;
- Linux 对齐净化:bash 工具描述与提示词段落逐字对齐官方 Linux 版(无 pwsh /
PowerShell / MSYS / Git for Windows /
$env://c//字样);官方tool:pwsh提示词 section 一并删除;翻译兼容层仅执行层生效、不进模型提示; - 双路径心智收敛:提示词建议
forward-slash path form(中性措辞,Linux 无感)——盘符:/...是 Node fs 与 MSYS bash 两域交集语言,模型写路径一步到位; - 一键开关:settings 命名空间
dsh-all-gitbash.enabled+ Web 设置面板 General 页 滑块开关(client 半区注入settings.general.item插槽,经/api/dsh-all-gitbash读写); - 命令翻译:剥离
dsh-pwsh-localUTF-8 preamble、$env:NAME→${NAME}、C:\...→/c/...(整 token,含后续反斜杠); - 沙箱门控:受限模式(read-only/workspace-write)快速失败并给出
danger-full-access单次升级指引(MSYS 在受限令牌内无法启动 signal pipe); - PATH 垫片:
~/.dsh/dsh-all-gitbash/bin/{pwsh,powershell}→ git bash 脚本, git bash 会话内敲 pwsh 也进 git bash; - 提示词段落:order 120 声明命令工具 = Git Bash,模型原生写 bash。
修复
createToggle重构:装配/拆卸收进同一 disposer 列表,关开关 / 热重载 / 卸载三路共用清理;- client 设置行 inject face 契约修正(无 hooks 键时 face 整体即 props,勿再包一层);
- 设置行读写改走插件自有 webServer 路由(apiproxy 白名单不暴露插件命名空间);
- 注入器
pkgMeta缓存污染修复(refreshClientRow每次重新解析包元数据)。
踩坑记录(给后来的自己)
- tools registry 按 agent 预设分层:
pwsh工具在每层各一份,全局get()看不到, 需遍历layers.scoped全层 patch; ctx.shell属性访问需 inject:bash 工具 execute 报cannot get property "shell" without inject;- client 设置行的 inject face:
{ props: {...} }会被cachedSlotInject原样当 props, 组件收到props.props.scope→ scope undefined → 渲染崩溃 → 条目被标 abdicated 不显示; - settings 白名单:apiproxy
exposedNamespaces()只暴露白名单命名空间, 插件命名空间 describe 被过滤、mutate 被拒 → 自建 webServer 通道; - 垫片脚本内层
s///会重置捕获变量(外层/e丢空格)→ 用tr; - MSYS 受限令牌:git bash 在 workspace-write 沙箱内无法启动(signal pipe), 必须门控到 danger-full-access。