第 03 篇 · Eino ADK 实战:多 Agent 与人工中断

举报
yd_287713361 发表于 2026/10/28 23:42:42 2026/10/28
【摘要】 第 03 篇 · Eino ADK 实战:多 Agent 与人工中断

原文链接:https://mp.weixin.qq.com/s/Bl0mcQ5QUAwjOCDEVEeGbQ

本文首发于微信公众号「月牙寂」,此处为同步转载。

人类作者:月牙寂(龚浩华)

Agent 作者:月绡凝(小凝)

定位:Agent 实战系列板块一·框架第 03 篇(收尾)——Eino ADK 实战:Agent Development Kit 的多 Agent 协作、子 Agent、HITL 中断恢复;事件流分发与任务控制权转让。

免责声明:本文为学习与技术分享用途,代码示意依据官方文档。

01SECTION

第 03 篇 · Eino ADK 实战:多 Agent 与人工中断


02SECTION

导读


02 篇的 ReAct Agent 是「单兵」。真实业务常要「多兵种协同」(主 Agent 派活 + 子 Agent 分工)+「人工把关」(高风险动作中断等人批)。Eino 官方 ADK(Agent Development Kit,借鉴 Google ADK 设计)专为多 Agent + HITL 场景沉淀。本篇搭一个主 Agent + 子 Agent 的最小系统,并演示中断/恢复。

03SECTION

一、ADK 是什么


•定位:Eino 的高层 Agent 开发框架——比手写 Graph 更面向「Agent」抽象;

•能力:多 Agent 协作(子 Agent)、上下文传递、事件流分发与转换、任务控制权转让(handoff)、中断与恢复(HITL)、通用切面;

•与 flow/react 的关系:单 Agent 用 react 够了;多 Agent 场景建议用 ADK。

04SECTION

二、最小实战:单 Agent(ChatModelAgent)


go

agt, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{

    Model: openaiCli,                    // 可调用模型

    ToolsConfig: adk.ToolsConfig{

        ToolsNodeConfig: compose.ToolsNodeConfig{

            Tools: todoTools,            // 工具集(如任务管理工具)

        },

    },

    OutputKey:     "main-agent",

    MaxIterations: 50,                   // 最大迭代(比 react 的 MaxStep 更宽)

    Name:          "main-agent",

    Description:   "master agent",       // 供父/子 Agent 调度时理解职责

    Instruction:   "角色:xx 助手\n核心职责:专注 xx。\n输出规范:xx",

})

•与 react 的差异:多了 Name/Description/Instruction——这些是给「别的 Agent」看的(调度方靠 Description 决定把任务派给谁)。

05SECTION

三、多 Agent 实战:主 Agent + 子 Agent


go

// 1. 创建子 Agent(如「搜索 Agent」「写作 Agent」)

searchAgent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{

    Model: openaiCli,

    ToolsConfig: ... // 搜索工具

    Name: "search-agent", Description: "负责检索信息并返回摘要",

    Instruction: "...",

})

writerAgent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{ /* ... */ })


// 2. 把子 Agent 挂到主 Agent 下(SubAgent 机制)

mainAgent, _ := adk.SetSubAgents(ctx, mainAgent, searchAgent, writerAgent)


// 3. 运行:主 Agent 判断「该派谁」,把子任务 handoff 给对应子 Agent

out, _ := mainAgent.Invoke(ctx, input)

•原理(对应 agent-范式 06 篇「Manager-Worker 层级」):主 Agent 当经理拆任务、子 Agent 当工人执行——上下文隔离(子 Agent 只带所需上下文)是核心收益;

•工程点:每个 Agent 的 Description 决定了调度质量——把「谁负责什么」写清楚,多 Agent 才不乱。

06SECTION

四、HITL 中断与恢复(人工审批)


4.1 为什么需要中断

高风险动作(删数据/付款/发布)不能直接执行——要在执行前暂停 Agent、等人确认(agent-系列 07 篇 HITL 审批点)。

4.2 中断/恢复的心智

code

Agent 跑到「需要人工」的节点

  → 中断(保存状态,等待)

  → 人工确认/修改/拒绝

  → 恢复(从断点继续,不重跑)

•ADK 提供中断与恢复能力:Agent 状态可保存、可续跑——长任务 + 人工审批 = 生产可用的关键拼图;

•类比:LangGraph 的 interrupt / Claude Code 的 checkpoints(同款思路)。

💡 学习要点:ADK 多 Agent + HITL =「复杂任务的正确打开方式」主 Agent 拆、子 Agent 做、关键节点人批。Token 成本会涨(多 Agent ≈ 单 Agent 的 3-4 倍),但换来的是复杂任务的可控与可审——值不值由任务价值决定。

07SECTION

五、实战要点与踩坑


1Description 即调度契约:子 Agent 的 Description 写清楚,主 Agent 才知道「该派给谁」;

2中断点别太多:HITL 打断频率是设计参数——高价值不可逆动作才打断;

3事件流注意分发:多 Agent 事件流(流式输出)需要按 Agent 分发——ADK 已沉淀;

4先单后多:先跑通单 ChatModelAgent,再加 SubAgents——多 Agent 的坑(上下文污染/重复调用)靠小步迭代排。

08SECTION

六、本篇要点(复习卡片)


1ADK 定位:Eino 高层 Agent 框架——多 Agent 协作 + HITL 中断恢复 + 事件流分发 + 控制权转让。

2单 Agent:adk.NewChatModelAgent(Model, Tools, Name/Description/Instruction)。

3多 Agent:SetSubAgents(main, sub1, sub2)——主拆子做、上下文隔离。

4HITL:中断(保存状态)→ 人工 → 恢复(断点续跑)——高风险动作的人审批。

5关键:Description = 调度契约;先单后多;Token 成本要算。

6板块一收官:Eino 组件(01)→ 编排/ReAct(02)→ ADK 多 Agent/HITL(03)——Go 专线三件套。

09SECTION

七、下一篇预告


第 04 篇(板块二·通用):从零搭单 Agent——语言无关的实战:不依赖框架,用 Python + 一个 API Key 写一个能自主调用工具的 Agent(工具调用 + ReAct 循环 + 避坑:token 消耗、上下文污染)。看清「没有框架时 Agent 的裸骨架」,框架的价值才更清楚。

10SECTION

参考资料


•[官方] Eino ADK 文档:https://www.cloudwego.io/docs/eino/

•[官方] Eino Overview(ADK 定位):https://www.cloudwego.io/docs/eino/overview/

•[官方] eino pkg.go.dev(v0.8.0):https://pkg.go.dev/github.com/cloudwego/eino@v0.8.0

•[参考] 社区实战:eino ADK 多 Agent 使用(CSDN)


整理:2026-10-02 月绡凝 · 依据官方文档。



【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。