进六 Harness 进阶:编排、观测与部署
本章目录
06.1 Harness:模型外面那层壳到底是什么
2026 年 5 月,掘金《Harness Engineering》一句话点透:Claude Code 就是包在 Claude 外面的 agentic harness——它提供工具、上下文管理、执行环境,把语言模型变成能干活的程序员。
示意图 20:Agent = Model + Harness
flowchart TD
A["AI Agent"] --> M["Model 模型<br/>只会预测下一个 token"]
A --> H["Harness 马具/壳"]
H --> T["工具执行"]
H --> C["上下文管理"]
H --> L["循环控制 (Agent Loop)"]
H --> P["权限/沙箱"]
H --> O["可观测"]
style H fill:#0ea5a4,stroke:#0f766e,color:#fff
核心建议:模型会越来越强且趋同。决定你产品上限的,是那层把模型"套"好的 Harness。别只盯着换模型。
06.2 Hook 与可观测性:怎么知道 Agent 在干啥
呼应 §08.5。补 Hook(钩子):在"工具调用前/后"插入拦截逻辑。例如:
- pre-tool:调危险命令前弹审批。
- post-tool:每次调用自动写日志、计费。
Hook + 链路追踪,才让你"看得见"Agent。没这层,出事只能猜。
06.3 部署与调度:跑在哪、什么时候跑
呼应 §08。补一句:Agent 不是常驻进程。调度决定它何时被唤起(事件触发/定时/人工),部署决定跑在云函数还是容器。长任务用异步队列,别占着请求线程。
06.4 ACP:标准化的 Agent 控制接口
协议版图补全(§03.5 讲了 MCP、A2A):
示意图 21:三大协议各管一段
flowchart TD
A["Agent A"] -->|"MCP 接工具/数据"| T["工具·数据源"]
A -->|"A2A 找同伴"| B["Agent B"]
H["宿主/编辑器"] -->|"ACP 控 Agent"| A["Agent A"]
style A fill:#e8f0fe,stroke:#2563eb
- MCP:Agent ↔ 工具/数据(USB-C)。
- A2A:Agent ↔ Agent(协作)。
- ACP(Agent Client Protocol):宿主/编辑器 ↔ Agent(控制接口),类比 LSP 当年统一语言服务器。2025 年 IBM 的 ACP 与 Google 的 A2A 走向合并,生态在收口。
经验:三个协议不打架,各管一段。选型时先问:我要接工具、连同伴、还是被宿主控制?