Files
claude-code-router/docs/i18n/zh-CN/docusaurus-plugin-content-docs/current/presets/intro.md
musistudio 1579413f3d fix doc
2026-01-02 22:51:22 +08:00

15 KiB
Raw Blame History

title, sidebar_position
title sidebar_position
预设配置 3

预设配置

使用预定义配置进行快速设置。

什么是预设?

预设是预配置的设置,包括针对特定用例优化的提供商配置、路由规则和转换器。

使用预设

CLI 方式(命令行)

CLI 方式适合开发者通过命令行快速操作。

安装预设

从本地目录安装:

ccr preset install /path/to/preset-directory

重新配置已安装的预设:

ccr preset install my-preset

使用预设

安装预设后,可以使用预设名称启动 Claude Code

# 使用指定预设启动
ccr my-preset "your prompt"

预设会:

  • 自动加载预配置的 Provider
  • 应用预设的路由规则
  • 使用预设中配置的 transformer

列出所有预设

ccr preset list

此命令将显示所有已安装的预设及其名称、版本和描述。

查看预设信息

ccr preset info my-preset

删除预设

ccr preset delete my-preset

Web UI 方式

Web UI 提供更友好的可视化界面,支持更多安装方式。

访问 Web UI

ccr ui

然后在浏览器中打开 http://localhost:3000

从 GitHub 仓库安装

  1. 点击"预设商城"按钮
  2. 在预设列表中选择要安装的预设
  3. 点击"安装"按钮

重新配置预设

  1. 在预设列表中点击"查看详情"按钮
  2. 在详情页面中修改配置项
  3. 点击"应用"保存配置

管理预设

  • 查看:点击预设右侧的信息图标
  • 删除:点击预设右侧的删除图标

创建自定义预设

预设目录结构

预设以目录形式存储,每个预设包含以下结构:

~/.claude-code-router/presets/<preset-name>/
├── manifest.json           # 必填:预设配置文件
├── transformers/           # 可选:自定义转换器
│   └── custom-transformer.js
├── scripts/               # 可选:自定义脚本
│   └── status.js
└── README.md              # 可选:说明文档

动态配置系统

CCR 引入了强大的动态配置系统,支持:

  • 多种输入类型:选择器、多选、确认框、文本输入、数字输入等
  • 条件逻辑:根据用户输入动态显示/隐藏配置项
  • 变量引用:配置项之间可以互相引用
  • 动态选项:选项列表可以从预设配置或用户输入中动态生成

Schema 字段类型

类型 说明 示例
password 密码输入(隐藏显示) API Key
input 单行文本输入 Base URL
number 数字输入 最大Token数
select 单选下拉框 选择Provider
multiselect 多选框 启用功能
confirm 确认框 是否使用代理
editor 多行文本编辑器 自定义配置

条件运算符

运算符 说明 示例
eq 等于 {"field": "provider", "operator": "eq", "value": "openai"}
ne 不等于 {"field": "advanced", "operator": "ne", "value": true}
in 包含于 {"field": "feature", "operator": "in", "value": ["a", "b"]}
nin 不包含于 {"field": "type", "operator": "nin", "value": ["x", "y"]}
exists 字段存在 {"field": "apiKey", "operator": "exists"}
gt/lt/gte/lte 大于/小于/大于等于/小于等于 用于数字比较

动态选项类型

static - 静态选项
"options": {
  "type": "static",
  "options": [
    {"label": "选项1", "value": "value1"},
    {"label": "选项2", "value": "value2"}
  ]
}
providers - 从 Providers 配置提取
"options": {
  "type": "providers"
}

自动从 Providers 数组中提取 name 作为选项。

models - 从指定 Provider 的 models 提取
"options": {
  "type": "models",
  "providerField": "{{selectedProvider}}"
}

根据用户选择的 Provider动态显示该 Provider 的 models。

模板变量

使用 {{变量名}} 语法在 template 中引用用户输入:

"template": {
  "Providers": [
    {
      "name": "{{providerName}}",
      "api_key": "{{apiKey}}"
    }
  ]
}

配置映射

对于复杂的配置需求,使用 configMappings 精确控制值的位置:

"configMappings": [
  {
    "target": "Providers[0].api_key",
    "value": "{{apiKey}}"
  },
  {
    "target": "PROXY_URL",
    "value": "{{proxyUrl}}",
    "when": {
      "field": "useProxy",
      "operator": "eq",
      "value": true
    }
  }
]

完整示例

{
  "name": "multi-provider-example",
  "version": "1.0.0",
  "description": "多Provider配置示例 - 支持OpenAI和DeepSeek切换",
  "author": "CCR Team",
  "keywords": ["openai", "deepseek", "multi-provider"],
  "ccrVersion": "2.0.0",
  "schema": [
    {
      "id": "primaryProvider",
      "type": "select",
      "label": "主要Provider",
      "prompt": "选择您主要使用的LLM提供商",
      "options": {
        "type": "static",
        "options": [
          {
            "label": "OpenAI",
            "value": "openai",
            "description": "使用OpenAI的GPT模型"
          },
          {
            "label": "DeepSeek",
            "value": "deepseek",
            "description": "使用DeepSeek的高性价比模型"
          }
        ]
      },
      "required": true,
      "defaultValue": "openai"
    },
    {
      "id": "apiKey",
      "type": "password",
      "label": "API Key",
      "prompt": "请输入您的API Key",
      "placeholder": "sk-...",
      "required": true
    },
    {
      "id": "defaultModel",
      "type": "select",
      "label": "默认模型",
      "prompt": "选择默认使用的模型",
      "options": {
        "type": "static",
        "options": [
          {"label": "GPT-4o", "value": "gpt-4o"},
          {"label": "GPT-4o-mini", "value": "gpt-4o-mini"}
        ]
      },
      "required": true,
      "defaultValue": "gpt-4o",
      "when": {
        "field": "primaryProvider",
        "operator": "eq",
        "value": "openai"
      }
    },
    {
      "id": "enableProxy",
      "type": "confirm",
      "label": "启用代理",
      "prompt": "是否通过代理访问API",
      "defaultValue": false
    },
    {
      "id": "proxyUrl",
      "type": "input",
      "label": "代理地址",
      "prompt": "输入代理服务器地址",
      "placeholder": "http://127.0.0.1:7890",
      "required": true,
      "when": {
        "field": "enableProxy",
        "operator": "eq",
        "value": true
      }
    }
  ],
  "template": {
    "Providers": [
      {
        "name": "{{primaryProvider}}",
        "api_base_url": "https://api.openai.com/v1/chat/completions",
        "api_key": "{{apiKey}}",
        "models": ["{{defaultModel}}"]
      }
    ],
    "Router": {
      "default": "{{primaryProvider}},{{defaultModel}}"
    },
    "PROXY_URL": "{{proxyUrl}}"
  },
  "configMappings": [
    {
      "target": "PROXY_URL",
      "value": "{{proxyUrl}}",
      "when": {
        "field": "enableProxy",
        "operator": "eq",
        "value": true
      }
    }
  ]
}

manifest.json 完整字段说明

manifest.json 是预设的核心配置文件,使用 JSON5 格式(支持注释)。

1. 元数据字段Metadata

这些字段用于描述预设的基本信息:

字段 类型 必填 说明
name string 预设名称(唯一标识符)
version string 版本号(遵循 semver 规范)
description string - 预设描述
author string - 作者信息
homepage string - 项目主页 URL
repository string - 源代码仓库 URL
license string - 许可证类型
keywords string[] - 关键词标签
ccrVersion string - 兼容的 CCR 版本

示例:

{
  "name": "my-preset",
  "version": "1.0.0",
  "description": "我的自定义预设",
  "author": "Your Name",
  "homepage": "https://github.com/yourname/ccr-presets",
  "repository": "https://github.com/yourname/ccr-presets.git",
  "license": "MIT",
  "keywords": ["openai", "production"],
  "ccrVersion": "2.0.0"
}

2. 配置字段Configuration

这些字段会直接合并到 CCR 的配置中,所有 config.json 支持的字段都可以在这里使用:

字段 类型 说明
Providers array Provider 配置数组
Router object 路由配置
transformers array 转换器配置
StatusLine object 状态栏配置
NON_INTERACTIVE_MODE boolean 启用非交互模式(用于 CI/CD

CLI 专用字段(这些字段仅在 CLI 模式下有效,服务器不使用):

字段 类型 说明
noServer boolean 跳过本地服务器启动,直接使用 Provider 的 API
claudeCodeSettings object Claude Code 特定设置(环境变量、状态栏等)

示例:

{
  "Providers": [
    {
      "name": "openai",
      "api_base_url": "https://api.openai.com/v1/chat/completions",
      "api_key": "${OPENAI_API_KEY}",
      "models": ["gpt-4o", "gpt-4o-mini"]
    }
  ],
  "Router": {
    "default": "openai,gpt-4o",
    "background": "openai,gpt-4o-mini"
  },
  "PORT": 8080
}

3. 动态配置系统字段

这些字段用于创建可交互的配置模板:

字段 类型 说明
schema array 配置输入表单定义
template object 配置模板(使用变量引用)
configMappings array 配置映射规则
userValues object 用户填写的值(运行时使用)

schema 字段类型:

类型 说明 使用场景
password 密码输入(隐藏) API Key
input 单行文本输入 URL
number 数字输入 端口号
select 单选下拉框 选择 Provider
multiselect 多选框 启用功能
confirm 确认框 是否启用
editor 多行文本编辑器 自定义配置

动态配置示例:

{
  "schema": [
    {
      "id": "apiKey",
      "type": "password",
      "label": "API Key",
      "prompt": "请输入您的 API Key",
      "required": true
    },
    {
      "id": "provider",
      "type": "select",
      "label": "Provider",
      "options": {
        "type": "static",
        "options": [
          {"label": "OpenAI", "value": "openai"},
          {"label": "DeepSeek", "value": "deepseek"}
        ]
      },
      "defaultValue": "openai"
    }
  ],
  "template": {
    "Providers": [
      {
        "name": "#{provider}",
        "api_key": "#{apiKey}"
      }
    ]
  }
}

创建预设示例

示例 1简单预设无动态配置

# 创建预设目录
mkdir -p ~/.claude-code-router/presets/simple-openai

# 创建 manifest.json
cat > ~/.claude-code-router/presets/simple-openai/manifest.json << 'EOF'
{
  "name": "simple-openai",
  "version": "1.0.0",
  "description": "简单的 OpenAI 配置",
  "author": "Your Name",

  "Providers": [
    {
      "name": "openai",
      "api_base_url": "https://api.openai.com/v1/chat/completions",
      "api_key": "${OPENAI_API_KEY}",
      "models": ["gpt-4o", "gpt-4o-mini"]
    }
  ],

  "Router": {
    "default": "openai,gpt-4o",
    "background": "openai,gpt-4o-mini"
  }
}
EOF

# 配置预设(输入 API Key
ccr preset install simple-openai

# 使用预设
ccr simple-openai "your prompt"

示例 2高级预设动态配置

# 创建预设目录
mkdir -p ~/.claude-code-router/presets/advanced-config

# 创建 manifest.json
cat > ~/.claude-code-router/presets/advanced-config/manifest.json << 'EOF'
{
  "name": "advanced-config",
  "version": "1.0.0",
  "description": "支持多 Provider 选择的高级配置",
  "author": "Your Name",
  "keywords": ["openai", "deepseek", "multi-provider"],

  "schema": [
    {
      "id": "provider",
      "type": "select",
      "label": "选择 Provider",
      "prompt": "选择您主要使用的 LLM 提供商",
      "options": {
        "type": "static",
        "options": [
          {
            "label": "OpenAI",
            "value": "openai",
            "description": "使用 OpenAI 的 GPT 模型"
          },
          {
            "label": "DeepSeek",
            "value": "deepseek",
            "description": "使用 DeepSeek 的高性价比模型"
          }
        ]
      },
      "defaultValue": "openai",
      "required": true
    },
    {
      "id": "apiKey",
      "type": "password",
      "label": "API Key",
      "prompt": "请输入您的 API Key",
      "placeholder": "sk-...",
      "required": true
    },
    {
      "id": "enableProxy",
      "type": "confirm",
      "label": "启用代理",
      "prompt": "是否通过代理访问 API",
      "defaultValue": false
    },
    {
      "id": "proxyUrl",
      "type": "input",
      "label": "代理地址",
      "prompt": "输入代理服务器地址",
      "placeholder": "http://127.0.0.1:7890",
      "required": true,
      "when": {
        "field": "enableProxy",
        "operator": "eq",
        "value": true
      }
    }
  ],

  "template": {
    "Providers": [
      {
        "name": "#{provider}",
        "api_base_url": "#{provider === 'openai' ? 'https://api.openai.com/v1/chat/completions' : 'https://api.deepseek.com/v1/chat/completions'}",
        "api_key": "#{apiKey}",
        "models": ["gpt-4o", "gpt-4o-mini"]
      }
    ],
    "Router": {
      "default": "#{provider},gpt-4o",
      "background": "#{provider},gpt-4o-mini"
    }
  },

  "configMappings": [
    {
      "target": "PROXY_URL",
      "value": "#{proxyUrl}",
      "when": {
        "field": "enableProxy",
        "operator": "eq",
        "value": true
      }
    }
  ]
}
EOF

# 配置预设(会提示输入)
ccr preset install advanced-config

# 使用预设
ccr advanced-config "your prompt"

导出当前配置为预设

如果您已经配置好了 CCR可以导出当前配置

# 导出当前配置
ccr preset export my-exported-preset

导出时会自动:

  • 识别敏感字段(如 api_key)并替换为环境变量占位符
  • 生成 schema 用于收集用户输入
  • 生成 templateconfigMappings

可选项:

ccr preset export my-exported-preset \
  --description "导出的配置" \
  --author "Your Name" \
  --tags "production,openai"

预设文件位置

预设保存在:

~/.claude-code-router/presets/

每个预设都是一个目录,包含 manifest.json 文件。

最佳实践

  1. 使用动态配置为需要用户输入的配置项使用schema系统
  2. 提供默认值:为非必填项提供合理的默认值
  3. 条件显示使用when条件避免不必要的输入
  4. 清晰的标签为每个字段提供清晰的label和prompt
  5. 验证输入使用validator确保输入的有效性
  6. 版本控制:将常用预设保存在版本控制中
  7. 文档化:为自定义预设添加描述和版本信息

下一步