源码深度学习 · 零基础友好

Eino 源码学习

20 天 · 每天 30 分钟 · 逐层读懂字节 CloudWeGo 的 Go 语言 LLM 应用开发框架(对标 LangChain/LangGraph,但是 Go 原生)

00

开篇 · 这是个什么框架

Eino(读作 /'aino/)是字节跳动 CloudWeGo 团队开源的 Go 语言 LLM 应用开发框架。你可以把它理解成"Go 版的 LangChain + LangGraph"——但它遵循 Go 的工程习惯(强类型、显式、高性能)。

🎯 一句话:它帮你把"调大模型 / 用工具 / 检索 / 拼提示词"这些积木(组件),用图和链(编排)连起来,或直接搭成能自己调工具干活的 Agent——全程类型安全、原生支持流式。

它有四大支柱

🧩

Components 组件

ChatModel / Tool / Retriever / ChatTemplate 等可复用积木(接口)。

🔗

Composition 编排

把组件连成 Chain / Graph / Workflow,能独立跑或暴露成 agent 工具。

🤖

ADK 智能体套件

搭带工具调用、多智能体协作、中断/恢复的 AI Agent。

📚

Examples 范例

常见模式与真实用例的可跑代码(独立仓 eino-examples)。

零基础也别怕:前 5 天完全不假设你懂 LLM/Agent/Go 泛型。我们从"大模型怎么调、消息长什么样"讲起,一步步搭到"图编排"和"多智能体"。不懂的名词先记住,后面一定展开。
01

分层架构总图(动起来看)

Eino 从下到上分成 4 层。下图那颗发光小球是"一次请求从上层 API 落到底层数据类型"的过程。先建立直觉:越往下越基础(数据/接口),越往上越贴应用(编排/Agent)

L4 · Agent 层  ·  adk/ + flow/
ChatModelAgent开箱即用的 agent
多智能体handoff / 协作
ReAct / Host现成模式
中断/恢复human-in-the-loop
L2 · 编排引擎  ·  compose/(核心)
Chain链式
Graph图(节点/边/分支)
Workflow字段映射
Runnable4 种流式范式
L3 · 组件接口  ·  components/
ChatModel大模型
Tool工具
Retriever检索
ChatTemplate提示词
L1 · 核心数据类型  ·  schema/
Message消息
StreamReader流式读
ToolInfo工具描述
Document文档

Eino 的招牌设计是 Runnable 的 4 种流式范式——同一个组件,框架能在这四种调用方式间自动转换(Day 06 细讲):

Invoke输入→输出
(非流→非流)
Stream输入→流
(非流→流)
Collect流→输出
(流→非流)
Transform流→流
(流→流)
为什么分层? 底层 schema 定义"数据长什么样",components 定义"能力有哪些接口",compose 负责"把它们连起来跑",adk 在最上面搭"会自己干活的 Agent"。每层只依赖它下面的层——这是清晰工程的经典分层。
02

怎么用这份教程

⏱️

每天 30 分钟

一天一个独立页面,跟着"今日小结 + 动手"收尾再关。

👶

零基础友好

不假设你懂 Go 泛型/LLM/Agent,每个术语首次出现都有大白话解释。

📍

精确到行号

关键代码标 文件:行号,可在真源码里跳转对照。

一条主线:整份教程围绕"从一次大模型调用,到一个完整 Agent"展开——先认识数据和组件,再学怎么用图把它们编排起来,最后搭出能自己调工具、多智能体协作、还能中断续跑的 Agent。
W1

第 1 周 · 建立心智

它是什么、怎么跑、数据类型、组件接口
01

项目全景与分层架构

Eino 是什么、四大支柱、schema→components→compose→adk 四层、技术栈。

≈30 min · 已就绪 NEW开始学 →
02

环境搭建 & 第一个 Agent

装 Go、拉依赖,跑通官方 ChatModelAgent 示例。

≈30 min · 已就绪开始学 →
03

schema:核心数据类型

Message 消息结构、StreamReader/Writer 流式抽象、ToolInfo。

≈30 min · 已就绪开始学 →
04

components:组件接口层

ChatModel/Tool/Retriever/ChatTemplate 等接口,各是什么。

≈30 min · 已就绪开始学 →
05

一次调用的完整旅程

把前 4 天串起来:从消息到组件到输出。

≈30 min · 已就绪开始学 →
W2

第 2 周 · 编排引擎 compose

框架的心脏:Runnable / Chain / Graph / Workflow
06

Runnable 与 4 种流式范式

Invoke/Stream/Collect/Transform,框架怎么自动互转。

≈30 min · 已就绪开始学 →
07

Chain 链式编排

最简单的编排:组件一个接一个串起来。

≈30 min · 已就绪开始学 →
08

Graph 图编排

节点、边、分支(Branch),支持循环与并行。

≈30 min · 已就绪开始学 →
09

Graph 编译与执行

compile → Runnable、拓扑执行、状态传递、类型检查。

≈30 min · 已就绪开始学 →
10

Workflow 字段映射 & 状态

把上游输出字段映射到下游输入、状态管理。

≈30 min · 已就绪开始学 →
W3

第 3 周 · Agent 开发套件 ADK

搭出会自己干活的 Agent
11

ADK Agent 抽象

Agent 接口、AgentEvent 事件模型、Runner。

≈30 min · 已就绪开始学 →
12

ChatModelAgent 与 react 循环

模型→工具调用→回填→循环,直到完成。

≈30 min · 已就绪开始学 →
13

多智能体协作

handoff / transfer / 子 agent,多个 Agent 怎么配合。

≈30 min · 已就绪开始学 →
14

中断 / 恢复(human-in-the-loop)

Agent 跑一半暂停等人、再从断点恢复。

≈30 min · 已就绪开始学 →
15

精读 ReAct Agent

flow/agent/react 逐行:怎么用图搭一个经典 ReAct 循环。

≈30 min · 已就绪开始学 →
W4

第 4 周 · 进阶与生态

回调、流式内部、类型安全、生态、收官
16

callbacks 回调 / 可观测

5 个切面回调(OnStart/OnEnd…),tracing 怎么接。

≈30 min · 已就绪开始学 →
17

流式深入:StreamReader 内部

流怎么实现、复制、合并、在图里流动。

≈30 min · 已就绪开始学 →
18

类型安全机制(Go 泛型)

eino 怎么用泛型做节点间类型校验。

≈30 min · 已就绪开始学 →
19

eino-ext 生态 & 自定义组件

官方组件实现在哪、怎么写自己的组件/工具。

≈30 min · 已就绪开始学 →
20

构建/测试 + 收官串讲

全框架回顾、设计哲学、学习路线。

≈30 min · 已就绪开始学 →

全部 20 天已就绪。建议按顺序学。准备好了就从 Day 01 · 项目全景 开始。