---
tags: [eino, llm-framework, golang, agent, ai]
create time: 2026-04-29 21:30
---

# Eino 知识索引

## 概述

Eino 是字节跳动（CloudWeGo）开源的大模型应用开发框架，基于 Go 语言。覆盖从组件定义、流程编排到 DevOps 工具链的全流程。本文档作为知识索引，列举 Eino 的关键概念与使用入口，后续可基于此构建知识问答。

---

## 一、是什么 —— Eino 核心定位

| 维度 | 说明 |
|------|------|
| **语言** | Go（强类型，编译时类型检查） |
| **定位** | 大模型应用开发框架，覆盖全流程 |
| **仓库** | [github.com/cloudwego/eino](https://github.com/cloudwego/eino) + [eino-ext](https://github.com/cloudwego/eino-ext) |
| **特色** | 组件抽象 → 图编排 → ADK Agent → DevOps 工具链，层层递进 |
| **适用场景** | 从简单对话到复杂 Multi-Agent 系统，均可应对 |

> [!question] 思考：为什么选 Go 而不是 Python？强类型在大模型应用规模化后能带来什么收益？

---

## 二、怎么分层 —— Eino 架构分层

```mermaid
graph TD
    A["Eino 框架"] --> B["组件层 Components"]
    A --> C["编排层 Orchestration"]
    A --> D["ADK 层 Agent 开发套件"]
    A --> E["工具层 DevOps"]

    B --> B1["ChatModel"]
    B --> B2["ChatTemplate"]
    B --> B3["Tool / ToolsNode"]
    B --> B4["Retriever"]
    B --> B5["Document Loader"]
    B --> B6["Embedding / Indexer"]
    B --> B7["Lambda 自定义"]

    C --> C1["Chain 链式"]
    C --> C2["Graph 有向图"]
    C --> C3["Workflow 字段映射"]
    C --> C4["Stream 流处理"]
    C --> C5["Callback 横切面"]

    D --> D1["Agent 接口"]
    D --> D2["ChatModelAgent ReAct"]
    D --> D3["WorkflowAgents"]
    D --> D4["Multi-Agent 范式"]
    D --> D5["Middleware 中间件"]

    E --> E1["Tracing 链路追踪"]
    E --> E2["IDE 插件 / 可视化"]
    E --> E3["Debug 调试"]
```

---

## 三、怎么用 —— 快速上手路径

### 3.1 入门四步走

| 步骤 | 主题 | 入口文档 |
|------|------|----------|
| **Step 1** | ChatModel 与 Message：学会调模型 | [[Eino/quick_start/chapter_01_chatmodel_and_message]] |
| **Step 2** | ChatModelAgent + Runner + AgentEvent：学会跑 Agent | [[Eino/quick_start/chapter_02_chatmodelagent_runner_agentevent]] |
| **Step 3** | Memory & Session：让 Agent 有记忆 | [[Eino/quick_start/chapter_03_memory_and_session]] |
| **Step 4** | Tool & FileSystem：让 Agent 能干活 | [[Eino/quick_start/chapter_04_tool_and_filesystem]] |

### 3.2 进阶专题

| 主题 | 关键内容 | 入口文档 |
|------|----------|----------|
| **Middleware** | 横切面注入，PlanTask / Summarization / Skill 等内置中间件 | [[Eino/quick_start/chapter_05_middleware]] |
| **Callback & Trace** | 执行过程可观测、可追踪 | [[Eino/quick_start/chapter_06_callback_and_trace]] |
| **Interrupt & Resume** | Human-in-the-loop，断点续跑 | [[Eino/quick_start/chapter_07_interrupt_resume]] |
| **Graph & Tool** | 低代码编排，图即是工具 | [[Eino/quick_start/chapter_08_graph_tool]] |
| **A2UI Protocol** | Agent 生成 UI 协议 | [[chapter_10_a2ui_protocol]] |
| **Skill Console** | 技能注册与管理 | [[Eino/quick_start/chapter_09_skill_console]] |

---

## 四、关键概念清单

### 4.1 组件 Component

| 组件 | 职责 | 为什么需要 |
|------|------|-----------|
| **ChatModel** | 与大模型交互的核心接口 | 统一不同模型（OpenAI / Ark / Gemini）的调用方式 |
| **ChatTemplate** | 构造 Prompt 模板 | 将变量注入系统/用户消息，结构化管理 |
| **Tool / ToolsNode** | 可被模型调用的工具 | 让 LLM 从"只会说"变成"能执行" |
| **Retriever** | 检索外部知识 | RAG 的核心，给模型注入上下文 |
| **Document Loader** | 加载各类文档 | 将 PDF / Markdown / 网页等转为可处理文本 |
| **Embedding / Indexer** | 向量化 + 索引 | 语义检索基础 |
| **Lambda** | 自定义函数作为组件 | 当现有组件不满足需求时，自由扩展 |

> [!question] 思考：Lambda 和 Tool 的区别是什么？什么场景用哪个？

### 4.2 编排 Orchestration

| 编排方式 | 特点 | 适用场景 |
|----------|------|----------|
| **Chain** | 简单的顺序执行，有向无环 | 线性 Pipeline |
| **Graph** | 有向图（可含环），灵活分支控制 | ReAct Agent 等复杂路由 |
| **Workflow** | 字段级别的数据映射与传递 | 抖音场景：字段粒度的图映射 |

额外能力：
- **Stream 流处理**：自动处理流式输入输出，支持流的复制、合并、拼接
- **Callback 横切面**：在组件执行前后注入逻辑（日志、追踪、统计）
- **编译时类型检查**：Graph Compile 时验证节点类型对齐，而非运行时才发现

### 4.3 ADK —— Agent 开发套件

#### Agent 接口（统一抽象）

```go
type Agent interface {
    Name(ctx context.Context) string
    Description(ctx context.Context) string
    Run(ctx context.Context, input *AgentInput, options ...AgentRunOption) *AsyncIterator[*AgentEvent]
}
```

三个核心要素：**身份（Name）** + **职责（Description）** + **标准化执行（Run → AsyncIterator）**

#### Agent 类型全景

```mermaid
graph LR
    A["Agent 接口"] --> B["ChatModelAgent\nReAct 模式"]
    A --> C["WorkflowAgents\n流程编排"]
    A --> D["Multi-Agent\n协作范式"]
    A --> E["自定义 Agent\n实现接口"]

    C --> C1["Sequential\n顺序执行"]
    C --> C2["Parallel\n并发执行"]
    C --> C3["Loop\n循环执行"]

    D --> D1["Supervisor\n集中式协调"]
    D --> D2["Plan-Execute\n规划-执行-反思"]
    D --> D3["DeepAgents\n规划驱动集中协作"]
```

| Agent 类型 | 一句话描述 | 典型场景 |
|------------|-----------|----------|
| **ChatModelAgent** | 基于 ReAct 的思考-行动循环 | 需要模型自主决策和工具调用的场景 |
| **SequentialAgent** | 按顺序依次执行子 Agent | ETL 流水线、CI/CD |
| **ParallelAgent** | 多个子 Agent 并发执行 | 多源数据采集、多渠道推送 |
| **LoopAgent** | 循环执行直到满足退出条件 | 数据同步、迭代优化 |
| **Supervisor** | 中心调度，统一分配与汇总 | 科研项目管理、客服流程 |
| **Plan-Execute** | Planner → Executor → Replanner 闭环 | Excel 处理、多步骤推理 |
| **DeepAgents** | Main Agent + WriteTodos + TaskTool | 长流程阶段性管理、多角色协作 |

#### Agent 协作机制

| 机制 | 使用方式 | 适用场景 |
|------|---------|----------|
| **History** | 框架自动传递前序 Agent 输出 | Agent 间默认信息流 |
| **Shared Session** | KV 存储，`GetSessionValue` / `AddSessionValue` | 跨 Agent 共享状态 |
| **Transfer（移交）** | `NewTransferToAgentAction` 将任务移交子 Agent | 边界清晰的层级式分工 |
| **ToolCall（工具调用）** | `NewAgentTool` 将 Agent 封装为 Tool | 仅需参数、无需完整上下文时 |

#### 中断与恢复

- Agent 运行时通过 `Interrupt Action` 主动中断
- `CheckPointStore` 保存断点状态
- `Resume` 方法携带新信息从断点恢复
- 适用场景：需要外部输入、人工审批、长时等待

#### Middleware 中间件体系

| 内置中间件 | 功能 |
|------------|------|
| **PlanTask** | 任务规划与拆解 |
| **Summarization** | 上下文摘要压缩 |
| **ToolSearch** | 动态工具搜索与选择 |
| **ToolReduction** | 工具调用结果精简 |
| **Skill** | 技能注册与匹配 |
| **FileSystem** | 文件读写能力注入 |
| **PatchToolCalls** | 工具调用修正 |

---

## 五、实战案例索引

| 案例 | 核心知识点 | 入口文档 |
|------|-----------|----------|
| **ReAct Agent** | Graph 编排 + Tool 调用 | [[Eino/docs/overview/eino_open_source]] |
| **Excel Agent** | Plan-Execute + Multi-Agent + CodeAgent | [[Eino/docs/overview/eino_adk_excel_agent]] |
| **项目管理 Agent** | Supervisor + 中断恢复 + Transfer | [[Eino/docs/overview/eino_adk0_1]] |
| **字节内部实践** | 豆包、抖音等真实场景 | [[Eino/docs/overview/bytedance_eino_practice]] |

---

## 六、进阶对比与选型

| 对比维度 | Eino | LangChain / LlamaIndex |
|----------|------|------------------------|
| **语言** | Go（强类型） | Python（动态类型） |
| **类型安全** | 编译时校验 | 运行时才发现 |
| **长期维护** | 类型系统天然可维护 | 动态语言大型项目维护成本高 |
| **并发模型** | goroutine 原生并发 | asyncio / 多线程 |
| **编排能力** | Graph + Workflow 双模式 | LCEL + Graph |
| **Agent 框架** | ADK 统一抽象 + 多种范式 | LangGraph Agent |

> [!question] 思考：Eino 的 Graph vs Agent，什么时候直接用 Graph，什么时候用 ADK Agent？

---

## 七、版本演进速览

| 版本 | 关键变化 |
|------|----------|
| **v0.1** | 首个开源版本，核心组件 + Chain/Graph |
| **v0.2** | Callback 体系完善 |
| **v0.3** | 小幅 break change |
| **v0.4** | Compose 优化 |
| **v0.5** | ADK 实现 |
| **v0.6** | JSON Schema 优化 |
| **v0.7** | Interrupt/Resume 重构 |
| **v0.8** | ADK Middleware 体系 |

---

## 八、外部资源

- 项目主页：[https://www.cloudwego.io](https://www.cloudwego.io)
- GitHub：[https://github.com/cloudwego/eino](https://github.com/cloudwego/eino)
- 扩展库：[https://github.com/cloudwego/eino-ext](https://github.com/cloudwego/eino-ext)
- 示例：[https://github.com/cloudwego/eino-examples](https://github.com/cloudwego/eino-examples)
- 文档：[https://www.cloudwego.io/zh/docs/eino/](https://www.cloudwego.io/zh/docs/eino/)

---

## 关联笔记

- [[Eino/docs/overview/eino_open_source]] — 开源发布文
- [[Eino/docs/overview/eino_adk0_1]] — ADK 设计模式详解
- [[Eino/docs/overview/eino_adk_excel_agent]] — Excel Agent 实战
- [[Eino/quick_start/README]] — 快速开始总览
