Agno:轻量级多模态 Python Agent 框架与 AgentOS 运行时|部署与使用全指南
本文基于 2026 年 10 月的官方资料撰写:开源仓库
agno-agi/agno(main 分支),Python SDKagno当前 PyPI 最新版为 3.1.10(2026-10-23 发布,支持 Python 3.9+),运行时组件为 AgentOS(FastAPI),控制面板为 os.agno.com。仓库目前约 42,900+ stars、6,100+ forks,Apache-2.0 许可,由 Agno(前身为 phidata,包名从phi迁移到agno)维护,提交非常活跃。注意:Agno 的 API 演进很快,本文以 v3 文档为准;老教程里的reasoning=True、PhidataApp、AgnoApp、pgvector的Db基类等旧写法已被移除或改名,正文会在相应位置标注。

Agno 是一个"自我改进的 Agent 平台":用 Python SDK 构建多模态 Agent、Team 与 Workflow,通过 AgentOS 运行时把它们变成一个你自己托管、数据落在你自己的 Postgres 里的持久化服务(自带 REST API、MCP Server、追踪、鉴权),再通过浏览器端的控制面板(os.agno.com)或开源 Agent UI 与 Agent 对话、查看会话与追踪。相比 LangChain 一类编排库,Agno 的特点是把"框架 + 运行时 + 控制面板"打包成一条链路:pip install agno 五行代码跑通 Agent,AgentOS 一行把它变成带 80+ REST 端点的服务,官方还提供 Docker/Railway/AWS/GCP 等九种部署模板。本文面向想把 Agno 完整自托管起来的工程师,覆盖安装、AgentOS/FastAPI 部署、Docker Compose 与 Railway 上线、模型厂商接入、Postgres/SQLite 会话存储、Team 协作、知识库 + PGVector 的 Agentic RAG、API 调用与前后端集成。
一、项目介绍与适用场景
是什么:Agno 包含三层—— 1. Agent SDK(agno 包):定义 Agent(模型 + 工具 + 指令 + 记忆 + 知识库)、Team(多 Agent 协作)、Workflow(步骤编排); 2. AgentOS 运行时:一个你拥有的 FastAPI 应用,把上面三者暴露为 REST/SSE/MCP 服务,并持久化会话、记忆、知识、追踪、审批、调度、评估等数据; 3. 控制面板与 UI:托管的 os.agno.com(连接你自己的 AgentOS 实例做管理与对话)与开源 Agent UI(Next.js,自托管)。
技术定位:Python 优先、模型无关(OpenAI/Anthropic/Gemini/Ollama 等 30+ 提供商)、数据库无关(SQLite/Postgres/MongoDB/Redis)、Apache-2.0。v3 版本强调"durable services"——Agent 以服务形态常驻,而非一次性脚本。
适用人群:
不适合的场景:单机一次性文本处理(杀鸡用牛刀);对依赖体积极度敏感的边缘设备(Agno 装机会带 pydantic、SQLAlchemy 等);需要硬实时 <50ms 响应的链路(Agent 循环含工具调用延迟)。
二、核心功能逐条拆解
极简 Agent 定义:
Agent(model=..., tools=[...], instructions=[...])。模型可用字符串简写model="openai:gpt-5.6"(v2.2.6+),也可传提供商类实例精细控制重试、端点等参数。多模态输入输出:图片、音频、视频、PDF 可直接作为 Agent 输入(
send_media_to_model默认 True),输出可接output_schema(Pydantic)拿结构化结果。工具体系:任何 Python 函数皆可为工具;内置 100+ Toolkit(DuckDuckGo、HackerNews、YFinance、Docker、BaiduSearch 等);
@tool装饰器、tool hooks(前后钩子)、工具调用次数上限(tool_call_limit)、结果缓存一应俱全。MCP 双向支持:既能通过
MCPTools把任意 MCP 服务器接成 Agent 工具(stdio/SSE/Streamable HTTP 三种传输),也能把整个 AgentOS 挂载为 MCP Server(mcp=True,/mcp端点,8 个内置工具),供 Claude、ChatGPT 等 AI 应用直连。会话存储(db=):
SqliteDb/PostgresDb/MongoDb/RedisDb持久化会话与运行历史;add_history_to_context=True+num_history_runs=3控制注入的历史轮数。

6. 用户记忆(memory):enable_agentic_memory=True 让 Agent 在运行中自主创建/更新用户记忆;也可用 MemoryManager 自定义捕获指令;agno.db.sqlite.SqliteDb 等数据库承载记忆表。 7. 知识库与 Agentic RAG:Knowledge + 向量库(PgVector/Chroma/LanceDB/Pinecone 等)+ Embedder;search_knowledge=True(默认开)给 Agent 一个检索工具,即 Agentic RAG;支持向量/关键词/混合三种 SearchType、查询改写、重排与元数据过滤。 8. Team 协作:Team(members=[...], mode=TeamMode.coordinate|route|broadcast|tasks),Leader 分解任务、委派成员并汇总;支持嵌套 Team;Tasks 模式以 max_iterations 控制任务循环。 9. Workflow 编排:Steps、Condition、Loop、Parallel、Router、自定义函数步骤、嵌套 Workflow,以及人工审批(HITL:暂停等确认/输入/工具审批,状态持久化可恢复);官方仓库 cookbook/04_workflows/assets 提供各模式流程图。

10. AgentOS 运行时:AgentOS(agents=..., teams=..., workflows=..., db=..., tracing=True) 一行把一切变成 FastAPI 应用,暴露 /agents/{id}/runs、/sessions、/knowledge、/evals 等 80+ 端点,支持 SSE 流式。 11. 安全与鉴权:三种模式——JWT(authorization=True + JWT_VERIFICATION_KEY/JWT_JWKS_FILE,RS256,支持 scope 与 per-user 数据隔离)、共享安全密钥(OS_SECURITY_KEY)、匿名(仅本地开发);机器调用可用 agno_pat_ 服务账号令牌。生产环境模板默认强制 JWT。 12. 可观测与评估:tracing=True 开启 OpenTelemetry 追踪(每次运行的模型调用、工具调用、耗时全部入库);Evals 做回归测试(Accuracy/Performance/Reliability);开源 Agent UI 可浏览会话(注意:Agent UI 目前不含记忆与知识管理页,且 README 标注面向 Agno v2,v3 升级时需自行核对特性)。 13. 学习机器(Learning):v3 新增 learning=True,Agent 从每次交互沉淀用户画像、实体记忆、经验知识与决策日志等结构化记录。
三、全套官方链接
在线 Demo:官方不提供公共沙箱 Demo;os.agno.com 需注册账号并连接你自己运行的 AgentOS 实例(本地连接免费,Live 连接为付费功能)。
四、硬件与环境前置要求
五、多平台部署步骤
5.1 库模式安装(全平台通用)
# uv(官方推荐)
uv venv --python 3.12
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
uv pip install -U agno openai # 或 uv pip install -U "agno[os]" 装 AgentOS 运行时
# pip 等价
python3 -m venv .venv && source .venv/bin/activate
pip install -U agno openai
extras 说明(官方文档中出现过的组合):agno[os](AgentOS/FastAPI 运行时)、agno[openai]、agno[sqlite]、agno[postgres]、agno[pgvector]、agno[slack]、agno[chromadb]、agno[markdown] 等,可自由组合如 "agno[os,sqlite]"。
5.2 第一个 Agent(含 tools、reasoning、db、memory)
mkdir personal_agent && cd personal_agent
uv init --bare --python 3.14
uv add "agno[os,sqlite]" openai
export OPENAI_API_KEY="sk-..." # Windows: $env:OPENAI_API_KEY="sk-..."
# personal_agent.py
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.os import AgentOS
db = SqliteDb(db_file="personal_agent.db")
agent = Agent(
name="Pip",
model="openai:gpt-5.6", # 字符串简写,等价 OpenAIResponses(id="gpt-5.6")
db=db, # 会话/记忆/追踪存储
instructions=["帮用户跟踪项目与任务,回复简短直接"],
add_history_to_context=True, # 多轮对话历史注入
add_datetime_to_context=True,
enable_agentic_memory=True, # Agent 自主管理用户记忆
markdown=True,
)
agent_os = AgentOS(agents=[agent], db=db, tracing=True)
app = agent_os.get_app()
if __name__ == "__main__":
agent_os.serve(app="personal_agent:app", reload=True)
uv run personal_agent.py
# AgentOS 运行在 http://localhost:7777 ,OpenAPI 在 /docs
关于 reasoning:v3 已移除旧的 reasoning=True / reasoning_min_steps / reasoning_max_steps 参数。现在有三种写法——原生推理模型(OpenAIResponses(id="gpt-5.2", reasoning_effort="medium", reasoning_summary="auto"))、显式推理工具(tools=[ReasoningTools(add_instructions=True)])、独立推理阶段(reasoning_model=OpenAIResponses(...),先用推理模型再出正式回答):
from agno.agent import Agent
from agno.models.openai import OpenAIChat, OpenAIResponses
agent = Agent(
model=OpenAIChat(id="gpt-4.1"),
reasoning_model=OpenAIResponses(id="gpt-5.2", reasoning_effort="medium"),
)
5.3 接入 os.agno.com 控制面板
打开 os.agno.com 登录;
点 Connect OS → Local(本地实例);
填
http://localhost:7777,命名后连接;在 Chat 页直接与 Agent 对话,Sessions/Traces 页查看历史与调用链。
5.4 本地 Docker 部署(官方 agent-platform 模板,AgentOS + Postgres/pgvector)
git clone https://github.com/agno-agi/agentos-railway.git agent-platform
cd agent-platform
cp example.env .env
# 编辑 .env:至少设置 OPENAI_API_KEY(模板默认还需 ANTHROPIC_API_KEY)
docker compose up -d --build
# 两个容器:FastAPI 应用(宿主 8000)+ Postgres/pgvector(127.0.0.1:5432)
# 打开 http://localhost:8000/docs 查看全部 REST 端点
./scripts/mcp_check.sh # 校验 MCP server(预期输出 9 tools; required tools available)
该模板注册了 Platform Builder / Platform Manager / Platform Engineer 三个 Agent 与一个协调 Team,热重载开启(改动 agents/、app/、db/、evals/ 约 2 秒生效)。模板的 compose.yaml 关键结构:
services:
agentos-db:
image: agnohq/pgvector:18
ports: ["127.0.0.1:5432:5432"]
environment:
POSTGRES_USER: ${DB_USER:-ai}
POSTGRES_PASSWORD: ${DB_PASS:-ai}
POSTGRES_DB: ${DB_DATABASE:-ai}
agentos-api:
build: { context: ., dockerfile: Dockerfile, target: agentos }
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
ports: ["127.0.0.1:8000:8000"]
environment:
WAIT_FOR_DB: "True"
DB_HOST: agentos-db
AGENTOS_URL: http://127.0.0.1:8000
5.5 Railway 部署(官方脚本路径)
# 前置:uv 与 Railway CLI 5.49.0+,railway login 已执行
./scripts/venv_setup.sh
[ -f .env.production ] || cp example.env .env.production
# 编辑 .env.production:OPENAI_API_KEY 等
./scripts/railway/up.sh --workspace YOUR_WORKSPACE
# 首次部署会创建 API 服务 + Postgres(pgvector) + 公网域名,然后停下等你配 JWT(退出码 2,属预期)
JWT 鉴权配置(生产强制):
打开 os.agno.com → Connect OS → Live,填
AGENTOS_URL,开启 Token-Based Authorization (JWT);复制生成的公钥到
.env.production的JWT_VERIFICATION_KEY(整个 PEM 用引号包住,含 BEGIN/END 行);同步并重启:
./scripts/railway/env-sync.sh --no-deploy
./scripts/railway/redeploy.sh
railway logs --service agent-os
# 验证:/health 返回正常;无 token 请求 /agents 被拒绝、带 token 正常
连接 AI 应用:MCP 客户端连 https://YOUR-DOMAIN/mcp(密钥用 .env.production 里的 MCP_CONNECT_SECRET);命令行可 uvx agno connect --url https://YOUR-DOMAIN。自动部署:Railway 控制台把服务 Source 连到你的 GitHub 仓库 main 分支即可。
5.6 手写 Dockerfile 部署单个 Agent(官方 first-agent/production 模式)
FROM agnohq/python:3.14
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv sync --python 3.14 --locked --no-dev --no-install-project
COPY personal_agent.py ./
CMD ["sh", "-c", "exec uv run --no-sync uvicorn personal_agent:app --host 0.0.0.0 --port ${PORT:-8000}"]
应用代码中按环境切换数据库与鉴权:
import os
from agno.db.postgres import PostgresDb, create_postgres_engine
from agno.db.sqlite import SqliteDb
if os.getenv("DATABASE_URL"):
db = PostgresDb(db_engine=create_postgres_engine(os.environ["DATABASE_URL"]))
else:
db = SqliteDb(db_file="personal_agent.db")
agent_os = AgentOS(
agents=[agent], db=db,
authorization=bool(os.getenv("JWT_VERIFICATION_KEY")), # 有公钥才开 JWT
tracing=True,
)
5.7 macOS / Windows 说明
macOS/Linux:所有上述命令原生可用;
Windows:库模式与 uv 官方均支持(PowerShell 7+),环境变量用
$env:NAME="value";Docker Compose 模板经 Docker Desktop 可用;agnohq/*镜像是 Linux 容器,无 Windows 原生差异问题;官方未提供 Windows 原生服务化工具;常驻方案见第七章(NSSM/计划任务)。
5.8 源码方式(贡献者路径)
git clone https://github.com/agno-agi/agno.git
cd agno
# 各库在 libs/ 下(libs/agno 为主 SDK),用 uv 管理工作区
uv sync
uv run pytest libs/agno/tests # 测试(以仓库 CONTRIBUTING.md 为准)
六、配置文件全部参数解释
Agno 的"配置"分散在三处:Agent 构造参数、AgentOS 构造参数、AgentOS YAML 配置(AgentOSConfig)。以下为主要项。
6.1 Agent 常用构造参数(agno.agent.Agent,v3)
6.2 AgentOS 构造参数(agno.os.AgentOS)
6.3 环境变量
6.4 带注释的完整示例(AgentOS + Postgres + JWT + MCP + 调度)
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.os import AgentOS
db = PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5432/ai")
agent = Agent(
id="support-agent",
name="Support Agent",
model="openai:gpt-5.6",
db=db,
enable_agentic_memory=True,
add_history_to_context=True,
num_history_runs=3,
markdown=True,
)
agent_os = AgentOS(
id="my-os",
agents=[agent],
db=db, # 追踪/调度/服务账号也落这个库
tracing=True, # OpenTelemetry 追踪入库
authorization=True, # 读 JWT_VERIFICATION_KEY 或 JWKS
mcp=True, # 挂载 /mcp MCP 服务器
scheduler=True, # 启用 cron 调度
telemetry=False, # 关闭 AgentOS 遥测
cors_allowed_origins=["https://app.example.com"],
)
app = agent_os.get_app()
if __name__ == "__main__":
agent_os.serve(app="main:app", host="0.0.0.0", port=7777)
对应的 AgentOS YAML 配置(config="configuration.yaml",控制面板展示层):
chat:
quick_prompts: # Chat 页快捷提示(按 agent id)
support-agent:
- "我能做什么?"
- "我的工单进度如何?"
memory:
display_name: "用户记忆"
dbs:
- db_id: db-0001
domain_config:
display_name: 主站用户记忆
knowledge:
display_name: "知识库"
evals:
display_name: "回归评估"
七、启动、后台常驻、开机自启、改端口
7.1 前台启动
python personal_agent.py # AgentOS.serve() 内部起 uvicorn,默认 7777
# 或直接 uvicorn:
uvicorn personal_agent:app --host 0.0.0.0 --port 7777
export AGENT_OS_HOST=0.0.0.0 AGENT_OS_PORT=8000 # 环境变量优先于 serve() 参数
7.2 systemd 常驻(Linux)
# /etc/systemd/system/agno-agentos.service
[Unit]
Description=Agno AgentOS Service
After=network.target postgresql.service
[Service]
User=agno
WorkingDirectory=/opt/agno-app
EnvironmentFile=/opt/agno-app/.env
ExecStart=/opt/agno-app/.venv/bin/uvicorn personal_agent:app --host 0.0.0.0 --port 7777 --workers 2
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now agno-agentos
多副本部署注意:官方要求先配置共享运行时状态(Redis 队列协调,QueueConfig)再扩副本,见官方 multi-replica 文档。
7.3 Windows:NSSM / 计划任务
官方未提供 Windows 服务化工具,用 NSSM:
nssm install AgnoAgentOS "C:\apps\agno\.venv\Scripts\uvicorn.exe" "personal_agent:app --host 0.0.0.0 --port 7777"
nssm set AgnoAgentOS AppDirectory C:\apps\agno
nssm set AgnoAgentOS AppEnvironmentExtra OPENAI_API_KEY=sk-*** AGENT_OS_PORT=7777
nssm start AgnoAgentOS
7.4 Docker Compose 自启
模板的 compose.yaml 已含 restart: unless-stopped(api 与 db),Docker 引擎随系统启动即可实现开机自启。自建 compose 时照抄该字段。
7.5 改端口与反向代理
改端口:
export AGENT_OS_PORT=8000(环境变量优先),或serve(port=8000),或直接uvicorn ... --port 8000;Railway 模板用${PORT:-8000}跟随平台分配。Nginx 反代示例:
server {
listen 443 ssl;
server_name agents.example.com;
location / {
proxy_pass http://127.0.0.1:7777;
proxy_http_version 1.1;
proxy_set_header Connection ""; # SSE 流式必需
proxy_set_header Host $host;
proxy_read_timeout 300s; # 长 run 防中断
}
}
八、功能实操教程
8.1 实操一:带工具的检索 Agent(HackerNews)
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.hackernews import HackerNewsTools
agent = Agent(
model=Claude(id="claude-sonnet-4-5"),
tools=[HackerNewsTools()],
instructions="Write a report on the topic. Output only the report.",
markdown=True,
)
agent.print_response("Trending startups and products.", stream=True)
uv pip install -U agno anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
python hackernews_agent.py
生产环境用 agent.run(...) / agent.arun(...) 拿结构化 RunOutputEvent 流。
8.2 实操二:SQLite 会话记忆 + 用户记忆
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
agent = Agent(
model="openai:gpt-5.6",
db=SqliteDb(db_file="agent.db"),
add_history_to_context=True,
num_history_runs=3,
enable_agentic_memory=True, # Agent 会把"用户偏好"写进记忆表
)
agent.print_response("I'm working on a Python API project", session_id="dev_session")
agent.print_response("What testing framework should I use?", session_id="dev_session")
# 第二次提问能接住上下文;换 session_id 但同 user_id 时记忆仍在
多用户并发:会话按 session_id 隔离、记忆按 user_id 共享,这是官方"Multi-User, Multi-Session Chat"模式。换 Postgres 只需 db=PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5432/ai")(驱动 uv pip install "psycopg[binary]"),异步用 AsyncPostgresDb。
8.3 实操三:Team 协作(Coordinate / Route / Tasks)
from agno.team import Team, TeamMode
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.hackernews import HackerNewsTools
from agno.tools.yfinance import YFinanceTools
news_agent = Agent(id="news-agent", name="News Agent",
role="Get trending tech news from HackerNews", tools=[HackerNewsTools()])
finance_agent = Agent(id="finance-agent", name="Finance Agent",
role="Get stock prices and financial data", tools=[YFinanceTools()])
team = Team(
name="Research Team",
members=[news_agent, finance_agent],
model=OpenAIResponses(id="gpt-5.4-mini"),
mode=TeamMode.coordinate, # 默认:Leader 分解-委派-汇总
# route:按问题路由给单个专家直接回答;broadcast:全员同题后汇总
# tasks:任务循环,max_iterations=6 控制轮数
instructions="Delegate to the appropriate agent based on the request.",
)
team.print_response("What are the trending AI stories and how is NVDA stock doing?", stream=True)
8.4 实操四:知识库 + PGVector 的 Agentic RAG
# 1. 起 pgvector 容器(官方镜像)
docker run -d \
-e POSTGRES_DB=ai -e POSTGRES_USER=ai -e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql -v pgvolume:/var/lib/postgresql \
-p 5532:5432 --name pgvector agnohq/pgvector:18
# 2. 装依赖
uv pip install -U agno openai sqlalchemy psycopg pgvector pypdf
from agno.agent import Agent
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIResponses
from agno.vectordb.pgvector import PgVector, SearchType
knowledge = Knowledge(
vector_db=PgVector(
table_name="recipes",
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
search_type=SearchType.hybrid, # 向量+关键词混合检索
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
),
)
knowledge.insert(url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf")
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
knowledge=knowledge,
search_knowledge=True, # Agentic RAG:模型自主决定何时检索
markdown=True,
)
agent.print_response("How do I make chicken and galangal in coconut milk soup", stream=True)
本地开发可换 ChromaDB(agno.vectordb.chroma.ChromaDb(path="data/chromadb", persistent_client=True)),生产建议 PGVector 与会话库同引擎。
8.5 实操五:REST API 调用你的 Agent
AgentOS 启动后(默认 7777):
# 发现实例(公开端点,返回 auth_mode 与组件数量)
curl http://localhost:7777/info
# 跑一个 Agent(表单字段)
curl http://localhost:7777/agents/support-agent/runs \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "message=Where is my order?" \
-d "user_id=customer-42" \
-d "session_id=order-support-42" \
-d "stream=false"
# SSE 流式
curl -N http://localhost:7777/agents/support-agent/runs \
-d "message=Investigate this account" -d "stream=true"
# 带运行时上下文(JSON 编码的表单字段)
curl http://localhost:7777/agents/story-writer/runs \
-d "message=Write a short story" \
-d 'dependencies={"reader_age":10}' \
-d 'output_schema={"type":"object","properties":{"title":{"type":"string"},"story":{"type":"string"}},"required":["title","story"]}' \
-d "stream=false"
鉴权:按 /info 返回的 auth_mode 发 Authorization: Bearer <OS_SECURITY_KEY 或 JWT>。Team/Workflow 用 POST /teams/{team_id}/runs、POST /workflows/{workflow_id}/runs。Python 侧可用官方客户端:
import asyncio
from agno.client import AgentOSClient
async def main():
client = AgentOSClient(base_url="http://localhost:7777")
resp = await client.run_agent(agent_id="support-agent", message="Where is my order?",
user_id="customer-42", session_id="order-support-42")
print(resp.content)
asyncio.run(main())

8.6 实操六:接开源 Agent UI / AgentOS 控制面板
# 开源 Agent UI(Next.js)
npx create-agent-ui@latest
cd agent-ui && npm run dev # 或 git clone https://github.com/agno-agi/agent-ui.git && pnpm install && pnpm dev
# 打开 http://localhost:3000 ,左侧填 AgentOS 端点 http://localhost:7777 即可对话

托管控制面板:os.agno.com → Connect OS → Local → 填 http://localhost:7777。Live(公网域名)连接为付费功能(官方文档提及可用优惠码试用),JWT 连接方式见 5.5 节。

8.7 实操七:MCP 接入
# 把外部 MCP 服务器接成 Agent 工具(Streamable HTTP)
from agno.tools.mcp import MCPTools
async def run():
async with MCPTools(url="https://your-mcp-server/mcp", transport="streamable_http") as tools:
agent = Agent(model="openai:gpt-5.6", tools=[tools])
await agent.aprint_response("帮我查一下……")
反向:让 Claude/ChatGPT 连你的 AgentOS——AgentOS(mcp=True) 后,MCP 客户端连接 http://localhost:7777/mcp(生产为你的域名,配 MCP_CONNECT_SECRET)。
8.8 实操八:Streamlit / 自有 FastAPI 前后端集成
AgentOS 是标准 FastAPI 应用,两种集成方式:
# 方式一:BYO FastAPI —— 把 AgentOS 挂进你已有的应用
from fastapi import FastAPI
from agno.os import AgentOS
app = FastAPI() # 你现有的路由、中间件都在
agent_os = AgentOS(agents=[agent], base_app=app) # 路由冲突可用 on_route_conflict="preserve_base_app"
# 方式二:Streamlit 前端调用 AgentOS REST
import streamlit as st
import requests
st.title("我的产品助手")
if prompt := st.chat_input("输入问题"):
r = requests.post(
"http://localhost:7777/agents/product-agent/runs",
data={"message": prompt, "user_id": st.session_state.get("uid", "anon"), "stream": "false"},
)
st.markdown(r.json().get("content", ""))
浏览器端也可以用官方开源 Agent UI 做团队内部工作台,产品端自己走 REST/SSE。
九、全套报错故障排查
十、升级、回滚与卸载
10.1 版本查看
pip show agno # SDK 版本
uv pip list | grep agno
curl http://localhost:7777/info # 返回 agno_version 字段
docker compose images # 模板镜像版本
10.2 升级
pip install -U agno # 或 uv pip install -U agno
uv lock && uv sync # 模板项目:更新 uv.lock 后重建
docker compose up -d --build # Docker 模板升级
Agno 迭代快,升级前读官方 changelog/releases;agentos-railway 模板自带升级文档(docs/upgrading.md),跨模板版本先按它迁移。升级后建议先跑你的 evals(/evals 或 AccuracyEval)确认行为未回归。
10.3 回滚
pip install agno==3.0.6 # 锁回指定版本(以 PyPI 实际版本为准)
git checkout <旧 tag> # 模板仓库回滚代码
docker compose up -d --build # 用旧代码重建
# Railway:redeploy 旧的成功部署,或 git revert 后重推
数据库 schema 由 auto_provision_dbs=True 启动时自动建表,官方未提供降级迁移脚本;回滚大版本前先备份 Postgres(pg_dump)。
10.4 完整卸载清理清单
# 应用
pip uninstall agno -y # 或 uv pip uninstall agno
rm -rf .venv personal_agent.db tmp/agents.db data/
# Docker 模板
docker compose down -v # 删除 agentos-api / agentos-db 与 pgdata 卷(毁数据)
docker rmi agnohq/pgvector:18 agnohq/python:3.14 2>/dev/null
docker image prune -f
# Agent UI
rm -rf agent-ui # Node 项目直接删目录
# Railway
railway open # 控制台删除项目(应用+数据库+数据一并删除)
# systemd 服务:sudo systemctl disable --now agno-agentos && sudo rm /etc/systemd/system/agno-agentos.service
十一、商用许可与合规风险提示
License:Agno 主仓库为 Apache-2.0,可商用、闭源集成、再分发,义务是保留 LICENSE/NOTICE 与修改声明;"Agno" 名称与 logo 属商标,产品命名需规避。官方部署模板(agentos-railway 等)同为 Agno 官方仓库,模板本身可按 Apache-2.0 使用,但其中引用的第三方依赖各有各的许可,商用前建议跑一次许可审计。
托管的收费点:开源的是 SDK + AgentOS 运行时 + 开源 Agent UI;os.agno.com 的 Live 连接(连接公网 AgentOS)是付费功能(官方文档给出的优惠码 PLATFORM30 可试用一个月),本地连接免费;Studio 可视化编排、Company/Routine 等控制面板能力的定价以官方为准——自托管运行时本身不因人数收费,但不要把控制面板的付费功能当成免费能力写进方案。
API 费用:Agno 本身免费,但每次 run 产生模型提供商费用(OpenAI/Anthropic/Gemini 按各自定价);知识库 insert 产生 embedding 费用;模板里的定时任务(每日 09:00 UTC 的 Company Review)会持续消耗模型额度,上线前检查并按需关闭。响应缓存(
cache-response)与工具结果缓存可降低开发期成本。数据隐私与出网:AgentOS 的会话、记忆、知识、追踪数据落在你配置的数据库(数据自主);但模型调用会把你构造的 prompt 发给对应提供商——出网点在模型侧。遥测默认开启:只上报组件/会话/run 标识与配置特征(无 prompt、回复、API Key),但标识符未做哈希,不要把敏感信息编进 id;合规环境用
AGNO_TELEMETRY=false与实例级telemetry=False全量关闭。追踪(tracing)与遥测独立,trace 可能含应用输入输出,入库策略自行评估。生产风险:JWT 鉴权默认在生产模板强制(无
JWT_VERIFICATION_KEY拒绝服务),自建部署务必开启authorization=True并走 HTTPS;匿名模式仅限本地。多副本需 Redis 协调,直接扩副本会丢后台任务。API 快速演进,v2→v3 已有reasoning=True、AgnoApp等多处移除/改名——生产锁版本、升级前跑 evals 回归。社区生态:GitHub 约 4.3 万 stars、Apache-2.0、Discord/X 社区活跃; CONTRIBUTING.md 支持贡献。选型时注意与 LangChain/LlamaIndex 的差异:Agno 强项是"运行时 + 控制面板"一体化,若你只要编排库不要服务化,引入 Agno 属于超配。
附录:命令速查
# ---- 安装 ----
uv pip install -U agno openai # SDK + OpenAI 提供商
uv pip install -U "agno[os]" # AgentOS 运行时
uv add "agno[os,sqlite,postgres,pgvector]" # uv 项目方式
export OPENAI_API_KEY=sk-***
# ---- 本地运行 ----
python personal_agent.py # AgentOS 默认 http://localhost:7777
export AGENT_OS_HOST=0.0.0.0 AGENT_OS_PORT=8000
uvicorn personal_agent:app --host 0.0.0.0 --port 7777
# ---- Postgres / pgvector ----
docker run -d -e POSTGRES_DB=ai -e POSTGRES_USER=ai -e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql -v pgvolume:/var/lib/postgresql \
-p 5532:5432 --name pgvector agnohq/pgvector:18
# ---- 平台模板(Docker) ----
git clone https://github.com/agno-agi/agentos-railway.git agent-platform
cd agent-platform && cp example.env .env # 填 OPENAI_API_KEY
docker compose up -d --build # http://localhost:8000/docs
./scripts/mcp_check.sh
# ---- Railway 部署 ----
./scripts/venv_setup.sh
cp example.env .env.production # 填生产 Key
./scripts/railway/up.sh --workspace YOUR_WORKSPACE
./scripts/railway/env-sync.sh --no-deploy # 配好 JWT_VERIFICATION_KEY 后
./scripts/railway/redeploy.sh
railway logs --service agent-os
# ---- REST API ----
curl http://localhost:7777/info
curl http://localhost:7777/agents/<agent_id>/runs \
-d "message=hello" -d "user_id=u1" -d "session_id=s1" -d "stream=false"
# ---- Agent UI ----
npx create-agent-ui@latest && cd agent-ui && npm run dev # http://localhost:3000
# ---- 升级/回滚/卸载 ----
pip install -U agno
pip install agno==<version>
docker compose down -v && docker image prune -f
pip uninstall agno -y && rm -rf .venv *.db