CoPaw 配置管理详解
CoPaw 配置管理详解
CoPaw 的配置系统灵活而强大,支持多种配置方式和环境管理。本文将详细介绍 CoPaw 的配置结构、命令和使用方法。
配置系统概述
配置文件位置
~/.copaw/
├── config.json # 主配置文件
├── config.prod.json # 生产环境配置
├── config.dev.json # 开发环境配置
├── config.test.json # 测试环境配置
└── env # 环境变量文件
配置优先级
1. 环境变量 (ENV) ──────────────────┐
2. 命令行参数 ─────────────────┤
3. 环境配置文件 ────────────────┤
4. 主配置文件 ──────────────┤
5. 默认配置 ────────────┘
优先级规则:后面加载的配置会覆盖前面的配置。
配置文件结构
主配置文件示例
{
"version": "1.0.0",
"environment": "prod",
"channels": {
"console": {
"enabled": true,
"history_size": 1000
},
"slack": {
"enabled": false
},
"telegram": {
"enabled": true,
"bot_token": "xxx"
}
},
"memory": {
"enabled": true,
"storage_path": ".copaw/memory",
"daily_notes": {
"enabled": true
}
},
"cron": {
"enabled": true,
"timezone": "Asia/Shanghai"
},
"mcp": {
"enabled": true,
"tools": []
},
"models": {
"default": "gpt-4",
"fallback": "gpt-3.5-turbo"
},
"logging": {
"level": "info",
"file": ".copaw/logs/copaw.log"
},
"security": {
"enable_auth": false,
"allowed_users": []
}
}
环境配置示例
开发环境 (config.dev.json):
{
"environment": "dev",
"logging": {
"level": "debug"
},
"channels": {
"console": {
"color_output": true
}
},
"memory": {
"storage_path": ".copaw/memory/dev"
}
}
生产环境 (config.prod.json):
{
"environment": "prod",
"logging": {
"level": "warn"
},
"security": {
"enable_auth": true
}
}
配置命令
查看配置
# 查看所有配置
/config
# 查看特定配置项
/config get channels.console.enabled
# 查看嵌套配置
/config get channels
# 查看当前环境
/config get environment
设置配置
# 设置配置项
/config set channels.console.enabled true
# 设置嵌套配置
/config set channels.telegram.bot_token 123456:ABC
# 设置数组元素
/config set channels.slack.channels.[0].name general
# 设置多个配置项
/config set \
channels.console.enabled true \
memory.enabled true \
cron.enabled true
删除配置
# 删除配置项
/config delete channels.slack
# 删除数组元素
/config delete channels.slack.channels.[0]
# 重置为默认值
/config reset channels.console
保存和加载
# 保存配置
/config save
# 保存到指定文件
/config save --output config.custom.json
# 加载配置
/config load config.custom.json
# 重新加载配置
/config reload
环境管理
切换环境
# 切换到开发环境
/config env dev
# 切换到生产环境
/config env prod
# 切换到测试环境
/config env test
# 查看当前环境
/config env show
环境配置文件
配置文件加载顺序:
config.json- 基础配置config.{env}.json- 环境特定配置(覆盖)- 环境变量
- 命令行参数
环境变量
使用 .env 文件:
# .env
COPOW_ENV=prod
COPOW_CHANNELS_SLACK_ENABLED=true
COPOW_CHANNELS_SLACK_BOT_TOKEN=xoxb-xxx
COPOW_MEMORY_ENABLED=true
通过命令设置环境变量:
# 设置环境变量
/config env set COPOW_ENV=prod
# 删除环境变量
/config env unset COPOW_ENV
# 查看所有环境变量
/config env list
配置模板
使用模板创建配置
# 使用默认模板创建配置
/config init
# 使用特定模板
/config init --template dev
# 列出可用模板
/config template list
自定义模板
创建 config.template.json:
{
"version": "1.0.0",
"environment": "{{ENVIRONMENT}}",
"channels": {
"console": {
"enabled": true
},
"telegram": {
"enabled": false
}
},
"memory": {
"enabled": true,
"storage_path": "{{MEMORY_PATH}}"
}
}
使用模板:
/config template apply config.template.json \
--vars ENVIRONMENT=prod \
--vars MEMORY_PATH=/data/memory
配置验证
验证配置
# 验证当前配置
/config validate
# 验证指定文件
/config validate config.dev.json
# 查看详细错误
/config validate --verbose
配置 schema
创建配置 schema 文件 config.schema.json:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"version": {
"type": "string"
},
"environment": {
"type": "string",
"enum": ["dev", "test", "prod"]
},
"channels": {
"type": "object",
"properties": {
"console": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
}
}
}
}
}
},
"required": ["version", "environment"]
}
使用 schema 验证:
/config validate --schema config.schema.json
配置导入导出
导出配置
# 导出为 JSON
/config export --output config.backup.json
# 导出为 YAML
/config export --output config.backup.yaml --format yaml
# 导出特定部分
/config export channels --output channels.json
# 导出环境变量
/config export --format env --output .env
导入配置
# 导入配置
/config import config.backup.json
# 合并配置(不覆盖)
/config import config.merge.json --merge
# 导入环境变量
/config import .env --format env
配置加密
加密敏感配置
# 加密配置文件
/config encrypt config.json --key mypassword
# 加密特定配置项
/config encrypt channels.telegram.bot_token
# 生成加密密钥
/config key generate
解密配置
# 解密配置文件
/config decrypt config.json.enc --key mypassword
# 在运行时解密
/config decrypt --runtime
配置备份和恢复
备份配置
# 备份配置
/config backup --output backups/config_backup_$(date +%Y%m%d).json
# 自动备份(每次修改前)
/config set backup.auto_backup true
/config set backup.path backups/
# 保留最近 N 个备份
/config set backup.retention 7
恢复配置
# 列出备份
/config backup list
# 恢复备份
/config restore backups/config_backup_20240115.json
# 预览备份内容
/config backup view backups/config_backup_20240115.json
配置管理最佳实践
1. 使用环境隔离
开发环境 → config.dev.json → 调试模式、详细日志
测试环境 → config.test.json → 模拟数据、测试配置
生产环境 → config.prod.json → 严格权限、警告日志
2. 敏感信息加密
# 加密 Bot Token
/config encrypt channels.telegram.bot_token
# 加密 API Key
/config encrypt mcp.clients.[0].api_key
# 使用环境变量存储密钥
/config env set COPOW_ENCRYPTION_KEY=mykey
3. 版本控制配置
# 提交配置到 Git
git add config.json config.schema.json
git commit -m "Update config"
# 忽略敏感配置文件
echo "config.prod.json" >> .gitignore
echo "*.enc" >> .gitignore
4. 配置文档化
创建 config.md:
# CoPaw 配置说明
## 环境配置
- `config.dev.json`: 开发环境
- `config.prod.json`: 生产环境
## 重要配置项
### channels.console.enabled
- 类型: boolean
- 默认: true
- 说明: 是否启用控制台频道
### memory.enabled
- 类型: boolean
- 默认: true
- 说明: 是否启用记忆系统
5. 配置变更审计
# 启用配置审计
/config set audit.enabled true
/config set audit.log .copaw/logs/audit.log
# 查看审计日志
/config audit list
# 查看特定配置的变更历史
/config audit history channels.console.enabled
常见配置场景
场景 1: 个人开发环境
{
"environment": "dev",
"channels": {
"console": {
"enabled": true,
"color_output": true
}
},
"memory": {
"storage_path": ".copaw/memory/dev"
},
"logging": {
"level": "debug"
}
}
场景 2: 团队协作环境
{
"environment": "prod",
"channels": {
"slack": {
"enabled": true,
"bot_token": "${SLACK_BOT_TOKEN}"
}
},
"security": {
"enable_auth": true,
"allowed_users": ["user1", "user2"]
}
}
场景 3: 生产环境
{
"environment": "prod",
"logging": {
"level": "warn",
"file": "/var/log/copaw/copaw.log"
},
"memory": {
"storage_path": "/data/copaw/memory",
"backup_enabled": true
},
"security": {
"enable_auth": true,
"rate_limit": 1000
}
}
配置故障排查
Q1: 配置文件找不到?
# 检查配置文件路径
/config path
# 查看所有配置文件
/config files
# 重新定位配置目录
/config path set /custom/path/to/copaw
Q2: 配置不生效?
# 检查配置优先级
/config info
# 查看实际使用的配置
/config show --resolved
# 重新加载配置
/config reload
Q3: 配置验证失败?
# 查看详细错误
/config validate --verbose
# 检查配置 schema
/config validate --schema config.schema.json
# 修复错误后重新验证
/config fix
Q4: 如何重置配置?
# 重置为默认值
/config reset --all
# 重置特定部分
/config reset channels
# 从模板重新初始化
/config init --force
Q5: 配置文件过大?
# 查看配置大小
/config info --size
# 清理旧的备份
/config cleanup --backup
# 压缩配置
/config compress
总结
通过本教程,你应该已经掌握了:
- ✅ 配置文件结构和优先级
- ✅ 配置命令的使用
- ✅ 环境管理和切换
- ✅ 配置验证和 schema
- ✅ 配置导入导出
- ✅ 配置加密和安全
- ✅ 备份和恢复
- ✅ 最佳实践和故障排查
下一章
在下一章中,我们将学习 CoPaw CLI 命令详解,了解所有可用的命令行工具。
相关资源
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







