uhp-cj:把 Agent harness 变成共享基础设施

💡 原文中文,约10900字,阅读约需26分钟。
📝

内容提要

文章介绍UHP协议(统一驱动Agent harness的HTTP标准)的仓颉实现uhp-cj。作者指出,协议实现的主要精力用于厘清规格冲突而非编码:prose、openapi、schema三份来源常互相矛盾,最终以官方一致性套件为准,并记录了30条判定、逐条绑定测试锚点。SDK约1.4万行,其中一半是类型且仅部分可生成;两个适配器各970行,但成本分布相反。最终通过core、extended、full三档共104项检查,并强调并发需实测、默认保守串行。

🔎

延伸解读

协议实现的核心难点:来源冲突与套件裁决

文章指出,UHP 协议的内容分散在 prose、openapi.yaml 和 schema.json 三份来源中,它们并不总一致。例如 Event 类型在 prose 中是封闭联合,但 openapi 制品只给出自由字符串;UHP-Version 头在 openapi 中只声明于成功响应,prose 却要求所有响应都带。作者最终以官方一致性套件为唯一判据,并记录了 30 条判定,每条都绑定测试锚点。这提示读者:实现他人协议时,厘清规格冲突往往比编码更耗时,而可执行的检查才是真正的约束。

UHP 与 A2A 的边界差异:产品驱动 harness 而非 agent 协作

文章用 DeepSeek Super-agent 的 Router/Worker 架构说明 UHP 与 A2A 的分工。A2A 连接 agent 与 agent,假设两端协商协作;UHP 连接产品与完整 harness,产品只负责派任务、拿结果,不感知 harness 内部如何组织。Router 需要任务状态机、会话隔离、文件产物和 input_request 等能力,这些正好对应 UHP 的协议面。两者不冲突,可以叠加:UHP 服务端背后可以拉起 ACP 适配器,跨组织协作时 agent 之间再用 A2A。选择取

并发能力需实测,默认串行是风险控制

ACP 规格只保证会话可以共存,不保证单连接内能并发跑回合。作者对 opencode、DSH、pi 等 harness 逐项实测,并区分“文档”与“实测”两列,规定没实测过的先当不支持。代码中 sessionMode 默认 Serial,并发调用排队;要开 Parallel 必须先在支持表里证明可行。原因是并发跑错的风险不是变慢,而是任务交错污染——在别人的会话里看到自己任务的输出,且难以复现。这提醒读者:协议声称的能力不等于实际可用,保守默认值能避免隐蔽的串扰问题。

一致性套件的价值:兼容性主张可被第三方证伪

uhp-cj 通过 core 41 项、extended 50 项、full 104 项检查,三档均零 skip。文章强调,套件文档明确“通过套件就是 UHP conformant 的定义”,不是自我评估,任何人都能拿套件测任何人的实现。因此“兼容 UHP”是一个可被证伪的主张,使用者不需要相信实现者,只需重跑一遍。作者还提醒 skip 不等于 pass,检查项有依赖关系,前面失败会导致后面跳过,看似高通过率实际有项目未跑。这种机制对实现者是压力,但对生态互操作是保障。

❓

Q&A

UHP 协议和 A2A 协议有什么区别?

UHP 连接的是产品与完整 harness,让产品能挑选并驱动一个 agent harness;A2A 连接的是 agent 与 agent,用于发现能力、委派工作、交换结果。两者边界不同,可以叠加使用。

uhp-cj 的 SDK 为什么只依赖标准库?

这是有意的取舍:协议实现不应把第三方库的版本问题带给下游,因此 SDK 的 [dependencies] 为空,只依赖 stdx。

实现 UHP 协议时,prose、openapi、schema 三份来源冲突怎么办?

以官方一致性套件为唯一判据。例如 UHP-Version 头,openapi 只声明在成功响应,但 prose 要求每个响应都带,套件 V-01 检查错误响应,因此按 prose 统一补头。

uhp-cj 的 30 条判定是什么?每条需要包含什么?

30 条判定是记录三份来源冲突时如何裁决的清单,分为结构类 6 条、行为类 13 条、可选能力 11 条。每条必须写清判定、落地位置和套件锚点,确保可执行、可验证。

uhp-cj 如何通过一致性套件验证?结果如何?

使用官方 Python 包 uhp-conformance,按 core、extended、full 三档累进检查。uhp-cj 三档报告均为 conformant: true,分别通过 41/41、50/50、104/104 项检查,且零 skip。

uhp-cj 对并发处理默认是什么策略?为什么?

默认使用 Serial 模式,即一个 driver 一次只跑一路回合,并发调用排队。因为 ACP 规格只保证会话共存,不保证单连接内并发;并发跑错可能导致任务交错污染,且难以复现。只有实测确认支持的 agent 才可开启 Parallel。

uhp-server 的 scripted 类型有什么实际用途?

scripted 是一个自检用的假 harness,不依赖任何凭据和模型。部署验证时,改完配置、起服务、打一发 scripted 任务,能通就说明链路正常,避免每次验证都烧 token 或受模型稳定性干扰。

🏷️

标签

➡️

继续阅读