进六 Harness 进阶:编排、观测与部署

进六 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 走向合并,生态在收口。

经验:三个协议不打架,各管一段。选型时先问:我要接工具、连同伴、还是被宿主控制?