AI Agent平台CoPaw源码学习——系统层级概览:02 API路由层

API 路由层基于 FastAPI 框架,提供 RESTful API 接口,是前端 Console、CLI 和外部调用方与后端业务逻辑之间的桥梁。负责请求路由分发、参数校验、响应格式化。
这是 CoPaw 系统的门面层,所有外部请求都通过这里进入后端。
核心职责
-
请求路由分发:将 URL 路径映射到具体的处理函数 -
参数校验:使用 Pydantic 定义请求/响应体,自动验证 -
响应格式化:统一返回格式 -
生命周期管理:启动/关闭时协调各管理器
路由文件结构
所有子路由在 app/routers/__init__.py 中聚合为一个统一的 APIRouter,挂载到 FastAPI 应用的 /api 前缀下:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
此外,_app.py 中还挂载了 AgentScope Runtime 的 agent_app.router 到 /api/agent 前缀。
核心 API 端点
Agent 管理 (/api/agent)
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
配置管理 (/api/config)
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
技能管理 (/api/skills)
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
其他端点
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
请求/响应模式
所有路由遵循统一模式:
-
路由函数为 async def -
使用 Pydantic 定义 BaseModel请求/响应体 -
通过 request.app.state.*访问全局管理器(Runner、ChannelManager、CronManager 等) -
配置类操作使用 load_config()/save_config()
关键代码路径
copaw/app/├─ _app.py # FastAPI 应用主入口,路由挂载├─ routers/│ ├─ __init__.py # 路由聚合│ ├─ agent.py # Agent 配置 API│ ├─ config.py # 渠道配置 API│ ├─ console.py # Console 推送 API│ ├─ crons/ # 定时任务 API│ ├─ envs.py # 环境变量 API│ ├─ local_models.py # 本地模型 API│ ├─ mcp.py # MCP API│ ├─ ollama_models.py # Ollama API│ ├─ providers.py # 供应商 API│ ├─ runner/ # Runner API│ ├─ skills.py # 技能 API│ ├─ workspace.py # 工作区 API│ └─ ...
技术实现
核心依赖:
-
FastAPI:异步 Web 框架 -
Pydantic:请求/响应数据验证 -
CORS:当前开发模式允许所有来源
中间件:
-
CORSMiddleware:跨域资源共享 -
静态文件服务:Console 前端静态文件
生命周期管理:
应用使用 lifespan 上下文管理器在启动/关闭时:
启动顺序:
-
runner.start()— 初始化 sessions + MemoryManager -
MCPClientManager.init_from_config()— 连接 MCP 工具服务器 -
runner.set_mcp_manager(mcp_manager)— 注入 MCP 到 runner -
ChannelManager.from_config()— 从 config.json 创建渠道实例 -
channel_manager.start_all()— 启动每个渠道的消费循环 -
CronManager— 启动定时任务 -
ChatManager— 聊天持久化,注入到 runner -
ConfigWatcher/MCPConfigWatcher— 文件监听热重载
关闭顺序: watchers → cron → channels → MCP → runner
与其他层的交互
上层依赖(被调用):
-
前端 Console:通过 HTTP 调用所有 API 端点 -
CLI 层:部分 CLI 命令通过 HTTP 与 API 交互
下层调用:
-
Agent 运行层:通过 app.state.runner管理聊天和查询 -
渠道通信层:通过 app.state.channel_manager管理渠道 -
定时任务系统:通过 app.state.cron_manager管理定时任务 -
配置层:通过 load_config()/save_config()读写配置 -
技能系统:通过 SkillService 和 SkillsHub 管理技能
重要设计细节
1. 管理器共享机制所有管理器通过 app.state 共享,路由函数通过 request.app.state.* 访问。这是一种经典的依赖注入模式。
2. OpenAPI 文档OpenAPI 文档默认关闭(COPAW_OPENAPI_DOCS=false),开发时设为 true 可启用。
3. 版本端点版本端点直接在 _app.py 中定义,不在 routers 中。
总结
API 路由层是 CoPaw 系统的中枢神经:
-
FastAPI + Pydantic:类型安全、自动化验证 -
统一路由聚合:所有子路由集中管理 -
生命周期管理:启动/关闭时协调各组件 -
状态共享:通过 app.state访问全局管理器 -
热重载支持:配合 ConfigWatcher 实现配置变更自动生效
作为前后端分离的桥梁,API 路由层把底层的复杂能力封装成简洁的 HTTP 接口,上层(Console UI、CLI)不需要关心实现细节。
夜雨聆风