Agno 深度解读
“会写 Python 就会写 Agent,不搞 Spring Boot 式的 20 个配置文件”
一句话定位
Agno(前身 PhiData)是 Agent 框架中的极简主义者——1741 行核心 dataclass 定义了 Agent 的全部能力,190+ 内建工具开箱即用,用最少的抽象层实现最大的功能覆盖。
设计哲学上最精彩的地方
Agno 的核心信条是:Agent 框架不应该比你自己写的代码更复杂。整个 Agent 定义就是一个 Python dataclass,不用继承、不用装饰器模式、不用 Builder 模式。所有配置都是构造函数参数——你看到 Agent() 的签名就知道它能做什么。
日常类比:Python 脚本。能跑就行,需要什么 import 什么。不搞 Java Spring 那种 20 个配置文件才能跑一个 Hello World 的事。Agno 追求的是”打开编辑器,5 分钟内 Agent 跑起来”的体验。
最精彩的设计决策是把 190+ 工具全部内建。LangChain 的工具通过 partner 包分散在几十个 pip 包里,每用一个新工具就要 pip install langchain-xxx。Agno 把搜索(DuckDuckGo/Google/Bing)、代码执行(Python/Shell/Docker)、数据处理(SQL/CSV/Pandas)、多媒体(Image/Audio/Video/PDF)全部打包在一起。“不需要额外安装”本身就是一种设计哲学——它降低的不是技术门槛,而是心理门槛。
LearningMachine:Agent 的自我进化
Agno 独有的”自我学习”机制值得关注。开启 learning=True 后,Agent 在执行过程中可以把成功策略存入长期记忆(向量数据库),下次遇到类似任务直接检索复用。这不是简单的对话历史——而是提炼后的经验知识。
其他框架的 Memory 通常停留在”记住上几轮对话”的层面,Agno 的 LearningMachine 试图让 Agent 像人一样”积累经验”。虽然效果取决于 LLM 的提炼能力,但方向是对的。
局限性:极简的边界
1741 行的 Agent dataclass 违反了单一职责原则。身份、模型、工具、记忆、知识库、推理、结构化输出全部平铺在一个类里。随着功能持续增加,这个类只会越来越大,最终变成维护噩梦。
Team 的 4 种协作模式(coordinate/route/broadcast/tasks)虽然覆盖了常见场景,但相比 LangGraph 的图模型,表达力受限。你没法定义”Agent A 和 B 并行,C 等 A 完成后开始,D 等 B 和 C 都完成后汇总”这种复杂依赖关系。
状态管理也不如 LangGraph 精细——没有 Channel 系统来精确控制并发写入的冲突解决,也没有 Checkpoint 级别的中断恢复能力。
本地代码结构
agno/
├── libs/agno/agno/
│ ├── agent/
│ │ ├── agent.py # 1741 行核心 Agent dataclass
│ │ └── session.py # 会话管理
│ ├── team/
│ │ ├── team.py # Team 协作(4 种模式)
│ │ └── session.py # Team 会话
│ ├── models/ # LLM 适配器(OpenAI/Anthropic/Google 等)
│ ├── tools/ # 190+ 内建工具
│ ├── knowledge/ # 知识库(向量检索)
│ ├── memory/ # 记忆模块
│ ├── storage/ # 持久化后端
│ ├── playground/ # AgentOS Web 部署
│ └── reasoning/ # 推理引擎
├── cookbook/ # 使用示例
└── docs/ # 文档
本地关键文件
| 文件 | 用途 |
|---|---|
libs/agno/agno/agent/agent.py |
1741 行 Agent dataclass,框架核心 |
libs/agno/agno/team/team.py |
Team 协作,4 种模式实现 |
libs/agno/agno/tools/ |
190+ 内建工具目录 |
libs/agno/agno/memory/agent.py |
AgentMemory 实现 |
libs/agno/agno/knowledge/agent.py |
AgentKnowledge 知识库 |
libs/agno/agno/playground/playground.py |
AgentOS 一行部署入口 |