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

XAgent 源码学习

以任务树、计划迭代、反思和工具服务器为中心的自主任务执行框架。这不是 API 速查表,而是一条可以重复走的源码路线:每天用 30 分钟,从一个真实相对路径出发,先用类比建立直觉,再把它接回整条运行链路。

00

开篇 · 这是个什么项目

XAgent 可以先想成一间项目经理带着执行小队。它的代码不是一堆孤立文件:入口接到需求,核心对象做判断,工具或模型完成工作,状态把结果交给下一个环节。

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

架构全景(动起来看)

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

L5 · 接入层
run.py本层职责
BaseQuery本层职责
L4 · 核心编排
CoreComponents本层职责
Dispatcher本层职责
L3 · 计划决策
PlanAgent本层职责
ReflectAgent本层职责
L2 · 工作流状态
Plan本层职责
Node本层职责
TaskHandler本层职责
L1 · 外部执行
FunctionHandler本层职责
ToolServer本层职责
输入用户任务组织对象 / 流程执行模型 / 工具沉淀状态 / 记忆
设计取舍分层会增加跳转文件的次数,却让每层只承担一种职责:入口容易替换,核心逻辑能测试,模型与外部工具可插拔。读代码时先沿箭头追「数据」而不是追每一个类。
02

怎么使用这份教程

⏱️

每天 30 分钟

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

📍

真实相对路径

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

🧪

先验证再推理

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

🧭

可迁移方法

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

S1

阶段 1 · 认识任务执行入口

D01-D03 · 从 CLI、配置和查询对象理解启动参数
01

run.py 的任务启动参数

run.py:认识 task、模型、计划树限制等运行参数。

≈30 min · 6 讲开始学 →
02

全局配置读取

XAgent/config.py:理解 YAML 配置如何驱动模型和工作流。

≈30 min · 6 讲开始学 →
03

任务请求对象

XAgent/workflow/base_query.py:查看用户任务如何变成内部 Query。

≈30 min · 6 讲开始学 →
S2

阶段 2 · 装配 Agent 系统

D04-D06 · 掌握 Core、Dispatcher 和记录器
04

XAgentCoreComponents 装配

XAgent/core.py:沿 register_all 建立系统地图。

≈30 min · 6 讲开始学 →
05

Agent Dispatcher 能力派工

XAgent/agent/dispatcher.py:理解能力标签到 Agent 类的映射。

≈30 min · 6 讲开始学 →
06

运行记录器

XAgent/recorder.py:理解任务状态、计划和工具结果为何被持久化。

≈30 min · 6 讲开始学 →
S3

阶段 3 · 任务树与计划生成

D07-D10 · 理解 Plan、Node 和初始任务拆分
07

Plan 与任务树

XAgent/data_structure/plan.py:学习父子任务、遍历和状态推进。

≈30 min · 6 讲开始学 →
08

任务节点数据

XAgent/data_structure/node.py:理解节点关系与任务属性。

≈30 min · 6 讲开始学 →
09

生成初始计划

XAgent/workflow/plan_exec.py:跟踪 PlanAgent 和 function-call 拆解。

≈30 min · 6 讲开始学 →
10

计划生成 Agent

XAgent/agent/plan_generate_agent/agent.py:理解提示词、函数 schema 和解析结果。

≈30 min · 6 讲开始学 →
S4

阶段 4 · 执行、工具与记忆

D11-D14 · 跟踪子任务执行和工具协议
11

任务处理主流程

XAgent/workflow/task_handler.py:阅读取任务、执行、更新状态的主线。

≈30 min · 6 讲开始学 →
12

工具执行 Agent

XAgent/agent/tool_agent/agent.py:理解任务上下文如何变成工具调用。

≈30 min · 6 讲开始学 →
13

函数与工具桥接

XAgent/function_handler.py:查看工具 schema 汇总与分发。

≈30 min · 6 讲开始学 →
14

ToolServer 客户端接口

XAgent/toolserver_interface.py:理解工具服务连接、执行和文件回收。

≈30 min · 6 讲开始学 →
S5

阶段 5 · 反思与动态重规划

D15-D17 · 阅读计划修改和 ReAct 搜索
15

工作记忆跨任务传递

XAgent/workflow/working_memory.py:学习不同子任务之间如何交接信息。

≈30 min · 6 讲开始学 →
16

反思 Agent

XAgent/agent/reflect_agent/agent.py:理解如何从执行结果提出改进建议。

≈30 min · 6 讲开始学 →
17

计划细化与修改约束

XAgent/workflow/plan_exec.py:阅读 split、add、delete 等计划操作。

≈30 min · 6 讲开始学 →
S6

阶段 6 · 服务协同与端到端复盘

D18-D20 · 串联 ToolServer、Server 和交互
18

ReAct 内循环搜索

XAgent/inner_loop_search_algorithms/ReACT.py:理解单个任务内部的推理执行循环。

≈30 min · 6 讲开始学 →
19

服务端交互对象

XAgentServer/interaction.py:连接命令行核心与服务端会话。

≈30 min · 6 讲开始学 →
20

ToolServer 的工具实现边界

ToolServer:复盘从计划到远程工具执行的完整路径。

≈30 min · 6 讲开始学 →