Web 终端集成
Web Terminal Integration
通过 ttyd 进程池为每个 session 提供 Web 终端访问,支持端口池化和健康检查
子问题
1.ttyd 进程生命周期管理
2.端口分配与回收
3.tmux session 名称解析
4.WebSocket 代理与 CORS
5.xterm.js 缺失 XDA 响应导致 tmux 剪贴板失效
6.双通道方案的选择与渐进增强策略
7.node-pty 与 Node.js 版本兼容性约束
各项目的解法1 solutions
Signals
横向对比
| 维度 | agent-orchestrator |
|---|---|
| 终端后端 | 双通道:ttyd iframe(稳定基线)+ node-pty WebSocket 直连(增强方案) |
| 端口管理 | 7800-7900 端口池,Set 存储回收端口,仅 clean exit 回收避免 TIME_WAIT |
| session 解析 | 两阶段:tmux = 精确匹配 + 12 位 hex hash 前缀 fallback |
| 协议兼容 | xterm.js 注册 CSI > q handler 响应 XTerm(370),修复 tmux 剪贴板 |
| 进程安全 | once() 替代 on() 防双重清理 + 引用守卫防竞态删除 |
| 前端集成 | xterm.js 动态 import 避免 SSR + FitAddon 响应式 + fullscreen URL 同步 |
最佳实践
1.端口池化避免 TIME_WAIT 问题
2.once(exit) 替代 on(exit) 防重复清理
3.进程引用守卫防止竞态条件下的 session 条目误删
4.createServer 工厂函数分离创建与监听以支持测试
5.xterm.js 动态 import 避免 Next.js SSR 报错