Loading...

文章背景图

Agno:轻量级多模态 Python Agent 框架与 AgentOS 运行时|部署与使用全指南

2026-10-27
0
- 字
- 分钟
|

Agno:轻量级多模态 Python Agent 框架与 AgentOS 运行时|部署与使用全指南

本文基于 2026 年 10 月的官方资料撰写:开源仓库 agno-agi/agno(main 分支),Python SDK agno 当前 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 UI

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 以服务形态常驻,而非一次性脚本。

适用人群:

人群

是否适合

说明

要给自己的产品加 AI 能力的后端工程师

非常适合

Agent as API:一个 FastAPI 服务同时服务 Web/App/后端任务

想自托管、数据不出库的团队

非常适合

Postgres 自持 + JWT 鉴权 + os.agno.com 仅做连接面板

需要多 Agent 协作/编排(团队、路由、循环、并行、人工审批)

适合

Team 四种模式 + Workflow 的 Condition/Loop/Parallel/Router/HITL

需要企业知识库问答(RAG)

适合

Knowledge + PGVector/Chroma/LanceDB + 混合检索与重排

想用本地模型

适合

Ollama/OllamaResponses、LM Studio 等提供商开箱即用

只需要一个极简脚本调 LLM

不太适合

直接用提供商 SDK 更轻;Agno 的价值在运行时与持久化

非 Python 技术栈团队(纯 Go/Java 后端)

谨慎

SDK 是 Python;后端可通过 REST API/MCP 调用 AgentOS

不适合的场景:单机一次性文本处理(杀鸡用牛刀);对依赖体积极度敏感的边缘设备(Agno 装机会带 pydantic、SQLAlchemy 等);需要硬实时 <50ms 响应的链路(Agent 循环含工具调用延迟)。

二、核心功能逐条拆解

  1. 极简 Agent 定义:Agent(model=..., tools=[...], instructions=[...])。模型可用字符串简写 model="openai:gpt-5.6"(v2.2.6+),也可传提供商类实例精细控制重试、端点等参数。

  2. 多模态输入输出:图片、音频、视频、PDF 可直接作为 Agent 输入(send_media_to_model 默认 True),输出可接 output_schema(Pydantic)拿结构化结果。

  3. 工具体系:任何 Python 函数皆可为工具;内置 100+ Toolkit(DuckDuckGo、HackerNews、YFinance、Docker、BaiduSearch 等);@tool 装饰器、tool hooks(前后钩子)、工具调用次数上限(tool_call_limit)、结果缓存一应俱全。

  4. MCP 双向支持:既能通过 MCPTools 把任意 MCP 服务器接成 Agent 工具(stdio/SSE/Streamable HTTP 三种传输),也能把整个 AgentOS 挂载为 MCP Server(mcp=True,/mcp 端点,8 个内置工具),供 Claude、ChatGPT 等 AI 应用直连。

  5. 会话存储(db=):SqliteDb / PostgresDb / MongoDb / RedisDb 持久化会话与运行历史;add_history_to_context=True + num_history_runs=3 控制注入的历史轮数。

Agno 存储总览:用户输入经 Agents 写入 Storage(DB),再分发出 Sessions / User Memories / Knowledge、Evals 等

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 提供各模式流程图。

Agno Workflow 执行流程图(官方 cookbook 资产)

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 从每次交互沉淀用户画像、实体记忆、经验知识与决策日志等结构化记录。

三、全套官方链接

资源

地址

GitHub 仓库

https://github.com/agno-agi/agno

官方文档站

https://docs.agno.com

安装与起步

https://docs.agno.com/sdk/setup

AgentOS 介绍

https://docs.agno.com/agent-os/introduction

AgentOS 运行时配置

https://docs.agno.com/agent-os/overview

AgentOS API 使用

https://docs.agno.com/agent-os/using-the-api

Agent 平台模板(本地 Docker)

https://docs.agno.com/agent-platform/run-local

Railway 部署

https://docs.agno.com/agent-platform/run-railway

Agent 平台模板仓库

https://github.com/agno-agi/agentos-railway

Docker 模板仓库

https://github.com/agno-agi/agentos-docker

其他云模板(AWS/GCP/Azure/Fly/Render/Modal/Helm)

https://github.com/agno-agi/agentos-aws 等(见 agno README)

开源 Agent UI

https://github.com/agno-agi/agent-ui

Agent UI 文档

https://docs.agno.com/other/agent-ui

模型提供商目录

https://docs.agno.com/models/providers/model-index

数据库支持

https://docs.agno.com/database/overview

知识库 / Agentic RAG(PGVector)

https://docs.agno.com/knowledge/agents/agentic-rag-pgvector

AgentOS 类参考

https://docs.agno.com/reference/agent-os/agent-os

安全与鉴权

https://docs.agno.com/agent-os/security/overview

PyPI 包

https://pypi.org/project/agno/

License(Apache-2.0)

https://github.com/agno-agi/agno/blob/main/LICENSE

在线 Demo:官方不提供公共沙箱 Demo;os.agno.com 需注册账号并连接你自己运行的 AgentOS 实例(本地连接免费,Live 连接为付费功能)。

四、硬件与环境前置要求

项目

要求

操作系统

macOS、Linux(Ubuntu 22.04+ 等)、Windows 10/11(官方文档示例均覆盖 PowerShell 写法;生产建议 Linux 容器)

Python

3.9+(官方推荐用 uv 建 3.12 环境;uv init --bare --python 3.14 等示例默认新版本)

Node.js

Agent UI 自托管需要 Node.js 18+ 与 npm(或 pnpm);运行 AgentOS 本身不需要 Node

Docker / Compose

本地平台模板与生产镜像构建必备

CPU / 内存

开发:2 核 / 4GB;生产(AgentOS + Postgres):建议 2–4 核 / 4–8GB。模型推理走外部 API 时本机无 GPU 要求

GPU

非必需;使用 Ollama 本地模型时按模型规模另备 GPU(与 Agno 无关,是 Ollama 的要求)

磁盘

开发 5GB 起步(Python 环境 + Docker 镜像 agnohq/python 与 agnohq/pgvector);生产视会话/追踪数据量增长

网络

出站访问所选模型提供商 API(OpenAI/Anthropic/Gemini/Ollama 地址);os.agno.com 控制面板需浏览器可达你的 AgentOS 地址

账号

至少一个模型提供商 API Key(示例默认 OpenAI);os.agno.com 免费注册;Railway 部署需 Railway 账号(Hobby $5/月起)

端口

AgentOS 默认 7777(AGENT_OS_PORT 可改);平台模板用 8000;Agent UI 开发服务器 3000;Postgres 5432(模板映射)

五、多平台部署步骤

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 控制面板

  1. 打开 os.agno.com 登录;

  2. 点 Connect OS → Local(本地实例);

  3. 填 http://localhost:7777,命名后连接;

  4. 在 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 鉴权配置(生产强制):

  1. 打开 os.agno.com → Connect OS → Live,填 AGENTOS_URL,开启 Token-Based Authorization (JWT);

  2. 复制生成的公钥到 .env.production 的 JWT_VERIFICATION_KEY(整个 PEM 用引号包住,含 BEGIN/END 行);

  3. 同步并重启:

./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)

参数

默认

说明

model

None

模型对象或 "provider:model_id" 字符串

name / id

自动生成

名称与 ID(Team 委派、API 路由用 id)

db

None

SqliteDb/PostgresDb/MongoDb/RedisDb,存会话/记忆/追踪

tools

None

工具列表,或返回列表的工厂函数(cache_callables 控制缓存)

instructions

None

指令列表,拼入 system message

markdown

False

指示模型用 Markdown 输出

db 相关:add_history_to_context

False

把当前会话历史注入上下文

num_history_runs

None

注入的历史 run 数

enable_agentic_memory

False

Agent 运行中自主管理用户记忆

update_memory_on_run

False

每轮结束自动写记忆

add_memories_to_context

None

把用户记忆注入 system 上下文

memory_manager

None

自定义 MemoryManager

enable_session_summaries / add_session_summary_to_context

False/None

会话摘要

knowledge

None

Knowledge 实例(向量库 + embedder)

search_knowledge

True

注入知识库检索工具(Agentic RAG)

add_knowledge_to_context

False

Traditional RAG:检索结果直接注入 prompt

knowledge_filters / enable_agentic_knowledge_filters

None

元数据过滤 / 让 Agent 自选过滤条件

reasoning_model / reasoning_agent

None

独立推理阶段(v3 取代 reasoning=True)

tool_call_limit

None

单次 run 工具调用上限

tool_hooks / pre_hooks / post_hooks

None

工具前后钩子

output_schema / parser_model / output_model

None

结构化输出(Pydantic)

input_schema

None

输入校验(Pydantic)

user_id / session_id

None

默认作用域标识

session_state

None

持久化会话状态(存数据库)

retries / delay_between_retries / exponential_backoff

0 / 1 / False

run 级重试

debug_mode

False

调试日志

telemetry

True

遥测开关

learning

None

开启 Learning Machine(True 用默认配置)

6.2 AgentOS 构造参数(agno.os.AgentOS)

参数

默认

说明

id / name / description / version

自动/None

实例标识

agents / teams / workflows

None

注册的组件(也接受工厂、RemoteAgent、多框架适配器)

db

None

运行时默认库;组件未指定 db 时继承

interfaces

None

挂载 Slack/Telegram/WhatsApp 等接口

a2a_interface

False

暴露 A2A 服务器

authorization

False

开启 RBAC/JWT 鉴权

authorization_config

None

AuthorizationConfig(verification_keys=[...], algorithm="RS256")

cors_allowed_origins

None

CORS 白名单(与 Agno 默认域名合并)

config

None

YAML 路径或 AgentOSConfig 实例

base_app

None

挂到既有 FastAPI 应用;路由冲突用 on_route_conflict

mcp

None

True(8 个默认工具)或 MCPConfig;挂载 /mcp

mcp_auth

None

MCP OAuth 认证提供方(内置授权服务器或 WorkOS 等)

tracing

False

OpenTelemetry 追踪入库

auto_provision_dbs

True

启动时自动建表

telemetry

True

AgentOS 遥测(不读 AGNO_TELEMETRY)

scheduler / scheduler_poll_interval

False / 15

cron 调度器

queue

None

QueueConfig(durable=True) 持久化后台任务队列

public

None

PublicSurface(...) 有限公开面

checkpoint

None

run 状态持久化级别(runs/tool-batch/tools)

6.3 环境变量

变量

说明

OPENAI_API_KEY / ANTHROPIC_API_KEY / GOOGLE_API_KEY 等

模型提供商凭据

AGENT_OS_HOST / AGENT_OS_PORT

serve() 的主机/端口(默认 localhost/7777,环境变量优先)

JWT_VERIFICATION_KEY

JWT 公钥(PEM);JWT_JWKS_FILE 指向 JWKS 文件

OS_SECURITY_KEY

共享密钥模式

AGNO_TELEMETRY=false

关闭 SDK 遥测(不影响 AgentOS/evals 实例级设置)

AGNO_DEBUG

调试(模板里置 True)

DATABASE_URL / DB_HOST/DB_PORT/DB_USER/DB_PASS/DB_DATABASE

数据库连接(模板约定)

MCP_CONNECT_SECRET

/mcp OAuth 连接密钥(模板)

SLACK_BOT_TOKEN / SLACK_SIGNING_SECRET

Slack 接口

PARALLEL_API_KEY

网页搜索工具

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())
部署到 Railway 后的 AgentOS Swagger 文档(/docs),Health/Core/Agents 端点分组

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 即可对话
Agent UI 主页:连接本地 AgentOS 后选择 Agent 并开始会话

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

在 os.agno.com 连接 Live AgentOS 并开启 Token-Based Authorization (JWT)

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。

九、全套报错故障排查

现象

原因

解决

TypeError: Agent() got an unexpected keyword argument 'reasoning'

v3 移除了 reasoning=True

用 reasoning_model= / ReasoningTools / 原生推理参数(见 5.2 节)

pip install agno 版本不对(装到 1.x 老包)

包历史名冲突或镜像缓存

pip install -U agno 指定索引;确认 PyPI 版本 ≥3.x

缺少 provider 依赖(ModuleNotFoundError: anthropic)

Agno 的提供商依赖按需安装

uv pip install "agno[openai]" / [anthropic] 等按需补装

AgentOS 起不来:agno[os] 未装

运行时是可选 extras

uv pip install -U "agno[os]"

端口 7777 已被占用

上个进程未退出

lsof -iTCP:7777 -sTCP:LISTEN 找 PID kill,或 AGENT_OS_PORT=7778

model="openai:gpt-5.6" 报 provider 不支持/ValueError

字符串格式错误或 provider key 拼写

格式为 provider:model_id;对照 model-as-string 的 key 表(openai/openai-chat/ollama 等)

模型 401/403

环境变量未导出(尤其 Windows 用了 bash 语法)

PowerShell 用 $env:OPENAI_API_KEY="...";确认 shell 会话一致

MissingGreenlet 异常

异步 DB I/O 跑在非 async 上下文

用 AsyncPostgresDb + await;对齐 adapter/engine/driver

AsyncContextNotStarted

async 连接未启动

用 async with / awaited API 连接

Postgres 连接拒绝

容器未就绪或凭据不对

WAIT_FOR_DB=True(模板已配);核对 DB_USER/DB_PASS/DB_DATABASE

/docs 能开但 /agents/{id}/runs 401

生产模板 JWT 默认开启

按 /info 的 auth_mode 发 Bearer token;或补 JWT_VERIFICATION_KEY 并保持 authorization=True

JWT 配好后仍 401

公钥未含 BEGIN/END 行或未加引号导致换行丢失

.env 里用引号包住整个 PEM:JWT_VERIFICATION_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"

up.sh 首次部署退出码 2

官方设计:先建资源再等 JWT 配置

属预期,继续走 env-sync + redeploy(见 5.5 节),不要重复跑 up.sh

Railway 域名解析失败

首次部署后 DNS 需几分钟

稍等后 railway logs --service agent-os 观察健康

MCP 检查失败(mcp_check.sh)

MCP server 未挂载或密钥缺失

确认 mcp=True/模板配置与 MCP_CONNECT_SECRET;./scripts/mcp_check.sh 预期 9 tools

知识库检索为空

维度不匹配或未 insert;混合检索需向量库支持

核对 embedder 维度与表结构;先跑 knowledge.insert(...);hybrid 需要 PgVector 等支持的库

记忆没生效

未设 db(记忆表落在数据库)或未开 agentic memory

enable_agentic_memory=True + db=...;或用 add_memories_to_context

Team 委派不到成员

成员缺 name/role,或用了外部框架适配器当成员

成员必须是原生 Agno Agent/Team 且带 name+role

Workflow 多副本丢任务/取消不同步

未配置共享运行时状态

配 Redis 协调与 durable queue(QueueConfig(durable=True)),再扩副本

遥测担忧

SDK 默认上报使用统计(不含 prompt/回复/Key,但含未哈希的标识符)

export AGNO_TELEMETRY=false 或 Agent(telemetry=False)、AgentOS(telemetry=False)(注意 AgentOS 不读环境变量)

Agent UI 打不开记忆/知识管理页

开源 UI 无此功能且 README 面向 v2

用 os.agno.com 控制面板管理记忆/知识;UI 特性以仓库 README 为准

Agent UI 连不上 localhost:7777

UI 在浏览器里跑,localhost 指浏览器所在机器

确认 AgentOS 监听 0.0.0.0 或使用可达主机名

十、升级、回滚与卸载

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

评论交流

文章目录