生产 Harness 七大模式
目录
- 框架:预防 → 检测 → 纠正
- 模式 ① 边界约束(Prevent)
- 模式 ② 上下文预算(Prevent)
- 模式 ③ 工具最小权限(Prevent)
- 模式 ④ 运行时监测(Detect)
- 模式 ⑤ 输出验证(Detect)
- 模式 ⑥ 熔断与降级(Correct)
- 模式 ⑦ HITL 与审计(Correct)
- 七大模式对照表(面试速记)
- 落地优先级(资源有限时)
- 延伸阅读
框架:预防 → 检测 → 纠正
生产事故里,Agent 失败常表现为:无限调工具、越权写库、幻觉当事实执行、成本单请求爆掉。Harness 的七大模式按 PDC(Prevent-Detect-Correct) 组织,便于团队分工与审计对齐。
模式 ① 边界约束(Prevent)
目标:在模型「想做什么」之前,缩小可行域。
| 手段 | 示例 |
|---|---|
| maxSteps / maxToolCalls | 单请求最多 5 步、10 次工具 |
| 工具白名单 | 客服 Agent 只有 searchOrder、createTicket |
| 只读默认 | 写操作 tool 默认不在 schema 里,需动态解锁 |
| 请求级 quota | 每用户每日 Agent 调用 100 次 |
| 领域 system | 「不得代表用户完成支付」写进 system |
面试点:边界约束不是「写进 prompt 就行」——必须在 Harness 代码里硬编码,模型提示只是补充。
模式 ② 上下文预算(Prevent)
目标:防止 context 爆炸导致 latency、成本、注意力稀释。
| 手段 | 说明 |
|---|---|
| Token 预算器 | 组装 messages 前算 token,超限则裁 RAG 或摘要 history |
| RAG top-k 动态 | 简单问句 k=3,复杂分析 k=8 |
| Tool result 截断 | SQL 查询结果只回前 50 行 + totalCount |
| 去重 | 同一文档片段不重复注入 |
| Prompt Caching | 稳定 system 前缀,降低重复成本 |
与 02-Harness核心组件与架构 中 Context 模块一一对应。
模式 ③ 工具最小权限(Prevent)
目标:即使模型或用户被注入恶意指令,工具层仍不能越权。
| 层级 | 实践 |
|---|---|
| 身份 | tool 执行带 userId / tenantId,不信任模型传的 id |
| 参数 | Zod 校验;拒绝多余字段 |
| 副作用分级 | L0 只读 / L1 写内部 / L2 写外部 / L3 资金与人身 |
| MCP | Server 侧 OAuth scope;Client 侧 per-session 连接 |
| 网络 | 工具出网走固定 egress,禁止任意 URL fetch |
反例:把 exec(sql) 直接暴露给 Agent 且无 row-level security——属于没有 Harness,只有「会说话的 SQL 客户端」。
模式 ④ 运行时监测(Detect)
目标:循环进行中发现问题,而不是等用户投诉。
| 监测项 | 阈值示例 | 动作 |
|---|---|---|
| 重复 tool 调用 | 同一 name+args 连续 2 次 | 注入 system 警告或终止 |
| 步数增长 | step > 3 且仍无 final answer | 触发摘要并强制收尾 |
| 延迟 | 单步 LLM > 30s | 切换小模型或降级 |
| 成本 | trace 累计 > $0.5 | 熔断 |
| 异常栈 | tool 5xx | 记录并返回可重试错误给模型 |
实现上在 onStepFinish 里写 规则引擎(简单 if)或 轻量分类器(重复模式检测)。
模式 ⑤ 输出验证(Detect)
目标:模型「说完了」不等于「可以交给用户或下游系统」。
| 类型 | 手段 |
|---|---|
| 结构化 | Structured Outputs / JSON Schema,解析失败则重试 |
| 事实性 | 带 RAG 时要求必须带 citation;无 citation 的 factual claim 打标 |
| 业务规则 | 退款金额 <= 订单金额 |
| 安全 | 输出侧内容审核 API |
| 格式 | Markdown 链接白名单、禁止 raw HTML |
2026 趋势:能 Structured 就不要纯文本让下游 regex——Harness 在 finishReason === stop 后加 validate → repair(一次)→ fail 管道。
模式 ⑥ 熔断与降级(Correct)
目标:失败可控、用户可感知、系统可恢复。
| 场景 | 降级策略 |
|---|---|
| 模型超时 | 换 fast 模型或返回「稍后邮件通知」 |
| 工具不可用 | 跳过 tool,明确告知「暂无法查询订单」 |
| Guardrail 触发 | 固定拒答模板 + 工单入口 |
| 全链路失败 | 缓存的上一次相似问答(谨慎) |
熔断器状态机:Closed → Open(连续失败 N 次)→ Half-Open(探活)→ Closed。对外部 MCP Server 尤其必要。
模式 ⑦ HITL 与审计(Correct)
目标:高风险动作必须有人签字,事后可追责。
| 环节 | 实践 |
|---|---|
| HITL | L2+ 工具先 pendingApproval,前端弹审批;超时自动拒绝 |
| 审计日志 | who、when、traceId、tool、args 哈希、result 摘要 |
| 回放 | 用 trace 在 staging 复现(脱敏) |
| 合规 | 保留期、GDPR 删除与 trace 关联 |
OpenClaw / 企业 IM 机器人里常见「发消息前确认」——本质就是 Harness 模式 ⑦。
七大模式对照表(面试速记)
| # | 模式 | P/D/C | 一句话 |
|---|---|---|---|
| 1 | 边界约束 | P | 步数、工具集、quota 硬限制 |
| 2 | 上下文预算 | P | 裁 history/RAG/tool result |
| 3 | 工具最小权限 | P | 网关校验 + 身份 + 分级 |
| 4 | 运行时监测 | D | 重复调用、成本、延迟 |
| 5 | 输出验证 | D | Schema、citation、业务规则 |
| 6 | 熔断与降级 | C | 换模型、跳过 tool、模板回复 |
| 7 | HITL 与审计 | C | 审批门 + trace 留存 |
落地优先级(资源有限时)
- ① ③ ④ — 防事故(循环、越权)
- ② ⑤ — 防质量与成本
- ⑥ ⑦ — 防声誉与合规
最小项目 02-加护栏与审批门-HITL 覆盖 ①③⑦ 的可运行版本。