clearkurt/dsh-win-terminal-inspector ↗★ 2
dsh-win-terminal-inspector
Windows (win32) terminal inspection for DSH persistent/PTY shells: process-tree, liveness, foreground and Ctrl-C delivery through the ConPTY input, replacing the unsupported createProcessInspector() path on Windows.
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗dsh-win-terminal-inspector
DSH(DeepSeek Harness)Windows 平台的 terminal inspection 插件:为 persistent/PTY 终端(Claude Code 风格的持久化 bash)补齐 win32 上的进程监视能力。
解决的问题
@deepseek-ai/dsh-subprocess-local 的 createProcessInspector() 只支持 linux/darwin,
在 win32 上创建 PTY 终端会话(spawnTerminal())时抛出硬错误:
Error: subprocess-local: terminal inspection is unsupported on platform win32
本插件通过 LocalSubprocessRuntime 公开的 terminalInspector 测试钩子注入
WindowsProcessInspector,不修改任何 node_modules 文件:
- 包装运行时的
spawnTerminal,为每个终端创建独立的 inspector; - 把生成的 node-pty 终端 attach 到 inspector,用于通过 ConPTY 输入发送真正的
Ctrl-C(写入
\x03,等价于真实控制台按键,经验证可正确中断 Git Bash 前台命令); - 插件卸载(dispose)时恢复原
spawnTerminal,完全可逆。
接口实现(与 ProcessInspector 完全一致)
| 方法 | Windows 语义 |
|---|---|
foregroundPgid(shellPid) | shell 存活时返回 shellPid(整个 ConPTY 树共享同一控制台,即一个“进程组”) |
isStdinWaiting(pgid) | 恒为 false(Windows 无法读取其他进程的 syscall;就绪判定由 dsh-terminal-bash 的提示符机制承担,与 macOS 实现一致) |
processTree(rootPid) | 基于 Win32_Process 父子关系,children-first、防环,与 POSIX 实现同序 |
processSession(sessionId) | 恒为 [](Windows 无 POSIX session 概念,控制台树即会话边界) |
isAlive(identity) | pid + UTC 创建时间双重比对,防 PID 复用 |
signalGroup(pgid, signal) | SIGINT/SIGBREAK → 向 ConPTY 输入写 \x03;SIGTERM/SIGKILL → taskkill /T /F 整树强杀 |
signalProcess(identity, signal) | 存活校验后 TerminateProcess(Windows 控制台进程无优雅 TERM) |
进程表后端:powershell.exe -NoProfile -NonInteractive + Get-CimInstance Win32_Process
(pid/ppid/session/CreationDate,CreationDate 兼容 DateTime 与 CIM 字符串两种形态),
300ms TTL 缓存,避免 25ms 轮询下重复拉表。