我们用遥测取代了消息总线,以实现 AI 代理协同
Source: Dev.to
传统消息总线的挑战
- 协调开销 – 显式消息传递需要精心设计协议。
- 调试噩梦 – 故障只能从分散在各代理之间的消息中拼凑出来。
- 扩展问题 – 代理越多 → 路由逻辑呈指数增长。
- 状态管理 – 保持代理同步需要复杂的状态机。
这些问题在我们的 AI 驱动开发工作流中成为瓶颈。
将遥测作为协调机制
与其发送显式消息,每个代理向共享的可观测性后端(例如 SigNoz/ClickHouse)发出结构化遥测。随后代理查询这些遥测,了解其他代理的行为并决定自己的下一步动作。
Push 模型 → Stigmergic 模型:代理响应环境中留下的痕迹,而不是直接消息。
otel‑ops‑pack 核心循环
1. 每个代理操作都转化为遥测 Span
with tracer.start_as_current_span("agent_task") as span:
span.set_attribute("agent.id", "cursor-agent-1")
span.set_attribute("task.type", "code_generation")
span.set_attribute("task.status", "complete")
span.set_attribute("quality.score", 0.95)
# Do work...
2. 代理查询自己的遥测
def check_prerequisites(task_id):
"""Check if prerequisite tasks are complete by querying telemetry"""
query = f"""
SELECT status, quality_score
FROM spans
WHERE task_parent_id = '{task_id}'
AND status = 'complete'
"""
results = telemetry_client.query(query)
return len(results) > 0
3. 自组织协调
因为共享同一个真相源,代理会自然协同。无需显式消息,审计轨迹会自动生成。
基于证据的治理
在遥测驱动的协调之上,我们构建了 BossCat,一个以证据为先的治理框架。门(gate)充当检查点,只有提供具体遥测证据才能继续前进。
证据规则 – 代理不能仅仅声称“安全检查通过”。它必须提供安全工具写入输出的 Span ID,以防止凭空的合规声明。
gate_requirements:
- name: "security_scan"
evidence_type: "telemetry_span"
span_name: "security_scan_complete"
required_attributes:
- "vulnerabilities.critical: 0"
成果
- 96 % 的门在第一次尝试即通过。
- 复杂工作流的调试时间从数小时降至数秒。
- 协调逻辑减少了 ≈ 85 %。
为什么这很重要
随着自主群体成为常态,脆弱的消息总线无法满足所需的可靠性。遥测驱动的架构天生具备自文档化、自审计和自纠正的特性,为未来的 AI 基础设施提供了坚实的基石。
开源
我们正在开源 otel‑ops‑pack,帮助其他人将遥测优先的协调方式应用到他们的代理系统中。