打开网易新闻 查看精彩图片

一个基础设施项目里,两个Claude Code实例正在工作。一个写服务,一个配Pulumi。它们本该协作,却各自对着人类同事输出结论,再由人类复制粘贴给对方。

开发者Xaviair发现,自己和同事成了"人肉消息总线"。两周后他开源了Handoff——一个让AI代理直接对话的中继层。上线首周,有团队报告两个AI在部署频道聊了47轮,人类全程未介入。

从"传话筒"到"自组织":一个具体场景

从"传话筒"到"自组织":一个具体场景

Xaviair的原话很直白:「We were the middleware. Two humans acting as a message bus between two AIs.」

这种场景在AI编程工具普及后急剧增加。Claude Code、Cursor、GitHub Copilot等工具各自独立运行,它们能生成代码、诊断错误、执行命令,却无法识别"隔壁还有一个AI在干相关的事"。

Handoff的解决方式是把人类协作的原语移植给AI:频道、线程、@提及、已读回执、共享状态。不是让AI更聪明,是给它们一个能互相看见的会议室。

具体实现上,Handoff提供MCP(模型上下文协议)服务器。Claude Code添加后自动获得17个协调工具,包括post_message、read_unread、set_status、ack等。开发者无需额外训练,Claude会在工作流中自然调用这些能力。

一个典型交互:你的Claude说"ArgoCD期望deploy/{service}/kustomization.yaml",对方的Claude回复"已按结构整理,checkout-api和inventory-service就绪"。全程无复制粘贴,无截图。

技术设计:当AI需要"办公室政治"

技术设计:当AI需要"办公室政治"

Handoff的架构选择反映了对AI协作的深层理解。消息系统支持线程化回复,避免长频道信息混乱;@提及机制让代理能定向通信;ack和get_acks实现已读确认,解决"对方看到没"的经典焦虑。

状态管理采用键值对形式,如stage = building、lock = agent-1、progress = 4/5。每次写入记录历史,支持审计追踪。这对需要明确责任边界的工程场景至关重要——当部署失败时,你能查到哪个代理在何时标记了状态。

实时推送通过SSE(服务器发送事件)实现,代理可选择订阅而非轮询。这对资源敏感型任务有意义:一个监控代理不需要每秒查询,它可以在异常发生时立即被唤醒。

打开网易新闻 查看精彩图片

Xaviair最强调的功能是细粒度权限。每个API密钥携带权限映射,精确控制可访问的频道及读写级别。示例配置中,某密钥对build频道有写入权,对deploy和monitoring仅只读。

「This is the feature I'm most proud of」,他在文档中写道。这种设计与企业IT的合规需求直接对应——AI代理不应默认获得全局访问,就像新员工不会第一天拿到所有系统权限。

部署与采用:三步骤的刻意简化

部署与采用:三步骤的刻意简化

Handoff的安装被压缩到两个命令。创建团队只需一次curl调用,返回API密钥后通过create_key端点分发给团队成员。添加MCP服务器同样是一条命令,指定中继URL和密钥即可。

这种极简设计针对特定痛点:AI工具的集成往往死于配置复杂度。Xaviair的产品经理背景在此显现——他优先消除采纳摩擦,而非堆砌功能。

当前采用数据有限,但早期反馈显示两类使用模式。一类是"人类设定目标,AI自主协商执行细节",如多服务部署中的依赖协调;另一类是"AI向人类汇报,但人类选择性介入",利用read_unread机制批量审阅AI对话历史。

一个未预期的用例出现在测试场景:QA代理和开发代理在review频道对峙,前者报告异常,后者提交修复,循环直至测试通过。人类仅在最终验收时查看汇总。

加密与边界:客户端密钥的信任模型

加密与边界:客户端密钥的信任模型

Handoff提供可选的AES-256-GCM客户端加密。设置encryptionKey后,服务端仅存储密文,无法读取内容。这解决了多租户场景的核心顾虑——中继服务提供商不能窥探商业敏感信息。

但加密也引入新约束:服务端无法实现基于内容的功能,如全文检索或智能路由。Xaviair的选择是功能分层——基础协调走明文,敏感通信走加密,由团队自行权衡。

这种设计与端到端加密通讯工具(如Signal)逻辑一致,但应用场景不同。AI代理的通信往往包含结构化数据(配置参数、状态标记),人类可读性并非首要目标,机器可解析性才是。

生态位置:MCP协议的基础设施层

生态位置:MCP协议的基础设施层

打开网易新闻 查看精彩图片

Handoff的底层依赖值得注意。MCP(模型上下文协议)由Anthropic提出,旨在标准化AI与外部工具的交互。Handoff作为MCP服务器,本质上是在扩展Claude的能力边界——不是通过训练,而是通过工具发现。

这种架构选择有战略含义。Handoff不绑定特定模型,但当前实现针对Claude优化。若其他AI助手(如OpenAI的Codex或Google的Gemini CLI)支持MCP,理论上可无缝接入。

更深层的问题是:AI协作需要多少标准化?Handoff的频道/线程/状态模型借鉴了Slack和Discord,但这是人类社交的投影,未必是机器通信的最优解。未来可能出现更原生的AI协议,如基于意图的声明式通信,而非消息传递。

Xaviair的回应是务实优先。他在README中明确:「Give agents the same primitives they'd need if they were humans on a team」。先解决眼前问题,而非等待理想方案。

这种态度在开源社区获得一定共鸣。Handoff的GitHub仓库在发布两周内获得数百星标,Issues区活跃着功能请求和场景讨论。最频繁的请求是多模型支持——让Claude和GPT-4o实例能同频道对话。

组织影响:当"人机比例"开始变化

组织影响:当"人机比例"开始变化

Handoff的真正冲击力可能在组织层面。传统软件开发的人机边界清晰:人类决策,工具执行。AI编程助手模糊了这一边界,而Handoff进一步消除"人类中转"环节。

这引出一个尚未充分讨论的问题:当两个AI能直接协商技术方案,人类保留什么角色?当前Handoff的设计假设是人类仍设定目标、分配频道权限、验收结果。但频道内的具体讨论,人类可能选择性地事后审查。

某早期采用者的反馈颇具代表性:「我让它们自己在deploy频道吵了20分钟,最后去看结论。大部分时候它们是对的,偶尔一起走进死胡同。」

这种"委托-监督"模式与微服务架构的管理哲学相似:定义清晰的接口和边界,内部实现自治。Handoff提供的权限系统和状态日志,正是支撑这种自治的基础设施。

但风险同样存在。AI代理的协作可能产生人类难以追踪的依赖关系。一个代理设置的status = ready,另一个代理基于此启动操作,若状态语义存在微妙误解,故障排查将比人类沟通失误更困难。

Xaviair的应对是强化可观测性——完整的消息历史和状态变更日志。但这要求人类愿意投入时间审计,而非常态化选择"相信AI"。

当某团队报告他们的两个Claude实例在build频道持续对话47轮、成功协调完一次复杂迁移而未唤醒任何人类时,这是效率的胜利,还是某种更深层变化的信号?