Replies: 7 comments 2 replies
|
dsh-session-session-0b40888d-9e4c-4e89-bdeb-7a2d1ceb7e5c.zip |
|
你有没有遇到description项目找不到或这command项目找不到这样的toolcall错误? |
|
窗口弹出的直接原因已经明确:底层 Node spawn() 没有设置 windowsHide: true 你们自己都不用的吗?ds的大哥们??? |
|
找到关键点了!process-inspector.ts 的默认实现 exec 用 execFileSync 没有设置 windowsHide: true!这就是弹窗来源——当 cmd/bash/pwsh 工具执行时(比如 git status),node-pty/subprocess 会调用进程检测器(processTree/isAlive,通常是 PowerShell/wmic 命令),这些 execFileSync 调用创建了可见控制台窗口。 查看完整实现: Read 这里也有问题 |
|
找到了!taskkillProcessTree 用 spawnSync('taskkill', ...) 而且 { stdio: 'ignore' }——没设 windowsHide: true! 用户说"超时瞬间出现弹窗"——完全吻合!当 pwsh/bash 命令超时,harness 会调用 taskkill /T /F 终止进程树,而 spawnSync('taskkill') 没有隐藏窗口,导致 taskkill 的控制台窗口瞬间弹出。这解释了为什么"超时的时候出现"、以及窗口是"cmd 或 ps"样式。 |
|
这个错误的调用链是 spawnTerminal 在 node-pty 之前先解析平台探测器,win32 没有实现所以直接抛。做了个插件用 CIM + taskkill 实现了 win32 探测器,bundle patch 换掉运行时之后这条路就通了,极简模式的持久 bash 在 Windows 上能用了。windows-latest CI 实测状态跨调用保留。 https://github.com/sjh9714/dsh-win32 顺带把这个帖子里提到的 windowsHide 闪窗问题也记进了 v0.2 清单。 |
|
跟进。黑框的精确位置和一行修法,供官方参考(CONTRIBUTING 说暂不收外部 PR,先记在这里)。
spawnSync('taskkill', ['/PID', String(pid), '/T', '/F'], { stdio: 'ignore' })缺 spawnSync('taskkill', [...], { stdio: 'ignore', windowsHide: true })在官方修之前,dsh-win32 v0.3 已经通过运行时自带的 |
Uh oh!
There was an error while loading. Please reload this page.
powershell 调用一直不成功。 且会弹出调用框。 插件没有便捷的安装的地方。添加模型默认全选只能一个一个取消。全是问题
All reactions