
Harness Engineering:生产级 Agent 的十二维度

这不是 Anthropic 或任何组织的官方分类。
这是从前述各 Agent 产品的实现中抽象出的共性组件。
一个生产级 Agent 需要处理的十二个维度。
从玩具到生产,这十二个维度缺一不可。
为什么需要这个框架?

现状:
很多人在写 Agent。
问题:
- 大部分是玩具
- 跑几个 prompt 就觉得是 Agent
- 没有考虑生产环境的问题
- 没有考虑错误处理
- 没有考虑安全护栏
- 没有考虑状态管理
结果:
- Demo 很好,生产不能用
- 偶尔能用,不稳定
- 能跑,但不能维护
Harness Engineering 的归纳框架:
从各种 Agent 产品中抽象出的共性组件。
价值:
- 提供完整的视角
- 覆盖所有关键维度
- 帮助从玩具到生产
十二个维度总览
核心维度(6 个)
- 编排循环 — Agent 什么时候做、什么时候停
- 工具系统 — Agent 能调什么、怎么调
- 记忆管理 — 跨会话状态存在哪
- 上下文管理 — 模型能看到什么
- Prompt 构造 — 系统指令怎么注入
- 输出解析 — 模型的响应怎么变成行动
生产维度(6 个)
- 状态管理 — 会话、任务、迭代的状态
- 错误处理 — 调失败了怎么办
- 安全护栏 — 什么绝对不能做
- 验证循环 — 完成的判断标准
- 子 Agent 编排 — 多 Agent 怎么协作
- 安全机制 — 沙箱、权限、审计
核心维度详解
1. 编排循环

问题: Agent 什么时候做、什么时候停
核心决策:
- 什么时候调用模型?
- 什么时候调用工具?
- 什么时候停止?
- 什么时候重试?
典型模式:
while not done:
思考 → 行动 → 观察 → 判断关键问题:
- 如何判断完成?
- 如何避免无限循环?
- 如何处理超时?
- 如何处理中断?
生产要求:
- 必须有明确的停止条件
- 必须有最大迭代次数
- 必须有超时机制
- 必须有中断处理
2. 工具系统

问题: Agent 能调什么、怎么调
核心组件:
- 工具注册
- 工具发现
- 工具调用
- 工具验证
- 工具结果解析
关键问题:
- 工具如何注册?
- 工具如何描述给模型?
- 工具参数如何验证?
- 工具调用失败如何处理?
- 工具结果如何解析?
生产要求:
- 工具必须有清晰的描述
- 工具必须有参数验证
- 工具必须有错误处理
- 工具必须有权限控制
- 工具必须有日志记录
3. 记忆管理

问题: 跨会话状态存在哪
核心组件:
- 短期记忆(会话内)
- 长期记忆(跨会话)
- 记忆检索
- 记忆更新
- 记忆清理
关键问题:
- 记忆存什么?
- 记忆存多久?
- 记忆如何检索?
- 记忆如何更新?
- 记忆如何清理?
生产要求:
- 必须有记忆索引
- 必须有记忆过期策略
- 必须有记忆去重
- 必须有记忆权限控制
- 必须有记忆审计
4. 上下文管理

问题: 模型能看到什么
核心组件:
- 上下文选择
- 上下文压缩
- 上下文优先级
- 上下文窗口管理
- 上下文缓存
关键问题:
- 什么内容应该放入上下文?
- 上下文太大怎么办?
- 上下文优先级如何判断?
- 上下文如何压缩?
- 上下文如何缓存?
生产要求:
- 必须有上下文选择策略
- 必须有上下文压缩机制
- 必须有上下文优先级
- 必须有上下文窗口管理
- 必须有上下文缓存策略
5. Prompt 构造

问题: 系统指令怎么注入
核心组件:
- 系统指令模板
- 用户指令注入
- 工具描述注入
- 上下文注入
- 动态指令生成
关键问题:
- 系统指令如何组织?
- 用户指令如何注入?
- 工具描述如何注入?
- 上下文如何注入?
- 动态指令如何生成?
生产要求:
- 必须有清晰的指令结构
- 必须有指令版本控制
- 必须有指令测试
- 必须有指令 A/B 测试
- 必须有指令回滚
6. 输出解析
问题: 模型的响应怎么变成行动
核心组件:
- 响应解析
- 结构化提取
- 意图识别
- 参数提取
- 错误处理
关键问题:
- 响应格式如何约定?
- 响应如何解析?
- 结构化数据如何提取?
- 意图如何识别?
- 解析失败如何处理?
生产要求:
- 必须有明确的响应格式
- 必须有响应验证
- 必须有解析错误处理
- 必须有解析重试
- 必须有解析日志
生产维度详解
7. 状态管理

问题: 会话、任务、迭代的状态
核心组件:
- 会话状态
- 任务状态
- 迭代状态
- 状态持久化
- 状态恢复
关键问题:
- 状态如何表示?
- 状态如何持久化?
- 状态如何恢复?
- 状态如何迁移?
- 状态如何清理?
生产要求:
- 必须有明确的状态定义
- 必须有状态持久化
- 必须有状态恢复机制
- 必须有状态迁移验证
- 必须有状态清理策略
8. 错误处理

问题: 调失败了怎么办
核心组件:
- 错误检测
- 错误分类
- 错误恢复
- 错误重试
- 错误上报
关键问题:
- 错误如何检测?
- 错误如何分类?
- 错误如何恢复?
- 错误如何重试?
- 错误如何上报?
生产要求:
- 必须有完整的错误分类
- 必须有明确的错误处理策略
- 必须有错误重试机制
- 必须有错误降级策略
- 必须有错误监控和告警
9. 安全护栏

问题: 什么绝对不能做
核心组件:
- 输入过滤
- 输出过滤
- 操作限制
- 权限控制
- 审计日志
关键问题:
- 什么内容必须过滤?
- 什么操作必须限制?
- 权限如何控制?
- 审计如何记录?
- 违规如何处理?
生产要求:
- 必须有输入过滤规则
- 必须有输出过滤规则
- 必须有操作白名单/黑名单
- 必须有权限控制
- 必须有完整的审计日志
10. 验证循环

问题: 完成的判断标准
核心组件:
- 验收标准
- 自动验证
- 人工验证
- 迭代修复
- 验证报告
关键问题:
- 完成如何定义?
- 如何自动验证?
- 如何人工验证?
- 如何迭代修复?
- 验证结果如何报告?
生产要求:
- 必须有明确的验收标准
- 必须有自动验证机制
- 必须有人工验证机制
- 必须有迭代修复机制
- 必须有验证报告
11. 子 Agent 编排
问题: 多 Agent 怎么协作
核心组件:
- Agent 发现
- Agent 调度
- Agent 通信
- Agent 协作
- Agent 监控
关键问题:
- Agent 如何发现?
- Agent 如何调度?
- Agent 如何通信?
- Agent 如何协作?
- Agent 如何监控?
生产要求:
- 必须有清晰的 Agent 定义
- 必须有灵活的调度策略
- 必须有标准化的通信协议
- 必须有明确的协作模式
- 必须有完整的监控
12. 安全机制

问题: 沙箱、权限、审计
核心组件:
- 沙箱隔离
- 权限管理
- 审计日志
- 安全监控
- 应急响应
关键问题:
- 如何隔离 Agent?
- 权限如何管理?
- 审计如何记录?
- 安全如何监控?
- 应急如何响应?
生产要求:
- 必须有沙箱隔离
- 必须有最小权限原则
- 必须有完整的审计日志
- 必须有实时安全监控
- 必须有应急响应机制
玩具 vs 生产

玩具 Agent
关注:
- 编排循环(能跑就行)
- 工具系统(有几个工具)
- Prompt 构造(有个 prompt)
- 输出解析(能解析就行)
问题:
- 没有错误处理
- 没有安全护栏
- 没有状态管理
- 没有验证循环
- 没有安全机制
结果:
- Demo 很好
- 生产不能用
生产 Agent
关注:
- 所有十二个维度
特点:
- 有完整的错误处理
- 有明确的安全护栏
- 有可靠的状态管理
- 有严格的验证循环
- 有完善的安全机制
结果:
- Demo 很好
- 生产也能用
如何应用这个框架

评估现有 Agent
步骤 1:列出十二个维度
逐个检查你的 Agent 覆盖了哪些维度。
步骤 2:评估覆盖程度
每个维度打分(0-10 分):
- 0 分:完全没有考虑
- 5 分:有基本实现
- 10 分:生产级实现
步骤 3:识别薄弱环节
找出得分最低的维度,优先改进。
步骤 4:制定改进计划
为每个薄弱环节制定具体的改进计划。
设计新 Agent
步骤 1:列出十二个维度
从设计阶段就考虑所有十二个维度。
步骤 2:定义优先级
根据应用场景,定义维度的优先级。
步骤 3:设计每个维度
为每个维度设计具体的实现方案。
步骤 4:验证完整性
确保所有维度都有明确的实现方案。
写在最后:从玩具到生产

很多 Agent 是玩具。
为什么?
- 只关注核心维度
- 忽略生产维度
- 没有考虑错误处理
- 没有考虑安全护栏
结果:
- Demo 很好
- 生产不能用
生产级 Agent 需要考虑所有十二个维度。
核心维度:
- 编排循环
- 工具系统
- 记忆管理
- 上下文管理
- Prompt 构造
- 输出解析
生产维度:
- 状态管理
- 错误处理
- 安全护栏
- 验证循环
- 子 Agent 编排
- 安全机制
Harness Engineering 的归纳框架:
从各种 Agent 产品中抽象出的共性组件。
价值:
- 提供完整的视角
- 覆盖所有关键维度
- 帮助从玩具到生产
从玩具到生产。
这十二个维度,缺一不可。
Harness Engineering 的归纳框架
生产级 Agent 的十二个维度。
"
