diff --git a/README.md b/README.md index 3bd762c7..0e848f8e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@
- +tty7 -

tty7

+### tty7 -**The terminal that outlives its window.** +**A terminal workbench: persistent sessions, remote work, agents.** Pure Rust · GPU rendering on Zed's gpui · VT core from Alacritty @@ -12,8 +12,9 @@ [![CI](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml/badge.svg)](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml) [![Version](https://img.shields.io/github/v/release/l0ng-ai/tty7?label=version&color=3FDD8C)](https://github.com/l0ng-ai/tty7/releases) -[![Platforms](https://img.shields.io/badge/platforms-macOS%20%C2%B7%20Windows%20%C2%B7%20Linux-3FDD8C)](https://github.com/l0ng-ai/tty7/releases) -[![License](https://img.shields.io/badge/license-Apache--2.0-3FDD8C)](LICENSE) +[![Platforms](https://img.shields.io/badge/platforms-macOS%20%C2%B7%20Windows%20%C2%B7%20Linux-blue)](https://github.com/l0ng-ai/tty7/releases) +[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE) +[![Discord](https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/s3dethqz2V) English · [简体中文](README.zh-CN.md) @@ -21,123 +22,44 @@ One-minute tour of tty7: agents across repos, one agent driving another through the CLI, the prompt editor, diffs, dragging panes, and sessions that survive quitting the app +▶ Watch in full quality +
-
+## Why -Most terminals tie your shells to a window. Close the window and the shells die -with it. So people run tmux inside their terminal to keep them alive, which -works, but it means learning a second set of keys and keeping a second config -file, just to get around the window. +A background server owns your shells and panes — not the window. Everything +below follows from that. -tty7 takes a simpler approach. The shells belong to a server running in the -background, and the window only shows them. Close the window and nothing happens -to the shells. Most of what's interesting about tty7 follows from that one -decision. - -## Quitting doesn't kill anything - -Quit tty7 and every shell keeps running. Your build doesn't notice. - -A reboot is different. The processes are gone, because that's what a reboot -does. But each pane comes back with its layout and the last of what was on -screen, and supported agents pick up the same conversation where they left off. - -You don't need tmux for any of this, and there's nothing to configure. - -→ [What survives what](docs/getting-started/concepts.mdx) - -## Agents that run agents - -A lot of people now run several coding agents at once, in several repos. Which -means spending the day switching between windows to see which one finished and -which one is waiting for an answer. That's not work a person should have to do. - -tty7 recognizes 26 coding CLIs, including Claude Code, Codex, Gemini, Cursor, -and OpenCode, and puts all of them in one sidebar: whether each is working or -waiting, a notification when one needs you, and its branch and diff. You can see -at a glance which one wants you. - -Once an agent's status is something a program can ask about, the one asking -doesn't have to be you. It can be another agent. The whole loop is four -commands, with no framework, and it works whether or not the GUI is open: - -```sh -PANE=$(tty7 split --v) # give the worker a pane -tty7 send "$PANE" 'claude "add tests for the parser"' --enter -tty7 wait "$PANE" --until waiting,done --changed --timeout 600 # until it's done or stuck -tty7 capture "$PANE" --plain # read what happened -``` - -tty7 doesn't wrap the agents or sit between you and them. The agent you start -is the real one, running in an ordinary PTY. Simple things are more likely to -keep working. - -→ [Orchestrating agents](docs/agents/orchestration.mdx) · -[agent skill](skills/tty7/SKILL.md) · [full support matrix](#supported-agents) - -## Remote is the same thing - -A remote workspace is the same server, running on the other machine. The window -here just shows it. Tabs, panes, the file tree, git, and diffs all live over -there, and no files get synced. Connect from a different laptop and everything -is where you left it. - -So remote isn't really a separate feature. It's the local case with the server -somewhere else. - -The SSH client is tty7's own, written in Rust, so it doesn't depend on the -system's ssh. It has profiles with keychain secrets, jump hosts, SFTP, and -automatic port forwarding. The remote `tty7-server` installs once and doesn't -need root. - -→ [Remote workspaces](docs/remote/workspaces.mdx) - -## Speed - -Speed isn't the point of tty7, but it shouldn't be a weakness either, and it -turns out not to be. `cat` on an 11 MB file takes 95 ms; the next fastest -terminal we measured takes 179. DOOM-fire runs at 888 fps; the next best manages -617. The method and scripts are public, and one command reproduces them. - -| | **tty7** | Alacritty | Ghostty | Kitty | -|---|---:|---:|---:|---:| -| Plaintext I/O — 11 MB `cat` (lower = better) | **95 ms** | 239 ms | 179 ms | 185 ms | -| [DOOM-fire](https://github.com/const-void/DOOM-fire-zig) frame rate (higher = better) | **888 fps** | 485 fps | 552 fps | 617 fps | -| Cold-launch memory | 116 MB¹ | 105 MB | 128 MB | 130 MB | - -Apple M1 Pro, macOS 26.3.1, 155×40 grid, five-run averages, 2026-07-04. ¹ GUI 105 MB + the persistent server 11 MB. -Methodology and one-command reproduction: [`scripts/bench/`](scripts/bench/README.md). - -## Everything else - -The rest is details, but details are most of what makes a tool pleasant to use. -The prompt has suggestions from your history, tab completion that explains each -option, syntax highlighting, and real multi-line editing, and ⌃ R -searches your history. ⌘ P searches everything. ⌘ J opens -a side panel with processes, ports, files, changes, and GitHub issues and PRs. -Shell integration works in zsh, bash, fish, PowerShell, and WSL without -installing anything. - -→ [Full documentation](docs/) · [keyboard shortcuts](docs/reference/keyboard-shortcuts.mdx) · -[config.json](docs/reference/configuration.mdx) · [CLI reference](docs/cli/reference.mdx) +- **Performance** — ~2× the throughput of Alacritty, Ghostty, or Kitty ([benchmarks](#benchmarks)) +- **Persistent sessions** — quit the app and your shells keep running; after a reboot, layout, screen, and supported agent conversations come back. No tmux +- **Agent-aware** — Claude Code, Codex & co.: status, notifications, and git context for every repo at once +- **Scriptable by agents** — one agent opens a pane for another, hands off a task, waits, and reads the result, with or without the GUI running +- **Editor-grade input** — suggestions, completion, highlighting, history search, with no plugin to install +- **Remote development** — files, repos, panes, and git data stay on the remote machine, over a native SSH stack ## Install -Native builds on [**Releases**](https://github.com/l0ng-ai/tty7/releases/latest): +Native builds for macOS, Windows, and Linux on [**Releases**](https://github.com/l0ng-ai/tty7/releases): + +| | | | +|---|---|---| +| **macOS** | `…-macos-arm64.dmg` · `…-x86_64.dmg` | drag into Applications | +| **Windows** | `…-setup.exe` · portable `….zip` | | +| **Linux** | `…-x86_64.AppImage` | `chmod +x` and run — X11/Wayland libraries bundled | + +## What's inside | | | |---|---| -| **macOS** | `.dmg` for Apple silicon or Intel — drag into Applications | -| **Windows** | `-setup.exe`, or the portable `.zip` | -| **Linux** | `.AppImage` — `chmod +x` and run; X11/Wayland libraries bundled | - -Give your agents the CLI skill: - -```sh -npx skills add l0ng-ai/tty7 # install -npx skills update tty7 # update later -``` +| **Agent-aware** | per-pane detection (26 CLIs) · status dot · notifications · branch + diff · tray icon when input is needed · resume after reboot · reopen any past session from Search Everywhere · one-key launch · tab sidebar grouped by repository, with pinned groups | +| **CLI + Skills** | bundled `tty7` CLI · [agent skill](skills/tty7/SKILL.md) · `run` streams a command and exits with its code · `split` · `send` · `wait --until free` · `capture` | +| **Editor-grade input** | ghost suggestions from history · explained tab completion · syntax highlighting · multi-line editing · click places the caret · ⌃ R fuzzy history | +| **Window** | tabs & splits · ⌘ P Search Everywhere · ⌘ F scrollback search · hibernate a tab to free its memory · IME | +| **Side panel** | ⌘ J · process tree and listening ports · file tree · changes and diffs · find in files · GitHub issues and pull requests, read-only, signed in through `gh` | +| **Shell integration** | injected when a pane starts, nothing to install · prompt marks · working directory · exit codes · command-finished notifications · zsh, bash, fish, PowerShell, WSL, remote panes | +| **Remote workspaces** | remote files, repos, changes, diffs, worktrees, tabs, and panes · reconnect from any client and continue where you left off | +| **SSH** | native russh stack: profiles with keychain secrets · SFTP panel · port forwarding · jump hosts · one-time, unprivileged `tty7-server` install | ## Supported agents @@ -149,20 +71,20 @@ that tells tty7 which session to fork. **Past sessions** are read from the agent own history files and listed in Search Everywhere, where ⏎ resumes one.
-The full support matrix +The full support matrix, all twenty-six | Agent | Detected | Status · resume | Fork | Past sessions | |---|:-:|:-:|:-:|:-:| | **Claude Code** | ✓ | ✓ | ✓ | ✓ | | **Codex** | ✓ | ✓ | ✓ | ✓ | -| **TraeCode** | ✓ | ✓ | ✓ | | -| **Grok** | ✓ | ✓ | ✓ | | +| **TraeCode** | ✓ | ✓ | ✓ | | +| **Grok** | ✓ | ✓ | ✓ | | | **OpenCode** | ✓ | ✓ | ✓ | ✓ | | **Oh My Pi** | ✓ | ✓ | ✓ | ✓ | -| **Prime Agent** | ✓ | ✓ | ✓ | | +| **Prime Agent** | ✓ | ✓ | ✓ | | | **Droid** | ✓ | ✓ | ✓ | ✓ | | **Qwen Code** | ✓ | ✓ | ✓ | ✓ | -| **Goose** | ✓ | ✓ | ✓ | | +| **Goose** | ✓ | ✓ | ✓ | | | **Qoder CLI** | ✓ | ✓ | ✓ | ✓ | | **Qoder CN CLI** | ✓ | ✓ | ✓ | ✓ | | **CodeBuddy** | ✓ | ✓ | ✓ | ✓ | @@ -170,18 +92,55 @@ own history files and listed in Search Everywhere, where ⏎ resumes | **Copilot** | ✓ | ✓ | | ✓ | | **Kimi Code** | ✓ | ✓ | | ✓ | | **Pi** | ✓ | ✓ | | ✓ | -| **Crush** | ✓ | ✓ | | | -| **Antigravity** | ✓ | ✓ | | | +| **Crush** | ✓ | ✓ | | | +| **Antigravity** | ✓ | ✓ | | | | **Cursor** | ✓ | ✓ | | ✓ | -| Aider | ✓ | | | | -| Amp | ✓ | | | | -| Auggie | ✓ | | | | -| Hermes | ✓ | | | | -| Vibe | ✓ | | | | -| Empryo | ✓ | | | | +| Aider | ✓ | | | | +| Amp | ✓ | | | | +| Auggie | ✓ | | | | +| Hermes | ✓ | | | | +| Vibe | ✓ | | | | +| Empryo | ✓ | | | |
+None of them are wrapped or proxied — the agent you start is the agent you get, +in a normal PTY, with its own interface. An agent launched through a wrapper +script can be mapped to one by name with `agent_commands` in `config.json`. +Every agent on your `PATH` is also a row in Search Everywhere (**Agent: Claude Code**, …) +that opens it in a new tab, and the New Tab menu names the ones you have actually +run. `agent_launch` sets the command line it starts with. + +## Documentation + +Full documentation lives in [**`docs/`**](docs/) — +[keyboard shortcuts](docs/reference/keyboard-shortcuts.mdx) · +[config.json](docs/reference/configuration.mdx) · +[CLI reference](docs/cli/reference.mdx). The agent-facing CLI interface is also +documented in [skills/tty7/SKILL.md](skills/tty7/SKILL.md). + +Install the skill with: + +```sh +npx skills add l0ng-ai/tty7 # install +npx skills update tty7 # update later +``` + +## Benchmarks + +Same machine, same day, same 155×40 grid — Apple M1 Pro, macOS 26.3.1, +five-run averages (2026-07-04): + +| | **tty7** | Alacritty | Ghostty | Kitty | +|---|---:|---:|---:|---:| +| Plaintext I/O — 11 MB `cat` (lower = better) | **95 ms** | 239 ms | 179 ms | 185 ms | +| [DOOM-fire](https://github.com/const-void/DOOM-fire-zig) frame rate (higher = better) | **888 fps** | 485 fps | 552 fps | 617 fps | +| Cold-launch memory | 116 MB¹ | 105 MB | 128 MB | 130 MB | + +¹ GUI 105 MB + the persistent server 11 MB. + +Methodology and one-command reproduction: [`scripts/bench/`](scripts/bench/README.md). + ---
diff --git a/README.zh-CN.md b/README.zh-CN.md index 5d753016..748c5242 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,10 +1,10 @@
- +tty7 -

tty7

+### tty7 -**关掉窗口,终端还在。** +**终端工作台:会话常驻、远程开发、原生支持 agent。** 纯 Rust · GPU 渲染基于 Zed 的 gpui · VT 内核来自 Alacritty @@ -12,8 +12,9 @@ [![CI](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml/badge.svg)](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml) [![Version](https://img.shields.io/github/v/release/l0ng-ai/tty7?label=version&color=3FDD8C)](https://github.com/l0ng-ai/tty7/releases) -[![Platforms](https://img.shields.io/badge/platforms-macOS%20%C2%B7%20Windows%20%C2%B7%20Linux-3FDD8C)](https://github.com/l0ng-ai/tty7/releases) -[![License](https://img.shields.io/badge/license-Apache--2.0-3FDD8C)](LICENSE) +[![Platforms](https://img.shields.io/badge/platforms-macOS%20%C2%B7%20Windows%20%C2%B7%20Linux-blue)](https://github.com/l0ng-ai/tty7/releases) +[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE) +[![Discord](https://img.shields.io/badge/Discord-%E5%8A%A0%E5%85%A5%E8%AE%A8%E8%AE%BA-5865F2?logo=discord&logoColor=white)](https://discord.gg/s3dethqz2V) [English](README.md) · 简体中文 @@ -21,126 +22,66 @@ tty7 一分钟演示:多仓库 agent、一个 agent 通过 CLI 驱动另一个、提示符编辑器、diff、拖动 pane、退出应用后会话仍在运行 +▶ 观看高清版 +
-
+## 为什么 -大部分终端把 shell 挂在窗口上。窗口一关,shell 就跟着死了。为了不让它死,大家又在终端里再套一层 -tmux,学一套新的快捷键,写一份配置文件。这是在窗口的限制上再加一层绕路。 +shell 和窗格由后台常驻的 server 持有,而不是窗口。下面这些特性几乎都源自这一设计。 -tty7 的做法很简单:shell 归后台的 server 管,窗口只负责显示。窗口关了,shell 照样活着。 -下面这些特性,几乎都是从这一点自然推出来的,并不需要额外发明什么。 - -## 退出应用,会话不断 - -退出 tty7,所有 shell 原地接着跑,编译不会断。 - -重启电脑,进程当然没了,这是操作系统层面的事。但布局和屏幕上最后的内容会回来, -已支持的 agent 也会接上原来的对话。 - -不需要 tmux,不需要配置。 - -→ [退出、重启后分别保留什么](docs/getting-started/concepts.mdx) - -## agent 指挥 agent - -现在很多人同时开好几个 agent,在好几个仓库里干活,然后就在窗口之间来回切,看哪个跑完了, -哪个在等你回话。这种事不应该由人来做。 - -tty7 能认出 26 个编程 CLI(Claude Code、Codex、Gemini、Cursor、OpenCode 等),把它们的状态、 -通知、分支和 diff 放在同一个侧边栏里。哪个需要你,一眼就知道。 - -再往前走一步:既然状态能用命令查到,那调度 agent 的就不一定是人,也可以是另一个 agent。 -整个流程就四行,不需要任何框架,GUI 不开也能跑: - -```sh -PANE=$(tty7 split --v) # 给干活的 agent 开个 pane -tty7 send "$PANE" 'claude "add tests for the parser"' --enter -tty7 wait "$PANE" --until waiting,done --changed --timeout 600 # 等它做完,或卡住需要人 -tty7 capture "$PANE" --plain # 读取输出 -``` - -tty7 不给 agent 套壳,也不做代理。你启动的就是原版 agent,跑在普通的 -PTY 里。简单的东西才可靠。 - -→ [编排 agent](docs/agents/orchestration.mdx) · -[agent skill](skills/tty7/SKILL.md) · [完整支持矩阵](#支持的-agent) - -## 远程机器也一样 - -远程工作区就是在远端跑同一个 server,本地只负责显示。标签页、pane、文件树、git、diff -都在远端,文件不用同步。换台电脑连上去,还是你离开时的样子。 - -这跟本地其实是同一件事,只不过 server 换了个地方。 - -SSH 是 tty7 自己用 Rust 实现的,不依赖系统的 ssh。profile、keychain、跳板机、SFTP、端口自动转发都有。 -远端的 `tty7-server` 装一次就好,不需要 root。 - -→ [远程工作区](docs/remote/workspaces.mdx) - -## 性能 - -性能不是 tty7 的卖点,但也不能是短板。`cat` 一个 11 MB 的文件,tty7 用 95 ms,第二名 179 ms。 -DOOM-fire 跑到 888 fps,第二名 617 fps。测试方法和脚本都公开,一条命令就能复现。 - -| | **tty7** | Alacritty | Ghostty | Kitty | -|---|---:|---:|---:|---:| -| 纯文本 I/O:`cat` 一个 11 MB 文件 (越低越好) | **95 ms** | 239 ms | 179 ms | 185 ms | -| [DOOM-fire](https://github.com/const-void/DOOM-fire-zig) 帧率 (越高越好) | **888 fps** | 485 fps | 552 fps | 617 fps | -| 冷启动内存 | 116 MB¹ | 105 MB | 128 MB | 130 MB | - -Apple M1 Pro,macOS 26.3.1,155×40 网格,五次取平均,2026-07-04。¹ GUI 占 105 MB,常驻 server 占 11 MB。 -测试方法与一条命令复现:[`scripts/bench/`](scripts/bench/README.md)。 - -## 其他功能 - -剩下的都是细节,但细节做对了,用起来就是顺手。提示符有历史建议、带说明的 Tab 补全、语法高亮、 -多行编辑,⌃ R 模糊搜索历史。⌘ P 随处搜索,⌘ J 打开侧边面板, -看进程、端口、文件、改动,还有 GitHub 的 issue 和 PR。shell 集成覆盖 zsh、bash、fish、PowerShell -和 WSL,什么都不用装。 - -→ [完整文档](docs/)(英文)· [快捷键](docs/reference/keyboard-shortcuts.mdx) · -[config.json](docs/reference/configuration.mdx) · [CLI 参考](docs/cli/reference.mdx) +- **性能**:吞吐是 Alacritty、Ghostty、Kitty 的两倍左右([基准测试](#基准测试)) +- **会话常驻**:退出应用,shell 照常运行;重启机器后,布局、屏幕内容和已支持的 agent 对话都会回来。不需要 tmux +- **Agent 感知**:Claude Code、Codex 等 agent 的状态、通知和 git 上下文,多个仓库一屏看完 +- **可被 agent 驱动**:一个 agent 能给另一个开 pane、派活、等它跑完、读走结果,GUI 开不开都行 +- **编辑器级输入**:建议、补全、高亮、历史搜索,不用装任何插件 +- **远程开发**:文件、仓库、pane 和 git 信息都留在远端机器上,走自带的 SSH 栈 ## 安装 -到 [**Releases**](https://github.com/l0ng-ai/tty7/releases/latest) 下载对应平台的安装包: +macOS、Windows、Linux 的原生构建都在 [**Releases**](https://github.com/l0ng-ai/tty7/releases): + +| | | | +|---|---|---| +| **macOS** | `…-macos-arm64.dmg` · `…-x86_64.dmg` | 拖进「应用程序」 | +| **Windows** | `…-setup.exe` · 免安装 `….zip` | | +| **Linux** | `…-x86_64.AppImage` | `chmod +x` 后直接运行,X11/Wayland 的库已打包在内 | + +## 有什么 | | | |---|---| -| **macOS** | `.dmg`,Apple 芯片和 Intel 各一版,拖进「应用程序」即可 | -| **Windows** | `-setup.exe`,或免安装的 `.zip` | -| **Linux** | `.AppImage`,`chmod +x` 后直接运行,X11/Wayland 依赖已打包 | - -给 agent 装上 tty7 的 skill: - -```sh -npx skills add l0ng-ai/tty7 # 安装 -npx skills update tty7 # 后续更新 -``` +| **Agent 感知** | 逐 pane 识别 26 个 CLI agent · 状态点 · 通知 · 分支 + diff · 需要输入时托盘图标提醒 · 重启后续上会话 · 在随处搜索里找回任意历史会话 · 一键启动 · 侧边栏按仓库分组,可置顶 | +| **CLI + Skills** | 安装包自带 `tty7` CLI · [agent skill](skills/tty7/SKILL.md) · `run` 转发命令输出并原样返回退出码 · `split` · `send` · `wait --until free` · `capture` | +| **编辑器级输入** | 基于历史的内联补全建议 · Tab 补全附带说明 · 语法高亮 · 多行编辑 · 点击定位光标 · ⌃ R 模糊搜索历史 | +| **窗口** | 标签页与分屏 · ⌘ P 随处搜索 · ⌘ F 回滚搜索 · 休眠标签页以释放内存 · 输入法 | +| **侧边面板** | ⌘ J · 进程树与监听端口 · 文件树 · 改动与 diff · 在文件中查找 · GitHub issue 与 PR(只读,通过 `gh` 登录) | +| **Shell 集成** | pane 启动时自动注入,不用你装什么 · 提示符边界 · 工作目录 · 退出码 · 命令跑完发通知 · 覆盖 zsh、bash、fish、PowerShell、WSL 和远程 pane | +| **远程工作区** | 远端的文件、仓库、改动、diff、worktree、标签页和 pane · 从任意客户端重连,接着离开时的位置继续 | +| **SSH** | 自带 russh 实现,不依赖外部 ssh:profile 凭据存入 keychain · SFTP 面板 · 端口转发 · 跳板机 · `tty7-server` 只需安装一次,无需 root | ## 支持的 agent **识别**无需配置:品牌头像、分支与 diff、标签页标题。 -**状态**要在「设置 → 集成」里为对应 agent 装一个 hook(点一下就行)。装好后才有状态点、通知、托盘提醒、`tty7 wait`,以及重启后恢复会话。 -**Fork** 需要两个条件:agent 本身有 fork 命令,并且装了 hook,这样 tty7 才知道要 fork 哪个会话。 -**历史会话**直接读 agent 自己的历史文件,列在随处搜索里,回车即可恢复。 +**状态**需要在设置 → 集成 中为该 agent 安装 hook,一次点击,之后才有状态点、通知、托盘提醒、`tty7 wait` 和重启后恢复会话。 +**Fork** 两个条件都要:agent 自己提供 fork 命令,且 hook 已装——tty7 得知道 fork 的是哪个会话。 +**历史会话**从 agent 自己的历史文件读取,列在随处搜索里,⏎ 即可续上。
-完整支持矩阵 +26 个 agent 的完整支持矩阵 | Agent | 识别 | 状态 · 重启恢复 | Fork | 历史会话 | |---|:-:|:-:|:-:|:-:| | **Claude Code** | ✓ | ✓ | ✓ | ✓ | | **Codex** | ✓ | ✓ | ✓ | ✓ | -| **TraeCode** | ✓ | ✓ | ✓ | | -| **Grok** | ✓ | ✓ | ✓ | | +| **TraeCode** | ✓ | ✓ | ✓ | | +| **Grok** | ✓ | ✓ | ✓ | | | **OpenCode** | ✓ | ✓ | ✓ | ✓ | | **Oh My Pi** | ✓ | ✓ | ✓ | ✓ | -| **Prime Agent** | ✓ | ✓ | ✓ | | +| **Prime Agent** | ✓ | ✓ | ✓ | | | **Droid** | ✓ | ✓ | ✓ | ✓ | | **Qwen Code** | ✓ | ✓ | ✓ | ✓ | -| **Goose** | ✓ | ✓ | ✓ | | +| **Goose** | ✓ | ✓ | ✓ | | | **Qoder CLI** | ✓ | ✓ | ✓ | ✓ | | **Qoder CN CLI** | ✓ | ✓ | ✓ | ✓ | | **CodeBuddy** | ✓ | ✓ | ✓ | ✓ | @@ -148,18 +89,51 @@ npx skills update tty7 # 后续更新 | **Copilot** | ✓ | ✓ | | ✓ | | **Kimi Code** | ✓ | ✓ | | ✓ | | **Pi** | ✓ | ✓ | | ✓ | -| **Crush** | ✓ | ✓ | | | -| **Antigravity** | ✓ | ✓ | | | +| **Crush** | ✓ | ✓ | | | +| **Antigravity** | ✓ | ✓ | | | | **Cursor** | ✓ | ✓ | | ✓ | -| Aider | ✓ | | | | -| Amp | ✓ | | | | -| Auggie | ✓ | | | | -| Hermes | ✓ | | | | -| Vibe | ✓ | | | | -| Empryo | ✓ | | | | +| Aider | ✓ | | | | +| Amp | ✓ | | | | +| Auggie | ✓ | | | | +| Hermes | ✓ | | | | +| Vibe | ✓ | | | | +| Empryo | ✓ | | | |
+tty7 不包装、不代理其中任何一个 —— 你启动的就是那个 agent 本身,运行在普通 PTY 中,界面仍然是它自己的。 +如果你通过 wrapper 脚本启动 agent,在 `config.json` 的 `agent_commands` 里把脚本名映射到对应 agent 即可。 +PATH 上的每个 agent 也都能在随处搜索里找到(**Agent:Claude Code** 等),会在新标签页中启动它;新建标签页菜单会列出真正用过的那几个。`agent_launch` 可以设置它的启动命令行。 + +## 文档 + +完整文档在 [**`docs/`**](docs/),英文: +[快捷键](docs/reference/keyboard-shortcuts.mdx) · +[config.json](docs/reference/configuration.mdx) · +[CLI 参考](docs/cli/reference.mdx)。 +agent 如何调用这套 CLI,另见 [skills/tty7/SKILL.md](skills/tty7/SKILL.md)。 + +安装 skill: + +```sh +npx skills add l0ng-ai/tty7 # 安装 +npx skills update tty7 # 后续更新 +``` + +## 基准测试 + +同一台机器、同一天、同样的 155×40 网格:Apple M1 Pro,macOS 26.3.1,每项运行五次取平均(2026-07-04)。 + +| | **tty7** | Alacritty | Ghostty | Kitty | +|---|---:|---:|---:|---:| +| 纯文本 I/O:`cat` 一个 11 MB 文件 (越低越好) | **95 ms** | 239 ms | 179 ms | 185 ms | +| [DOOM-fire](https://github.com/const-void/DOOM-fire-zig) 帧率 (越高越好) | **888 fps** | 485 fps | 552 fps | 617 fps | +| 冷启动内存 | 116 MB¹ | 105 MB | 128 MB | 130 MB | + +¹ GUI 占 105 MB,常驻 server 占 11 MB。 + +测试方法与一条命令复现:[`scripts/bench/`](scripts/bench/README.md)。 + ---