[Bug] TRAE SOLO CN 内置 DSH(0.2.0-rc.2) 在 Windows 上所有 shell 工具 100% 失败:subprocess-local: Windows Job runner exited with exit code 0 before proving its managed range empty

环境

  • OS: Windows,native win32(非 WSL)
  • 产品: TRAE SOLO CN(内置 DSH @deepseek-ai/dsh 0.2.0-rc.2,即 npm latest)
  • 宿主: 由 TRAE 桌面应用启动的 Web GUI(无控制台宿主),地址 http://127.0.0.1:3080
  • 工具: pwsh

现象

Agent 的 pwsh 工具每次调用立即失败,命令体从未执行:
Error: subprocess-local: Windows Job runner exited with exit code 0 before proving its managed range empty
代码块
自动换行
复制
命令体确实没有运行——用「写探针文件」验证:命令首条语句写 Set-Content,前台与后台执行后探针文件均不存在。因此不是"执行了但输出丢失",而是启动阶段就失败。

同类表现:glob / grep 报 ripgrep provider failure;文件写入报 EPERM: operation not permitted, mkdir '<workspace>\.<name>.<pid>.<uuid>.tmpdir'。即所有依赖子进程的能力全部不可用,仅「读文件」与「联网」正常。

复现

对 pwsh 工具发送任意命令,包括最小命令:
Write-Output “hello”
代码块
自动换行
复制
100% 复现(本轮排查连续 8 次以上,无一例外)。

已排除的因素

假设 测试 结果
权限模式相关 workspace-write 与 danger-full-access 两种模式下测试 错误完全相同
会话状态残留 彻底结束进程后重启(GUI 端口 5174 → 3080) 完全复现
工作区 ACL 缺失 曾诊断出工作区根目录缺 WRITE_OWNER,用权限修复脚本修好(验证 writeDac: true, writeOwner: false → true,verdict verified) 该 ACL 错误消失,但本错误依旧
后台执行通道 run_in_background: true 同样失败,status: killed, killed before exit

技术推断

依据 dsh-subprocess-local 文档,Windows 普通子进程路径会启动一个私有 Job runner(挂起创建 target → 加入 Job Object → 恢复运行),并保留 runner 与一条 IPC 通道,直到 Job 报告活动进程数为零;waitForExit() 需独立证明该 managed range 已空。

当前错误表明:runner 以退出码 0 提前退出,早于 managed range 被证明为空,前台执行因此判定 runner 失败并抛错(符合文档中「runnerFailed:命令运行前沙箱 runner 已失败,前台执行会抛出」的约定)。

可疑点:证明范围为空依赖 src/windows-inspector.ts(经 koffi 调用 Toolhelp32 枚举进程表),以及 Windows Job/ACL runner 在 Node 初始化前通过 CRT 启动表建立 fd 3–7 的私有 IPC 通道;任一在本环境失效都会产生该症状。宿主为无控制台桌面启动路径。

影响

该包无任何配置项,用户侧没有任何可用的开关或变通;权限策略在原理上也无法解决。目前所有 shell 工具完全不可用,阻塞任何需要执行命令或写文件的任务。

参考

上游同类 Windows 问题讨论:#3428、#810

当前官方资料中尚未记录该 subprocess-local: Windows Job runner exited 报错的确认信息或变通方案。感谢你提供了非常详尽的环境信息、复现步骤、排查过程以及关于无控制台宿主下 IPC 通道失效的技术推断。由于目前缺乏相关的产品事实支持,当前确实没有可用的变通操作来恢复 shell 工具的使用。帖子中提供的测试和推断信息已经非常完整,请保留这些记录以便后续排查。

报错是什么呢?辛苦截图看下
麻烦下次尽量简单描述一下问题,不要用AI优化了哈~