AgentWire CORE v2.3.0
OpenClaw 原生 A2A plugin — 替换"翻译 sidecar 追逐 OpenClaw 私有 API"的失败模式,改为 OpenClaw 原生 plugin 跑在 gateway 进程内,单一 A2A 边界,无私有 API 追逐。
架构
外部 Agent → CORE 18880 → 18789/a2a/jsonrpc → [agentwire-a2a plugin] → openclaw agent CLI → 初梦/影猎/影锻
↑ 标准 A2A 边界 ↑ 绕开 plugin trust gate
New Features
agentwire-a2a OpenClaw 原生 plugin (TypeScript)
- 跑在 OpenClaw gateway 进程内 (18789),无独立 sidecar
definePluginEntry+registerHttpRoute暴露标准 A2A v1.0 (/a2a/jsonrpc+/.well-known/agent.json)- 方案 C2 dispatch: spawn
openclaw agentCLI 调 agent(以外部 operator client 身份走 gateway WS,绕开 plugin runtime scope/trust 限制) - 多轮 session: 同 A2A
contextId进同 OpenClaw session
CORE 侧改动
- 删除
_dispatch_via_openclaw()(私有/rpc/agent,OpenClaw 2026.7.1 已移除) - 所有 peer 统一走
_dispatch_via_a2a(OpenClaw 成标准 A2A peer) _dispatch_via_a2a空 token 不发 Authorization 头(净改进,适用所有 peer)
清理(下线旧 adapter)
~/.openclaw/a2a-gateway/sidecar (PID 476004, 端口 18802) 下线归档到designs/v2.3/legacy-sidecar/- plugin/ 旧 v1.5.5 反向代理骨架重写为 v2.3 原生 plugin
验证(实测全链路)
- M2: plugin
/a2a/jsonrpcSendMessage → 初梦真实回复 "收到,丝线 v2.3 M2 验证 ping ✅" - M3 全链路: 外部 → CORE 18880 → plugin 18789 → 初梦 "pong ✅ — A2A 链路 CORE→plugin→初梦 通畅"
- CORE: 31 tests passing
关键决策:为什么是 CLI 子进程而非进程内 WS
M1 验证 OpenClaw 2026.7.1 安全模型:第三方 plugin 禁止直接驱动 agent turn(api.runtime.gateway.request 被 trust gate 拦,subagent.run 缺 operator.write scope)。三条进程内路径全封。
方案 C2 用 openclaw agent CLI 子进程——以外部 operator client 身份走 gateway WS,不受 plugin trust gate 限制。CLI 调初梦已实战验证。进程 spawn 开销 (~50ms) 相对 agent 推理 (3-30s) 可忽略。v2.3.1 可选升级进程内 WS loopback client(见 designs/v2.3/WS-PROTOCOL-VERIFICATION.md)。
依赖
- plugin: 0 npm 运行时依赖(Node 22 内置
child_process) - CORE: 无新依赖
已知限制(v2.3.0 范围外)
- 反向闭环(agent 主动发 A2A)→ v2.3.1
- SendStreamingMessage / SSE → v2.3.2+
- 动态 agent 发现 → v2.3.1
文档
designs/v2.3/DESIGN.md— 设计文档(R1 评审修订)designs/v2.3/WS-PROTOCOL-VERIFICATION.md— gateway WS 协议技术验证designs/v2.3/legacy-sidecar/— 下线 sidecar 留档
Commit: 11e9bfb · Author: silk-thread silk-thread@agentwire.local