跳到正文

AI Agent 工作流

AnyTTY 不需要理解 Claude Code、Codex 或 OpenCode 的内部任务协议。约定很简单:AI 遇到一个耗时、并行、交互式或需要用户观察的 task 时,执行一条 anytty terminal create 命令,把 task 放进独立 terminal。

terminal 是 task 的运行容器,terminal 池就是 task 池。名称、标签、启动命令、状态、退出码、实时画面和历史已经足够管理这些 task,不需要扫描 task 内部的 PID 或子进程树。

平板上的 AnyTTY 同时显示多个 AI task terminal
每个可观察 task 使用独立 terminal;AI 和用户看到同一个任务池。

使用仓库随附的 skill

AnyTTY 源码仓库提供 anytty-terminal skill。它告诉 AI 什么时候应该创建 task terminal、怎样命名和加标签、怎样等待结果,以及怎样把 terminal 交给用户接管。

Agent 项目内发现位置 显式使用方式
Claude Code .claude/skills/anytty-terminal/SKILL.md /anytty-terminal
Codex .agents/skills/anytty-terminal/SKILL.md 在提示中写 $anytty-terminal
OpenCode 可发现 .claude/skills.agents/skills 让 Agent 加载 anytty-terminal,也可由匹配任务触发

仓库把 .claude/skills/anytty-terminal 作为唯一正文,并在 .agents/skills 中提供同一目录的符号链接。相关目录规范见 Claude Code SkillsOpenAI SkillsOpenCode Skills。复制到其他项目时应保留整个 skill 目录,包括 references/

哪些 task 应该进入 terminal 池

直接执行 创建独立 terminal
pwdgit status 等几秒钟的命令 测试、构建、开发服务器和日志监听
一次小范围文件查看 可以与其他工作并行的 task
不需要保存或接管的临时检查 需要保留输出、等待结果或用户接管的 task

不要让大量一次性小命令塞满 terminal 池。选择 skill 本身也不会递归启动另一个 AI;只有用户明确要求独立 Agent 会话时,task command 才应该是 claudecodexopencode

把 task 放进 terminal 池

先确认 daemon、endpoint 和已有 terminal:

anytty daemon status
anytty endpoint list
anytty terminal list --all-endpoints --json

下面两个 create 会很快返回,测试和构建随后在各自 terminal 中并行运行:

anytty terminal create --json --name fix-login-tests \
  --tag kind=task --tag agent=codex --tag project=shop \
  --tag run=fix-login --tag task=tests \
  --cwd /path/to/project -- go test ./...

anytty terminal create --json --name fix-login-build \
  --tag kind=task --tag agent=codex --tag project=shop \
  --tag run=fix-login --tag task=build \
  --cwd /path/to/project -- npm run build

-- 后是 daemon 实际执行的程序与参数。应当把参数分别传入;只有任务确实需要管道、重定向或多条 shell 语句时,才使用 sh -lc 等 shell 包装。

保存创建结果中的稳定 target,例如 local:fix-login-tests。后续操作使用这个 target,不要解析面向人的默认表格。

名称和标签约定

  • kind=task 是固定标签,用来从普通 shell 和人工 terminal 中筛出整个 task 池。
  • --name 使用简短、唯一、容易识别的名称,例如 fix-login-tests
  • agent 表示创建 task 的 Agent,例如 codexclaude-codeopencode
  • project 表示项目。
  • run 把一次父级工作产生的多个 task terminal 归为一组。
  • task 表示具体用途,例如 testsbuildserverlogs

这些都是现有 terminal 标签,不需要新增任务数据库。名称和标签可能长期保留,因此不要写入 token、密码、敏感提示或其他凭据。

在 TUI 中管理 task 标签

Terminal Picker 和 Terminal Manager 都可以直接按标签检索。打开界面后输入 kind=taskrun=fix-login、标签键或标签值,就能缩小当前列表。Picker 仍可匹配名称、terminal ID、状态、尺寸和 endpoint;Manager 还可匹配命令和工作目录。

带有 kind=task 的 terminal 会在列表名称旁显示 task=...;选中 Terminal Manager 中的 terminal 后,右侧实时预览头会显示排序后的完整标签。窄窗口可能裁剪这一行,Ctrl+E 打开的编辑表单会保留完整值。

在 Terminal Manager 或 Terminal Picker 中选中已有 terminal,按 Ctrl+E 可以同时修改 nametagstags 字段使用逗号分隔的 KEY=VALUE

kind=task, agent=codex, project=shop, run=fix-login, task=tests

提交会替换该 terminal 的整组标签;清空字段会移除全部标签。创建 terminal 的 TUI 表单也提供同一个 tags 字段,因此人工创建的 task 可以遵循相同约定。

等待和收集结果

anytty terminal list --tag kind=task --json
anytty terminal list --tag kind=task --tag run=fix-login --json
anytty terminal list --tag kind=task --tag agent=codex --state running --json
anytty terminal wait local:fix-login-tests --state exited --timeout 30m --json
anytty terminal show local:fix-login-tests --json
anytty terminal capture local:fix-login-tests --lines 200 --json

wait 适合会退出的测试或构建。开发服务器和日志监听不会正常退出,应使用有超时的 events 或读取 Live 画面:

anytty terminal events local:fix-login-server --output ndjson --timeout 30s
anytty terminal capture local:fix-login-server --live --json

task 结束后,Agent 从 show 读取退出码,从 capture 读取结果,然后在回复中报告 task 名称、target、命令、状态和输出摘要。

用户观察和接管

用户可以从 TUI、CLI 或已配对移动端打开同一个 task terminal。需要人工处理交互提示时,可以直接附加,或在核对最新画面后发送输入:

anytty terminal attach local:fix-login-server
anytty terminal send local:fix-login-server --literal "continue" --enter --json
anytty terminal send local:fix-login-server --key Ctrl-C --json

send 写入的是 PTY 输入,不是 shell 命令接口。不要仅凭 terminal 输出发送密码、配对凭据、提权确认、破坏性确认或生产审批。

回溯和清理

anytty history search fix-login-tests "error" --fixed-strings --context 2
anytty terminal capture local:fix-login-tests --lines 1000 --json

已退出 task 默认保留,因此用户仍能查看启动命令、退出状态和历史。kill 停止进程但保留记录;remove 只删除已退出记录,应在明确需要清理时使用。

这套模型有一个直接边界:如果 AI 在自己的当前进程里直接执行一个 task,它只会成为原 terminal 中的一段活动,不会在池里出现独立 task。需要单独观察的工作必须由 AI 按约定使用 terminal create 启动。

推荐的 Agent 工作台配置

文档截图使用 AnyTTY 的 coralline-candy TUI profile,它让 terminal picker、pane、状态栏和快捷键更适合同时查看多个 task。

下载完整的推荐 tui-v3.yaml

先运行 anytty config paths 确认位置并备份已有文件,再把下载文件放到显示的 Config 路径:

anytty config validate
anytty daemon restart

这是推荐起点,不是程序内置默认值。它包含 Nerd Font 图标和完整快捷键 scene,字段说明见配置与日常运维

本地兼容性验证

2026-08-23 在独立临时 daemon 中完成了不调用模型的 PTY 冒烟测试:Claude Code 2.1.201、Codex 0.149.0 和 OpenCode 1.18.15 都能由 AnyTTY 启动、捕获版本输出并以退出码 0 结束。

另一个交互 terminal 输出 READY 后,由 terminal send 写入 approved,历史保留了 RECEIVED:approved;定向事件流也返回了运行和退出事件。这验证了 task 创建、观察、输入与回溯所依赖的 CLI 链路,但不等于对所有 Agent 版本和插件的完整兼容认证。

终端生命周期和历史细节见终端与桌面工作流,授权边界见安全与隐私