--- 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]] — 快速开始总览