众所周知 Agent 最核心的概念其实就是这么几行代码:
context = get_user_input()
loop:
resp, tools_calling = llm.generate_response(context, tools)
tools_result = execute_tools(tools_calling)
context = update_context(context, resp, tools_result)OpenAI 将其拆分为三个部分:Harness、Application 和 Environment。
- Harness 是 Agent 的核心,包括对 LLM 的调用、上下文管理(记忆、压缩)、工具选择、sub-agents、可观测性等。
- 然后将对 tool 的执行拆分为两部分,一部分是和业务无关的纯计算逻辑,称为 Environment,比如执行 MCP 等;另一部分是和业务强相关的逻辑,称为 Application,比如执行用户数据查询等。不过你也可以不拆分,直接把 Application 和 Environment 合并。
Application 是整个调用链的起点,也就是用户自己的业务程序,准备好输入数据后,请求 OpenAI Agents API。OpenAI Agents API 会执行 harness loop,并且根据需求返回 application tools calling 的请求,获取 Application 侧的业务数据。对于其他计算需求则调度到 Environmentent 运行,你可以租用 OpenAI 托管的服务器,也可以通过
codex exec-server 将一台 self-hosted 的机器注册为 Environment。简而言之,OpenAI Agents API 就是提供了一个分布式的抽象架构,以及一个 harness loop 的云端实现。如果你对 codex 很熟悉,实际上完全可以自己运行一个
codex app-server 来实现一个近乎类似的效果。如果能兼容 agents API 接口,再支持注册分布式的 Environment 机器,那就几乎就是一个 self-hosted 的 Agents API 了。