Eino 源码学习
20 天 · 每天 30 分钟 · 逐层读懂字节 CloudWeGo 的 Go 语言 LLM 应用开发框架(对标 LangChain/LangGraph,但是 Go 原生)
开篇 · 这是个什么框架
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)。
分层架构总图(动起来看)
Eino 从下到上分成 4 层。下图那颗发光小球是"一次请求从上层 API 落到底层数据类型"的过程。先建立直觉:越往下越基础(数据/接口),越往上越贴应用(编排/Agent)。
Eino 的招牌设计是 Runnable 的 4 种流式范式——同一个组件,框架能在这四种调用方式间自动转换(Day 06 细讲):
(非流→非流)
(非流→流)
(流→非流)
(流→流)
schema 定义"数据长什么样",components 定义"能力有哪些接口",compose 负责"把它们连起来跑",adk 在最上面搭"会自己干活的 Agent"。每层只依赖它下面的层——这是清晰工程的经典分层。怎么用这份教程
每天 30 分钟
一天一个独立页面,跟着"今日小结 + 动手"收尾再关。
零基础友好
不假设你懂 Go 泛型/LLM/Agent,每个术语首次出现都有大白话解释。
精确到行号
关键代码标 文件:行号,可在真源码里跳转对照。
项目全景与分层架构
Eino 是什么、四大支柱、schema→components→compose→adk 四层、技术栈。
环境搭建 & 第一个 Agent
装 Go、拉依赖,跑通官方 ChatModelAgent 示例。
schema:核心数据类型
Message 消息结构、StreamReader/Writer 流式抽象、ToolInfo。
components:组件接口层
ChatModel/Tool/Retriever/ChatTemplate 等接口,各是什么。
一次调用的完整旅程
把前 4 天串起来:从消息到组件到输出。
Runnable 与 4 种流式范式
Invoke/Stream/Collect/Transform,框架怎么自动互转。
Chain 链式编排
最简单的编排:组件一个接一个串起来。
Graph 图编排
节点、边、分支(Branch),支持循环与并行。
Graph 编译与执行
compile → Runnable、拓扑执行、状态传递、类型检查。
Workflow 字段映射 & 状态
把上游输出字段映射到下游输入、状态管理。
ADK Agent 抽象
Agent 接口、AgentEvent 事件模型、Runner。
ChatModelAgent 与 react 循环
模型→工具调用→回填→循环,直到完成。
多智能体协作
handoff / transfer / 子 agent,多个 Agent 怎么配合。
中断 / 恢复(human-in-the-loop)
Agent 跑一半暂停等人、再从断点恢复。
精读 ReAct Agent
flow/agent/react 逐行:怎么用图搭一个经典 ReAct 循环。
callbacks 回调 / 可观测
5 个切面回调(OnStart/OnEnd…),tracing 怎么接。
流式深入:StreamReader 内部
流怎么实现、复制、合并、在图里流动。
类型安全机制(Go 泛型)
eino 怎么用泛型做节点间类型校验。
eino-ext 生态 & 自定义组件
官方组件实现在哪、怎么写自己的组件/工具。
构建/测试 + 收官串讲
全框架回顾、设计哲学、学习路线。
✅ 全部 20 天已就绪。建议按顺序学。准备好了就从 Day 01 · 项目全景 开始。