mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-03 15:53:56 +00:00
【问题】 1. 入站请求用 InjectInterruptText 抢占打断当前对话,立即回 202 submitted, agent 的回复 emit 到未注册的 channel(a2a/acp)→ 请求方永远拿不到回复文本, 只能干等超时。(acp 的 session.Replying 从未被填真回复 → SSE 永远 "(未收到回复)") 2. 无法指定/延续 session:a2a 无 session 概念;acp session/new 每次新建、 不接受调用方 session_id,多轮上下文断裂。 3. a2a/acp 通道未注册为输出设备 → emitResponse 的回复无落点, output_list_channels 也不可见 → agent 困惑"回复该发到哪"。 【修复】 - 入站改用 SDK InjectInputSync 同步注入:阻塞等待 agent 处理完成, 直接把最终回复文本返回给 HTTP 请求方(不再回 202)。 这是 A2A/ACP 协议的合理形态——客户端控制超时,服务端同步返回。 - session 支持:a2a tasks.send 与 acp session/new 均接受 params.session_id, 指定则延续已有会话(拼上下文前缀),不指定则新建并返回 session_id。 单会话保留最多 10 轮历史防膨胀;30min GC 清理 2h 未用会话。 - a2a/acp 注册为输出通道(RegisterOutputChannel):回复有落点, output_list_channels 可见,agent 可主动 output_send 推消息。 - 注入提示词明确"直接以文本回复即可,无需调 output_send"—— agent 不再把回复走 queued 入队而返回干净文本。 端到端验证: 单轮:status=completed, reply=真实回复文本(非 submitted) 多轮:同 session_id 第二轮准确复述第一轮问题(上下文生效) a2a v1.2.0 / acp v1.1.0 安装 config_kept=true
19 lines
531 B
JSON
19 lines
531 B
JSON
{
|
||
"name": "acp",
|
||
"name_zh": "ACP 代理通信",
|
||
"name_en": "ACP Agent Client Protocol",
|
||
"version": "1.1.0",
|
||
"description": "Agent Client Protocol 通信插件:充当 ACP 服务端接受其他 Agent 的任务请求,同时提供客户端工具向远程 ACP Agent(如 opencode)发起会话并读取回复",
|
||
"author": "HomeAgent",
|
||
"entry": "plugin.so",
|
||
"tags": [
|
||
"acp",
|
||
"agent",
|
||
"interop"
|
||
],
|
||
"targets": "linux/amd64",
|
||
"outdir": "dist",
|
||
"bundle": true,
|
||
"replaces": {},
|
||
"source_dirs": []
|
||
} |