乐于分享
好东西不私藏

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

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

配置与存储层负责管理 CoPaw 的所有持久化数据,包括应用配置、聊天记录、定时任务、记忆数据和环境变量。提供配置加载、保存、热重载能力。

这是 CoPaw 系统的根基。


核心职责

  1. 配置管理:加载和保存 config.json
  2. 热重载:监听配置变化,自动生效
  3. 持久化存储:聊天记录、定时任务、记忆数据
  4. 环境变量:敏感信息管理

核心组件

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>/ 下的对应目录。

文件说明

文件
格式
用途
位置
config.json
JSON
主配置(渠道、MCP、Agent 设置)
~/.copaw/
settings.json
JSON
全局设置
~/.copaw/
skill_pool/
目录
本地共享技能池
~/.copaw/
agent.json
JSON
工作区 Agent 配置
workspaces/<id>/
chats.json
JSON
工作区聊天会话
workspaces/<id>/
sessions/
目录
会话历史
workspaces/<id>/
skill.json
JSON
工作区技能清单
workspaces/<id>/
jobs.json
JSON
定时任务
workspaces/<id>/
memory/
目录
记忆数据
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 客户端配置

重要设计细节

  1. 数据本地化:所有持久化数据位于用户本地 ~/.copaw/ 目录

  2. 热重载:config.json 修改后自动生效,无需重启

  3. 敏感信息:通过环境变量管理 API Key

  4. 原子性写入:JSON 文件写入使用原子操作保证数据一致性

  5. 自定义目录:工作目录可通过 COPAW_WORKING_DIR 环境变量自定义


环境变量汇总

变量名
默认值
实际位置
用途
COPAW_WORKING_DIR
~/.copaw
全局目录
工作目录路径
COPAW_JOBS_FILE
jobs.json
工作区目录
定时任务存储文件
COPAW_CHATS_FILE
chats.json
工作区目录
聊天记录存储文件
COPAW_CONFIG_FILE
config.json
全局目录
配置文件
COPAW_HEARTBEAT_FILE
HEARTBEAT.md
全局目录
心跳文件
COPAW_LOG_LEVEL
info
日志级别
COPAW_OPENAPI_DOCS
false
是否暴露 OpenAPI 文档
COPAW_ENABLED_CHANNELS
(全部)
启用的渠道

注:jobs.json 和 chats.json 实际位于工作区目录 ~/.copaw/workspaces/<id>/ 下,而非全局目录。


总结

配置与存储层是 CoPaw 系统的根基:

  • 统一配置:Pydantic 模型,类型安全
  • 热重载:配置变更自动生效,无需重启
  • 本地存储:所有数据在用户本地,隐私安全
  • 原子写入:SafeJSON 保证数据不损坏
  • 环境变量:敏感信息安全管理
  • 灵活定制:工作目录可自定义

这层让 CoPaw 的所有状态都能持久化,用户配置一次,下次启动自动恢复。