问题域/PD-217

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 报错