Skip to content

6.6 如何学习 Harness 工程

方法论:用 AI 读框架源码

前面 5 节讲了 Harness 工程的问题、设计清单和产品实现。你可能会问:其他框架是怎么做的?我怎么学习它们的设计?

答案是:让 AI 帮你读源码。

四大 Agent 框架(LangGraph、MAF、AgentScope、Hermes)都是开源的。你不需要逐行读完几万个文件——你只需要让 Qoder 带着具体问题去读特定的代码段。

读源码的正确姿势

错误做法

❌ "帮我分析一下 LangGraph 的源码"

这个提问太大了。LangGraph 有几千个文件,AI 不知道你要看什么,只能给你一个泛泛的概述。

正确做法

✅ "LangGraph 怎么实现条件边(conditional edge)的?找到核心代码,解释它怎么在节点执行后做校验并决定走哪条路"

带着具体问题、具体概念去读,AI 能精准定位到关键代码,给你解释设计思路。

四大框架的阅读清单

按 6.2 的设计清单,每个维度该看哪个框架的什么代码:

1. 约束与边界(Rule + AGENTS.md)

框架看什么具体问题
LangGraph图结构定义节点和边怎么定义?Agent 的行为如何被图结构约束?
MAF装饰器管道装饰器怎么叠加?每个装饰器做什么?怎么组合?
HermesSkill 系统Skill 文件怎么加载?怎么按场景触发?

2. 输出校验(EvalCheck)

框架看什么具体问题
LangGraph条件边(Conditional Edge)检查不通过时怎么走另一条路?
MAFEvalCheck 模块校验函数怎么定义?怎么组合?失败怎么处理?
AgentScope安全中断机制发现危险操作怎么立即停止?

3. 监控与追踪(Monitor)

框架看什么具体问题
MAF可观测性模块怎么记录 Agent 执行过程?怎么对接 OpenTelemetry?
LangGraph状态检查点怎么保存执行状态?怎么恢复?
Hermes日志系统怎么追踪 Agent 的决策过程?

4. 多 Agent 编排

框架看什么具体问题
LangGraph子图(Subgraph)怎么嵌套子流程?父子图怎么通信?
MAFAgent 编排器多个 Agent 怎么协调?谁控制流程?
Hermes插件系统怎么动态加载 Agent 能力?

实操示例:用 Qoder 读 MAF 的 EvalCheck

以下是一次真实的读代码过程:

第一步:定位代码

问 Qoder:"在 agent-framework 仓库里,EvalCheck 相关的代码在哪个文件?
找到定义 EvalCheck delegate 或接口的地方。"

Qoder 会搜索代码库,定位到类似 src/lib/evaluation/EvalCheck.cs 的文件。

第二步:理解设计

"读一下这个文件,告诉我:
1. EvalCheck 的输入输出是什么?
2. 它怎么跟 Agent 的执行流程串起来的?
3. 校验失败后怎么处理?"

第三步:对比自己的实现

"我的 EvalCheck 是这样实现的:[贴你的代码]
MAF 的实现和我的有什么区别?各自的好处是什么?"

第四步:提炼可借鉴的点

"从 MAF 的实现中,有哪些设计是我可以借鉴的?
列出 3 个具体的改进建议。"

对比学习的模板

读完多个框架后,用这个表格做对比:

维度LangGraphMAFAgentScopeHermes我的实现
约束方式图结构装饰器运行时干预Skill 文件Tool 权限
输出校验条件边EvalCheck安全中断Checker Agent
监控状态检查点OpenTelemetry日志日志事件总线
多 Agent子图编排器安全检查插件TaskTool 派发
错误恢复回退边重试装饰器优雅取消修正循环

这张表不是让你背框架特性,而是让你看清:同一个问题,不同框架给出了不同的答案。你的答案是什么?为什么?

学习建议

  1. 不要试图读完整个框架。每个框架都有几万行代码,你只需要读跟你当前问题相关的部分。

  2. 带着问题读。先有具体问题("怎么做输出校验?"),再去找代码。不要漫无目的地浏览。

  3. 对比着读。读完 MAF 的 EvalCheck,再读 LangGraph 的条件边。同一个问题的不同解法,比单一解法更有启发性。

  4. 读完就改。每读完一个框架的某个设计,立刻问自己:"我的代码可以怎么改?"然后动手改。不实践等于没读。

  5. 让 AI 做翻译。框架源码通常是英文的,设计思路可能藏在注释和命名里。让 AI 帮你"翻译"——不是翻译成中文,而是把代码翻译成设计意图。

关键认知

Harness 工程不是学出来的,是做出来的。

你可以读遍所有框架的源码,但如果自己没有做过一个 Agent 系统,读完也只是"知道了"。

这本书讲的 Harness 工程,不是"理论上的最佳实践",而是"我做过的真实决策"——从问题到方案到代码到踩坑到改进。

你可以参考我的决策,但不要照搬。你的场景不同,问题不同,答案也应该不同。

重要的是:知道要解决什么问题,知道有哪些可选方案,知道怎么选。

这就是 Harness 工程的全部。