Day 20 / 共 20 天 · 第 4 周(结业)

构建、测试与收官串讲

最后一天:本地开发测试、从零搭 Agent 清单、常见坑、20 天知识地图、AutoGPT 设计哲学,以及和你学过的其他框架的横向对比。

📍 你在整门课的位置 · 第 4 周 平台化与收官
D18 REST API D19 经典/Forge D20 收官 🎓 结课
💡 今天的类比世界观:收官 = 一次"工厂参观的毕业总结" 最后一天回望这座"AI 工厂":20 天知识地图 = 从图纸到交付的完整建厂流程(概念 → 积木 → 图 → 执行 → 计费);从零搭 Agent 清单 = 开一条新产线的检查表常见坑 = 老师傅贴在墙上的"事故警示"设计哲学 = 贯穿全厂的三条厂训(声明式、可控、计量)。今天都用"工厂毕业参观"来想。

👶 小白:学完这 20 天,我现在到底能干嘛?会不会转头就忘光?

👨‍🏫 老师:三件事你已经能做:① 读懂平台源码——再看 block.py / graph.py / executor 不再发怵;② 写自己的 Block(继承基类、声明 schema、配 test_mock)并被 AutoRegistry 自动收录;③ 看懂一张 Graph 是怎么被调度、扣费、实时推送的。忘细节没关系,记住那句厂训——"积木连成图、数据顺线流、作坊变工厂、可控又能收费",需要时回来查地图即可。

L01

本地开发与测试

cd autogpt_platform
docker compose up -d           # 一键起全平台(Day 04)
# 或分开:make start-core / make run-backend / make run-frontend

# 测试
cd backend && poetry run pytest        # 后端单测
poetry run pytest backend/blocks/      # 只测 Block
调试建议看执行事件:前端画布实时显示每个节点状态/输入输出(Day 15),节点报错一眼看到。② 分清进程:REST 报错看 rest_server 日志、执行卡住看 executor 日志(Day 04)。③ 先单跑 BlockPOST /api/blocks/{id}/execute 单独测一个块,对了再连图。可视化 + 事件流让 AutoGPT 的调试比纯代码 Agent 直观——你能"看见"数据在图里流。
L02

Block 自带测试

🤔 痛点:一个块要调 OpenAI 才能跑,怎么给它写自动化测试? 真跑一次要花钱(烧 token)、要联网、还慢,而且同样的输入 LLM 每次输出还不一样——这样的测试没法天天在 CI 里跑,也没法稳定判断"对不对"。那调外部 API 的块岂不是没法测了?
💡 本质:用 test_mock 把"外部调用"替换成可预测的假响应 测试要的是"确定、免费、快"。test_mock 把块里"调外部 API"那一步换成一个返回固定假数据的函数——于是测试不联网、不花钱、结果确定,只验证块自身的输入处理和输出组装逻辑对不对。这就是软件测试里的 mock(打桩)思想:隔离掉不可控的外部依赖,只测你自己的代码。后端整体用 poetry 管依赖、pytest 收集各处 *_test.py 自动执行。

回忆 Day 02/06:每个 Block 都有 test_input/test_output/test_mock。测试框架自动跑:给 test_input,验证产出等于 test_output;调外部 API 的块用 test_mock 换成假响应。仓库里 *_test.py 遍布各目录(如 executor/manager_test.pydata/credit_test.py),数据库模型在 schema.prisma、变更走 migrations/

📝 举个例子:一个"加法块"的测试样例长什么样 块定义里带:test_input={"a":2,"b":3}test_output=("result",5)
测试框架自动做:喂 {"a":2,"b":3}run() → 收集输出 → 断言输出的 result 等于 5
若是"调 OpenAI 的块",再加 test_mock={"call_llm": lambda *_: "假回答"}——测试时 call_llm 被换成直接返回 "假回答"不联网、不花钱、结果每次都一样poetry run pytest 就把这些样例全跑一遍。
"Block 自带测试"是很棒的设计 300+ 个 Block,怎么保证每个都能用?让每个 Block 定义时就带上"给这个输入应该得这个输出"的样例,测试框架自动逐个验证。加新块必须配测试样例——保证质量下限。test_mock(Day 07)让调 API 的块也能免费、快速、确定地测。这就是 300+ 块能保持质量、社区能放心贡献的保障——测试是 Block 定义的一等公民。
L03

从零搭一个 Agent 的清单

  • 启动平台(docker compose),打开 localhost:3000(Day 04)
  • 充值 credit / 用系统凭据(Day 16/17)
  • 在画布拖入 INPUT 块(Agent 的输入口,Day 07)
  • 拖入功能块(读网页/LLM/发邮件…),连线(前块输出→后块输入,Day 03)
  • 需要外部服务?给块配凭证(系统凭据零配置 / 连你的账号,Day 08/17)
  • 拖入 OUTPUT 块(结果出口)
  • 保存(自动版本化,Day 11)、点运行、看实时执行(Day 15)
  • 想定时?配 schedule("每天 8 点",Day 14)
  • 做好了?上架 Store 分享/变现(Day 18)
  • 想扩展新能力?写自定义 Block(SDK,Day 10)
你现在能驾驭 AutoGPT Platform 了 这张清单每一项都对应你学过的某一天。从"读懂源码"到"会搭、会配、会扩展、会运维",你都具备了。而且你还理解了它背后的执行引擎、计费、凭证机制——不只会用,更知道为什么。
L04

常见坑速查

  • 找 Block 基类在 data/block.py:错!在 blocks/_base.py(Day 02)。
  • 新 Block 免费:没在 BLOCK_COSTS 登记 = 从钱包视角免费(Day 09),加块记得配成本。
  • 节点不执行:可能输入没齐("攒齐才入队",Day 13)——检查所有必需输入口是否有连线或默认值。
  • 402 报错:余额不足(付费墙,Day 16/18)——充值。
  • 凭证明文:别硬编码,用凭证字段(引用 vs 实体,Day 08)。
  • Block id 别改:id 是永久身份,改了引用它的图就断了(Day 06)。
  • cron 星期:APScheduler(0=周一) vs Unix cron(0=周日),注意转换(Day 14)。
L05

20 天知识地图

第1周 核心概念

  • D1 全景/转型
  • D2 Block
  • D3 Graph
  • D4 运行平台
  • D5 执行旅程

第2周 Block 系统

  • D6 基类/生命周期
  • D7 真实 Block
  • D8 凭证
  • D9 成本
  • D10 SDK

第3周 执行引擎

  • D11 Graph 模型
  • D12 manager
  • D13 数据流
  • D14 Scheduler
  • D15 WebSocket

第4周 平台/起源

  • D16 Credits
  • D17 凭证OAuth
  • D18 API/REST
  • D19 经典起源
  • D20 收官
贯穿 20 天的一条主线 Block 积木D2/6-10 Graph = AgentD3/11 执行引擎D5/12-15 平台底座计费/凭证/API D16-18 起源全自主→可控 D19
从"一个功能积木"一路走到"能拖拽构建、拓扑执行、计量收费、可分享变现的完整平台",还看清了它从 2023 全自主鼻祖到今天可控平台的演进。
一条主线:Block(积木)→ Graph(连成图 = Agent)→ 执行引擎(拓扑跑图、数据流动)→ 平台底座(计费/凭证/API/市场)→ 起源(从全自主到可控平台)。从"一个功能积木",到"一个能拖拽构建、拓扑执行、计量收费、可分享变现的完整 AI Agent 平台",你把整条链路走通了,还看清了它从 2023 起源至今的演进逻辑。
L06

贯穿始终的设计哲学

① Block 组合:一切能力都是有类型口的可复用积木,连成图即 Agent。低代码可视化 + 开发者可扩展兼得。
② 数据流驱动的拓扑执行:节点"输入齐了才跑",局部规则保证全局正确,天然支持分支/汇聚/并行/子图。
③ 声明式扩展:写块只需声明 schema/成本/凭证,AutoRegistry 自动集成——贡献者不碰管道。
④ 计量 SaaS:credit 钱包、预扣+对账、原子扣费、Stripe 充值、市场变现——把 Agent 做成可持续生意。
⑤ 安全凭证:引用 vs 实体分离、加密存储、执行时注入、OAuth 托管——安全地接入几百个服务。
⑥ 多进程 + 队列 + 事件总线:REST/executor/WS 分进程、MQ 解耦、Redis 广播——可靠地并发处理长任务。
⑦ 可控优于全自主:从经典的"放飞自主"转向"可视化编排 + 局部 AI"——生产可靠性的必然选择。
L07

四框架横向对比(你已学四个!)

你现在学过 eino、OpenHands、CrewAI、AutoGPT 四个 Agent 系统。对比它们的"编排范式":

  • eino:Go 代码编排(Chain/Graph/Workflow),面向开发者、类型安全。
  • OpenHands:Action/Observation 事件循环,自主软件工程师(写代码干活)。
  • CrewAI:角色扮演多智能体团队(Crew)+ 事件驱动工作流(Flow)。
  • AutoGPT Platform:可视化 Block 图,低代码、计量 SaaS。
殊途同归的共性:① 都有"节点/步骤 + 连接"的编排(图/链/事件流);② 都有 ReAct 式循环或数据流执行;③ 都用事件系统做可观测;④ 都强调"可控 + 局部自主"(没人搞纯放飞了);⑤ 都面向接口/组件化、都有成本意识、都有 HITL(人工介入)。学完四个,你已经能看穿任何新 Agent 框架——因为它们共享同一套底层思想。这就是"读懂多个源码"的复利:从"会用一个"到"看穿一类"。
L08

🎓 结业 + 下一步

恭喜你完成 AutoGPT 20 天源码学习!

你从零基础,走到了理解"可视化 Agent 构建平台如何构建"的水平——Block 积木、Graph 图、拓扑执行引擎、计量计费、凭证/OAuth、REST/WebSocket,以及它从 2023 全自主鼻祖到今天可控平台的演进。这是你学完的第四个 Agent 系统——你已经建立了"看穿任何 Agent 框架"的能力。

🚀 下一步建议

  • 动手搭:照 L03 清单,在平台上搭一个真实自动化(比如"每天新闻摘要发邮箱")。
  • 写个 Block:照 Day 10 SDK,给平台加一个你需要的自定义积木。
  • 读 testsbackend/blocks/test/ 和各处 *_test.py 是活文档。
  • 横向对比:回顾 eino/OpenHands/CrewAI,对比它们和 AutoGPT 的异同——你会理解得更深。本系列后续还有 SuperAGI、LangGraph、openclaw、higress、apisix。
🎉 AutoGPT 篇完结。感谢学到这里!回到 20 天总目录学习主页 继续其他项目。
← Day 19 经典起源 返回总目录 🏁