架构约束即生产力:用不变量替代微管理
约束不是限制 Agent 的枷锁,而是让 Agent 高速运转的轨道。
为什么 Agent 需要严格结构
- Agent 在松散、模糊的环境中表现差
- Agent 在严格边界 + 可预测结构的环境中表现好
- 传统团队到百人规模才做的架构治理,Agent 团队从第一天就需要
分层架构模型
OpenAI 为每个业务领域定义了固定分层,严格校验依赖方向:
Types → Config → Repo → Service → Runtime → UI
- 代码只能沿箭头方向依赖(向"前"依赖)
- 横切关注点(auth / telemetry / feature flags)通过 Providers 单一接口注入
- 违反 → 自定义 linter 报错 + 结构测试拦截
"品味不变量" (Taste Invariants)
不规定具体实现,只强制关键约束:
| 约束 | 说明 |
|---|---|
| 边界处解析数据 | Agent 自主选择了 Zod,但规则没指定具体库 |
| 结构化日志 | 静态强制,禁止自由文本日志 |
| 命名规范 | schema / type 统一命名风格 |
| 文件大小限制 | 防止单文件过度膨胀 |
Linter 错误信息 = Agent 的修复指令。自定义 linter 的 error message 直接注入 Agent 上下文。
让应用对 Agent 可读
- Per-worktree 启动:每个 Codex 任务运行独立应用实例
- Chrome DevTools Protocol:Agent 直接操作 DOM、截图、导航
- 本地可观测性栈:每个 worktree 独立的 logs / metrics / traces
- Agent 可用 LogQL 查日志、PromQL 查指标
- 任务完成后自动销毁
核心哲学
中央强制边界,局部允许自治。
- 深度关注:边界、正确性、可复现性
- 边界内:Agent 有充分自由
- 代码风格不必匹配人类偏好 → 只需正确、可维护、对未来 Agent 可读