如何使用 Codex CLI 作为网站智能体后端

Codex CLI 网站智能体后端架构
Codex CLI 网站智能体后端架构

把 Codex CLI 放在网站后端,本质上是把一个已经会读文件、跑命令、流式输出、维护任务状态的工程代理接到 Web 页面之后。前端不直接面对模型 API,而是把用户请求转成一个后端任务;后端启动 codex exec --json,把 JSON 事件写入任务状态,再用 HTTP 或 SSE 推给浏览器。

基本架构

一个可运行的最小架构通常包含四层:

在本站的实现里,后端把每个任务写成状态记录,然后启动类似这样的进程:

codex exec --json --dangerously-bypass-approvals-and-sandbox -C /opt/whb-interaction

生产环境不一定要关闭沙箱。这里的关键点不是参数本身,而是 Web 后端只需要管理任务生命周期,推理、工具调用和工程动作交给 Codex CLI

为什么不直接调用 API

直接调用 API 的优点是接口稳定、计费清晰、适合产品化规模调用。但如果你的目标是让网站具备“工程代理”能力,API 方案通常要自己补齐很多东西:

Codex CLI 已经天然适合这些流程。它更像一个命令行工程同事,后端只要把它包装成任务执行器。

交互优势

使用 Codex CLI 做后端,用户体验会更接近“远程控制一个智能开发台”:

这种模式特别适合内部管理台、自动化运维页面、私有数据处理页面、APK 构建后台、文章发布后台等场景。

费用优势

在已经合法登录并配置好 Codex CLI 的服务器上,网站后端可以复用这个 CLI 执行环境。对个人站点、小团队后台或低频自动化任务来说,成本模型更接近使用已有的 ChatGPT / Codex 套餐,而不是为每个页面功能单独设计 API key、限额、账单和重试策略。

这并不意味着所有场景都应该绕开 API。正式商用、多人高并发、严格 SLA、审计计费或需要官方稳定接口时,API 仍然更合适。Codex CLI 后端的优势在于:当你需要的是“少量高价值的工程智能体任务”,它可以用更少的胶水代码得到更强的交互体验。

后端实现要点

一个可靠的实现至少要考虑这些细节:

伪代码大致如下:

task = create_task(prompt, uploads)
subprocess.Popen([
    "codex", "exec", "--json",
    "-C", task.workdir,
], stdin=task_prompt, stdout=task_log)

前端只需要知道任务 ID:

const events = await fetch(`/api/tasks/${taskId}/events`).then(r => r.json())
render(events)

最适合的使用方式

Codex CLI 做网站智能体后端,不应该被当成普通聊天接口。它最适合这些任务:

把它用于这些位置,网站会获得一种很特别的能力:用户点下按钮后,后端不是调用一个单轮模型,而是在服务器上启动一个可以读、写、跑、验证、总结的智能体。