交互式 TUI 模式
本教程共 32 篇 · 第 11 篇 · 更新于 2026-07-26 · 约 8 分钟阅读
11. 交互式 TUI 模式
本节目标:搞懂 TUI 界面布局、会用斜杠命令和快捷键操作、知道怎么查看 diff、分清交互式和 exec 两种跑法。
都说「图形界面对小白最友好,能不碰命令行就别碰」—但 Codex CLI 启动后不是让你对着一行光标干瞪眼。它进了一个叫 TUI(Terminal User Interface,终端用户界面)的全屏交互界面—有对话区、有输入框、有状态栏,跟桌面应用的信息密度差不多,只是全用键盘操作。
启动 TUI
在项目目录里敲一行:
codex
就进入全屏 TUI。也可以带一句提示词,进去后它直接开干:
codex "解释一下这个项目的结构"
Tip也可以用
--cd直接指定工作目录,不用先cd进去:codex --cd ~/my-project "把 README 补全"
界面布局:认住三块
第一次见这一屏新手容易发懵:哪儿是我说话的地方?它干到哪一步了?别慌,你只需要认住三块。
对话区(中间最大那片)
Codex 的主场。它在这儿一步步讲它要干啥、贴出改动的代码块和 Git diff,而且代码和 diff 都带语法高亮。你审它改了什么,主要看这儿。
输入框(最底下)
你跟 Codex 说话的唯一入口。打字、贴代码、贴截图、敲斜杠命令,全在这一行。
状态栏(贴着输入框那几行小字)
显示会话的关键读数—当前用的哪个模型、上下文窗口还剩多少、当前工作目录、Git 分支等。官方还提供 /statusline 让你自己挑要显示哪些字段。
Note看直播不用盯满屏,认住这三块就跟得上节奏。对话区看它干啥、输入框你说话、状态栏看读数。
输入消息
在输入框里直接打字就行,用大白话下指令,不用记什么格式:
给这个函数加上类型注解,并补充基本的错误处理
回车发送。Codex 会自己去找相关文件、自己读、自己改。
几个特殊的输入前缀:
| 前缀 | 作用 | 例子 |
|---|---|---|
! | 顺手跑条 shell 命令,不打扰 Codex | !git status |
@ | 触发工作区文件模糊搜索,精准点名文件 | @main.py |
/ | 触发斜杠命令 | /model |
! 前缀:不打扰 Codex 跑命令
在输入框开头打 !,后面跟一条命令:
!git status
这条命令直接在你终端跑,Codex 会把它的输出当成「用户提供的命令结果」收进上下文,而且照样走你的审批和沙箱设置。想顺手看一眼仓库状态、又不想让 Codex 专门跑一趟烧 token,用它最合适。
@ 前缀:点名文件
在输入框打 @ 会触发工作区文件的模糊搜索,按 Tab 或回车把选中的路径塞进消息里。想精准点名某个文件时用它,省得用大白话描述「那个 auth 文件」它找错。
Ctrl+G:开编辑器写长指令
嫌在小输入框里写几十行的复杂需求憋屈?按 Ctrl+G,Codex 会打开 VISUAL 环境变量指定的编辑器(没设就用 EDITOR),你在里头从容写完保存,内容自动带回输入框。
查看 diff
Codex 改完代码后,会把改动以 diff 的形式打印在对话区。你也可以随时用斜杠命令查看:
/diff
它会列出 Git 视角的改动,包括还没被 Git 跟踪的新文件。这是提交前审改动的标准动作。
看懂 diff 只需记一条:
-开头 / 红色的,是要删掉的旧行+开头 / 绿色的,是要加上的新行- 没标记的,是没动的上下文
Warning
git diff和/diff都有个前提:你的项目得先是个 Git 仓库。要是还没跑过git init,git diff找不到可对比的版本。动手前先git status确认仓库能用。
常用斜杠命令
进了交互界面,斜杠命令就是你的遥控器—不退出、不重启,输入框打个 / 当场调整。
新手阶段先把这几个焊进肌肉记忆:
| 斜杠命令 | 干啥用 | 啥时候按 |
|---|---|---|
/model | 当场切换模型和推理强度 | 想换个更强或更快的模型时 |
/permissions | 切换审批模式 | 想放开或收紧动手权限 |
/status | 看当前会话信息 | 不确定现在啥配置时 |
/diff | 看 Git diff | 提交前审改动 |
/compact | 把长对话压缩成摘要 | 聊太久、上下文快满了 |
/review | 让独立审查智能体审你的改动 | 写完想找第二双眼睛把关 |
/init | 在当前目录生成 AGENTS.md 脚手架 | 想给项目立规矩 |
/clear | 清屏并开一段全新对话 | 想彻底换个话题 |
Tip任务正跑着的时候,你可以先把下一条指令或斜杠命令打好,按
Tab排进队列,等这一轮跑完它自动接着处理。我经常在它跑测试的间隙,先把/review用 Tab 排好队。
常用快捷键
斜杠命令之外,还有一小撮纯键盘动作:
| 键盘动作 | 作用 |
|---|---|
Ctrl+C | 中断当前操作;也可退出会话 |
Ctrl+L | 重绘屏幕(清屏但保留当前对话) |
↑ / ↓ | 在输入框翻草稿历史 |
Ctrl+R | 反向搜索提示词历史 |
Ctrl+O | 复制 Codex 最近一条已完成的输出 |
Tab | 把下一条输入排进队列 |
Esc Esc | 退回去编辑你上一条消息 |
Ctrl+G | 在外部编辑器里写长提示词 |
Ctrl+L 和 /clear 别搞混
Ctrl+L 只清屏幕、不动对话,会话照旧。/clear 是清屏外加开一段全新对话—上下文一起清空。一个是「擦黑板」,一个是「换张新黑板」,别按错。
Note屏幕突然花了、或者一半空白?别以为它崩了。最常见的是你在 tmux 里跑 Codex,切窗口回来满屏乱码。按一下
Ctrl+L就干净了,对话不会丢。
Esc Esc:退回去编辑上一条
输入框为空时连按两次 Esc,可以退回去编辑你上一条消息,继续按可往前翻,回车从那点重新分叉。这个功能在你发完一句话、发现表述不够准确时特别有用。
交互式 vs exec:盯着干还是一句话跑完
有些活根本不需要你盯着—比如「每天早上自动审一遍昨天的提交」「在 CI 里让它跑测试并修好失败用例」。这种「一句话丢进去、跑完吐结果就退出」的场景,就是 codex exec 的主场。
codex exec "审查当前改动,列出潜在 bug"
它会读工作目录、定个计划、把最终结果流式打到终端,然后退出—不进 TUI、不等你按键。
| 维度 | 交互式(codex) | 非交互式(codex exec) |
|---|---|---|
| 跑完会怎样 | 进 TUI,停在界面等你继续 | 吐完结果直接退出 |
| 适合的活 | 探索、调试、需要来回沟通 | 脚本、CI、批量、定时跑 |
| 要不要你在场 | 要,你审它每一步 | 不要,丢进去就走 |
| 输出形态 | 界面里可视化看 | 流到 stdout,可配 --json |
exec 几个常用选项:
| 选项 | 干啥用 |
|---|---|
--model / -m | 指定这次用哪个模型 |
--json | 输出按行的 JSON 事件,喂给脚本解析 |
--output-last-message / -o | 把最终那条消息写到文件里 |
--skip-git-repo-check | 允许在非 Git 目录里跑 |
Warning
exec是为「无人值守」设计的,审批时机通常配never(没人在场点头)。这也意味着它默认更放得开,务必配合合适的沙箱策略,别在没隔离的环境里对着重要项目无脑exec。
一个最小验证流程
照着这几步亲手跑一遍,TUI 的核心功能你就全过了一遍:
- 建个空目录,进去启动:
mkdir -p ~/codex-cli-demo && cd ~/codex-cli-demo
codex
- 用
/status看一眼当前配置:
/status
- 试
!顺手跑条命令:
!echo hello-codex-cli
- 让它干件会改文件的小事:
新建一个文件 hi.txt,里面写一行 "hello from codex cli"
- 用
/diff看改动:
/diff
- 退出:
/exit
Tip如果第 4 步它没停下来问、直接就建好了,说明你当前审批策略比较宽松—这不是 bug,是沙箱和审批在按规则放行。想看它「停下来问」那一下,用
/permissions切到 Read Only 再让它建文件就能复现。
小结
- 界面三块:对话区看它干啥、输入框你说话、状态栏看读数
- 输入前缀:
!跑命令、@点名文件、/触发斜杠命令、Ctrl+G开编辑器写长指令 - 斜杠命令:
/model换模型、/permissions调权限、/status看状态、/diff审改动是日常四大件 - 快捷键:
Ctrl+L重绘屏幕(对话不丢)、Tab排队、Esc Esc编辑上一条 - 两种跑法:交互式是「盯着干」(来回聊),
exec是「一句话跑完」(自动化、CI)
CLI 不是「简化版桌面应用」,而是功能更全、还能接进自动化的那一个。黑窗口的门槛一旦迈过去,你会发现它比图形界面能干的事多得多。
这是本教程的前 11 章。从认识 Codex、搞懂核心概念、安装登录、跑通第一个任务,到配置系统、项目指令、模型选择、环境变量、TUI 操作—你已经掌握了 Codex CLI 的核心使用能力。后面更高级的主题(MCP 集成、Skills、子代理、自动化 CI 等),都是在这套地基上添砖加瓦。