agno 给自己的定位是「自驱式 Agent 平台」。它跟 LangChain、LangGraph 这些 Agent 框架不是一个赛道——它不止帮你写 Agent,还帮你把 Agent 跑成持久化服务、接入自己的产品,甚至用 Agent 去运营公司。这篇讲它到底解决什么问题、怎么上手、以及哪些设计值得抄。

它解决什么问题

agno 要解决的是「Agent 写完就完了」的问题。多数框架停在「定义一个 Agent、跑一次」这个层面,而 agno 把它往后延伸了两步:一是把 Agent 跑成带 API、带 MCP 的持久化服务;二是给 Agent 分配职责、组织成项目和任务,让它持续运转。它的三个层次分别是 Build(构建)、Run(运行)、Automate(自动化)。

和 Agent 框架的区别

区分 agno 和 LangChain 这类框架,看它把重心放在哪。框架帮你「写」Agent,agno 帮你「运营」Agent——持久化执行、人工审批、调度、权限这些框架通常留给你自己接的部分,它直接内置了。换句话说,框架解决的是「一次调用怎么跑」,agno 解决的是「一堆 Agent 怎么作为服务长期跑、谁来管它们」。这也是它把自己叫「平台」而不是「框架」的原因。

三个层次

Build:用 Agno、Claude Agent 或 Codex 三种 SDK 构建 Agent,能组合成团队和工作流。Run:Agent 作为持久化服务跑在 AgentOS 上,认证、基于角色的访问控制、恢复/回放、人工审批、调度、持久化执行这些都由 AgentOS 兜底。Automate:通过 Company OS 给 Agent 分配职责,把工作组织成项目和任务,配置定期例程——人定方向、审结果,Agent 负责执行。这三个层次对应的也是三种交付形态:REST API 进你自己的产品、MCP server 进 Claude 和 ChatGPT、Agno Interfaces 进 Slack 这类聊天应用。

上手

官方推荐的路子是「让编码 Agent 帮你搭」:克隆模板仓库,给编码 Agent 一条提示词,剩下的交给它。核心命令就一条:

git clone https://github.com/agno-agi/agentos-railway.git agent-platform

模板带起一整套东西:一个 API server 和 MCP server、PostgreSQL 存对话和记忆、OS Manager 帮你搭建和管理平台、Claude 和 Codex 工程师帮你写代码、还有 Company 工作区。也可以用纯代码方式,最简 Agent 长这样:

from agno.agent import Agent
from agno.models.anthropic import Claude

agent = Agent(
    model=Claude(id="claude-sonnet-4-5"),
    instructions="写一份报告,只输出报告本身。",
    markdown=True,
)
agent.print_response("本周值得关注的 AI 动态", stream=True)

生产环境用 agent.run() 拿事件流,而不是 print_response:

from agno.agent import Agent, RunEvent
from agno.models.anthropic import Claude

agent = Agent(model=Claude(id="claude-sonnet-4-5"), markdown=True)
for chunk in agent.run("总结一下", stream=True):
    if chunk.event == RunEvent.run_content and chunk.content:
        print(chunk.content)

安装命令:

uv pip install -U agno anthropic

关键设计

最值得抄的不是某个 API,而是「工具工厂」这个设计。tools 可以传一个函数而不是静态列表,工厂在每次 run 时按 run_context(比如 session_state 里的角色)动态解析——这样同一个 Agent 实例,金融用户拿到行情工具、普通用户拿到搜索工具,工具集可以按用户或会话变化:

from agno.agent import Agent
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools

def get_tools(run_context):
    if (run_context.session_state or {}).get("role") == "finance":
        return [YFinanceTools()]
    return [DuckDuckGoTools()]

agent = Agent(model=..., tools=get_tools)

这个设计的意义在于:Agent 从「一个固定配置」变成「按上下文决定能力」,这对多租户、多角色的平台很关键——你不用为每种角色维护一个 Agent 副本。

局限

几点要清楚。一是它面向的是「想把 Agent 跑成服务、跑成业务」的团队,如果你只想写个单次脚本,它偏重。二是默认会发一条遥测(每个 agent 一条,官方说不会发 prompt、消息和输出),介意的话设 AGNO_TELEMETRY=false 关掉。三是自托管要自己运维 AgentOS 和 PostgreSQL,跑自己的云、数据在自己手里,代价是运维。协议是 Apache 2.0,商业友好。还有一点,它的理念偏「让编码 Agent 帮你搭」,纯手动从零配置的路径文档相对少,习惯手写配置的人初期要适应一下。综合看,agno 把「Agent 从 demo 到服务」这条路上最繁琐的持久化、权限、审批、调度都接了,适合那些已经开始认真用 Agent 干活、想让它们持续运转的团队。