AI Agent原理篇15:Agent 运行框架(Harness)

前面讲了模型、循环、工具、上下文、记忆、MCP、Skills。把这些组装起来、让 Agent 真正跑起来的那层程序,叫做运行框架,业内常称 Harness。同一个模型,放在不同的 Harness 里,表现可能天差地别。

一、Harness 是什么

回顾第 04 篇的 Agent Loop,那几十行代码就是一个最简单的 Harness。模型只负责「想」,其余所有事情都由 Harness 来做:

             ┌──────────── Harness ────────────┐
用户 ──────▶ │ 组装上下文 → 调用模型 → 解析输出  │
             │      ▲                  │         │
             │      │            工具调用?      │
             │      │                  ▼         │
             │  回填结果 ◀── 权限检查 → 执行工具 │
             └──────────────────────────────────┘

常见的 Agent 产品(编码助手、桌面助手等)以及各种 Agent 开发框架,本质上都是 Harness 的不同实现。

二、Harness 的核心职责

1. 组装上下文

每次调用模型前,决定放进去什么:System Prompt、工具定义、Skills 的名称和描述、记忆、历史消息。第 07 篇讲的上下文工程,大部分都在这里实现。

2. 管理工具

  • 注册内置工具(读写文件、执行命令、搜索网页等);
  • 连接 MCP Server,把它们的工具合并进来;
  • 执行工具调用,处理超时和错误,把结果整理后回填。

3. 权限控制

模型请求执行一个操作,Harness 决定允不允许:

  • 直接允许:只读操作,比如读文件、查数据。
  • 询问用户:有副作用的操作,比如修改文件、发送消息、执行命令。
  • 直接拒绝:明确禁止的操作,比如删除系统文件、访问不在白名单里的地址。

好的 Harness 让用户可以配置这些规则,比如「这个目录里的文件可以随便改,其他目录要问我」。

4. 上下文压缩

监控上下文长度,接近上限时自动压缩历史(第 07 篇)。用户感觉不到,但长任务能一直进行下去。

5. 子 Agent 调度

提供一个「启动子 Agent」的工具,负责为子 Agent 创建独立的上下文、限制它能用的工具、收集它的结果(第 11 篇)。

6. 状态与持久化

保存会话记录,支持中断后恢复;管理待办列表、记忆文件这些跨步骤的状态。

三、Hooks:在关键节点插入自己的逻辑

很多 Harness 提供 Hooks(钩子)机制:在特定事件发生时,自动运行你写的脚本。常见的触发点:

触发时机 能做什么
工具调用前 检查参数,阻止危险操作,比如拦截包含 rm -rf 的命令
工具调用后 自动处理结果,比如改完代码后自动运行格式化和测试
用户提交消息时 自动附加额外的上下文,比如当前的项目状态
任务结束时 发送通知、记录日志、检查任务是否真正完成

Hooks 的价值在于确定性。你可以在提示词里写「每次改完代码都要运行测试」,但模型可能会忘;写成 Hook,就一定会执行。一个实用的原则是:必须每次都发生的事,用 Hook;需要判断的事,交给模型。

四、为什么 Harness 决定了 Agent 的上限

模型能力是基础,但很多体验上的差异来自 Harness:

  • 工具设计得好不好,决定了模型能不能高效完成任务;
  • 上下文管理得好不好,决定了长任务会不会中途崩溃;
  • 权限设计得好不好,决定了用户敢不敢放手让它干活;
  • 错误处理得好不好,决定了遇到意外时是自动恢复还是直接失败。

这也是为什么用同一个模型,不同产品的效果差别很大。

五、自己写还是用现成的

方式 适合 代价
自己写最小循环 学习原理;需求简单、固定的内部工具 上下文管理、权限、错误处理都要自己做
用 Agent 开发框架或 SDK 需要定制的业务 Agent 要学框架的概念,受框架设计的约束
直接用现成的 Agent 产品,通过 MCP、Skills、Hooks 扩展 个人或团队提效 定制程度有限

建议的学习路径:先自己写一个最小 Harness 理解原理(第 04 篇的练习),再用现成产品加上自己的 MCP Server 和 Skills 解决实际问题,真有需要再用框架开发专门的 Agent。

本篇小结

  • Harness 是模型之外的那层运行程序,负责除「思考」以外的一切。
  • 核心职责:组装上下文、管理工具、权限控制、上下文压缩、子 Agent 调度、状态持久化。
  • Hooks 在关键节点运行确定性逻辑:必须每次发生的事用 Hook,需要判断的事交给模型。
  • Harness 的质量很大程度上决定了 Agent 的实际表现。

思考与练习

  • 如果你要做一个帮团队查业务数据的 Agent,它的 Harness 需要哪些 Hooks?
  • 列出你的 Agent 中「直接允许」「询问用户」「直接拒绝」三类操作各有哪些。

上一篇:AI Agent原理篇14:Skills:按需加载的能力包
下一篇:AI Agent原理篇16:Agent 间通信:A2A 等协议
返回系列总目录

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇