AI Agent平台CoPaw源码学习——系统层级概览:04 Agent运行层

Agent 运行层是 CoPaw 的核心业务层,负责接收用户查询、创建和执行 AI Agent、管理会话历史,并流式返回执行结果。它是渠道和 AI 能力之间的桥梁。
这是 CoPaw 系统的大脑。
核心职责
-
查询处理:接收并处理用户查询 -
Agent 创建:每次查询创建新的 Agent 实例 -
ReAct 循环:执行推理-行动-观察循环 -
会话管理:通过 JSON 文件持久化会话状态 -
流式输出:异步流式返回执行结果
核心组件
1. AgentRunner(Agent 运行器)
路径:src/copaw/app/runner/runner.py
职责:系统核心调度器,管理 Agent 查询的完整生命周期
核心功能:
-
stream_query(request):核心方法 — 接收 AgentRequest,创建 CoPawAgent,执行查询,流式返回事件 -
Session 管理:通过 SafeJSONSession 进行 JSON 文件持久化 -
MCP 客户端注入:注入 MCP 工具到 Agent -
Chat Manager 集成
2. CoPawAgent(ReAct Agent)
路径:src/copaw/agents/react_agent.py
核心功能:
-
构建 Toolkit:注册 14 个内置工具 + MCP 工具 + Skills -
加载技能:从 3 级目录系统加载 Markdown 技能文件 -
ReAct 循环:Reasoning → Action → Observation 迭代 -
命令处理:特殊指令处理(如 /help、/clear、/compact、/new)
关键特性:每次查询创建新实例,无跨查询状态
3. ChatManager(聊天管理器)
路径:src/copaw/app/runner/session.py(实际为 Session 管理)
职责:聊天会话的持久化管理
4. Session(会话持久化)
路径:src/copaw/app/runner/session.py
职责:会话状态的序列化和反序列化
实现:SafeJSONSession — JSON 文件读写,保证原子性
5. Model Factory(模型工厂)
路径:src/copaw/agents/model_factory.py
职责:根据配置创建对应的 LLM 模型实例
支持:云端供应商 + 本地模型
6. Prompt Builder(提示词构建器)
路径:src/copaw/agents/prompt.py
职责:构建 Agent 的系统提示词
功能:组合基础提示 + 技能描述 + 工具说明
7. Command Handler(命令处理器)
路径:src/copaw/agents/command_handler.py
职责:处理用户特殊命令(非 AI 推理的直接指令)
查询执行流程
1. 接收 AgentRequest ↓2. 加载/创建 Session ↓3. 创建新 CoPawAgent 实例 ↓4. 注册工具和技能 ↓5. 注入 MCP 客户端 ↓6. 执行 ReAct 循环 ├─ Reasoning:LLM 推理当前状态 ├─ Action:调用 Tool 或 Skill └─ Observation:获取结果,继续推理或完成 ↓7. 流式返回事件 ↓8. 保存 Session
关键代码路径
src/copaw/├─ agents/│ ├─ react_agent.py # CoPawAgent (ReAct)│ ├─ model_factory.py # 模型工厂│ ├─ prompt.py # 提示词构建│ ├─ schema.py # Agent 数据结构│ └─ command_handler.py # 命令处理器├─ app/runner/│ ├─ runner.py # AgentRunner 核心│ ├─ session.py # 会话持久化│ ├─ manager.py # ChatManager│ ├─ api.py # Runner API 路由│ ├─ models.py # 数据模型│ ├─ utils.py # 工具函数│ ├─ query_error_dump.py # 错误转储│ └─ repo/ # 持久化仓库
技术实现
核心设计模式:
-
无状态 Agent:每次查询创建新 CoPawAgent 实例,状态通过 Session 文件持久化 -
ReAct 模式:Reasoning-Action-Observation 循环 -
流式生成器:使用 AsyncGenerator 流式返回事件 -
工厂模式:ModelFactory 根据配置动态创建模型实例
运行时限制:
-
max_iters:最大迭代次数(默认 50) -
max_input_length:最大输入长度(默认 128K)
内置工具(CoPawAgent 初始化时注册,共 14 个):
-
execute_shell_command:Shell 命令执行 -
read_file / write_file / edit_file:文件操作 -
grep_search / glob_search:文件搜索 -
browser_use:浏览器控制 -
desktop_screenshot:桌面截图 -
view_image / view_video:媒体查看 -
send_file_to_user:文件发送 -
get_current_time:获取时间 -
set_user_timezone:设置时区 -
get_token_usage:Token 统计
与其他层的交互
上层依赖(被调用):
-
API 路由层:通过 app.state.runner调用 -
渠道通信层:通过 runner.stream_query作为 process 回调 -
定时任务系统:定时触发查询
下层调用:
-
技能与工具层:Agent 调用注册的工具和技能 -
记忆系统:Agent 读写记忆上下文 -
模型层:通过 Model Factory 调用 LLM -
MCP 集成:注册 MCP 工具到 Toolkit -
配置层:读取 Agent 配置参数
重要设计细节
-
无状态设计:保证了并发安全,每次查询独立处理
-
SafeJSON 保证原子性:Session 文件写入不会损坏
-
运行时切换模型:Model 工厂支持运行时切换 LLM 供应商
-
错误转储:查询出错时自动保存错误转储(
query_error_dump.py)
总结
Agent 运行层是 CoPaw 系统的核心引擎:
-
无状态设计:每次查询创建新实例,避免并发问题 -
ReAct 循环:推理-行动-观察,标准 Agent 范式 -
流式输出:AsyncGenerator 异步返回,减少等待 -
Session 持久化:SafeJSON 保证数据安全 -
工具集成:8 个内置工具 + MCP 工具 + 技能 -
运行时限制:防止无限循环
这层把来自渠道的原始请求,转化为 AI 能理解的任务,执行推理,返回结果。是 CoPaw 智能能力的来源。
夜雨聆风