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

OpenManus 源码学习

以 ReAct/工具调用循环为核心,支持浏览器、代码执行、沙箱和 MCP 的通用任务 Agent。这不是 API 速查表,而是一条可以重复走的源码路线:每天用 30 分钟,从一个真实相对路径出发,先用类比建立直觉,再把它接回整条运行链路。

00

开篇 · 这是个什么项目

OpenManus 可以先想成一间能上网写代码的数字助理。它的代码不是一堆孤立文件:入口接到需求,核心对象做判断,工具或模型完成工作,状态把结果交给下一个环节。

💡 20 天的主线先找入口和地图,再跟一次真实任务穿过核心循环;随后研究状态、模型、工具与扩展;最后用复盘把全部概念连成一张可迁移的地图。不要背目录名,要不断问「谁创建它、它把什么交给谁」。
大白话读源码像参观工厂:第一天先看门牌和楼层,不急着拆机器。后面每节课只打开一个焦点路径,但始终知道它属于哪层、服务哪个业务动作。
01

架构全景(动起来看)

发光扫过的每一层都是一次任务可能经过的站点。不同仓库命名不同,但「接入 → 编排 → 核心能力 → 资源」的责任边界很相似。

L5 · 入口层
main.py本层职责
Config本层职责
L4 · Agent 循环
BaseAgent本层职责
ToolCallAgent本层职责
Manus本层职责
L3 · 决策层
Prompt本层职责
LLM本层职责
Memory本层职责
L2 · 执行层
ToolCollection本层职责
Flow本层职责
L1 · 外部资源
Sandbox本层职责
Browser本层职责
MCP本层职责
输入用户任务组织对象 / 流程执行模型 / 工具沉淀状态 / 记忆
设计取舍分层会增加跳转文件的次数,却让每层只承担一种职责:入口容易替换,核心逻辑能测试,模型与外部工具可插拔。读代码时先沿箭头追「数据」而不是追每一个类。
02

怎么使用这份教程

⏱️

每天 30 分钟

6 讲,每讲先问问题,再给本质和大白话。

📍

真实相对路径

所有路径都从项目根目录算,不把你的机器路径写进源码引用。

🧪

先验证再推理

每页都有可复制 bash 命令;文件版本变化时以本地实际内容为准。

🧭

可迁移方法

学会从入口、数据结构、循环和扩展点读任何 AI 项目。

S1

阶段 1 · 从命令行到 Agent

D01-D03 · 理解入口、配置、状态与记忆
01

CLI 入口与资源清理

main.py:跟踪 Manus.create、run 与 cleanup。

≈30 min · 6 讲开始学 →
02

配置对象如何装配

app/config.py:认识模型、工作目录和 MCP 配置来源。

≈30 min · 6 讲开始学 →
03

状态、消息与 Memory

app/schema.py:理解运行中最重要的数据对象。

≈30 min · 6 讲开始学 →
S2

阶段 2 · ReAct 工作循环

D04-D07 · 读 BaseAgent、ToolCallAgent、Manus
04

BaseAgent 的步进循环

app/agent/base.py:阅读状态转换、最大步数与卡住检测。

≈30 min · 6 讲开始学 →
05

ToolCallAgent 的思考与执行

app/agent/toolcall.py:理解 LLM 工具调用的循环骨架。

≈30 min · 6 讲开始学 →
06

Manus 默认能力装配

app/agent/manus.py:查看默认工具和 MCP 工具动态加入。

≈30 min · 6 讲开始学 →
07

系统提示词控制策略

app/prompt/manus.py:理解提示词如何约束下一步行动。

≈30 min · 6 讲开始学 →
S3

阶段 3 · 工具系统

D08-D11 · 工具定义、收集、调用及浏览器
08

Tool 基类和参数契约

app/tool/base.py:学习怎样定义可供模型调用的工具。

≈30 min · 6 讲开始学 →
09

ToolCollection 的工具注册

app/tool/tool_collection.py:理解名称查找、schema 输出与执行分发。

≈30 min · 6 讲开始学 →
10

Python 执行工具

app/tool/python_execute.py:阅读代码执行、结果收集和错误返回。

≈30 min · 6 讲开始学 →
11

浏览器工具与上下文

app/tool/browser_use_tool.py:连接浏览器动作与下一轮上下文。

≈30 min · 6 讲开始学 →
S4

阶段 4 · 规划与专项能力

D12-D14 · 规划流、数据分析和 SWE Agent
12

PlanningFlow 的任务规划

app/flow/planning.py:理解计划生成、更新和执行顺序。

≈30 min · 6 讲开始学 →
13

FlowFactory 选择运行模式

app/flow/flow_factory.py:学习流程实例化入口。

≈30 min · 6 讲开始学 →
14

SWE 专项 Agent

app/agent/swe.py:比较通用 Agent 与软件工程 Agent 的差异。

≈30 min · 6 讲开始学 →
S5

阶段 5 · 外部执行与 MCP

D15-D17 · 沙箱与远程工具连接
15

沙箱客户端

app/sandbox/client.py:理解执行资源如何获取和释放。

≈30 min · 6 讲开始学 →
16

沙箱核心管理器

app/sandbox/core/manager.py:阅读沙箱创建、缓存和清理逻辑。

≈30 min · 6 讲开始学 →
17

MCP 客户端工具桥接

app/tool/mcp.py:理解 SSE、stdio 和远程工具注册。

≈30 min · 6 讲开始学 →
S6

阶段 6 · 端到端改造

D18-D20 · 调试、观测并新增小工具
18

内置 MCP Server

app/mcp/server.py:认识从 Agent 到 MCP 服务的反向暴露。

≈30 min · 6 讲开始学 →
19

LLM 调用封装

app/llm.py:追踪模型消息、工具 schema 与响应解析。

≈30 min · 6 讲开始学 →
20

添加一个本地工具

app/tool/file_operators.py:以现有文件工具为模板完成最小扩展。

≈30 min · 6 讲开始学 →