
### 终端优先的 Agent 开发环境
[](https://github.com/termio-sh/termio/releases)
[](LICENSE)
[](https://discord.gg/H9DKVwsE5f)
English | 简体中文 | 繁體中文 | 日本語 | 한국어
[**下载 macOS 版**](https://downloads.termio.sh/termio.dmg) • [官网](https://termio.sh) • [文档](https://termio.sh/docs) • [更新日志](https://termio.sh/changelog) • [Discord](https://discord.gg/H9DKVwsE5f)
## 终端优先的 ADE
代码大半改由 Agent 写之后,开发环境的职责就是把它们跑起来,并告诉你哪一个需要你。Termio 就是这样一个环境,而它是一个真实的终端——因为 Agent 本来就住在终端里。
它在第一次启动时自动接好每个 Agent 自带的 hook。会话会报告工作中、空闲,还是*需要你*——侧栏一个状态点,菜单栏托盘在有 Agent 被挡住时出声,手机上是同一个信号。Claude Code、Codex、OpenCode、Pi、Amp、Cursor、Copilot、Kimi、Antigravity、Crush、Grok,以及任何其他 CLI Agent。
更完整的论述:[*From IDE to ADE*](docs/essays/from-ide-to-ade.md)。
### tmux 的替代品
所有人劝你学 tmux 的理由,Termio 让你不用学。每个会话的 shell 都活在守护进程 `termiod` 里,退出 app 只是断开连接。合上笔记本,再打开 Termio,Agent 还在你离开的地方——同一个进程,同一份回滚历史。只有「关闭会话」(⌘W)会结束它。
### 远程终端
任何你能 `ssh` 上去的 Linux VPS。Termio 读 `~/.ssh/config`,从不改写它。**设置 ▸ 设备 ▸ 设置**会通过 SSH 把一个二进制文件复制到 `~/.local/bin`,启动守护进程,并在那台机器上装好 Agent 的 hook。本地会话和远程会话走的是同一套宿主。会话活在机器上,不在连接里。断开链接,Agent 继续干活;重新附着,屏幕原样回来。
## 横向对比
Termio 是 Agent 跑在里面的环境。会话活在机器上的 `termiod` 里,Mac app 和
iPhone 都只是附着上去。
| | Termio | [Ghostty](https://ghostty.org) | [cmux](https://cmux.com) | [herdr](https://herdr.dev) | [Superlogical](https://superlogical.com) | [Otty](https://otty.sh) |
| --- | --- | --- | --- | --- | --- | --- |
| Agent 监控 | ✓ 靠 hook | – | ✓ | ✓ | – | ✓ 标签徽标 |
| Agent 编排 API | ✓ `termio session` | – | ✓ CLI 和 socket API | ✓ socket API | – | – |
| Agent 通知 | ✓ 菜单栏托盘 | – | ✓ | ✓ toast、系统通知或声音 | – | – |
| 多路复用 | ✓ 守护进程持有 PTY | – | 重启后恢复 | ✓ 服务端持有 PTY | ✓ 服务端持有 PTY | 重启后恢复 |
| 远程 Linux | ✓ 原生支持 | – | ✓ SSH 工作区 | ✓ 通过 SSH 附着 | ✓ 原生支持 | – |
| iOS | ✓ 直接附着到宿主,包括 VPS | – | ✓ 和 Mac 配对 | 社区插件 | 已预告 | – |
| 项目、工作区 | ✓ | – | 工作区分组 | worktree 命令 | – | – |
| 文件树 | ✓ | – | – | ✓ 插件 | – | – |
| 编辑器 | ✓ | – | – | – | – | – |
| Diff | ✓ | – | – | ✓ 插件 | – | – |
| 开源 | ✓ MIT | ✓ MIT | ✓ GPL | ✓ Apache-2.0 | 部分开源,尚未确定 | – |
## 安装
**[下载 macOS 版 Termio](https://downloads.termio.sh/termio.dmg)**——免费,
不用账号,需要 macOS 14 或更高版本。也可以走 [Homebrew](https://brew.sh):
```sh
brew install --cask termio-sh/tap/termio
```
**iPhone 端**:从
[TestFlight](https://testflight.apple.com/join/1Arf1UKR) 装伴侣应用的公测版,
再扫 Mac 应用 **设置 ▸ 手机** 里的二维码配对。
## 你会得到什么
 |
项目装着会话
一个 checkout 一个项目,它的终端和 Agent 都在下面。聊天排在项目上方——不属于任何项目的一次性 Agent 会话。
|
 |
Git worktree
一条分支对应一项并行任务,从侧栏创建。Worktree 嵌在它来自的项目下面。
|
 |
分屏面板
⌘D 向右分屏,⇧⌘D 向下分屏。一个 Agent、一个开发服务器、一个 shell,同一个窗口。
|
 |
横向标签页
会话排成一行,放在终端上方。点击标签页切换,拖动排序。在 设置 ▸ 外观 ▸ 标签页 里打开。看视频。
|
 |
状态一眼看清
工作中、空闲、完成,还是需要你——每一行都有标记。同一份列表就是 termio session list。
|
 |
文件编辑器
在文件树里点一个文件。语法高亮,自动保存。提交仍然在终端里做。
|
 |
更改
只读的 git 面板,显示当前的统一 diff。提交、推送和开 PR 仍然在终端里。
|
 |
搜索
项目级内容搜索,点一下就跳到编辑器里匹配的那一行。
|
 |
命令面板
⌘⇧P。分屏、聚焦,一切你本来要翻菜单找的东西。
|
## 从终端驱动
`termio` 命令行工具驱动正在运行的应用。跑在 Termio 里的 Agent 可以派生一个同伴,交给它一个任务,再把回复读回来:
```sh
termio . # 把当前目录作为项目打开
termio session list # 谁在工作、空闲,或在等你
termio session spawn "fix the flaky test" # 用一段提示启动新的 Agent 会话
termio session run "pnpm test --watch" # 用一条命令启动普通终端会话
termio session send ab12cd34 "1" # 回答同伴的权限确认
termio session read ab12cd34 --lines 40 # 打印某个会话当前的屏幕
termio session watch # 实时流式输出状态变化
termio session focus ab12cd34 # 在应用里把某个会话切到前台
termio session close ab12cd34 # 关掉它
termio notify "the migration finished" # 发一条 macOS 通知
```
`--wait` 一直等到这一轮结束,回来时带上最终状态和可以去读的记录行范围。`--json` 让任何 `sessions` 命令输出机器可读的结果。`--agent` 决定 `spawn` 启动哪个 Agent。`--direction` / `--ratio` 决定新面板落在哪、占多大。
```sh
termio session spawn "run the migration" --agent codex --wait
```
会话控制会往每个 Agent 的技能目录(`~/.claude/skills`、`~/.codex/skills`)装一个 `termio` [Agent 技能](https://termio.sh/skill.md),并在每次启动时保持它最新。其他 Agent 也可以直接从这个仓库装同一个技能:
```sh
npx skills add termio-sh/termio --skill termio
```
## 在你的 iPhone 上
Termio iOS 把每个会话实时镜像过来——完整的 TUI。按键条把 esc、tab、ctrl 和方向键放在键盘上方,按住说话把语音直接转写进提示词。公测中:[TestFlight](https://testflight.apple.com/join/1Arf1UKR)。