断开,不等于结束。
点一下拔掉网线:客户端 detach,shell 继续跑。恢复时只补断线期间的那几个字节。
终端编排 · 一条 WebSocket · 桌面 / Web / 手机
NO. 001 — 2026
不是又一层远程桌面。Beacon 让同一组真实 shell 同时存在于三个客户端里,并且始终知道谁在写入。
锁屏、合盖、Wi-Fi 闪断只是客户端离开。进程和 PTY 留在主机,重连时按字节偏移续上,不重放、不丢失。
一个 PTY 只有一条 stdin。纪元租约保证同一时刻只有一个控制端,其余客户端实时镜像,接管是一次明确的动作。
受控机器主动外联中继,不需要公网 IP、入站端口或 VPN。中继只配对字节流,不接触 PTY,也不接触密钥。
下面三块都可以点,不是截图。
点一下拔掉网线:客户端 detach,shell 继续跑。恢复时只补断线期间的那几个字节。
两端都能看见同一屏,但只有一端能输入。在手机上接管是一次显式动作,纪元随之递增。
公网中继负责配对,不负责解释。受控机器只建立一条出站连接,浏览器和手机从另一侧接上。
SSH、tmux、tmate 各有各的解法。Beacon 把「多端附着」当成第一性问题。
| 能力 | Beacon | SSH | tmux | tmate |
|---|---|---|---|---|
| 免入站端口 | ●出站中继 | —需要可达主机 | —随 SSH | —需公网主机 |
| 单一写入者 | ●租约仲裁 | — | — | — |
| 断线续接 | ●字节偏移 | —进程中止 | —重新挂载 | —容易断流 |
| 原生桌面端 | ●Mygo · ~15 MB | — | — | — |
| 手机修饰键条 | ●内置 | — | — | — |
| 每个会话在做什么 | ●五态 · ⌘J | — | —只有响铃 | — |
按各方案的默认形态比较;tmux 可以借 SSH 隧道达到部分效果。
从源码构建,或直接取 Release 里的二进制。自包含,没有运行时依赖。
tfd 持有 PTY,默认监听 127.0.0.1:7678。
可选。tfrelay 只做流配对与鉴权,不持有任何 shell。
tfdesktop 和 Web 客户端附着到同一批会话。
# 从源码构建(Go + pnpm) git clone https://github.com/CarlOpenLab/term-fleet.git cd term-fleet && pnpm run build # 起守护进程:真实 PTY,走一条 WebSocket ./bin/tfd # → http://127.0.0.1:7678
# 公网中继:只配对字节流 ./bin/tfrelay -addr 127.0.0.1:7698 -devices devices.json # 受控机器主动外联,不开入站端口 ./bin/tfd -relay wss://relay.example.com/relay/agent