跳到正文

终端与桌面工作流

terminal 由所属 daemon 运行。退出 TUI、关闭 SSH 窗口或让手机进入后台都不会自动终止进程;你可以稍后从任意已授权客户端重新附加。

创建第一个终端

anytty terminal create --name workspace --attach -- zsh

常用创建参数:

  • --endpoint 选择拥有这个 terminal 的 endpoint。
  • --cwd 设置 daemon 机器上的初始工作目录。
  • --env KEY=VALUE 添加环境变量,可重复使用。
  • --tag KEY=VALUE 添加用于筛选的标签。
  • --cols--rows 设置初始尺寸。
  • --attach 创建后立即进入 TUI。

Windows 可把命令换成 PowerShell 或 cmd.exe-- 后的内容是目标机器实际执行的命令,不由本地 shell 代替解析。

生命周期

anytty terminal list
anytty terminal show workspace
anytty terminal attach workspace
anytty terminal rename workspace agent-main
anytty terminal restart agent-main
anytty terminal kill agent-main
anytty terminal remove agent-main
状态或操作 含义
created / running 记录已创建,进程正在运行
exited 进程已结束,记录和历史仍保留
kill 停止进程,保留记录和历史
restart 按 daemon 保存的进程规格启动新 generation
remove 删除已经退出的 terminal 记录

killremove 是两步操作,可以减少误删历史和记录。对仍在运行的终端不要把关闭 panel 当成停止命令。

名称、标签与筛选

名称方便人工输入,稳定 ID 适合脚本。标签适合区分项目、环境或任务类型:

anytty terminal tag agent-main project=anytty
anytty terminal tag agent-main environment=dev
anytty terminal list --tag project=anytty --state running
anytty terminal list --all-endpoints

脚本可以使用 --json,或在 terminal list 中通过 --format 输出稳定字段。不要解析为人阅读设计的默认表格。

TUI 工作台

直接运行 anytty 打开默认 endpoint 的 TUI。默认全局入口包括:

按键 入口
Ctrl+F 终端选择器
Ctrl+P panel 操作
Ctrl+R 调整尺寸
Ctrl+O 浮动 panel
Ctrl+T tab 操作
Ctrl+W workspace 操作
Ctrl+V copy/history 模式
Ctrl+G 系统操作

进入某个模式后,底部状态栏会显示当前可用动作。默认情况下,在短时间窗口内连续按两次入口键,会退出 AnyTTY 模式并把对应控制键传给终端;自定义快捷键前请理解这一透传规则。

workspace、分屏与浮动 panel

workspace 保存工作台组织方式,tab 和 panel 组成可见布局。panel 可以显示本地或远程 endpoint 上的任意 terminal;浮动 panel 适合临时查看日志、帮助或另一个任务。

切换 panel 绑定不会移动或重启 terminal。关闭 tab、panel 或 workspace 前,TUI 对可能丢布局或终止进程的动作可以显示确认;是否确认由 tui.interaction.confirm_destructive 配置控制。

AnyTTY TUI 的分屏、浮动 panel 和多个远程终端
平铺、浮动窗口和不同 endpoint 可以同时出现在一个 workspace 中。

终端选择器与近期活动

终端选择器会聚合可用 endpoint 的终端,显示名称、状态和近期活动。它适合找到刚有输出、已经停止更新或已退出的任务。通过 terminal list --all-endpoints 可以在 CLI 中获得相同维度的聚合列表。

Live 与历史

Live 显示 daemon 当前屏幕。进入 copy/history 后,当前视口被冻结,新输出仍继续写入历史;滚动回末尾时自动恢复 Live。历史按逻辑行分页,因此输出很多时不会一次加载全部内容。

CLI 可以捕获最新屏幕或历史:

anytty terminal capture agent-main --live
anytty terminal capture agent-main --lines 400 --cols 120
anytty history search agent-main "failed" --context 2

搜索支持普通文本、shell 风格 glob 和 Go RE2 正则。复制超大范围会在用户确认时读取和组装文本,因此仍应控制单次复制规模。

从脚本观察和控制

anytty terminal send agent-main --literal "status" --enter
anytty terminal send agent-main --key Ctrl-C
anytty terminal events agent-main --output ndjson
anytty terminal wait agent-main --state exited --timeout 10m

send 可以发送文本、命名键、十六进制字节或 stdin。自动化前确认目标 terminal 和 endpoint,避免把输入发到同名但不同机器的任务。

Claude Code、Codex 和 OpenCode 也可以作为 daemon 所有的持久进程运行。关于 skill、任务观察、人工接管和当前可见性边界,参阅 AI Agent 工作流

容量与恢复

每个 terminal 的输出缓冲和 daemon 总驻留内存都有上限。默认策略在缓冲满时阻塞 PTY 读取以保留连续输出,也可以配置为丢弃旧 payload 并产生显式 gap。客户端发现 gap、尺寸改变或基线丢失时会请求全量屏幕重新同步。

历史默认按终端限制物理大小,并可配置保存天数与压缩方式。长期运行前请阅读配置与日常运维