返回列表

博客

超越 SSH:为什么 WebSocket 更适合 AI 编程智能体

SSH 为交互式人工会话设计,AI 编程智能体需要不同的东西。这里解释 WebSocket 为何是更好的选择。

发布于 标签: 工程 / 架构 / 对比 / SEO
博客

继续查看该栏目下的产品与工程更新。

浏览此分类

"为什么不直接 SSH 到 Mac?"——这是开发者第一次听说从手机控制 Claude Code 时的典型反应。

SSH 成熟、安全、无处不在。但 AI 编程智能体的交互模式与交互式 Shell 有根本区别,这些差异叠加后会导致更差的体验。

交互模型不匹配

SSH 设计于 1995 年,面向一种模型:人坐在终端前,输入命令,读取输出。会话是交互式同步的。

AI 编程智能体颠覆了这一模型:

SSH(交互式 Shell)AI 智能体控制
会话时长数分钟到数小时的主动使用数小时到数天,多为空闲监控
人类注意力持续间歇性——收到通知时查看
输入模式频繁击键偶尔提示 + 审批决策
输出模式响应你的命令长时间自主输出流,扫读而非细读
关键事件你在盯着所以能看到不盯着就可能错过

问题 1:无推送通知

AI 编程的最佳工作流是:发送任务 → 放下手机 → 收到完成通知 → 查看继续。

SSH 无法做到第三步。SSH 协议没有向移动设备推送通知的机制。

WebSocket 方案: 服务器监控 Claude Code 输出和 hook 事件,检测到完成或审批请求时,通过 WebSocket 推送结构化事件,iOS 应用将其转为原生推送通知。

问题 2:iOS 后台行为

iOS 会积极挂起后台应用。SSH 客户端进入后台约 30 秒后网络连接被断开,重新打开时"broken pipe"。Mosh 稍好但仍无法解决通知问题。

WebSocket 方案: 服务器缓冲终端输出,不受客户端连接状态影响。iOS 应用回到前台后自动重连,多阶段状态恢复(0.2s、0.7s、1.5s),同时关键事件在应用挂起时也能以推送通知送达。

问题 3:会话状态管理

多个并行任务时,SSH 需要手动 tmux attach -t session-a,逐个切换、检查、断开——在手机键盘上操作很痛苦。

WebSocket 方案: 服务器将会话管理暴露为结构化命令。iOS 应用显示会话列表和状态,点击切换,创建新会话时可浏览 Mac 文件系统选择路径。

问题 4:智能体事件语义

SSH 传输原始字节,不理解终端中发生的事情。Claude Code 有 hook 系统在特定事件触发脚本,但 SSH 没有干净的方式路由这些事件。

WebSocket 方案: 服务器通过 HTTP POST 接收 hook 事件,解析、去重(3 秒窗口),通过同一 WebSocket 连接推送到 iOS 应用。一条连接,多种数据类型。

问题 5:认证与访问控制

SSH 认证在移动端使用不便:iOS 密钥管理不方便、需要配置 sshd、端口转发需要额外设置。

WebSocket 方案: Tactic Remote 使用 API Key 认证。局域网连接 API Key 可选,Cloudflare Tunnel 连接必须。Mac 应用生成 32 字符随机密钥,通过 QR 码传输。

SSH 仍然更好的场景

  • 管理多台服务器
  • 需要文件传输(SFTP/SCP)
  • 使用非 Claude 工具
  • 需要端口转发
  • 合规要求 SSH

架构图

iPhone App                    Mac Server                    Claude Code
    │                             │                              │
    │  WebSocket (ws:// or wss://)│                              │
    │◄───────────────────────────►│  tmux send-keys              │
    │  • Terminal I/O             │─────────────────────────────►│
    │  • Session commands         │  tmux capture-pane           │
    │  • Event stream             │◄─────────────────────────────│
    │                             │                              │
    │  Push notification          │  HTTP POST /hook             │
    │◄────────────────────────────│◄─────────────────────────────│
    │  (via WebSocket event)      │  (Claude Code hook scripts)  │
    │                             │                              │

关于 Mosh

Mosh 使用 UDP 改善了移动 SSH 体验(网络漫游、连接持久性、本地回显),但仍不解决核心问题:无推送通知、无智能体事件感知、无结构化会话管理。

结论

问题不是"SSH 还是 WebSocket"的抽象协议对比,而是"你的工作流需要什么交互模型"。

管理服务器和运行交互命令,SSH 是正确的协议。控制一个自主运行的 AI 智能体、需要间歇性关注和推送通知,专为此设计的 WebSocket 架构能解决 SSH 无法解决的问题。

立即体验 Tactic Remote

用手机远程控制编程 Agent

连接 Mac、Windows 或 Linux 电脑上的 Claude Code、Codex 等 Agent,在 iPhone 或 iPad 上查看进展并发送下一条要求。