Handoff

任务交接

Agent 把任务转交给另一个 Agent,并带上必要的上下文。

详解

Handoff 是 Multi-Agent 系统里一个 Agent 把任务控制权连同必要上下文一起移交给另一个 Agent 的机制。和 Orchestrator 集中调度不同,Handoff 更偏去中心化:Agent A 在执行中发现"接下来这部分不是我的专长",就主动把任务交出去,而不是每步都回报给中央协调者。常见实现是把 Handoff 做成一个特殊工具:Agent 调用 handoff_to(agent_name, context) 时,系统切换到目标 Agent,并把打包好的上下文注入新 Agent 的对话历史。上下文打包是关键,至少要包含任务当前状态、已完成步骤、待处理问题和用户原始诉求。很多多 Agent 框架会把它实现为 transfer / handoff 工具。风险是上下文丢失:打包不完整时,接收方会"不知道发生了什么",形成信息断层。

一个类比
像客服热线转接专线:前台客服听完你的问题,说"这个需要技术部门来处理,我帮您转接",然后在转接的同时告诉技术工程师"客户反映 App 登录报错 500,已经排查过网络问题"——新接手的工程师不需要你再重复一遍背景,直接接着处理。关键是交接时的「情况说明」,不能一声不吱就把电话转走。
举个例子
用户向客服 Agent 发起对话:
  "我的订单昨天付款了但显示未支付"

客服 Agent 处理对话:
  → 查询订单状态:{order_id: "ORD-2025-001", paid_at: "2025-06-20", status: "pending_payment"}
  → 判断:这是支付对账问题,超出客服权限,需要交给财务核查 Agent

客服 Agent 调用 handoff 工具,打包上下文:
  handoff_to(
    agent = "finance_agent",
    context = {
      "user_id": "U12345",
      "issue": "付款成功但订单状态未更新",
      "order_id": "ORD-2025-001",
      "payment_time": "2025-06-20 14:32",
      "already_checked": ["网络正常", "支付平台已扣款"],
      "user_message_so_far": "..."  # 打包对话历史摘要
    }
  )

财务核查 Agent 接收到任务后:
  → 直接从 context 中了解当前状态
  → 不需要用户重新解释背景
  → 查询支付流水 → 触发手动对账 → 更新订单状态

关键:Handoff 的质量取决于 context 打包的完整性,缺字段就是信息断层。
PYTHON 示例
相关概念