CoPaw 最佳实践
CoPaw 最佳实践
本教程总结了 CoPaw 的最佳实践,来自行业专家的经验和大量项目的实践总结。遵循这些实践可以帮助你更高效、更安全地使用 CoPaw。
项目结构最佳实践
推荐的项目布局
my-copaw-project/
├── .copaw/ # CoPaw 配置和数据
│ ├── config.json # 主配置
│ ├── config.dev.json # 开发环境配置
│ ├── config.prod.json # 生产环境配置
│ ├── memory/ # Memory 数据
│ │ ├── MEMORY.md # 长期记忆
│ │ └── daily/ # 每日笔记
│ ├── cron/ # Cron 数据
│ ├── logs/ # 日志文件
│ └── backups/ # 备份文件
├── AGENTS.md # Agent 配置
├── SOUL.md # Agent 个性
├── PROFILE.md # 用户资料
├── skills/ # 自定义技能
│ └── my_skill.py
├── workflows/ # 工作流
│ └── my_workflow.py
├── tools/ # MCP 工具
│ └── my_tool.py
├── templates/ # 模板
│ ├── blog_post.md
│ └── report.html
└── scripts/ # 脚本
├── setup.sh
└── deploy.sh
版本控制
.gitignore:
# CoPaw 数据
.copaw/memory/daily/
.copaw/logs/
.copaw/backups/
.copaw/cron/
# 敏感配置
config.prod.json
*.enc
.env
# 临时文件
*.tmp
*.log
# Python
__pycache__/
*.pyc
.venv/
提交策略:
# 提交配置和代码
git add AGENTS.md SOUL.md PROFILE.md
git add config.json config.dev.json
git add skills/ workflows/ tools/
# 不提交敏感数据
git add .copaw/memory/MEMORY.md # 可选
# 不要提交 .copaw/memory/daily/
配置管理最佳实践
环境分离
| 环境 | 配置文件 | 用途 |
|------|---------|------|
| 本地开发 | config.dev.json | 调试模式,详细日志 |
| 测试环境 | config.test.json | 测试数据,模拟场景 |
| 生产环境 | config.prod.json | 严格权限,警告日志 |
敏感信息管理
方案 1: 环境变量
# .env(不要提交到 Git)
SLACK_BOT_TOKEN=xoxb-xxx
TELEGRAM_BOT_TOKEN=123456:xxx
BLOG_PASSWORD=xxx
{
"channels": {
"slack": {
"bot_token": "${SLACK_BOT_TOKEN}"
},
"telegram": {
"bot_token": "${TELEGRAM_BOT_TOKEN}"
}
}
}
方案 2: 加密配置
# 加密配置文件
/config encrypt config.prod.json --key mypassword
# 使用环境变量存储密钥
export COPAW_ENCRYPTION_KEY=mypassword
配置验证
创建 config_validator.py:
import json
from jsonschema import validate
# 配置 Schema
schema = {
"type": "object",
"required": ["version", "environment"],
"properties": {
"version": {"type": "string"},
"environment": {"enum": ["dev", "test", "prod"]},
"channels": {
"type": "object",
"properties": {
"console": {
"type": "object",
"properties": {
"enabled": {"type": "boolean"}
}
}
}
}
}
}
# 验证配置
def validate_config(config_file):
with open(config_file, 'r') as f:
config = json.load(f)
validate(instance=config, schema=schema)
print(f"✓ {config_file} 验证通过")
if __name__ == '__main__':
validate_config('config.json')
Memory 管理最佳实践
记忆分类策略
# MEMORY.md
## 用户资料
- 名字、偏好、习惯
## 工具设置
- API Keys、连接字符串
## 项目上下文
- 每个项目的状态和待办
## 重要决策
- 带日期的决策记录
## 经验教训
- 带日期的教训和经验
主动记录规则
| 何时记录 | 记录内容 |
|---------|---------|
| 对话开始 | 用户信息、偏好 |
| 重要决策 | 决策内容、影响 |
| 完成任务 | 结果、经验教训 |
| 遇到错误 | 错误原因、解决方案 |
Memory 维护
# 定期整理
/cron add 整理Memory \
--schedule "0 0 * * 0" \
--command "/memory organize --type long"
# 定期备份
/cron add 备份Memory \
--schedule "0 2 * * *" \
--command "/memory backup"
# 定期清理
/cron add 清理Memory \
--schedule "0 3 1 * *" \
--command "/memory cleanup --days 90"
工作流设计最佳实践
工作流原则
- 单一职责: 每个工作流只做一件事
- 可测试: 可以独立测试每个任务
- 可监控: 有清晰的日志和状态
- 可重试: 支持失败重试
工作流示例
良好实践:
# 工作流:发布文章
workflow = Workflow(name="发布文章")
# 步骤清晰、职责单一
tasks = [
Task("检查文章", "/quality check"),
Task("生成摘要", "/article summary"),
Task("发布", "/blog publish"),
Task("通知", "/notify send")
]
workflow.add_tasks(tasks)
避免:
# ❌ 一个任务做太多事情
task = Task("发布文章并通知", "/blog publish && /notify send")
错误处理
# 带错误处理的工作流
workflow = Workflow(name="发布文章")
tasks = [
Task(
name="检查文章",
command="/quality check",
on_failure="reject",
max_retries=3
),
Task(
name="发布",
command="/blog publish",
on_failure="rollback"
),
Task(
name="清理",
command="/cleanup",
always_run=True
)
]
Cron 调度最佳实践
Cron 表达式规范
| 时间精度 | 推荐表达式 | 说明 |
|---------|-----------|------|
| 每小时 | 0 | 整点执行 |
| 每 30 分钟 | /30 | 避免 /15(太频繁) |
| 每天凌晨 | 0 2 | 低峰期 |
| 工作日 | 0 9 1-5 | 周一到周五 |
| 每月 1 号 | 0 0 1 * | 月初 |
任务命名规范
# ✅ 好的命名
/cron add 每日数据备份 --schedule "0 2 * * *" --command "/backup data"
/cron add 清理临时文件 --schedule "0 3 * * 0" --command "/cleanup temp"
# ❌ 不好的命名
/cron add backup --schedule "0 2 * * *" --command "/backup data"
/cron add task1 --schedule "0 3 * * 0" --command "/cleanup temp"
任务优先级
# 优先级排序
1. 核心任务(备份、监控)- 高优先级
2. 维护任务(清理、整理)- 中优先级
3. 优化任务(索引、统计)- 低优先级
# 设置优先级
/cron add 核心备份 --schedule "0 2 * * *" --command "/backup data" --priority high
频道配置最佳实践
频道选择
| 场景 | 推荐频道 | 原因 |
|------|---------|------|
| 个人使用 | Telegram | 轻量、快速 |
| 团队协作 | Slack | 集成度高 |
| 社区互动 | Discord | 适合社区 |
| 企业内部 | 飞书/企业微信 | 安全、合规 |
消息规范
# 统一消息格式
/message send --template << 'EOF'
【{type}】{title}
{content}
时间: {timestamp}
EOF
频道隔离
# 为不同类型消息使用不同频道
通知 → slack:#notifications
警报 → slack:#alerts
日志 → slack:#logs
安全最佳实践
访问控制
# 启用认证
/config set security.enable_auth true
# 创建用户
/security user add alice --role editor
# 设置权限
/security grant alice --command "/blog *" --scope "articles/*"
审计日志
# 启用审计
/config set security.audit.enabled true
# 定期审查
/cron add 安全审计 \
--schedule "0 0 * * 0" \
--command "/audit review --period week --email admin@example.com"
数据加密
# 加密配置
/config encrypt config.json --key ${ENCRYPTION_KEY}
# 加密 Memory
/memory encrypt --key ${ENCRYPTION_KEY}
# 使用环境变量
export COPAW_ENCRYPTION_KEY=${ENCRYPTION_KEY}
性能优化最佳实践
Memory 优化
# 定期重建索引
/cron add 重建索引 \
--schedule "0 3 * * 0" \
--command "/memory index rebuild --optimize"
# 清理旧记忆
/cron add 清理Memory \
--schedule "0 4 1 * *" \
--command "/memory cleanup --days 90"
Cron 优化
# 合并相似任务
/cron merge --pattern "检查.*" --into 定期检查
# 限制并发
/config set cron.max_concurrent_tasks 3
# 合理设置超时
/cron update --timeout 300 --all
缓存策略
{
"cache": {
"enabled": true,
"size": 1024,
"ttl": 3600,
"items": [
{
"pattern": "/memory search *",
"ttl": 60
},
{
"pattern": "/config get *",
"ttl": 300
}
]
}
}
团队协作最佳实践
配置共享
# 使用共享配置
/config init --template shared
# 个人配置覆盖
/config set channels.telegram.enabled false
知识共享
# 定期同步 Memory
/cron add 同步Memory \
--schedule "0 0 * * *" \
--command "/memory sync --remote https://shared.example.com/memory"
# 冲突解决策略
/config set memory.sync.conflict_resolution "prefer_remote"
代码审查
# Pull Request 检查
/script pr_check << 'EOF'
1. 验证配置
/config validate
2. 运行测试
/test run --all
3. 检查工作流
/workflow validate
4. 检查 Memory
/memory check
EOF
监控和告警最佳实践
监控指标
| 指标类型 | 监控项 | 告警阈值 |
|---------|-------|---------|
| 系统 | CPU 使用率 | > 80% |
| 系统 | 内存使用率 | > 90% |
| 系统 | 磁盘使用率 | > 85% |
| 应用 | 响应时间 | > 5s |
| 应用 | 错误率 | > 5% |
告警策略
# 设置告警
/alert create --name "CPU高使用率" \
--metric cpu_usage \
--threshold 80 \
--channel slack:#alerts
/alert create --name "任务失败" \
--metric task_failure \
--threshold 5 \
--channel telegram
日志规范
# 结构化日志
import logging
logger = logging.getLogger(__name__)
logger.info(
"任务完成",
extra={
"task_id": "123",
"task_name": "发布文章",
"duration_ms": 1500,
"status": "success"
}
)
测试最佳实践
测试金字塔
E2E 测试 (10%)
/ \
/ \
/ \
集成测试 (30%)
/ \
/ \
单元测试 (60%)
测试脚本
# test_config.py
import unittest
class TestConfig(unittest.TestCase):
def test_load_config(self):
config = load_config('config.json')
self.assertIsNotNone(config)
self.assertEqual(config['environment'], 'prod')
def test_validate_config(self):
result = validate_config('config.json')
self.assertTrue(result['valid'])
CI/CD 集成
# .github/workflows/test.yml
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run tests
run: |
pip install -r requirements.txt
python -m pytest tests/
文档最佳实践
README 模板
# 项目名称
## 简介
简要描述项目
## 安装
\`\`\`bash
pip install copaw
\`\`\`
## 配置
\`\`\`bash
/config init
\`\`\`
## 使用
\`\`\`bash
copaw console
\`\`\`
## 文档
- [教程](docs/tutorial.md)
- [API](docs/api.md)
- [常见问题](docs/faq.md)
代码注释
def publish_blog(title, content):
"""
发布博客文章
Args:
title: 文章标题
content: 文章内容
Returns:
dict: 包含文章 ID 和 URL
Raises:
ValueError: 当标题或内容为空时
"""
# 实现代码
总结
遵循这些最佳实践,你可以:
- ✅ 建立清晰的项目结构
- ✅ 管理复杂的环境配置
- ✅ 高效使用 Memory 系统
- ✅ 设计健壮的工作流
- ✅ 优化 Cron 调度
- ✅ 选择合适的频道
- ✅ 保障系统安全
- ✅ 优化性能
- ✅ 顺畅团队协作
- ✅ 有效监控告警
- ✅ 编写完善测试
- ✅ 编写清晰文档







