Skip to main content

tty7,一个把 shell、SSH 和 coding agent 放在一起的终端工作台

tty7 是用纯 Rust 写的跨平台终端工作台:会话常驻、原生 SSH、识别 Claude Code 等 coding agent。v26.8.1 新增远程工作区和可脚本化的 CLI。这篇整理它的定位、安装和实际跑通的用法。

· 8 min read

介绍

tty7 是一个终端工作台,不只是"再做一个更好看的终端"。它把 shell 会话、SSH 连接和 coding agent 放在同一套界面里:关掉窗口甚至重启机器,shell 还在跑,不用再靠 tmux 保活;pane 里如果跑着 Claude Code、Codex、OpenCode 这类 agent,侧栏会显示状态点、分支和 diff,agent 卡住等你批准时还会弹通知。

底层是纯 Rust。界面走 Zed 的 gpui 做 GPU 渲染,终端 VT 解析用的是 Alacritty 那一套。官方在同一台 M1 Pro 上做过对比:11 MB 纯文本 cat 大约 95 ms,同条件的 Alacritty / Ghostty / Kitty 在 179–239 ms;DOOM-fire 帧率也更高一截。冷启动内存大约 116 MB(GUI 加常驻 server)。

日常输入这块做得很满:历史影子建议、带说明的 Tab 补全、边打边高亮的语法着色、⌃R 模糊搜历史、多行编辑、点一下就能把光标放到任意位置。窗口侧有标签、分屏、⌘P 命令面板、⌘F 回滚搜索,侧栏还能按 git 仓库分组。SSH 不走系统 ssh,是内置的 russh 栈:profile、keychain 凭据、SFTP 面板、端口转发和跳板机都在应用里。

对 coding agent 的支持是外围增强,不是把 agent 包一层。它能识别大约 17 个 CLI agent,在标签和侧栏上显示品牌头像和状态;设置页可以给 Claude Code、Codex、OpenCode、Pi、Grok Build 等装 hooks,用来驱动状态点和会话恢复。重启后相关 pane 会按原来的启动参数把对话续上。v26.8.1 还加了 fork 会话和复制 session id。

这一版真正拉开差距的是两件事。第一是远程工作区:不再只是开一个 SSH 进去的 pane,而是整扇窗口绑定到一台机器。文件树、git 状态、diff 浮层都由远端的 tty7-server 提供,关窗口只是 detach,远端的 shell 和 agent 继续跑,换一台电脑也能接回去。WSL 发行版也会作为 machine 出现在工作区切换里。第二是可脚本化的 tty7 CLI:安装包里自带,启动后会自动挂到 PATH。Coding agent 或脚本可以用 runsendcaptureevents 这些非交互命令驱动 pane,全程支持 --json

项目在 GitHub 上目前大约四百多 star,macOS / Windows / Linux 都有原生安装包。

安装环境

二进制安装不需要额外依赖。去 v26.8.1 release 按平台下载即可:

平台安装包
macOS Apple Silicontty7-26.8.1-macos-arm64.dmg
macOS Inteltty7-26.8.1-macos-x86_64.dmg
Windowstty7-26.8.1-windows-x86_64-setup.exe,或便携版 .zip
Linuxtty7-26.8.1-linux-x86_64.AppImage,或 .tar.gz

macOS 上打开 dmg,把 tty7.app 拖进「应用程序」。第一次打开如果被 Gatekeeper 拦住,在系统设置里允许一次就行。

Linux 的 AppImage 需要先 chmod +x 再运行。Windows 用 setup 安装,或解压 zip 直接跑。

不想从 release 装、非要从源码编的话,仓库是 Cargo workspace,需要较新的 Rust 工具链,还要拉 gpui 相关依赖,构建成本明显高于直接下安装包。日常使用走 release 就够。

运行

装好后从启动台或 Applications 打开 tty7。首次启动会拉起本机的 tty7-server(常驻进程),之后关掉窗口不等于关掉会话——shell 还在 server 这边活着。

CLI 会随应用一起安装。macOS 上常见位置是 /opt/homebrew/bin/tty7 指向 app bundle 里的二进制。新开一个终端,确认一下:

tty7 --version
# tty7 26.8.1

tty7 doctor

doctor 会检查 socket、协议 dialect、配置目录、版本和当前上下文。正常时大致是:

CHECK RESULT
server ok (build 26.8.1)
dialect ok (control v4, protocol v5)
status pid …, up …s, N panes

配置和 socket 默认落在 ~/.config/tty7/

几个常用命令:

# 看本机有哪些 workspace / tab / pane
tty7 ls
tty7 pane ls

# 在新 pane 里跑命令,输出实时流回当前终端,退出码原样返回
tty7 run -- echo hello
tty7 run -- cargo test

# 把某次命令留在 pane 里不立刻关掉
tty7 run --keep -- uname -a

# 读某个 pane 的输出(默认当前 pane;--plain 去掉控制序列)
tty7 capture --plain

# 当前有没有 coding agent 在跑
tty7 agents

# 本机 + 已连接的远程机器
tty7 machine ls

地址可以用 %N 指 pane、@N 指 tab。在 tty7 自己的 shell 里,环境变量 TTY7_PANE / TTY7_WS 已经写好,多数命令不用再手填地址。需要机器可读输出时加 --json;要操作远端机器时加 -m <machine>

远程工作区从应用里的 Home → Connect to Host(或工作区切换器)进入。第一次连上会把 tty7-server 推到那台机器,不需要 sudo,确认一次即可。之后那扇窗口的文件树、git、diff 都来自远端,而不是本机磁盘。

Agent hooks 在 设置 → Agents 里一键安装。装完之后,对应 agent 的状态点、通知、会话恢复和 fork 才有完整数据可依。

效果展示

(此处插入截图:tty7 主界面,左侧按仓库分组的侧栏,某个 pane 里跑着 Claude Code / Codex,状态点和分支 diff 可见)

(此处插入截图:远程工作区窗口,标题绑定到远端机器名,文件树与 git 状态来自远端)

CLI 侧,本机验证过的一组输出可以参考:

$ tty7 status
SERVER
pid …
uptime …
panes 1
dialect control v4, protocol v5
build 26.8.1
socket ~/.config/tty7/control.sock

$ tty7 pane ls
PANE WS TAB CWD LIVE
%1 b63abbb0 @1 … yes

$ tty7 run -- echo "hello from tty7"
hello from tty7

AI-friendly

把下面这段丢给 Claude Code、Codex 这类 AI coding agent,让它照着装并验证:

帮我在当前机器上安装并验证 tty7 v26.8.1(不要从源码编译,直接用 release 二进制):

1. 打开 https://github.com/l0ng-ai/tty7/releases/tag/v26.8.1
2. 按平台下载对应包:
- macOS arm64: tty7-26.8.1-macos-arm64.dmg
- macOS x86_64: tty7-26.8.1-macos-x86_64.dmg
- Windows: tty7-26.8.1-windows-x86_64-setup.exe(或便携 zip)
- Linux: tty7-26.8.1-linux-x86_64.AppImage(或 tar.gz)
3. macOS:挂载 dmg,把 tty7.app 复制到 /Applications,必要时去掉隔离属性(xattr -cr)
Linux AppImage:chmod +x 后直接运行
Windows:跑 setup 或解压 zip
4. 启动一次 tty7 GUI,让它拉起本机 server,并把 CLI 链到 PATH
5. 新开 shell,依次执行并确认成功:
- tty7 --version (应输出 26.8.1)
- tty7 doctor (server / dialect 应为 ok)
- tty7 status
- tty7 run -- echo ok
如果 `tty7` 命令找不到,检查 /opt/homebrew/bin、/usr/local/bin、~/.local/bin 是否在 PATH 里,或直接调用 app bundle 内的 MacOS/tty7。
不要执行卸载以外的破坏性操作;配置目录默认在 ~/.config/tty7/。

卸载和下次运行

卸载(macOS 二进制安装):

# 先退出应用;若只要关窗口、保留会话,用普通退出即可
# 若要连 server 一起停,用托盘菜单里的 Quit and Stop Daemon

rm -rf /Applications/tty7.app
rm -f /opt/homebrew/bin/tty7 /usr/local/bin/tty7 ~/.local/bin/tty7

# 可选:清掉配置、socket 和历史
rm -rf ~/.config/tty7

Windows 用安装器自带的卸载,或删掉解压目录,并确认用户 PATH 里不再指向该目录。Linux 删掉 AppImage / 解压目录即可。

下次运行:不用重新下载。打开 tty7.app(或对应平台的可执行文件)即可;CLI 仍直接用:

tty7 doctor
tty7 ls
tty7 run -- <你的命令>

总结

tty7 面向的是已经把日常工作放进终端的人:要常驻会话、要 SSH,还要并排跑多个 coding agent。它和"更快的终端模拟器"不在同一条线上——会话由本机 server 托管,agent 状态写进侧栏和托盘,v26.8.1 又把整机远程工作区和脚本化 CLI 补上了。目前 star 还不算多,迭代很快;如果主战场已经是 Claude Code / Codex 这类终端 agent,值得装一份试试。