20 min · 先讲清 harness 到底是什么,再讲三条路怎么选、Easel 的真实教训
🎒 预备知识:完成上一课「A16 浏览器自动化」(零基础入口:第 0 课)
一个能用的 agent 系统分三层,每层的职责和"谁在做"完全不同:
┌─────────────────────────────────────────────┐
│ 业务层:技能、画像、发布逻辑、安全闸门 │ ← 你的差异化,必须自己做
├─────────────────────────────────────────────┤
│ Harness 层:loop 循环、会话持久化、流式、 │ ← 通用脏活,可借可造
│ 工具注册、并发隔离、上下文管理 │
├─────────────────────────────────────────────┤
│ 模型层:LLM API(Claude/GPT/开源模型) │ ← 永远是别人的
└─────────────────────────────────────────────┘
harness = 中间那层。这个词原意是"马具/挽具"——把马的力气转化为可驾驭的拉力。 LLM 是那匹马(有蛮力、无状态、不听使唤),harness 是挽具(把模型的每次输出转化为 受控的工具调用、持久的会话、可见的流式)。回看 A1 那 30 行最小 loop——它其实就是 一个婴儿 harness。问题在于:从婴儿到能上生产的成人,中间缺的每一样都是脏活:
| 能力 | 自研要自己写的 | 对应前置课 |
|---|---|---|
| loop 本体 | 双层循环+停止语义+重试预算 | A3 / 正课 L16 |
| 会话持久化 | transcript 落盘、断线重放、损坏自愈 | A14 / 正课 L11 |
| 流式 | token 流分发、事件总线、断线续传 | A15 / 正课 L10 |
| 上下文管理 | compaction、缓存前缀纪律 | A5 / 正课 L18 |
| 工具基建 | 注册/校验/并行调度/MCP 接入 | A2 / 正课 L17 |
| 并发隔离 | 多会话队列、重入保护 | A9 / 正课 L16 |
这张表就是"买 vs 造"的价格标签:每一行要么花钱(平台的学习成本与耦合), 要么花命(自己写自己修)。
完整平台(OpenClaw、Claude Code/Agent SDK 这类):开箱即用全部脏活, 代价是接受它的概念模型和私有接口。适合:快速把业务跑起来、脏活无差异化价值。
脚手架 SDK(LangGraph、OpenAI Agents SDK 这类):给你积木(图/状态机/工具抽象), loop 和持久化的拼装权在你。适合:需要定制控制流但不想从零写循环。
自研:A1 的 30 行起步,按上表逐行补。适合:loop 本身就是产品核心、 需求极简、或以学习为目的(毕业设计 L20 就走这条路)。
决策四问:
① 我的差异化在 loop 还是在 loop 之上?(之上→借)
② 会话/流式/工具这些脏活我有能力长期维护吗?(没有→借)
③ 平台的私有接口我依赖多深?(深→迁移痛,见下)
④ 团队几个人?能养多少基建?(少→借)
Easel 选了完整平台(OpenClaw gateway):省下了整张脏活表的实现, 换来的是深度耦合——gateway 的 WS RPC、Ed25519 设备签名、raw-stream 文件协议、 workspace 布局(跨版本还变过,issue #19)……这些私有依赖让"适配更多 harness" 成为 roadmap 上的待办。两个可抄的缓解: ① 收敛接触面——Easel 把所有 openclaw 调用收敛到 openclaw_cmd.py、 workspace 解析收敛到 openclaw_workspace.py、超时收敛到 timeouts.py(单一真相源), 换 harness 时改的不是全仓而是一小撮适配层; ② 业务资产 harness 无关——skills 目录(markdown+脚本)、画像(md 文件)、 闸门(独立 Python 脚本)本身不依赖任何 harness,理论上可整体搬到别家。 用第一节的三层图说:它的业务层被精心设计成"看不见" harness 层。
坑 1:为了一个功能引入整个平台。只想要流式却背上整套 gateway—— 先看四问,功能可以单独借(脚手架粒度)。坑 2:自研 loop 不补脏活。 20 行 loop 上生产,第一个死法是没有会话恢复,第二个是没有重试预算。 坑 3:业务资产长在 harness 上。工具定义、技能、画像全部用平台私有格式写—— 迁移时资产全废。资产用开放格式(markdown/JSON/std 脚本),harness 只当运行时。
综合题:三个场景各选一条路并说理由—— ① 个人知识库助手(自己用);② 公司客服 agent(要接工单系统、审计合规); ③ 你想验证"技能路由比函数工具省 token"这个想法。 再答:无论选哪条,你的哪些资产会做成 harness 无关的? 通过即前置课全部毕业,进 M1 入门·六件套 开始正课——你会带着一张完整的知识地图,逐模块核对 Easel 是怎么落这些概念的。