# Google ADK 多智能体：比较 AgentTool 调用与任务转交，核对谁接收下一轮消息

已实际构造Google ADK AgentTool与sub_agents组合并审计缺事件身份反例；没有启动Runner或模型会话，不提供伪造的控制转交日志。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 保留三轮连续问题

conversation.json先查物流、再问退货、最后追问下一步。第三轮故意不指明领域，必须查看真实active agent，不能仅凭最后一段文字判断控制权。

## 2. 定义两类委派路径

同一根Agent中，把shipping包装成AgentTool，把support作为sub_agent。author-control-expectation.json只是作者的预期区分，不是已运行事件日志。

## 3. 实例化真正ADK对象

运行run_sdk.py实际构建Agent、AgentTool和sub_agents树。model占位值不用于请求，脚本不会启动Runner或读取模型凭据。

## 4. 记录需要的事件字段

audit.py要求turn、event_id、author、active_agent和tool_call_id。negative-trace只有“已交接”文字，没有事件身份，应被拒绝作为控制转交证明。

## 5. 授权实跑AgentTool路径

在有兼容模型的隔离环境启动Runner，让根Agent调用shipping工具，保存工具结束后哪个Agent继续生成答案。工具名称或团队架构图不能替代事件轨迹。

## 6. 授权实跑transfer路径

用新的会话比较support接手后的后续消息，记录当前活动Agent和下一轮接收者。固定版本与输入，不把两种会话历史混在同一结果里。

## 7. 逐轮解释控制权差异

把三轮用户消息、每次author、工具调用与活动Agent整理成表。本文只验证对象组合与事件合同，真实控制转交行为仍需在读者的授权模型环境验收。

## 官方依据

- Google ADK 官方文档或源码：https://raw.githubusercontent.com/google/adk-python/main/src/google/adk/tools/agent_tool.py
