本指南指导如何将现有的 CCCP 配置升级到改进版本,获得更好的默认值和配置管理。
- 创建集中的环境变量管理模块 (
env-config.js) - 改进默认值(MAX_LLM_CALLS, CLI_CONCURRENCY, PREFETCH_MAX_FILES)
- 添加启动时验证和警告
- 支持
.env文件配置 - 改进模型继承(CONTRACT_MODEL 和 BUNDLE_MODEL 继承 CCCP_MODEL)
- 提供详细的
.env.example文档 - 新增改进的启动脚本
-
复制
env-config.jscp src/env-config.js src/
-
复制
.env.examplecp .env.example ./
-
创建
.env工作文件cp .env.example .env # 编辑 .env,填入实际的 ANTHROPIC_API_KEY nano .env
npm install dotenv修改 src/index.js:
// 在文件顶部添加
import { ENV, validateConfig, printConfigSummary } from './env-config.js';
// 在 McpServer 初始化前添加验证
const errors = validateConfig();
if (errors.length > 0) {
console.error('Configuration errors:', errors);
process.exit(1);
}
if (process.env.DEBUG === '1') {
printConfigSummary();
}修改 src/dual-pool.js:
// 替换现有的环境变量读取
import { ENV } from './env-config.js';
// 然后改用
const API_CONCURRENCY = ENV.API_CONCURRENCY;
const CLI_CONCURRENCY = ENV.CLI_CONCURRENCY;修改 src/budget-guard.js:
import { ENV } from './env-config.js';
// 替换所有 process.env.CCCP_MAX_* 为 ENV.MAX_*
const CONFIG = {
MAX_LLM_CALLS: ENV.MAX_LLM_CALLS,
MAX_REPAIR_CALLS: ENV.MAX_REPAIR_CALLS,
MAX_FALLBACKS: ENV.MAX_FALLBACKS,
// ...
};修改 src/contract-injector.js:
import { ENV } from './env-config.js';
// 现在支持继承了
export const CONTRACT_MODE = ENV.CONTRACT_FIRST;
export const CONTRACT_FAIL_MODE = ENV.CONTRACT_FAIL_MODE;
export const CONTRACT_MODEL = ENV.CONTRACT_MODEL; // 自动继承 CCCP_MODEL# 在 src 目录下进行全局替换
find src -name "*.js" -not -name "env-config.js" -type f -exec sed -i 's/process\.env\.CCCP_/ENV./g' {} \;添加依赖:
{
"dependencies": {
"dotenv": "^16.4.5"
}
}更新启动脚本(可选):
{
"scripts": {
"mcp": "node src/index.js",
"start": "node src/index.js",
"start:debug": "DEBUG=1 node src/index.js",
"start:dotenv": "node bin/cccp-improved.js"
}
}# 验证环境变量解析
node -e "import('./src/env-config.js').then(m => m.printConfigSummary())"
# 测试完整启动
npm start
# 或
node bin/cccp-improved.js| 配置项 | 旧值 | 新值 | 影响 |
|---|---|---|---|
CCCP_MAX_LLM_CALLS |
8 | 12 | +50% 预算,更少失败 |
CCCP_CLI_CONCURRENCY |
2 | 4 | +100% CLI 吞吐 |
CCCP_PREFETCH_MAX_FILES |
5 | 10 | +100% 文件预取 |
CCCP_PREFETCH_MAX_TOTAL_CHARS |
20000 | 50000 | +150% 上下文 |
CCCP_CACHE_TTL_MS |
24h | 48h | 更好的缓存命中 |
| 功能 | 说明 |
|---|---|
| 模型继承 | CONTRACT_MODEL 和 BUNDLE_MODEL 继承 CCCP_MODEL |
| .env 支持 | 自动加载 .env 文件 |
| 启动验证 | 自动检查必需配置 |
| 配置输出 | printConfigSummary() 和 printDetailedConfig() |
| 警告系统 | checkConfigWarnings() 提示非理想配置 |
A: 不需要立即迁移。新模块完全向后兼容:
- 如果有
CCCP_MAX_LLM_CALLS环境变量,会使用它 - 否则使用新的默认值
建议逐步迁移:
- 先升级到新版本(向后兼容)
- 观察行为是否符合预期
- 如需调整,通过
.env文件配置
A: 有两种方式:
方式1:挂载 .env 文件
# Dockerfile
COPY .env .env
CMD ["npm", "start"]方式2:使用环境变量传递
docker run -e CCCP_MAX_LLM_CALLS=20 -e ANTHROPIC_API_KEY=$API_KEY ...A: 最小必需集合:
export ANTHROPIC_API_KEY=sk-...
export CCCP_API_CONCURRENCY=8
export CCCP_MAX_LLM_CALLS=20A: 使用配置预设和 CCCP_PROFILE 环境变量:
# 开发环境(平衡)
CCCP_PROFILE=default npm start
# 测试环境(质量优先)
CCCP_PROFILE=quality_max npm start
# 生产环境(速度优先)
CCCP_PROFILE=fast npm start或者使用多个 .env 文件:
# 创建不同配置
cp .env.example .env.prod
cp .env.example .env.dev
# 加载不同的配置
dotenv -e .env.prod npm start
dotenv -e .env.dev npm startA: 硬限制用于保护长时间运行的进程。在 .env 中设置:
# 全局最多 200 次 LLM 调用
CCCP_MAX_LLM_CALLS_HARD=200
# 全局最多 10M 字符
CCCP_MAX_TOTAL_CHARS_HARD=10000000升级完成后,请验证以下项目:
-
.env文件已创建并包含ANTHROPIC_API_KEY -
npm install dotenv已执行 -
env-config.js已添加到 src 目录 - 主要模块已更新使用
ENV对象 - 测试启动:
npm start成功 - 配置摘要正确显示
- 所有现有功能仍然正常工作
如果需要回滚到旧版本:
# 1. 移除 .env 文件
rm .env
# 2. 移除 env-config.js
rm src/env-config.js
# 3. 恢复代码更改
git checkout src/
# 4. 卸载 dotenv
npm uninstall dotenv- 如有问题,查看
ANALYSIS_REPORT.md的详细分析 - 查看
.env.example的配置说明 - 运行
DEBUG=1 npm start获取详细日志