AI 编程 Agent 工程架构实战:别只盯着写代码,真正难的是把它跑稳
很多人做 AI 编程产品,一上来就盯着模型能力:
“Claude 写代码强不强?”
“GPT 会不会改 bug?”
“要不要接 Cursor 那套体验?”
这些当然重要。
但真把产品卖给企业、接进真实代码库、让它自动跑任务,你很快会发现:模型只是牌桌上的一张牌。真正要命的是工程架构。
权限怎么控?
沙盒怎么隔离?
仓库怎么初始化?
测试怎么跑?
代码能不能自动合?
Slack、GitHub、CI、Feature Flag 怎么联动?
这些问题没处理好,AI 写得再快,也可能变成一个“高智商实习生”,三分钟提交代码,五分钟搞崩环境。
下面这套思路,适合正在做 AI 编程 Agent、AI IDE、自动修 bug、自动提 PR、DevOps Agent 的团队参考。别当概念看,很多点可以直接抄到架构设计文档里。
1. Brain / Machine 分离:别让 Agent 拿着钥匙到处跑
做 AI 编程 Agent,架构上建议把系统拆成两层:
- Brain:控制平面,负责思考、规划、调度、决策
- Machine:执行平面,负责跑命令、改文件、执行测试、访问环境
简单讲:
Brain 像项目经理,决定要干什么。
Machine 像施工现场,只负责执行具体动作。
千万别让 Agent 的“大脑”直接拿着一堆生产权限到处跑。那太刺激了,刺激到安全团队会睡不着。
更合理的做法是:
- Agent Loop 放在控制平面
- 沙盒环境只拿最小权限密钥
- 每个任务分配独立执行环境
- 密钥按任务、用户、仓库、权限范围切开
- 执行记录全量留痕,方便审计
这样做的好处很直接:
- 一个任务炸了,不会拖垮其他用户
- 一个沙盒被污染,不会影响主系统
- 企业客户能接受权限边界
- 后面做多租户会轻松很多
一个具体场景
用户让 Agent 修一个支付模块 bug。
Agent 需要:
- 读取仓库代码
- 安装依赖
- 跑单测
- 修改文件
- 提交 PR
它不应该顺手拿到生产数据库密码,也不应该能访问别的团队仓库。
Brain 只负责规划:
读日志 → 找相关文件 → 写测试 → 改代码 → 跑测试 → 提 PR
Machine 只拿这次任务需要的权限。
这才是企业能买单的 Agent 架构。
2. Docker 不够安全,真实产品要认真考虑 VM 沙盒
很多团队做早期 Demo,会用 Docker 跑 Agent 任务。
没问题,快。
但一旦进入企业级场景,Docker 的问题就冒出来了。
Docker 更像进程隔离,不适合作为强安全边界。你让 AI 在里面跑未知代码、执行 shell、安装依赖、跑测试、启动服务,风险会被放大。
更麻烦的是,真实工程经常自己也要用 Docker。
比如仓库里有:
docker compose up -d postgres redis
npm test
这时候你的 Agent 环境如果本身就是 Docker,很容易撞上 Docker-in-Docker 的坑。
痛点包括:
- 权限配置复杂
- 网络隔离麻烦
- 文件系统挂载容易出问题
- 性能不稳定
- 安全边界不够硬
更稳的方向是全 VM 沙盒。
比如使用:
- Firecracker
- MicroVM
- Nested Virtualization
- 快照恢复
- 每任务独立虚拟机
为什么 VM 更适合 AI 编程 Agent?
因为 AI 编程任务很“野”。
它可能会:
- 执行项目里的脚本
- 安装奇怪依赖
- 拉起数据库
- 跑浏览器测试
- 启动后端服务
- 写临时文件
- 修改环境变量
你很难提前知道它会干什么。
VM 的好处是边界更硬,污染更容易清理。
一个任务结束,直接销毁。
下一个任务,从干净快照启动。
这比在一堆容器里打补丁舒服多了。
3. Repo Setup 才是 AI 编程产品最难啃的骨头
很多人以为 AI 编程最难的是“写代码”。
实际落地时,最折磨人的通常是:怎么把这个仓库跑起来。
你随便进一家中大型公司,可能会看到这种开发环境:
- README 三年没更新
- 本地启动要问老员工
- 依赖版本写在群公告里
- 数据库初始化脚本没人敢动
.env.example缺一半字段- 测试必须连内部服务
- Feature Flag 配置散落在后台
然后你让 Agent 自己 setup?
它不崩谁崩。
所以,AI 编程产品里有一个特别值钱的能力:把仓库变成 agent-ready。
也就是让 Agent 每次进来,都能稳定拿到一个可运行、可测试、可恢复的开发环境。
可以怎么做?
建议把 Repo Setup 产品化,而不是靠用户自己填坑。
你可以设计一套流程:
- 扫描仓库语言、包管理器、启动脚本
- 自动识别依赖服务,比如 Postgres、Redis、Kafka
- 生成或修复
setup.sh - 检查
.env.example是否完整 - 跑一次完整初始化
- 成功后生成环境快照
- 后续任务直接从快照恢复
这样 Agent 不用每次都从零开始装依赖。
用户也不用反复看它卡在 npm install、bundle install、pip install。
最小可做版本
如果你现在资源有限,先做这三件事:
- 允许用户配置
setup.sh - 成功 setup 后保存 VM snapshot
- 每次任务从 snapshot 克隆环境
这三个能力已经很值钱了。
因为它能把“跑不起来”这个大坑,变成一个可控流程。
4. 测试不是 Computer Use,别把“点按钮”想得太简单
有些人会把 AI 测试理解成:
让模型看屏幕,然后像人一样点按钮。
这只是很小的一部分。
真实软件测试复杂得多。
尤其是企业应用,测试经常涉及:
- 多个服务一起启动
- 数据库状态预置
- 用户权限切换
- Feature Flag 打开或关闭
- 队列消息触发
- 第三方 API Mock
- 前端页面和后端状态联动
- CI 环境变量注入
你不是让 AI “看见按钮再点击”。
你是在让它理解一个系统怎么运转。
举个例子
你要测试一个“优惠券自动发放”功能。
流程可能是:
- 创建测试用户
- 打开新人活动 Feature Flag
- 模拟用户下单
- 等待异步队列消费
- 检查优惠券是否到账
- 验证前端页面是否展示
- 确认日志没有异常
这不是浏览器自动化能单独解决的。
它需要跨服务编排。
也需要模型理解业务状态。
更靠谱的设计
可以让多个模型分工协作:
- 强模型负责理解任务、拆解测试路径
- 代码模型负责读测试框架和写测试代码
- 轻量模型负责日志分类、失败归因
- 专门模型负责 UI 操作或截图理解
别指望一个模型从头干到尾。
AI 编程产品的形态,更像一支小队,不是一个超级英雄。
5. Auto-merge 很诱人,但两周后你可能会后悔
自动合并听起来太爽了。
用户提一个需求,Agent 改代码、跑测试、提 PR、自动 merge。
老板听了都想鼓掌。
问题是:代码库会慢慢变味。
尤其是纯 vibe coding,也就是靠感觉写、能跑就合、没人认真 review。
短期看,速度飞快。
过两周你再看仓库:
- 命名开始混乱
- 重复逻辑越来越多
- 边界条件没人管
- 测试只覆盖快乐路径
- 架构约束被绕开
- 小 bug 被补丁套补丁
代码质量会向团队里最弱的工程习惯靠拢。
这话不好听,但很真实。
Review Loop 必须保留
AI 编程产品不要把目标定成“完全没人看”。
更实际的目标是:
- Agent 负责完成 80% 机械劳动
- 人类负责关键判断
- 系统负责拦住明显风险
推荐设计几层 Review:
- 自动跑 lint、typecheck、unit test
- 检查改动范围是否异常
- 对敏感文件加人工审批
- 对数据库 migration 加强校验
- 对安全相关代码强制 review
- 让 Agent 自己写变更说明和风险点
可以自动合并什么?
适合自动 merge 的任务:
- 文档 typo
- 小范围配置修复
- 简单测试补充
- 明确的依赖版本升级
- 低风险样式调整
不建议自动 merge 的任务:
- 权限逻辑
- 支付逻辑
- 数据迁移
- 鉴权认证
- 多服务协议改动
- 大面积重构
AI 能写代码,不代表它该直接进主干。
别把方向盘拆了。
6. MCP 很好,但企业集成不能只靠 MCP
MCP 很适合做工具协议层。
它让模型能以统一方式连接工具,确实方便。
但企业级 AI 编程产品,如果只靠 MCP 接 Slack、GitHub、Jira、CI,大概率不够。
原因很简单:企业集成不是“能调用 API”就完事。
你还要处理:
- OAuth 权限
- 用户身份映射
- 企业组织架构
- 审计日志
- Webhook 可靠性
- 速率限制
- 失败重试
- 安全审批
- 私有化部署
- 多租户隔离
这些东西很脏,很细,很麻烦。
但客户买单看的就是这些。
Slack 集成举例
一个真正可用的 Slack 集成,不能只是“发消息”。
它最好支持:
- 在频道里 @Agent 创建任务
- 自动识别线程上下文
- 把 PR 状态同步回线程
- 失败时提醒对应 owner
- 支持用户确认危险操作
- 记录谁发起、谁批准、谁合并
这就不是 MCP 简单包装一下能解决的了。
你需要原生集成。
GitHub 集成也一样
企业客户会关心:
- Agent 用谁的身份提交代码
- PR review 权限怎么继承
- 分支保护规则怎么遵守
- Secret 会不会泄露
- Audit log 能不能查
- GitHub Enterprise Server 支不支持
如果这些问题答不上来,Demo 再炫也很难进采购。
7. Hybrid 模型组合:别迷信一个模型包打天下
AI 编程 Agent 的任务链很长。
它要读需求、读代码、规划步骤、修改文件、跑测试、分析错误、写说明、处理 review。
这些子任务难度不同。
全都用最强模型,成本扛不住。
全都用便宜模型,效果又容易翻车。
更合理的形态是 Hybrid:强模型打头阵,轻量模型做子任务。
一个常见分工
可以这样拆:
- Frontier 模型:理解复杂需求、做架构判断、处理跨文件修改
- Sub-frontier 模型:生成简单代码、补测试、改文档
- 小模型:分类日志、提取错误、做格式检查
- 专用模型:截图理解、UI 操作、代码搜索排序
别让最贵的模型去干“把报错日志整理成 JSON”这种活。
也别让便宜模型去改支付链路。
调度策略很关键
模型组合不是简单地“多接几个 API”。
你需要一个调度层,判断:
- 当前任务难度多高
- 是否涉及核心业务
- 改动范围有多大
- 测试失败是否复杂
- 是否需要升级给更强模型
- 是否要转人工 review
一个实用规则:
能便宜解决的,就别烧钱;一旦出现不确定性,马上升级模型或拉人。
这比盲目追求“全流程自动化”靠谱多了。
AI 编程 Agent 产品落地清单
如果你正在做相关产品,可以按这份清单自查。
架构层
- Brain 和 Machine 是否分离?
- 执行环境是否只拿最小权限?
- 多租户之间是否硬隔离?
- 每次任务是否有完整审计记录?
沙盒层
- Docker 是否只是临时方案?
- 是否支持 VM 或 MicroVM?
- 是否支持环境快照?
- 任务结束后环境能否彻底销毁?
仓库初始化
- 是否能自动识别项目依赖?
- 是否支持用户配置
setup.sh? - 是否能缓存成功环境?
- 是否能定位 setup 失败原因?
测试能力
- 是否能启动多服务?
- 是否支持数据库状态预置?
- 是否能处理 Feature Flag?
- 是否能分析测试失败原因?
代码合并
- 是否区分高风险和低风险任务?
- 是否保留人工 review 入口?
- 是否能自动生成风险说明?
- 是否遵守分支保护规则?
企业集成
- Slack、GitHub 是否是原生集成?
- 是否支持企业身份体系?
- 是否有审计日志?
- 是否支持私有化或企业版部署?
模型编排
- 是否按任务难度选择模型?
- 是否有失败升级机制?
- 是否记录模型决策过程?
- 是否能控制成本上限?
避坑清单:这些坑,踩一个都够疼
坑 1:把 Docker 当成安全边界
Demo 阶段可以。
企业生产环境要慎重。
AI 会跑未知命令,沙盒边界不能太软。
坑 2:忽略 Repo Setup
仓库跑不起来,Agent 再聪明也没用。
把 setup 自动化和 snapshot 做扎实,产品价值会立刻上来。
坑 3:迷信自动合并
自动 merge 不是终点。
好的 Review Loop 才是护城河。
坑 4:把测试理解成点按钮
真实测试是系统编排。
UI 操作只是其中一小块。
坑 5:只接 MCP,不做原生集成
企业客户要的是权限、审计、稳定性。
不是“我能调一下 API”。
坑 6:一个模型干所有活
贵,慢,还不一定稳。
模型分层调度才是长期方案。
一个推荐的 MVP 路线
如果现在要从 0 做一个 AI 编程 Agent,不建议一口吃成胖子。
可以按这个顺序推进:
- 做 Brain / Machine 分离架构
- 用 VM 或 MicroVM 跑任务沙盒
- 支持
setup.sh和环境快照 - 打通 GitHub PR 流程
- 加入基础测试、lint、typecheck
- 建立 Review Loop,不急着全自动 merge
- 接入 Slack 创建任务和状态通知
- 引入模型分层调度,控制成本
这样做出来的产品不会只停留在演示视频里。
它能进真实仓库。
能跑真实测试。
能让工程团队放心一点。
这才是 AI 编程产品真正的分水岭。
结语:AI 写代码不稀奇,能安全交付才值钱
AI 编程产品的竞争,表面看是模型能力。
往深处看,是工程系统能力。
谁能把权限、沙盒、环境、测试、Review、企业集成、模型调度这些脏活做好,谁才更接近真实客户的钱包。
别只做一个会写代码的聊天框。
做一个能进团队、能过审计、能跑测试、能稳稳提 PR 的工程系统。
这条路没那么性感。
但更值钱。