最近在深度使用 Codex TUI 时,偶然发现了一项令人惊喜的功能升级。以往引用文件,要么手动输入路径,要么通过复制粘贴来完成。一旦文件名较长、包含空格或中文字符,出错率便直线上升,着实令人困扰。
当时我暗自期待:要是能像在聊天软件中用“@”提及联系人那样,输入时就能自动补全,那该多便捷。没想到,OpenAI 不仅将这一设想变为了现实,其实现方式还比预期更为精妙。
起初我并未太在意,以为不过是文件自动补全的常规改进。但深入研究了其设计逻辑后,才意识到背后蕴藏的深度与巧思。
这是什么功能?
简而言之,这是对 Codex TUI 中“@”功能的一次全面升级。
过去的“@”功能仅能检索文件系统中的内容。而现在,在同一个弹出窗口中,它可以同时搜索三类资源:
- 文件系统: 包括你的文件和目录
- 已安装的插件: 例如各类功能扩展
- Skills(技能模块): 一种更高级的扩展机制
搜索结果会通过不同的标签与颜色进行清晰区分,一目了然。这一设计思路确实值得称赞。
你可能会疑惑,一个自动补全功能,真有那么重要吗?
说实话,我最初也持相同看法。但实际使用后才体会到,这个看似简单的功能,解决了一个核心痛点——上下文切换成本。
试想这样一个场景:你正与 Codex 对话,希望它分析某个文件的代码。
以往的操作流程可能是:
- 暂停手头工作,前往文件管理器找到目标文件
- 复制文件路径
- 返回终端,粘贴路径
- 继续与 Codex 交流
整个过程虽仅需十几秒,但正是这十几秒,打断了你的思路。你不得不从“代码逻辑如何运行”切换到“文件在哪里”,再切换回去。
这种微小的思维切换,一天可能经历数十次。日积月累,对效率和心流状态的影响是显著的。
有了统一的“@”功能,流程简化为:
- 输入一个“@”
- 键入文件名的关键词
- 按回车键选中
整个过程思路连贯,双手无需离开键盘。仅此一个小改动,代码编写的流畅度就能显著提升。
核心功能详解
三种提及类型
该功能支持引用三种不同类型的资源:
1. 文件/目录
这是最基础的功能。输入“@src/m”,它会自动匹配出“src/main.rs”、“src/models/user.py”等文件。
如果路径中包含空格,它会自动添加引号,避免 shell 解析错误。这是许多 AI 工具早期的通用功能。
此外,如果选中的是图片文件,它会作为附件一并发送给 Codex,便于进行视觉分析。
2. 插件(Plugins)
如果你安装了“github-assistant”或“database-helper”等插件,直接输入“@github”即可快速引用。选中后,它会自动在提示词中插入对应的调用命令,Codex 便能识别并调用相应插件能力。
3. Skills(技能)
Skills 是 Codex 的一种扩展形式,可封装特定工作流程。例如,你有一个专门用于代码审查的“code-review”技能,输入“@code”即可快速引用。
搜索模式
这一点需要留意。
默认搜索模式为“All Results”,会列出所有类型的结果。但有时你可能只想查找文件或插件,此时便可使用过滤功能。
目前支持三种模式:
- All Results(默认): 显示所有类型的结果
- Filesystem Only: 仅显示文件和目录
- Plugins: 仅显示插件和 Skills
切换模式也很便捷,只需在输入框中添加前缀或使用快捷键。这一操作逻辑与 Codex App 保持一致,上手几乎没有学习成本。
渲染细节
该功能的描述中还提到几个值得关注的实现细节:
类型标签: 每个结果前都有标签,清晰标明是 Plugin、Skill、File 还是 Dir,一眼即可分辨。
颜色区分: 插件和文件系统使用了不同颜色,例如插件为紫色,文件为绿色,视觉上更易区分。
固定高度布局: 弹窗固定显示 8 行结果。这一数字经过精心设计——太少不够用,太多则占用屏幕空间。
截断处理: 若终端窗口宽度不足,文件名会被适度截断,但确保关键信息(如文件扩展名)始终可见。
实际使用场景
使用该功能两周后,我发现了几个尤为顺手的使用场景。
场景一:快速引用多个文件
以往想让 Codex 分析多个文件,需要逐个复制路径。现在只需这样操作:
@src/auth @src/database @src/middleware 请帮我分析这三个模块之间的依赖关系
一气呵成,效率倍增。
场景二:调用插件能力
安装了一个“github-pr-review”插件,专门用于分析 GitHub PR。以前需要手动输入命令,现在输入“@github”,看到插件出现在列表中,按回车即可。这才是真正的人性化设计。
场景三:使用 Skills
有一个“generate-tests”技能,可根据函数签名自动生成测试用例。输入“@gen”,选中该技能,再将函数代码粘贴进去,Codex 便会自动调用并生成测试。整个过程行云流水。
一些细节设计
坦白说,这个 PR 最令人欣赏的不是功能本身,而是那些看似不起眼的设计细节。
不支持 App Connectors: PR 描述中特意说明,统一弹窗中不显示 app connectors,这是为了与 Codex App 保持一致。这种克制值得称赞——并非所有功能都需挤入一个入口,保持边界清晰至关重要。
图片文件特殊处理: 若选中的是图片文件,它会尝试作为附件发送给模型分析。这对前端开发尤其有用,可直接截图让 Codex 协助编写 CSS。
路径引用自动加引号: 若路径包含空格,插入时会自动添加引号。这个小细节能避免无数潜在的 bug。
固定高度+滚动: 弹窗固定显示 8 行,超出部分可滚动。无论匹配结果多少,都不会突然占据大片屏幕空间。
与其他工具的对比
很多人可能会将这个功能与 VS Code 的“@”提及或 Cursor 的类似功能进行比较。客观而言,各有千秋。
| 维度 | Codex TUI | VS Code | Cursor |
|---|---|---|---|
| 提及类型 | 文件+插件+skills | 文件+符号 | 文件+符号 |
| 交互方式 | 纯键盘 | 键盘+鼠标 | 键盘+鼠标 |
| 终端集成 | ✓ | ✗ | ✗ |
| 插件生态 | 早期 | 成熟 | 中等 |
| 学习曲线 | 低 | 中 | 中 |
Codex TUI 的优势在于纯键盘驱动,对习惯终端的开发者而言效率极高。短板是插件生态尚处早期,不如 VS Code 丰富。但其发展方向明确——在终端中提供高效、轻量的 AI 编程体验,定位清晰。
写在最后
使用新功能一周后,最大的感受是:好的工具设计应当是隐形的。你不会特别注意到它的存在,但会发现自己工作得更顺畅了。手指无需离开键盘,思维无需频繁切换,一切都在不知不觉中发生。
这个“@”功能便是如此。它并非革命性创新,甚至可以说很“普通”——许多工具都有类似的自动补全功能。但正是这种“普通”,让它变得不可或缺。如同空气,平时难以察觉,一旦缺失,立刻就能感受到不便。
昨晚再次查看 Codex 的 GitHub 仓库,发现近期提交频率很高,几乎每天都有新内容加入。这显然不是一个停滞的项目,而是处于快速迭代、持续进化的产品。也许再过几个月,它会成为终端开发者的标配工具,也许不会。但至少现在,它给了我一个理由,让我愿意继续留在终端中编写代码,而非被迫切换到图形界面。
这种感觉,就像找到了一位懂你的老朋友,无需多余言语,一个眼神便能领会你的意图。新时代的编程工具必将来临,而它可能就藏在一个小小的“@”符号里。

