隐藏终端监视器
一种VS Code扩展,用于监视和清理隐藏的终端和扩展主机,以防止违反规则22和MCP不稳定。
特性
- 自动监控:持续监控隐藏的VS Code终端进程和扩展主机
- 实时警报:当隐藏终端计数超过可配置阈值时发出警告
- 手动清理:强制清除隐藏终端的命令选项板操作
- 状态监测:查看被跟踪和隐藏终端的当前状态
- 可配置的:自定义监视间隔、阈值和自动清理行为
命令
Hidden Terminal Watchdog: Force Cleanup-立即清理所有隐藏的终端Hidden Terminal Watchdog: Show Status-显示当前终端状态
配置
watchdog.monitorInterval-检查隐藏终端的间隔(毫秒)(默认值:5000ms)watchdog.maxTerminals-警告前隐藏终端的最大数量(默认值:20)watchdog.autoCleanup-超过阈值时自动清理隐藏的终端(默认值:false)
根本原因
此扩展解决了违反规则22的问题,即生成数十个未使用的终端会导致VS Code扩展主机中的持续资源争用。在繁重的终端负载(100+累积会话)下,MCP客户端连接变得不稳定,引发虚假 cancel-tool-run 信号。
运作原理
- 使用以下命令监视VS Code扩展主机和终端进程
pgrep - 通过VS Code API跟踪所有集成终端
- 检测隐藏的终端(不控制TTY的进程)
- 发送SIGTERM以实现正常关机,然后在需要时发送SIGKILL
- 将所有活动记录到输出通道以进行取证分析
安装
快速安装(推荐)
cd hidden-terminal-watchdog
./force-package.sh此脚本将:
- 清洁构建扩展
- 创建VSIX包
- 自动安装
- 验证安装
安装后, 重新加载VS代码 (Ctrl+Shift+P→ “重新加载窗口”)
手动安装
# Build the extension
npm install
npm run compile
# Package and install
./force-package.sh
# Or install manually
code --install-extension hidden-terminal-watchdog-1.0.0.vsix --force用法
命令
打开命令面板(Ctrl+Shift+P):
Hidden Terminal Watchdog: Show Status-显示当前终端计数和隐藏进程Hidden Terminal Watchdog: Force Cleanup-手动清除所有隐藏的终端
日志文件位置
日志被写入VS Code的全局存储:
~/.config/Code/User/globalStorage/prf-compliance.hidden-terminal-watchdog/watchdog.log输出示例
[2026-02-14T23:33:54.228Z] === Hidden Terminal Watchdog Activated ===
[2026-02-14T23:34:02.723Z] [INFO] Terminal opened: augment-bash-test (tracked: 1)
[2026-02-14T23:34:03.775Z] [INFO] Terminal closed: augment-bash-test (tracked: 0)
[2026-02-14T23:34:54.231Z] [HEARTBEAT] Watchdog active. Tracked: 0, Last hidden: 0
[2026-02-14T23:35:54.231Z] [HEARTBEAT] Watchdog active. Tracked: 2, Last hidden: 0 | Events (60s): 2 opened, 1 closed, 1 monitor | Recent: [45s ago] [INFO] Terminal opened: bash (tracked: 1); [30s ago] [INFO] Terminal opened: zsh (tracked: 2); [15s ago] [MONITOR] Detected 0 hidden terminals/processes心跳特征:
- 显示当前跟踪的终端和上次隐藏的计数
- 按类型(打开、关闭、监视、清理、警告、系统)总结过去60秒内的事件
- 显示带有时间戳的最后3条事件消息
- 有助于诊断终末积聚模式和MCP不稳定性
故障排除
扩展未激活
- 检查输出面板:视图→ 输出→ “隐藏终端监视器”
- 验证安装:
code --list-extensions | grep hidden-terminal-watchdog - 重新加载窗口:Ctrl+Shift+P→ “重新加载窗口”
命令未出现
- 确保已安装扩展:
code --list-extensions - 检查输出面板中的激活错误
- 重新安装:
./force-package.sh
发展
从源代码构建
git clone https://github.com/swipswaps/hidden-terminal-watchdog.git
cd hidden-terminal-watchdog
npm install
npm run compile项目结构
hidden-terminal-watchdog/
├── src/
│ └── extension.ts # Main extension code
├── out/
│ └── extension.js # Compiled output
├── package.json # Extension manifest
├── tsconfig.json # TypeScript config
├── force-package.sh # Build and install script
└── README.md # This file许可证
麻省理工学院
学分
旨在解决Augment VSCode扩展取证调查中违反规则22的问题。
链接
- GitHub: https://github.com/swipswaps/hidden-terminal-watchdog
- 问题: https://github.com/swipswaps/hidden-terminal-watchdog/issues
