AI Agent平台CoPaw源码学习——系统层级概览:07 配置与存储层

配置与存储层负责管理 CoPaw 的所有持久化数据,包括应用配置、聊天记录、定时任务、记忆数据和环境变量。提供配置加载、保存、热重载能力。
这是 CoPaw 系统的根基。
核心职责
-
配置管理:加载和保存 config.json -
热重载:监听配置变化,自动生效 -
持久化存储:聊天记录、定时任务、记忆数据 -
环境变量:敏感信息管理
核心组件
1. Config Loader(配置加载器)
路径:src/copaw/config/config.py
职责:加载和保存 config.json 配置文件
核心函数:load_config()、save_config(config)
2. Config Watcher(配置热重载)
路径:src/copaw/config/watcher.py → 实际为 src/copaw/app/workspace/workspace.py 中的配置监听
职责:监听 config.json 文件变化,触发渠道重载
实现:文件系统监听 + 回调通知
3. Config Data Model(配置数据模型)
路径:src/copaw/config/config.py
数据结构:
Config (Pydantic BaseModel)├── channels: ChannelConfig(多渠道配置)├── mcp: MCPConfig(MCP客户端配置)├── agents: AgentsConfig(Agent配置)├── settings: SettingsConfig(全局设置)└── ...
4. Env Store(环境变量存储)
路径:src/copaw/envs/store.py
5. Constants(全局常量)
路径:src/copaw/constant.py
存储文件
工作目录结构
~/.copaw/ # COPAW_WORKING_DIR├─ config.json # 主配置文件├─ settings.json # 全局设置├─ skill_pool/ # 技能池├─ skill_scanner_blocked.json # 技能扫描黑名单├─ token_usage.json # Token使用统计├─ workspaces/ # 工作区目录│ └─ <workspace_id>/│ ├─ agent.json # Agent配置│ ├─ chats.json # 聊天会话│ ├─ sessions/ # 会话目录│ │ └─ <session_id>.json # 会话历史│ ├─ skill.json # 技能清单│ ├─ jobs.json # 定时任务│ ├─ memory/ # 记忆数据│ ├─ skills/ # 工作区技能│ ├─ AGENTS.md # Agent行为指令│ ├─ SOUL.md # Agent性格设定│ ├─ PROFILE.md # Agent画像│ └─ MEMORY.md # 长期记忆└─ ...
注:旧版目录
active_skills/、customized_skills/、memory/、models/、custom_channels/已弃用,新版使用workspaces/<id>/下的对应目录。
文件说明
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
技术实现
配置管理
-
Pydantic BaseModel:强类型配置模型,自动验证 -
extra=”allow”:ChannelConfig 支持自定义渠道扩展字段 -
JSON 序列化:配置以 JSON 格式持久化
持久化仓库模式
-
SafeJSONSession:会话 JSON 文件读写,原子性操作(位于 copaw/app/runner/session.py) -
JsonRepository:通用 JSON 仓库基类(位于 copaw/app/runner/repo/)
环境变量
启动时 load_envs_into_environ() 将持久化的环境变量加载到 os.environ,通过 Console UI 或 API 管理。
热重载机制
工作区监听器 (workspace.py) 监听配置文件变化 ↓变化时自动通知对应管理器重载 ├─ ChannelManager 重载渠道 └─ MCPClientManager 重载 MCP 客户端
关键代码路径
src/copaw/├─ constant.py # 全局常量├─ config/│ ├─ __init__.py # 导出│ ├─ config.py # Config 数据模型 + 加载/保存│ ├─ context.py # 配置上下文│ ├─ timezone.py # 时区配置│ └─ utils.py # 配置工具函数├─ envs/│ ├─ __init__.py│ └─ store.py # 环境变量持久化└─ app/runner/ ├─ session.py # SafeJSONSession └─ repo/ # JsonRepository 通用仓库
与其他层的交互
被各层调用:
-
API 路由层: load_config()/save_config()读写配置 -
渠道通信层: from_config()初始化渠道 -
Agent 运行层:读取 Agent 运行配置 -
定时任务系统:读写 jobs.json -
MCP 集成:读取 MCP 客户端配置
重要设计细节
-
数据本地化:所有持久化数据位于用户本地
~/.copaw/目录 -
热重载:config.json 修改后自动生效,无需重启
-
敏感信息:通过环境变量管理 API Key
-
原子性写入:JSON 文件写入使用原子操作保证数据一致性
-
自定义目录:工作目录可通过
COPAW_WORKING_DIR环境变量自定义
环境变量汇总
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注:jobs.json 和 chats.json 实际位于工作区目录
~/.copaw/workspaces/<id>/下,而非全局目录。
总结
配置与存储层是 CoPaw 系统的根基:
-
统一配置:Pydantic 模型,类型安全 -
热重载:配置变更自动生效,无需重启 -
本地存储:所有数据在用户本地,隐私安全 -
原子写入:SafeJSON 保证数据不损坏 -
环境变量:敏感信息安全管理 -
灵活定制:工作目录可自定义
这层让 CoPaw 的所有状态都能持久化,用户配置一次,下次启动自动恢复。
夜雨聆风