BabyAGI(functionz) 源码学习
把 Python 函数作为可版本化、可依赖解析、可追踪执行的数据库资产管理(新版 functionz,非 2023 经典版)。这不是 API 速查表,而是一条可以重复走的源码路线:每天用 30 分钟,从一个真实相对路径出发,先用类比建立直觉,再把它接回整条运行链路。
开篇 · 这是个什么项目
BabyAGI(functionz) 可以先想成一间会自动装配工具的工坊。它的代码不是一堆孤立文件:入口接到需求,核心对象做判断,工具或模型完成工作,状态把结果交给下一个环节。
架构全景(动起来看)
发光扫过的每一层都是一次任务可能经过的站点。不同仓库命名不同,但「接入 → 编排 → 核心能力 → 资源」的责任边界很相似。
怎么使用这份教程
每天 30 分钟
6 讲,每讲先问问题,再给本质和大白话。
真实相对路径
所有路径都从项目根目录算,不把你的机器路径写进源码引用。
先验证再推理
每页都有可复制 bash 命令;文件版本变化时以本地实际内容为准。
可迁移方法
学会从入口、数据结构、循环和扩展点读任何 AI 项目。
应用创建与公开 API
babyagi/__init__.py:跟踪 create_app 如何把 functionz、API 和界面接在一起。
Functionz 门面对象
babyagi/functionz/core/framework.py:理解一个对象如何统一管理函数、密钥、版本和执行。
函数包自动加载
babyagi/functionz/packs:认识默认、草稿和插件函数包的装载方式。
register_function 装饰器
babyagi/functionz/core/registration.py:学习源码、元数据和依赖如何被登记。
AST 参数推断
babyagi/functionz/core/registration.py:理解从函数签名和返回值提取输入输出。
函数与版本数据模型
babyagi/functionz/db/models.py:阅读 Function、FunctionVersion、Import 的关系。
数据库路由与本地存储
babyagi/functionz/db:理解框架如何隔离具体数据库实现。
动态依赖解析
babyagi/functionz/core/execution.py:跟踪依赖函数与 Python 包的递归加载。
受控代码执行
babyagi/functionz/core/execution.py:理解从数据库代码到 exec 和调用包装器的路径。
触发器与调用链
babyagi/functionz/core/execution.py:学习父子调用、触发执行和递归保护。
执行日志模型
babyagi/functionz/db/models.py:查看输入、输出、耗时和调用关系的记录方式。
密钥加密存储
babyagi/functionz/db/models.py:理解密钥模型与 Fernet 加密;讨论密钥文件管理风险。
版本切换与回滚
babyagi/functionz/core/framework.py:跟踪激活某个函数版本的接口。