
很多时候,程序员用 AI 排查问题,最烦的不是 AI 不聪明,而是它进不了现场。
代码在服务器上,日志在远程机器里,依赖和测试环境也不在本地。你只能把报错复制出来,把文件片段贴过去,再把运行结果发回来。AI 看起来在帮你分析,其实还是隔着一层信息差。
这次我用 Codex 做了一个小实验:让它连上腾讯云实例,进入远程目录,自己复现错误、读文件、改代码、跑测试。
结果是,一个远程日报脚本的 bug,被它从报错定位到测试通过完整跑了一遍。
这篇文章读完,你至少能拿走三件事:
如果你也想复现这套流程,后面可以直接照着命令和截图走一遍。我把关键 prompt、端口转发方式和安全边界都放进来了。
这篇写的是一次已经跑通的工作流验证。
对开发者来说,这个能力直接带来的变化,是 AI 终于能接近真实工程现场。
以前我们用 AI 排查问题,经常需要不断搬运上下文:复制日志、贴代码片段、描述运行环境、再把测试结果发回去。中间任何一个细节没说清楚,AI 都可能给出看起来合理、实际跑不通的建议。
远程能力把这件事往前推了一步。
如果 Codex 能进入远程目录,它可以自己读相关文件,自己复现错误,自己看测试输出。它会从围绕你贴出来的信息推理,推进到按照真实步骤排查。
这带来的直接变化是:结果更容易验收。
你最后看到的是可审查的 diff、可复跑的命令和明确的测试结果。
这也是为什么社区里会出现一批“从任何地方控制 coding agent”的产品和讨论。比如 Omnara 在 Hacker News 上的发布帖,讨论的核心已经不只是“怎么让 AI 多写几行代码”,还包括一个更现实的问题:agent 可以自己跑很久,但一旦需要人补充输入、批准操作、确认方向,人离开电脑后,任务就会卡住。
远程能力背后要解决的,是人和 agent 的协作连续性。
按 OpenAI 目前的文档,Codex 远程连接仍处在 alpha 阶段,codex app-server 的 WebSocket transport 也被标注为 experimental。
所以它现在更适合当作“可验证的新工作流”来试,不适合直接丢到生产环境里。远程 app-server 能读文件、跑命令、改代码,就必须按真实权限边界看待。
我这次选择的方式很保守:只用一个低风险 demo 项目,远程机器本地监听 127.0.0.1:9001,本地通过端口转发连接进去。不要把未认证的 WebSocket 服务暴露到公网,也不要随便挂载密钥、云凭证这类敏感信息。
我准备了一个很小的 demo。
这个 demo 很小,但你可以把它替换成自己的日报脚本、训练脚本、部署脚本或者测试脚本。重点不是这个 bug,而是让 Codex 进入真实环境完成一轮闭环。
远程机器上有一个日报生成脚本 daily_report.py,它会读取 events.json,统计每天任务成功率。脚本里故意留了一个小 bug:数据里的日期字段叫 date,代码里却读取了不存在的 day。
先在远程机器上直接运行脚本,结果稳定报错:

远程服务报错
这个 bug 不复杂,但它很像真实工作里经常遇到的小故障:问题不大,却要你进入远程机器、看报错、查数据、改代码、再跑一遍。
这次我没有把错误复制给 AI,也没有让它靠描述猜。我先在远程机器的项目目录里启动 codex app-server:
cd ~/codex-remote-demo
codex app-server --listen ws://127.0.0.1:9001
如图所示:

远程机器启动 app-server
这个服务只监听远程机器自己的 127.0.0.1:9001。本地要访问它,需要做端口转发:
ssh -N -L 9001:127.0.0.1:9001 root@你的远程机器
如图所示:

本地新开终端,通过 SSH 做端口转发
然后在本地另开一个终端,连接远程 app-server:
codex --remote ws://127.0.0.1:9001
如图所示:

本地连接远程 app-server
连上之后,Codex 显示的工作目录已经是远程机器上的 /root/codex-remote-demo。这一步很关键:我人在本地,但 Codex 面对的是远程环境里的真实文件和真实命令。
我给它的任务很明确,提示词如下:
当前远程目录里有一个日报生成脚本
daily_report.py,运行python3 daily_report.py会失败,pytest也不通过。 请先复现错误,再解释根因,修改代码,运行测试确认修复。 不要改events.json和test_daily_report.py,只修daily_report.py。
Codex 先复现错误,看到 KeyError: 'day';然后读取 daily_report.py、test_daily_report.py 和 events.json,确认根因是字段不一致:数据里是 date,代码里读的是 day。它只改了 daily_report.py 里的一行代码,并重新运行测试。

修复提示词以及本地 Codex 执行记录截图
修复后,我回到远程机器上再次运行脚本,输出变成了正常的日报结果:

远程服务修复成功
如果你平时也经常在服务器上查日志、跑脚本、改配置,这套流程值得自己搭一遍。它不一定马上替你省很多时间,但会明显减少“复制来复制去”的摩擦。
这个案例的重点不在于一行 bug 有多难。
它有用的地方在于:Codex 跳过了“根据报错给建议”这种浅层协作,直接进入远程环境,自己复现、自己读文件、自己改代码、自己跑测试,再把结果交还给人验收。
这次更新让我感兴趣的点,不在某个命令本身。
命令会变,入口会变,产品形态也会变。值得关注的是:个人工作系统正在从“本地工具集合”,变成“本地入口 + 远程执行层 + AI 协作线程”的组合。
本地负责表达目标、保留上下文、做判断、看结果。远程负责承载更大的代码库、更重的依赖、更真实的运行环境、更强的算力。AI 负责在这些环境之间执行可验证的步骤,把原来需要人反复切换的操作串起来。
这已经超出开发体验优化的范围,指向个人生产系统边界的扩大。
过去,一个人的能力很大程度受限于手边这台电脑。以后,一个人的工作台可能连接多台远程机器、多个代码库、多个自动化流程。你需要管理的,将从“在哪台机器上操作”,转向“如何让这些机器围绕目标协同”。
这就是结构杠杆。
远程 Codex 值得讨论的地方在于:AI 开始进入真实的远程执行环境,开始从回答问题,走向参与工程现场。
当 AI 只能聊天时,它主要改变的是信息获取方式。
当 AI 能读代码、改文件、跑命令时,它开始改变个人工作流。
当 AI 能进入远程机器,接触真实项目、真实依赖、真实日志和真实测试时,它触碰到的就是执行层。
对工程师来说,这可能比“又多一个模型”更值得关注。未来拉开差距的,未必是谁会问更多问题,更可能是谁更早把自己的工作环境、知识资产、远程资源和 AI 协作方式组织成系统。
本地电脑只是入口。
你的工作台,正在变大。