构建初始提示:三层角色的精确分工
Agent 的可靠性很大程度上取决于初始提示的设计。Codex 将提示划分为三个层级:
- System:定义 Agent 的核心身份(例如 "You are ChatGPT."),同时注入工具定义、指令和权限。这些内容来源于 API 调用和配置文件,确保 Agent 行为受控。
- Developer:提供额外上下文,包括从配置文件派生的开发者指令(
developer_instructions.toml)、Agent 的混合指令(通过AGENTS.md和get_user_instructions()加载)以及环境上下文(environment_context)。 - User:用户的实际输入,例如 "Add an architecture diagram to the README.md",这是 Agent 任务的起点。
这里有个容易被忽略的细节:提示的顺序由服务器端控制,而非客户端。初始提示的设计需要拿捏平衡——指导过多会导致过度工程化,不足则容易产生行为偏差。
工具调用与输出回馈:Agent 的"内循环"
从用户输入到 API 响应,Agent 的处理流程并不是简单的一问一答。原始输入保持不变,但 Agent 会在对话中附加新的信息类型:reasoning(推理过程)、function_call(函数调用)和 function_call_output(调用输出)。
这套机制的核心在于:模型不只是生成文本,它能调用外部工具(文件操作、图表生成等),然后将工具的输出反馈回对话上下文。这意味着 Agent 可以处理复杂的多步骤任务,而开发者无需为每个场景硬编码工作流。这个设计思路对独立开发者搭建自己的 Agent 系统很有参考价值。
多轮交互:迭代式的闭环执行
Codex 的多轮交互模拟了一个 "inner agent loop":
- 原始输入作为基础
- Assistant 生成响应并执行操作(例如 "我添加了一个图表来解释客户端/服务器架构")
- 用户或系统提供反馈(例如 "不错,但图表遗漏了某个组件")
- Agent 基于反馈进入下一轮迭代
每个回合都构建在上一轮的基础上,形成闭环,直到任务完成。这种设计让 Codex 天然适合处理动态任务——代码维护、架构设计、文档生成——而非单次静态查询。
企业级应用的扩展层
Codex 作为通用 Agent 的一个优势在于其简单性:只需清晰定义 skills(技能)、goals(目标)和 tools(工具),就能让 Agent 高效运转。但在企业场景中,还需要额外考虑几个层面:
- 用户界面与护栏:设计直观的 Surfaces 供非技术用户使用,同时添加安全护栏防止滥用或误操作
- 内存与可观察性:实现持久化内存跟踪多轮交互状态,配合企业级的可追踪性,确保审计和调试能力
- 访问控制:基于角色的权限管理,满足合规要求
- 从固定工作流到动态规划:很多企业仍依赖硬编码的固定工作流来保证可预测性,但随着模型能力的提升,许多流程可以被简化为动态规划——特别是在有人类监督的场景中
这个观点值得一人公司创业者思考:搭建 Agent 系统时,不必一开始就追求完美的工作流编排。先用 Model + Harness + Surfaces 的三层思路把基本框架搭起来,定义好 Agent 的身份、工具和交互界面,然后在实际使用中迭代优化。复杂的编排逻辑,往往可以交给模型自身的推理能力去处理。