第 01 模块 · 1 节

Agent 架构与设计原则

《Codex 生产级工程》01 自定义 Agent 构建 · 本节时长 32 分钟

通用 Agent 不够用?自己定制

Codex 是通用 Agent,什么都能干一点。但真实团队各有各的业务:有的要处理工单、有的要分析报表、有的要按规范改代码。通用能力不够「贴业务」,就需要构建自定义 Agent——让它专门处理某类任务、遵守团队规范。

这一节讲自定义 Agent 的架构与设计原则

贯穿项目本模块我们一路构建贯穿全课的项目 **deploy-bot**:一个「CI/CD 自动化部署机器人」,负责把代码从仓库自动部署到环境。这一节就是它的「出生地」——先把它的架构和设计原则定清楚,后面几节才谈得上配置、接工具、调试。

自定义 Agent 在做什么

自定义 Agent = 一个限定职责、遵守规范的 Codex 实例。它:

  • 限定做某类任务:只处理它被设计的那类事
  • 遵守团队规范:内置团队约定、步骤
  • 对接内部系统:接上团队需要的工具/数据

结果是:团队让「一个懂规矩的专家」干活,而不是「一个什么都干但不守规矩的新手」。

放到 deploy-bot 身上:它的「那类事」就是自动部署。我们不是要一个「万能机器人」,而是一个「只管把代码部署对、部署稳」的部署专家。


Agent 架构:三层

设计自定义 Agent,先想清三层:

内容 问的是
职责层 它负责哪类任务 解决什么问题
规范层 遵守什么规则、步骤 怎么做才合规
工具层 能接哪些内部系统 有什么能力

三层想清,Agent 的骨架就出来了。

对 deploy-bot 来说,三层的答案很清晰:

deploy-bot 的答案
职责层 把仓库代码自动部署到测试/生产环境
规范层 按团队部署步骤走,先 staging 后 production
工具层 git、SSH/部署 CLI、云平台接口、通知接口

设计原则一:单一职责

一个 Agent 只干一类事:

❌ 一个 Agent 既处理工单、又写报表、又改代码 ✅ 一个「工单处理 Agent」,只处理工单

职责越单一,越好设计、越好维护、越稳定。

deploy-bot 也一样:只负责部署。它不写业务代码、不查业务报表、不回客户。一旦被塞进别的事,它就会从「部署专家」退化成「什么都会的新手」,还容易把部署搞砸。


设计原则二:明确边界

设计时写清「它能做什么、不能做什么」:

工单处理 Agent
能:识别工单类型、按规范分派、回复客户
不能:直接改工单状态为已解决、访问客户隐私

边界清楚,它才不会乱来,也好审计。

deploy-bot 的边界尤其要「锁死」,因为部署权限很大——改坏一次线上就事故:

deploy-bot
能:读取仓库、执行部署、上报部署状态、回滚到上一稳定版
不能:改生产数据库、删线上数据、绕过门禁直接部署生产

设计原则三:可迭代

Agent 不是一次配好就完。设计时就留出迭代空间:

  • 先在真实任务里试
  • 观察哪里不达标、哪里出错
  • 再调整配置

Agent 是「养」出来的,不是「配」出来的。

deploy-bot 上线后一定会遇到「这个项目部署顺序不对」「那个环境变量没配」「某次回滚慢了」——这些都在告诉我们下一步该调哪。设计时把「哪里记录、怎么复盘」留好,才能越用越顺。


一个完整设计示例

「订单查询 Agent」:

职责层:回答订单状态、发货进度的查询
规范层:只读订单,不修改;回复简洁,附订单号
工具层:接订单查询接口
边界:只能查本客服权限内的订单,不能查用户隐私

清晰、单一、有边界、可迭代。

而我们的 deploy-bot 设计稿,一开始就长这样:

deploy-bot 设计稿 v1.0
职责层:把仓库 main 分支代码自动部署到 staging,通过门禁后部署 production
规范层:按「测试 → 构建 → 部署 staging → 验收 → 部署 production → 上报」顺序
工具层:git、部署脚本、云平台 CLI、通知接口
边界:只读代码;只动 staging/production 部署;不碰数据库;回滚仅限上一稳定版
可迭代:每次部署写日志,失败记录进迭代清单

这张「出生证」,就是后面所有工作的总纲。


常见坑:把「通用 Agent」直接当「自定义 Agent」用

新手最常见的坑,是把 Codex 直接拿来干自定义 Agent 的活,结果发现「它什么都懂但什么都不守规矩」。

真实场景:你没设计架构,直接把 Codex 丢给部署任务,让它「把代码部署了」。Codex 可能真的会去部署,但它可能:没走团队规定的测试门禁、用了过期的构建、没上报结果、甚至试图操作不该碰的环境。

为什么:因为通用 Agent 的默认行为是「尽力完成任务」,而不是「按你的规范完成任务」。规范和边界你不写清楚,它就没有依据。

怎么破:动手部署这种高权限任务,必须先把「职责 / 规范 / 工具 / 边界」四样写进设计稿,再谈配置。这也是为什么这一节要「设计先行」。


小结

  1. 自定义 Agent = 限定职责、遵守规范、对接内部系统的 Codex
  2. 三层架构:职责层、规范层、工具层
  3. 三原则:单一职责、明确边界、可迭代
  4. 它是个「懂规矩的专家」,不是「什么都会的新手」
练习把 deploy-bot 的第一版设计稿写出来。①三步走:a. 给它定一句话职责(自动部署);b. 用「职责层 / 规范层 / 工具层」三层各填一句;c. 用「能 / 不能」写清边界。②怎么判断做对了:三层的每句话都能被机器或人「检查」而不是含糊;「不能」里至少包含一条「不碰生产数据」;别人读一遍就能复述出它管哪类事。③卡住了怎么办:三层写不齐,就先用一句话把职责说圆;边界想不到,就从「它绝对不该碰什么」反推(数据库、绕过门禁、删数据)。

下一节,讲怎么配置业务级自定义 Agent。