mirror of
https://github.com/musistudio/claude-code-router.git
synced 2026-02-18 22:50:49 +08:00
fix docs
This commit is contained in:
@@ -1,112 +0,0 @@
|
||||
---
|
||||
id: advanced/agents
|
||||
title: Agent 系统
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Agent 系统
|
||||
|
||||
使用 Agent 系统扩展功能。
|
||||
|
||||
## 什么是 Agent?
|
||||
|
||||
Agent 是可插拔的功能模块,可以:
|
||||
- 检测是否应处理请求
|
||||
- 修改请求
|
||||
- 提供自定义工具
|
||||
|
||||
## 内置 Agent
|
||||
|
||||
### Image Agent
|
||||
|
||||
通过检测请求中的图像 URL 或文件路径来处理图像相关任务。
|
||||
|
||||
当检测到图像相关内容时,Image Agent 会:
|
||||
1. 标记请求需要图像处理
|
||||
2. 添加图像分析工具到请求中
|
||||
3. 拦截工具调用事件
|
||||
4. 执行图像分析并返回结果
|
||||
|
||||
## Agent 配置
|
||||
|
||||
Agent 在服务器配置中配置并自动加载。
|
||||
|
||||
### 启用 Image Agent
|
||||
|
||||
Image Agent 内置于服务器中,无需额外配置。当请求包含图像内容时自动激活。
|
||||
|
||||
### 强制使用 Image Agent
|
||||
|
||||
如果您的模型不支持工具调用,可以在配置中设置 `config.forceUseImageAgent` 为 `true`:
|
||||
|
||||
```json
|
||||
{
|
||||
"Router": {
|
||||
"image": "gemini,gemini-2.5-pro"
|
||||
},
|
||||
"forceUseImageAgent": true
|
||||
}
|
||||
```
|
||||
|
||||
## Agent 工具调用流程
|
||||
|
||||
1. **检测阶段**:在 `preHandler` 钩子中检测并标记 agents
|
||||
2. **准备阶段**:将 agent 工具添加到请求中
|
||||
3. **拦截阶段**:在 `onSend` 钩子中拦截工具调用事件
|
||||
4. **执行阶段**:执行 agent 工具并发起新的 LLM 请求
|
||||
5. **返回阶段**:将结果流式返回
|
||||
|
||||
## Agent 类型定义
|
||||
|
||||
```typescript
|
||||
interface IAgent {
|
||||
name: string;
|
||||
shouldHandle: (req: any, config: any) => boolean;
|
||||
reqHandler: (req: any, config: any) => void;
|
||||
tools: Map<string, ITool>;
|
||||
}
|
||||
|
||||
interface ITool {
|
||||
name: string;
|
||||
description: string;
|
||||
input_schema: object;
|
||||
handler: (args: any, context: any) => Promise<any>;
|
||||
}
|
||||
```
|
||||
|
||||
## 创建自定义 Agent
|
||||
|
||||
自定义 Agent 支持正在开发中!
|
||||
|
||||
## 使用示例
|
||||
|
||||
### 图像分析请求
|
||||
|
||||
当您发送包含图像的请求时:
|
||||
|
||||
```
|
||||
请分析这张图片:/path/to/image.png
|
||||
```
|
||||
|
||||
Image Agent 将:
|
||||
1. 检测到图像路径
|
||||
2. 添加图像分析工具
|
||||
3. 调用配置的图像处理模型
|
||||
4. 返回分析结果
|
||||
|
||||
### 路由到支持图像的模型
|
||||
|
||||
在配置中指定用于图像任务的模型:
|
||||
|
||||
```json
|
||||
{
|
||||
"Router": {
|
||||
"image": "gemini,gemini-2.5-pro"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 下一步
|
||||
|
||||
- [预设](/zh/docs/advanced/presets) - 使用预定义配置
|
||||
- [自定义路由器](/zh/docs/advanced/custom-router) - 编写自定义路由逻辑
|
||||
@@ -1,394 +0,0 @@
|
||||
---
|
||||
id: advanced/presets
|
||||
title: 预设配置
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# 预设配置
|
||||
|
||||
使用预定义配置进行快速设置。
|
||||
|
||||
## 什么是预设?
|
||||
|
||||
预设是预配置的设置,包括针对特定用例优化的提供商配置、路由规则和转换器。
|
||||
|
||||
## 动态配置系统 (v2.0+)
|
||||
|
||||
CCR 2.0 引入了强大的动态配置系统,支持:
|
||||
|
||||
- **多种输入类型**:选择器、多选、确认框、文本输入、数字输入等
|
||||
- **条件逻辑**:根据用户输入动态显示/隐藏配置项
|
||||
- **变量引用**:配置项之间可以互相引用
|
||||
- **动态选项**:选项列表可以从预设配置或用户输入中动态生成
|
||||
|
||||
### 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 - 静态选项
|
||||
```json
|
||||
"options": {
|
||||
"type": "static",
|
||||
"options": [
|
||||
{"label": "选项1", "value": "value1"},
|
||||
{"label": "选项2", "value": "value2"}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### providers - 从 Providers 配置提取
|
||||
```json
|
||||
"options": {
|
||||
"type": "providers"
|
||||
}
|
||||
```
|
||||
自动从 `Providers` 数组中提取 name 作为选项。
|
||||
|
||||
#### models - 从指定 Provider 的 models 提取
|
||||
```json
|
||||
"options": {
|
||||
"type": "models",
|
||||
"providerField": "{{selectedProvider}}"
|
||||
}
|
||||
```
|
||||
根据用户选择的 Provider,动态显示该 Provider 的 models。
|
||||
|
||||
### 模板变量
|
||||
|
||||
使用 `{{变量名}}` 语法在 template 中引用用户输入:
|
||||
|
||||
```json
|
||||
"template": {
|
||||
"Providers": [
|
||||
{
|
||||
"name": "{{providerName}}",
|
||||
"api_key": "{{apiKey}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 配置映射
|
||||
|
||||
对于复杂的配置需求,使用 `configMappings` 精确控制值的位置:
|
||||
|
||||
```json
|
||||
"configMappings": [
|
||||
{
|
||||
"target": "Providers[0].api_key",
|
||||
"value": "{{apiKey}}"
|
||||
},
|
||||
{
|
||||
"target": "PROXY_URL",
|
||||
"value": "{{proxyUrl}}",
|
||||
"when": {
|
||||
"field": "useProxy",
|
||||
"operator": "eq",
|
||||
"value": true
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### 完整示例
|
||||
|
||||
```json
|
||||
{
|
||||
"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",
|
||||
"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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 可用预设
|
||||
|
||||
### Development(开发)
|
||||
|
||||
针对软件开发任务优化:
|
||||
- 快速响应时间
|
||||
- 适合代码生成
|
||||
- 成本效益高
|
||||
|
||||
配置特点:
|
||||
- 使用轻量级模型处理后台任务
|
||||
- 为代码任务选择专用模型
|
||||
- 优化的超时设置
|
||||
|
||||
### Research(研究)
|
||||
|
||||
针对研究和分析优化:
|
||||
- 支持长上下文
|
||||
- 高质量响应
|
||||
- 更强大的模型
|
||||
|
||||
配置特点:
|
||||
- 使用具有大上下文窗口的模型
|
||||
- 为分析任务选择高级模型
|
||||
- 较长的超时时间
|
||||
|
||||
### Balanced(平衡)
|
||||
|
||||
在速度和质量之间取得平衡:
|
||||
- 良好的通用性能
|
||||
- 合理的成本
|
||||
- 广泛的模型支持
|
||||
|
||||
配置特点:
|
||||
- 混合使用快速和高质量的模型
|
||||
- 适合大多数日常任务
|
||||
- 平衡的成本效益
|
||||
|
||||
## 使用预设
|
||||
|
||||
使用 CLI 应用预设:
|
||||
|
||||
```bash
|
||||
ccr preset apply development
|
||||
```
|
||||
|
||||
列出可用预设:
|
||||
|
||||
```bash
|
||||
ccr preset list
|
||||
```
|
||||
|
||||
## 创建自定义预设
|
||||
|
||||
创建包含 `schema` 和 `template` 的预设文件:
|
||||
|
||||
```bash
|
||||
# 创建预设目录
|
||||
mkdir -p ~/.claude-code-router/presets/my-preset
|
||||
|
||||
# 创建 manifest.json
|
||||
cat > ~/.claude-code-router/presets/my-preset/manifest.json << 'EOF'
|
||||
{
|
||||
"name": "my-preset",
|
||||
"version": "1.0.0",
|
||||
"description": "我的自定义预设",
|
||||
"schema": [
|
||||
{
|
||||
"id": "apiKey",
|
||||
"type": "password",
|
||||
"label": "API Key",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"template": {
|
||||
"Providers": [
|
||||
{
|
||||
"name": "my-provider",
|
||||
"api_key": "{{apiKey}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# 应用预设(会提示输入API Key)
|
||||
ccr my-preset
|
||||
```
|
||||
|
||||
您也可以通过保存配置并稍后重新加载来创建自定义预设:
|
||||
|
||||
```bash
|
||||
# 将当前配置保存为预设
|
||||
ccr preset save my-preset
|
||||
|
||||
# 加载已保存的预设
|
||||
ccr preset apply my-preset
|
||||
```
|
||||
|
||||
## 预设管理
|
||||
|
||||
### 列出所有预设
|
||||
|
||||
```bash
|
||||
ccr preset list
|
||||
```
|
||||
|
||||
输出示例:
|
||||
|
||||
```
|
||||
可用预设:
|
||||
development - 开发优化配置
|
||||
research - 研究优化配置
|
||||
balanced - 平衡配置
|
||||
my-preset - 自定义预设
|
||||
```
|
||||
|
||||
### 应用预设
|
||||
|
||||
```bash
|
||||
ccr preset apply <预设名称>
|
||||
```
|
||||
|
||||
应用预设后,服务器将自动重启以加载新配置。
|
||||
|
||||
### 删除预设
|
||||
|
||||
```bash
|
||||
ccr preset delete <预设名称>
|
||||
```
|
||||
|
||||
## 预设文件位置
|
||||
|
||||
预设保存在:
|
||||
|
||||
```
|
||||
~/.claude-code-router/presets/
|
||||
```
|
||||
|
||||
每个预设都是一个目录,包含 `manifest.json` 文件。
|
||||
|
||||
## 导出和导入预设
|
||||
|
||||
### 导出当前配置
|
||||
|
||||
```bash
|
||||
ccr config show > my-config.json
|
||||
```
|
||||
|
||||
### 导入配置
|
||||
|
||||
```bash
|
||||
ccr config edit
|
||||
# 然后粘贴导入的配置
|
||||
```
|
||||
|
||||
## 最佳实践
|
||||
|
||||
1. **使用动态配置**:为需要用户输入的配置项使用schema系统
|
||||
2. **提供默认值**:为非必填项提供合理的默认值
|
||||
3. **条件显示**:使用when条件避免不必要的输入
|
||||
4. **清晰的标签**:为每个字段提供清晰的label和prompt
|
||||
5. **验证输入**:使用validator确保输入的有效性
|
||||
6. **版本控制**:将常用预设保存在版本控制中
|
||||
7. **文档化**:为自定义预设添加描述和版本信息
|
||||
|
||||
## 下一步
|
||||
|
||||
- [CLI 参考](/zh/docs/cli/start) - 完整的 CLI 命令参考
|
||||
- [配置](/zh/docs/config/basic) - 详细配置指南
|
||||
@@ -1,83 +0,0 @@
|
||||
# CLI 简介
|
||||
|
||||
Claude Code Router CLI (`ccr`) 是一个命令行工具,用于管理和控制 Claude Code Router 服务。
|
||||
|
||||
## 功能概述
|
||||
|
||||
`ccr` 提供以下功能:
|
||||
|
||||
- **服务管理**:启动、停止、重启服务
|
||||
- **配置管理**:交互式配置模型选择
|
||||
- **状态查看**:查看服务运行状态
|
||||
- **代码执行**:直接执行 `claude` 命令
|
||||
- **环境集成**:输出环境变量用于 shell 集成
|
||||
- **Web UI**:打开 Web 管理界面
|
||||
- **状态栏**:集成到编辑器状态栏
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
npm install -g @musistudio/claude-code-router-cli
|
||||
```
|
||||
|
||||
或使用项目别名:
|
||||
|
||||
```bash
|
||||
npm install -g claude-code-router
|
||||
```
|
||||
|
||||
## 基本使用
|
||||
|
||||
### 启动服务
|
||||
|
||||
```bash
|
||||
ccr start
|
||||
```
|
||||
|
||||
### 查看状态
|
||||
|
||||
```bash
|
||||
ccr status
|
||||
```
|
||||
|
||||
### 停止服务
|
||||
|
||||
```bash
|
||||
ccr stop
|
||||
```
|
||||
|
||||
### 查看模型
|
||||
|
||||
```bash
|
||||
ccr model
|
||||
```
|
||||
|
||||
## 与 Claude Code 集成
|
||||
|
||||
`ccr` 可以与 Claude Code 无缝集成,将请求路由到你选择的 LLM 提供商。
|
||||
|
||||
### 方式一:设置 API 地址
|
||||
|
||||
```bash
|
||||
export ANTHROPIC_BASE_URL="http://localhost:3456/v1"
|
||||
export ANTHROPIC_API_KEY="your-api-key"
|
||||
```
|
||||
|
||||
### 方式二:使用 activate 命令
|
||||
|
||||
```bash
|
||||
eval "$(ccr activate)"
|
||||
```
|
||||
|
||||
## 配置文件
|
||||
|
||||
`ccr` 使用与 Server 相同的配置文件:`~/.claude-code-router/config.json`
|
||||
|
||||
配置一次,CLI 和 Server 都会使用。
|
||||
|
||||
## 下一步
|
||||
|
||||
- [安装指南](/docs/cli/installation) - 详细安装说明
|
||||
- [快速开始](/docs/cli/quick-start) - 5 分钟上手
|
||||
- [命令参考](/docs/category/cli-commands) - 完整命令列表
|
||||
- [配置说明](/docs/category/cli-config) - 配置文件详解
|
||||
@@ -1,203 +0,0 @@
|
||||
---
|
||||
id: cli/other-commands
|
||||
title: 其他命令
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# 其他命令
|
||||
|
||||
管理 Claude Code Router 的其他 CLI 命令。
|
||||
|
||||
## ccr stop
|
||||
|
||||
停止运行中的服务器。
|
||||
|
||||
```bash
|
||||
ccr stop
|
||||
```
|
||||
|
||||
## ccr restart
|
||||
|
||||
重启服务器。
|
||||
|
||||
```bash
|
||||
ccr restart
|
||||
```
|
||||
|
||||
## ccr code
|
||||
|
||||
通过路由器执行 claude 命令。
|
||||
|
||||
```bash
|
||||
ccr code [参数...]
|
||||
```
|
||||
|
||||
## ccr activate
|
||||
|
||||
输出 shell 环境变量以供集成使用。
|
||||
|
||||
```bash
|
||||
ccr activate
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```bash
|
||||
export ANTHROPIC_API_URL="http://localhost:3456/v1"
|
||||
export ANTHROPIC_API_KEY="sk-xxxxx"
|
||||
```
|
||||
|
||||
在 shell 中使用:
|
||||
|
||||
```bash
|
||||
eval "$(ccr activate)"
|
||||
```
|
||||
|
||||
`activate` 命令设置以下环境变量:
|
||||
|
||||
- `ANTHROPIC_AUTH_TOKEN`: 来自配置的 API 密钥
|
||||
- `ANTHROPIC_BASE_URL`: 本地路由器端点(默认:`http://127.0.0.1:3456`)
|
||||
- `NO_PROXY`: 设置为 `127.0.0.1` 以防止代理干扰
|
||||
- `DISABLE_TELEMETRY`: 禁用遥测
|
||||
- `DISABLE_COST_WARNINGS`: 禁用成本警告
|
||||
- `API_TIMEOUT_MS`: 来自配置的 API 超时时间
|
||||
|
||||
## ccr ui
|
||||
|
||||
在浏览器中打开 Web UI。
|
||||
|
||||
```bash
|
||||
ccr ui
|
||||
```
|
||||
|
||||
## ccr statusline
|
||||
|
||||
集成状态栏(从 stdin 读取 JSON)。
|
||||
|
||||
```bash
|
||||
echo '{"status":"running"}' | ccr statusline
|
||||
```
|
||||
|
||||
## ccr config
|
||||
|
||||
配置管理命令。
|
||||
|
||||
### 编辑配置
|
||||
|
||||
```bash
|
||||
ccr config edit
|
||||
```
|
||||
|
||||
在默认编辑器中打开配置文件。
|
||||
|
||||
### 验证配置
|
||||
|
||||
```bash
|
||||
ccr config validate
|
||||
```
|
||||
|
||||
验证当前配置文件。
|
||||
|
||||
### 显示配置
|
||||
|
||||
```bash
|
||||
ccr config show
|
||||
```
|
||||
|
||||
显示当前配置(敏感值已隐藏)。
|
||||
|
||||
## ccr preset
|
||||
|
||||
预设管理命令。
|
||||
|
||||
### 列出预设
|
||||
|
||||
```bash
|
||||
ccr preset list
|
||||
```
|
||||
|
||||
### 应用预设
|
||||
|
||||
```bash
|
||||
ccr preset apply <名称>
|
||||
```
|
||||
|
||||
### 保存预设
|
||||
|
||||
```bash
|
||||
ccr preset save <名称>
|
||||
```
|
||||
|
||||
保存当前配置为预设。
|
||||
|
||||
## ccr log
|
||||
|
||||
查看服务器日志。
|
||||
|
||||
```bash
|
||||
ccr log [选项]
|
||||
```
|
||||
|
||||
选项:
|
||||
- `-f, --follow`: 跟踪日志输出(类似 `tail -f`)
|
||||
- `-n <行数>`: 显示的行数
|
||||
|
||||
## 全局选项
|
||||
|
||||
这些选项可用于任何命令:
|
||||
|
||||
| 选项 | 说明 |
|
||||
|------|------|
|
||||
| `-h, --help` | 显示帮助 |
|
||||
| `-v, --version` | 显示版本号 |
|
||||
| `--config <路径>` | 配置文件路径 |
|
||||
| `--verbose` | 启用详细输出 |
|
||||
|
||||
## 示例
|
||||
|
||||
### 停止服务器
|
||||
|
||||
```bash
|
||||
ccr stop
|
||||
```
|
||||
|
||||
### 使用自定义配置重启
|
||||
|
||||
```bash
|
||||
ccr restart --config /path/to/config.json
|
||||
```
|
||||
|
||||
### 查看并设置环境变量
|
||||
|
||||
```bash
|
||||
eval "$(ccr activate)"
|
||||
```
|
||||
|
||||
### 打开 Web UI
|
||||
|
||||
```bash
|
||||
ccr ui
|
||||
```
|
||||
|
||||
### 跟踪日志
|
||||
|
||||
```bash
|
||||
ccr log -f
|
||||
```
|
||||
|
||||
### 列出可用预设
|
||||
|
||||
```bash
|
||||
ccr preset list
|
||||
```
|
||||
|
||||
### 应用预设
|
||||
|
||||
```bash
|
||||
ccr preset apply development
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [入门](/zh/docs/intro) - Claude Code Router 简介
|
||||
- [配置](/zh/docs/config/basic) - 配置指南
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: cli/model
|
||||
title: ccr model
|
||||
sidebar_position: 2
|
||||
---
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: 其他命令
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# 其他命令
|
||||
|
||||
管理 Claude Code Router 的其他 CLI 命令。
|
||||
|
||||
## ccr stop
|
||||
|
||||
停止运行中的服务器。
|
||||
|
||||
```bash
|
||||
ccr stop
|
||||
```
|
||||
|
||||
## ccr restart
|
||||
|
||||
重启服务器。
|
||||
|
||||
```bash
|
||||
ccr restart
|
||||
```
|
||||
|
||||
## ccr code
|
||||
|
||||
通过路由器执行 claude 命令。
|
||||
|
||||
```bash
|
||||
ccr code [参数...]
|
||||
```
|
||||
|
||||
## ccr ui
|
||||
|
||||
在浏览器中打开 Web UI。
|
||||
|
||||
```bash
|
||||
ccr ui
|
||||
```
|
||||
|
||||
## ccr activate
|
||||
|
||||
输出用于与外部工具集成的 shell 环境变量。
|
||||
|
||||
```bash
|
||||
ccr activate
|
||||
```
|
||||
|
||||
## 全局选项
|
||||
|
||||
这些选项可用于任何命令:
|
||||
|
||||
| 选项 | 说明 |
|
||||
|------|------|
|
||||
| `-h, --help` | 显示帮助 |
|
||||
| `-v, --version` | 显示版本号 |
|
||||
| `--config <路径>` | 配置文件路径 |
|
||||
| `--verbose` | 启用详细输出 |
|
||||
|
||||
## 示例
|
||||
|
||||
### 停止服务器
|
||||
|
||||
```bash
|
||||
ccr stop
|
||||
```
|
||||
|
||||
### 使用自定义配置重启
|
||||
|
||||
```bash
|
||||
ccr restart --config /path/to/config.json
|
||||
```
|
||||
|
||||
### 打开 Web UI
|
||||
|
||||
```bash
|
||||
ccr ui
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [入门](/zh/docs/intro) - Claude Code Router 简介
|
||||
- [配置](/zh/docs/config/basic) - 配置指南
|
||||
@@ -0,0 +1,254 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# ccr preset
|
||||
|
||||
管理预设(Presets)——可共享和重用的配置模板。
|
||||
|
||||
## 概述
|
||||
|
||||
预设功能让您可以:
|
||||
- 将当前配置保存为可重用的模板
|
||||
- 与他人分享配置
|
||||
- 安装社区提供的预配置方案
|
||||
- 在不同配置之间轻松切换
|
||||
|
||||
## 命令
|
||||
|
||||
### export
|
||||
|
||||
将当前配置导出为预设。
|
||||
|
||||
```bash
|
||||
ccr preset export <名称> [选项]
|
||||
```
|
||||
|
||||
**选项:**
|
||||
- `--output <路径>` - 自定义输出目录路径
|
||||
- `--description <文本>` - 预设描述
|
||||
- `--author <名称>` - 预设作者
|
||||
- `--tags <标签>` - 逗号分隔的关键字
|
||||
- `--include-sensitive` - 包含 API 密钥等敏感数据(不推荐)
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
ccr preset export my-config --description "我的生产环境配置" --author "您的名字"
|
||||
```
|
||||
|
||||
**执行过程:**
|
||||
1. 读取 `~/.claude-code-router/config.json` 中的当前配置
|
||||
2. 提示输入描述、作者和关键字(如未通过命令行提供)
|
||||
3. 自动清理敏感字段(API 密钥变为占位符)
|
||||
4. 在 `~/.claude-code-router/presets/<名称>/` 创建预设目录
|
||||
5. 生成包含配置和元数据的 `manifest.json`
|
||||
|
||||
### install
|
||||
|
||||
从本地目录安装预设。
|
||||
|
||||
```bash
|
||||
ccr preset install <来源>
|
||||
```
|
||||
|
||||
**来源:**
|
||||
- 本地目录路径:`/path/to/preset-directory`
|
||||
- 预设名称(用于重新配置已安装的预设):`preset-name`
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
# 从目录安装
|
||||
ccr preset install ./my-preset
|
||||
|
||||
# 重新配置已安装的预设
|
||||
ccr preset install my-preset
|
||||
```
|
||||
|
||||
**执行过程:**
|
||||
1. 从预设目录读取 `manifest.json`
|
||||
2. 验证预设结构
|
||||
3. 如果预设包含 `schema`,提示输入必需的值(API 密钥等)
|
||||
4. 将预设复制到 `~/.claude-code-router/presets/<名称>/`
|
||||
5. 在 `manifest.json` 中保存用户输入
|
||||
|
||||
**注意:** 目前不支持从 URL 安装。请先下载预设目录。
|
||||
|
||||
### list
|
||||
|
||||
列出所有已安装的预设。
|
||||
|
||||
```bash
|
||||
ccr preset list
|
||||
```
|
||||
|
||||
**示例输出:**
|
||||
```
|
||||
Available presets:
|
||||
|
||||
• my-config (v1.0.0)
|
||||
My production setup
|
||||
by Your Name
|
||||
|
||||
• openai-setup
|
||||
Basic OpenAI configuration
|
||||
```
|
||||
|
||||
### info
|
||||
|
||||
显示预设的详细信息。
|
||||
|
||||
```bash
|
||||
ccr preset info <名称>
|
||||
```
|
||||
|
||||
**显示内容:**
|
||||
- 版本、描述、作者、关键字
|
||||
- 配置摘要(Providers、Router 规则)
|
||||
- 必需输入(如果有)
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
ccr preset info my-config
|
||||
```
|
||||
|
||||
### delete / rm / remove
|
||||
|
||||
删除已安装的预设。
|
||||
|
||||
```bash
|
||||
ccr preset delete <名称>
|
||||
ccr preset rm <名称>
|
||||
ccr preset remove <名称>
|
||||
```
|
||||
|
||||
**示例:**
|
||||
```bash
|
||||
ccr preset delete my-config
|
||||
```
|
||||
|
||||
## 预设结构
|
||||
|
||||
预设是一个包含 `manifest.json` 文件的目录:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "my-preset",
|
||||
"version": "1.0.0",
|
||||
"description": "我的配置",
|
||||
"author": "作者姓名",
|
||||
"keywords": ["openai", "production"],
|
||||
|
||||
"Providers": [
|
||||
{
|
||||
"name": "openai",
|
||||
"api_base_url": "https://api.openai.com/v1",
|
||||
"api_key": "{{apiKey}}",
|
||||
"models": ["gpt-4", "gpt-3.5-turbo"]
|
||||
}
|
||||
],
|
||||
|
||||
"Router": {
|
||||
"default": "openai:gpt-4"
|
||||
},
|
||||
|
||||
"schema": [
|
||||
{
|
||||
"id": "apiKey",
|
||||
"type": "password",
|
||||
"label": "OpenAI API 密钥",
|
||||
"prompt": "请输入您的 OpenAI API 密钥"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Schema 系统
|
||||
|
||||
`schema` 字段定义用户在安装时必须提供的输入:
|
||||
|
||||
**字段类型:**
|
||||
- `password` - 隐藏输入(用于 API 密钥)
|
||||
- `input` - 文本输入
|
||||
- `select` - 单选下拉框
|
||||
- `multiselect` - 多选下拉框
|
||||
- `confirm` - 是/否确认
|
||||
- `editor` - 多行文本编辑器
|
||||
- `number` - 数字输入
|
||||
|
||||
**动态选项:**
|
||||
```json
|
||||
{
|
||||
"id": "provider",
|
||||
"type": "select",
|
||||
"label": "选择提供商",
|
||||
"options": {
|
||||
"type": "providers"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**条件显示:**
|
||||
```json
|
||||
{
|
||||
"id": "model",
|
||||
"type": "select",
|
||||
"label": "选择模型",
|
||||
"when": {
|
||||
"field": "provider",
|
||||
"operator": "exists"
|
||||
},
|
||||
"options": {
|
||||
"type": "models",
|
||||
"providerField": "#{selectedProvider}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 分享预设
|
||||
|
||||
分享预设的步骤:
|
||||
|
||||
1. **导出配置:**
|
||||
```bash
|
||||
ccr preset export my-preset
|
||||
```
|
||||
|
||||
2. **分享目录:**
|
||||
```bash
|
||||
~/.claude-code-router/presets/my-preset/
|
||||
```
|
||||
|
||||
3. **分发方式:**
|
||||
- 上传到 GitHub 仓库
|
||||
- 创建 GitHub Gist
|
||||
- 打包为 zip 文件分享
|
||||
- 发布到 npm(未来功能)
|
||||
|
||||
4. **用户安装:**
|
||||
```bash
|
||||
ccr preset install /path/to/my-preset
|
||||
```
|
||||
|
||||
## 安全性
|
||||
|
||||
### 自动清理
|
||||
|
||||
默认情况下,`export` 会清理敏感字段:
|
||||
- 名为 `api_key`、`apikey`、`password`、`secret` 的字段会被替换为 `{{字段名}}` 占位符
|
||||
- 这些占位符会成为 schema 中的必需输入
|
||||
- 用户在安装时会被提示提供自己的值
|
||||
|
||||
### 包含敏感数据
|
||||
|
||||
要包含实际值(不推荐):
|
||||
```bash
|
||||
ccr preset export my-preset --include-sensitive
|
||||
```
|
||||
|
||||
**警告:** 永远不要分享包含敏感数据的预设!
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [配置指南](/zh/docs/cli/config/basic) - 基础配置
|
||||
- [项目级配置](/zh/docs/cli/config/project-level) - 项目特定设置
|
||||
- [服务器:预设](/zh/docs/server/advanced/presets) - 高级预设主题
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: cli/start
|
||||
title: ccr start
|
||||
sidebar_position: 1
|
||||
---
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: cli/status
|
||||
title: ccr status
|
||||
sidebar_position: 3
|
||||
---
|
||||
@@ -0,0 +1,401 @@
|
||||
---
|
||||
title: ccr statusline
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# ccr statusline
|
||||
|
||||
显示可自定义的状态栏,实时展示 Claude Code 会话信息,包括工作区、Git 分支、模型、token 使用情况等。
|
||||
|
||||
## 概述
|
||||
|
||||
`ccr statusline` 命令从 stdin 读取 JSON 数据,并在终端中渲染格式精美的状态栏。它设计用于与 Claude Code 的 hook 系统集成,以显示实时会话信息。
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 基本用法
|
||||
|
||||
```bash
|
||||
ccr statusline
|
||||
```
|
||||
|
||||
该命令期望通过 stdin 接收 JSON 数据,通常通过管道从 Claude Code hook 传递:
|
||||
|
||||
```bash
|
||||
echo '{"hook_event_name":"...","session_id":"...","..."}' | ccr statusline
|
||||
```
|
||||
|
||||
### Hook 集成
|
||||
|
||||
在您的 Claude Code 设置中配置:
|
||||
|
||||
```json
|
||||
{
|
||||
"hooks": {
|
||||
"postResponse": {
|
||||
"command": "ccr statusline",
|
||||
"input": "json"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 可用主题
|
||||
|
||||
### 默认主题
|
||||
|
||||
简洁优雅的主题,使用 Nerd Font 图标和彩色文本:
|
||||
|
||||
```
|
||||
my-project main claude-3-5-sonnet-20241022 ↑ 12.3k ↓ 5.2k
|
||||
```
|
||||
|
||||
### Powerline 主题
|
||||
|
||||
vim-powerline 风格,带背景色和箭头分隔符:
|
||||
|
||||
```
|
||||
my-project main claude-3-5-sonnet-20241022 ↑ 12.3k ↓ 5.2k
|
||||
```
|
||||
|
||||
通过在配置中设置 `currentStyle: "powerline"` 激活。
|
||||
|
||||
### 简单主题
|
||||
|
||||
回退主题,不带图标,适用于不支持 Nerd Font 的终端:
|
||||
|
||||
```
|
||||
my-project main claude-3-5-sonnet-20241022 ↑ 12.3k ↓ 5.2k
|
||||
```
|
||||
|
||||
当 `USE_SIMPLE_ICONS=true` 或在不支持的终端上自动使用。
|
||||
|
||||
## 可用模块
|
||||
|
||||
状态栏模块显示不同类型的信息:
|
||||
|
||||
| 模块 | 说明 | 变量 |
|
||||
|------|------|------|
|
||||
| **workDir** | 当前工作目录名称 | `{{workDirName}}` |
|
||||
| **gitBranch** | 当前 Git 分支 | `{{gitBranch}}` |
|
||||
| **model** | 使用的模型 | `{{model}}` |
|
||||
| **usage** | Token 使用情况(输入/输出) | `{{inputTokens}}`, `{{outputTokens}}` |
|
||||
| **context** | 上下文窗口使用情况 | `{{contextPercent}}`, `{{contextWindowSize}}` |
|
||||
| **speed** | Token 处理速度 | `{{tokenSpeed}}`, `{{isStreaming}}` |
|
||||
| **cost** | API 成本 | `{{cost}}` |
|
||||
| **duration** | 会话持续时间 | `{{duration}}` |
|
||||
| **lines** | 代码变更 | `{{linesAdded}}`, `{{linesRemoved}}` |
|
||||
| **script** | 自定义脚本输出 | 动态 |
|
||||
|
||||
## 配置
|
||||
|
||||
在 `~/.claude-code-router/config.json` 中配置 statusline:
|
||||
|
||||
### 默认样式示例
|
||||
|
||||
```json
|
||||
{
|
||||
"StatusLine": {
|
||||
"currentStyle": "default",
|
||||
"default": {
|
||||
"modules": [
|
||||
{
|
||||
"type": "workDir",
|
||||
"icon": "",
|
||||
"text": "{{workDirName}}",
|
||||
"color": "bright_blue"
|
||||
},
|
||||
{
|
||||
"type": "gitBranch",
|
||||
"icon": "",
|
||||
"text": "{{gitBranch}}",
|
||||
"color": "bright_magenta"
|
||||
},
|
||||
{
|
||||
"type": "model",
|
||||
"icon": "",
|
||||
"text": "{{model}}",
|
||||
"color": "bright_cyan"
|
||||
},
|
||||
{
|
||||
"type": "usage",
|
||||
"icon": "↑",
|
||||
"text": "{{inputTokens}}",
|
||||
"color": "bright_green"
|
||||
},
|
||||
{
|
||||
"type": "usage",
|
||||
"icon": "↓",
|
||||
"text": "{{outputTokens}}",
|
||||
"color": "bright_yellow"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Powerline 样式示例
|
||||
|
||||
```json
|
||||
{
|
||||
"StatusLine": {
|
||||
"currentStyle": "powerline",
|
||||
"powerline": {
|
||||
"modules": [
|
||||
{
|
||||
"type": "workDir",
|
||||
"icon": "",
|
||||
"text": "{{workDirName}}",
|
||||
"color": "white",
|
||||
"background": "bg_bright_blue"
|
||||
},
|
||||
{
|
||||
"type": "gitBranch",
|
||||
"icon": "",
|
||||
"text": "{{gitBranch}}",
|
||||
"color": "white",
|
||||
"background": "bg_bright_magenta"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 完整功能示例
|
||||
|
||||
```json
|
||||
{
|
||||
"StatusLine": {
|
||||
"currentStyle": "default",
|
||||
"default": {
|
||||
"modules": [
|
||||
{
|
||||
"type": "workDir",
|
||||
"icon": "",
|
||||
"text": "{{workDirName}}",
|
||||
"color": "bright_blue"
|
||||
},
|
||||
{
|
||||
"type": "gitBranch",
|
||||
"icon": "",
|
||||
"text": "{{gitBranch}}",
|
||||
"color": "bright_magenta"
|
||||
},
|
||||
{
|
||||
"type": "model",
|
||||
"icon": "",
|
||||
"text": "{{model}}",
|
||||
"color": "bright_cyan"
|
||||
},
|
||||
{
|
||||
"type": "context",
|
||||
"icon": "🪟",
|
||||
"text": "{{contextPercent}}% / {{contextWindowSize}}",
|
||||
"color": "bright_green"
|
||||
},
|
||||
{
|
||||
"type": "speed",
|
||||
"icon": "⚡",
|
||||
"text": "{{tokenSpeed}} t/s {{isStreaming}}",
|
||||
"color": "bright_yellow"
|
||||
},
|
||||
{
|
||||
"type": "cost",
|
||||
"icon": "💰",
|
||||
"text": "{{cost}}",
|
||||
"color": "bright_magenta"
|
||||
},
|
||||
{
|
||||
"type": "duration",
|
||||
"icon": "⏱️",
|
||||
"text": "{{duration}}",
|
||||
"color": "bright_white"
|
||||
},
|
||||
{
|
||||
"type": "lines",
|
||||
"icon": "📝",
|
||||
"text": "+{{linesAdded}}/-{{linesRemoved}}",
|
||||
"color": "bright_cyan"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 自定义脚本
|
||||
|
||||
您可以通过执行脚本创建自定义模块:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "script",
|
||||
"icon": "🔧",
|
||||
"scriptPath": "/path/to/script.js",
|
||||
"options": {
|
||||
"customOption": "value"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
脚本格式(CommonJS):
|
||||
|
||||
```javascript
|
||||
// my-status-module.js
|
||||
module.exports = function(variables, options) {
|
||||
// 访问变量如 model、gitBranch 等
|
||||
// 从配置中访问选项
|
||||
return `Custom: ${variables.model}`;
|
||||
};
|
||||
|
||||
// 或异步
|
||||
module.exports = async function(variables, options) {
|
||||
const data = await fetchSomeData();
|
||||
return data;
|
||||
};
|
||||
```
|
||||
|
||||
## 颜色选项
|
||||
|
||||
### 标准颜色
|
||||
|
||||
- `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`
|
||||
- `bright_black`, `bright_red`, `bright_green`, `bright_yellow`, `bright_blue`, `bright_magenta`, `bright_cyan`, `bright_white`
|
||||
|
||||
### 背景颜色
|
||||
|
||||
添加前缀 `bg_`:`bg_blue`, `bg_bright_red` 等。
|
||||
|
||||
### 十六进制颜色
|
||||
|
||||
使用 24 位 TrueColor 和十六进制代码:
|
||||
|
||||
```json
|
||||
{
|
||||
"color": "#FF5733",
|
||||
"background": "bg_#1E90FF"
|
||||
}
|
||||
```
|
||||
|
||||
## 可用变量
|
||||
|
||||
所有变量都可以在模块文本中使用 `{{variableName}}` 访问:
|
||||
|
||||
| 变量 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `{{workDirName}}` | 当前目录名称 | `my-project` |
|
||||
| `{{gitBranch}}` | Git 分支名称 | `main` |
|
||||
| `{{model}}` | 模型名称 | `claude-3-5-sonnet-20241022` |
|
||||
| `{{inputTokens}}` | 输入 tokens(格式化) | `12.3k` |
|
||||
| `{{outputTokens}}` | 输出 tokens(格式化) | `5.2k` |
|
||||
| `{{tokenSpeed}}` | 每秒 tokens 数 | `45` |
|
||||
| `{{isStreaming}}` | 流式传输状态 | `streaming` 或空 |
|
||||
| `{{contextPercent}}` | 上下文使用百分比 | `45` |
|
||||
| `{{contextWindowSize}}` | 总上下文窗口 | `200k` |
|
||||
| `{{cost}}` | 总成本 | `$0.15` |
|
||||
| `{{duration}}` | 会话持续时间 | `2m34s` |
|
||||
| `{{linesAdded}}` | 添加的行数 | `150` |
|
||||
| `{{linesRemoved}}` | 删除的行数 | `25` |
|
||||
| `{{sessionId}}` | 会话 ID(前 8 个字符) | `a1b2c3d4` |
|
||||
|
||||
## 环境变量
|
||||
|
||||
使用环境变量控制行为:
|
||||
|
||||
| 变量 | 值 | 说明 |
|
||||
|------|------|------|
|
||||
| `USE_SIMPLE_ICONS` | `true`/`false` | 强制使用不带图标的简单主题 |
|
||||
| `NERD_FONT` | 任意值 | 自动检测 Nerd Font 支持 |
|
||||
|
||||
## 示例
|
||||
|
||||
### 极简状态栏
|
||||
|
||||
```json
|
||||
{
|
||||
"StatusLine": {
|
||||
"default": {
|
||||
"modules": [
|
||||
{
|
||||
"type": "model",
|
||||
"text": "{{model}}"
|
||||
},
|
||||
{
|
||||
"type": "usage",
|
||||
"text": "↑{{inputTokens}} ↓{{outputTokens}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
输出:`claude-3-5-sonnet-20241022 ↑12.3k ↓5.2k`
|
||||
|
||||
### 开发者生产力重点
|
||||
|
||||
```json
|
||||
{
|
||||
"StatusLine": {
|
||||
"default": {
|
||||
"modules": [
|
||||
{
|
||||
"type": "gitBranch",
|
||||
"icon": "",
|
||||
"text": "{{gitBranch}}",
|
||||
"color": "bright_magenta"
|
||||
},
|
||||
{
|
||||
"type": "lines",
|
||||
"icon": "📝",
|
||||
"text": "+{{linesAdded}}/-{{linesRemoved}}",
|
||||
"color": "bright_cyan"
|
||||
},
|
||||
{
|
||||
"type": "duration",
|
||||
"icon": "⏱️",
|
||||
"text": "{{duration}}",
|
||||
"color": "bright_white"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
输出:` feature/auth 📝 +150/-25 ⏱️ 2m34s`
|
||||
|
||||
## Preset 集成
|
||||
|
||||
Statusline 主题可以包含在 presets 中。当您安装带有 statusline 配置的 preset 时,激活该 preset 时会自动应用。
|
||||
|
||||
查看 [Presets](/docs/server/advanced/presets) 了解更多信息。
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 图标不显示
|
||||
|
||||
在环境中设置 `USE_SIMPLE_ICONS=true`:
|
||||
|
||||
```bash
|
||||
export USE_SIMPLE_ICONS=true
|
||||
```
|
||||
|
||||
### 颜色不工作
|
||||
|
||||
确保您的终端支持 TrueColor(24 位颜色):
|
||||
|
||||
```bash
|
||||
export COLORTERM=truecolor
|
||||
```
|
||||
|
||||
### Git 分支不显示
|
||||
|
||||
确保您在 Git 仓库中并安装了 `git` 命令。
|
||||
|
||||
## 相关命令
|
||||
|
||||
- [ccr status](/docs/cli/commands/status) - 检查服务状态
|
||||
- [ccr preset](/docs/cli/commands/preset) - 管理带 statusline 主题的 presets
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: installation
|
||||
title: 安装
|
||||
sidebar_position: 2
|
||||
---
|
||||
@@ -17,19 +16,19 @@ sidebar_position: 2
|
||||
## 通过 npm 安装
|
||||
|
||||
```bash
|
||||
npm install -g @musistudio/claude-code-router-cli
|
||||
npm install -g @musistudio/claude-code-router
|
||||
```
|
||||
|
||||
## 通过 pnpm 安装
|
||||
|
||||
```bash
|
||||
pnpm add -g @musistudio/claude-code-router-cli
|
||||
pnpm add -g @musistudio/claude-code-router
|
||||
```
|
||||
|
||||
## 通过 Yarn 安装
|
||||
|
||||
```bash
|
||||
yarn global add @musistudio/claude-code-router-cli
|
||||
yarn global add @musistudio/claude-code-router
|
||||
```
|
||||
|
||||
## 验证安装
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: intro
|
||||
title: 欢迎使用 Claude Code Router
|
||||
sidebar_position: 1
|
||||
slug: /
|
||||
@@ -7,9 +6,9 @@ slug: /
|
||||
|
||||
# 欢迎使用 Claude Code Router
|
||||
|
||||
[](https://www.npmjs.com/package/@musistudio/claude-code-router-cli)
|
||||
[](https://www.npmjs.com/package/@musistudio/claude-code-router)
|
||||

|
||||

|
||||

|
||||
|
||||
**Claude Code Router** 是一个强大的工具,允许你在没有 Anthropic 账户的情况下使用 [Claude Code](https://claude.ai/code),并将请求路由到其他 LLM 提供商。
|
||||
|
||||
@@ -29,11 +28,11 @@ slug: /
|
||||
### 安装
|
||||
|
||||
```bash
|
||||
npm install -g @musistudio/claude-code-router-cli
|
||||
npm install -g @musistudio/claude-code-router
|
||||
# 或
|
||||
pnpm add -g @musistudio/claude-code-router-cli
|
||||
pnpm add -g @musistudio/claude-code-router
|
||||
# 或
|
||||
yarn global add @musistudio/claude-code-router-cli
|
||||
yarn global add @musistudio/claude-code-router
|
||||
```
|
||||
|
||||
### 基本使用
|
||||
@@ -61,10 +60,10 @@ claude code
|
||||
|
||||
Claude Code Router 由四个主要组件组成:
|
||||
|
||||
- **CLI** (`@musistudio/claude-code-router-cli`): 提供 `ccr` 命令的命令行工具
|
||||
- **Server** (`@musistudio/claude-code-router-server`): 处理 API 路由和转换的核心服务器
|
||||
- **Shared** (`@musistudio/claude-code-router-shared`): 共享常量和工具
|
||||
- **UI** (`@musistudio/claude-code-router-ui`): Web 管理界面(React + Vite)
|
||||
- **CLI** (`@musistudio/claude-code-router`): 提供 `ccr` 命令的命令行工具
|
||||
- **Server** (`@CCR/server`): 处理 API 路由和转换的核心服务器
|
||||
- **Shared** (`@CCR/shared`): 共享常量和工具
|
||||
- **UI** (`@CCR/ui`): Web 管理界面(React + Vite)
|
||||
|
||||
## 许可证
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: quick-start
|
||||
title: 快速开始
|
||||
sidebar_position: 3
|
||||
---
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: advanced/custom-router
|
||||
title: 自定义路由器
|
||||
sidebar_position: 1
|
||||
---
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: advanced/preset-format
|
||||
title: Preset 格式规范
|
||||
sidebar_position: 4
|
||||
---
|
||||
@@ -1036,6 +1035,7 @@ ccr preset export my-preset
|
||||
```
|
||||
|
||||
可选项:
|
||||
|
||||
```bash
|
||||
ccr preset export my-preset \
|
||||
--description "我的预设" \
|
||||
@@ -1043,16 +1043,29 @@ ccr preset export my-preset \
|
||||
--tags "openai,production"
|
||||
```
|
||||
|
||||
### 导入预设
|
||||
### 安装预设
|
||||
|
||||
**CLI 方式:**
|
||||
|
||||
```bash
|
||||
# 从本地目录安装
|
||||
ccr preset install /path/to/preset
|
||||
|
||||
# 从预设名称重新配置(已安装的)
|
||||
# 重新配置已安装的预设
|
||||
ccr preset install my-preset
|
||||
```
|
||||
|
||||
:::note 注意
|
||||
CLI 方式**不支持**从 URL 安装。如需从 GitHub 安装,请使用 Web UI 或先克隆到本地。
|
||||
:::
|
||||
|
||||
**Web UI 方式:**
|
||||
|
||||
1. 访问 Web UI:`ccr ui`
|
||||
2. 点击"预设商城"按钮
|
||||
3. 选择预设或输入 GitHub 仓库 URL
|
||||
4. 点击安装
|
||||
|
||||
### 管理预设
|
||||
|
||||
```bash
|
||||
@@ -0,0 +1,672 @@
|
||||
---
|
||||
title: 预设配置
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# 预设配置
|
||||
|
||||
使用预定义配置进行快速设置。
|
||||
|
||||
## 什么是预设?
|
||||
|
||||
预设是预配置的设置,包括针对特定用例优化的提供商配置、路由规则和转换器。
|
||||
|
||||
## 使用预设
|
||||
|
||||
### CLI 方式(命令行)
|
||||
|
||||
CLI 方式适合开发者通过命令行快速操作。
|
||||
|
||||
#### 安装预设
|
||||
|
||||
**从本地目录安装:**
|
||||
|
||||
```bash
|
||||
ccr preset install /path/to/preset-directory
|
||||
```
|
||||
|
||||
**重新配置已安装的预设:**
|
||||
|
||||
```bash
|
||||
ccr preset install my-preset
|
||||
```
|
||||
|
||||
:::note 注意
|
||||
CLI 方式**不支持**从 URL 直接安装预设。如需从 GitHub 安装,请先克隆到本地或使用 Web UI。
|
||||
:::
|
||||
|
||||
#### 使用预设
|
||||
|
||||
安装预设后,可以使用预设名称启动 Claude Code:
|
||||
|
||||
```bash
|
||||
# 使用指定预设启动
|
||||
ccr my-preset "your prompt"
|
||||
|
||||
# 后台任务使用预设
|
||||
ccr my-preset --background "your prompt"
|
||||
```
|
||||
|
||||
预设会:
|
||||
- 自动加载预配置的 Provider
|
||||
- 应用预设的路由规则
|
||||
- 使用预设中配置的 transformer
|
||||
|
||||
#### 列出所有预设
|
||||
|
||||
```bash
|
||||
ccr preset list
|
||||
```
|
||||
|
||||
此命令将显示所有已安装的预设及其名称、版本和描述。
|
||||
|
||||
#### 查看预设信息
|
||||
|
||||
```bash
|
||||
ccr preset info my-preset
|
||||
```
|
||||
|
||||
#### 删除预设
|
||||
|
||||
```bash
|
||||
ccr preset delete my-preset
|
||||
```
|
||||
|
||||
### Web UI 方式
|
||||
|
||||
Web UI 提供更友好的可视化界面,支持更多安装方式。
|
||||
|
||||
#### 访问 Web UI
|
||||
|
||||
```bash
|
||||
ccr ui
|
||||
```
|
||||
|
||||
然后在浏览器中打开 `http://localhost:3000`
|
||||
|
||||
#### 从 GitHub 仓库安装
|
||||
|
||||
1. 点击"预设商城"按钮
|
||||
2. 在预设列表中选择要安装的预设
|
||||
3. 点击"安装"按钮
|
||||
|
||||
或手动输入 GitHub 仓库地址:
|
||||
|
||||
```
|
||||
格式:https://github.com/username/repo
|
||||
示例:https://github.com/example/ccr-presets
|
||||
```
|
||||
|
||||
#### 重新配置预设
|
||||
|
||||
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 - 静态选项
|
||||
```json
|
||||
"options": {
|
||||
"type": "static",
|
||||
"options": [
|
||||
{"label": "选项1", "value": "value1"},
|
||||
{"label": "选项2", "value": "value2"}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
##### providers - 从 Providers 配置提取
|
||||
```json
|
||||
"options": {
|
||||
"type": "providers"
|
||||
}
|
||||
```
|
||||
自动从 `Providers` 数组中提取 name 作为选项。
|
||||
|
||||
##### models - 从指定 Provider 的 models 提取
|
||||
```json
|
||||
"options": {
|
||||
"type": "models",
|
||||
"providerField": "{{selectedProvider}}"
|
||||
}
|
||||
```
|
||||
根据用户选择的 Provider,动态显示该 Provider 的 models。
|
||||
|
||||
#### 模板变量
|
||||
|
||||
使用 `{{变量名}}` 语法在 template 中引用用户输入:
|
||||
|
||||
```json
|
||||
"template": {
|
||||
"Providers": [
|
||||
{
|
||||
"name": "{{providerName}}",
|
||||
"api_key": "{{apiKey}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 配置映射
|
||||
|
||||
对于复杂的配置需求,使用 `configMappings` 精确控制值的位置:
|
||||
|
||||
```json
|
||||
"configMappings": [
|
||||
{
|
||||
"target": "Providers[0].api_key",
|
||||
"value": "{{apiKey}}"
|
||||
},
|
||||
{
|
||||
"target": "PROXY_URL",
|
||||
"value": "{{proxyUrl}}",
|
||||
"when": {
|
||||
"field": "useProxy",
|
||||
"operator": "eq",
|
||||
"value": true
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
#### 完整示例
|
||||
|
||||
```json
|
||||
{
|
||||
"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",
|
||||
"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 版本 |
|
||||
| `source` | string | - | 预设来源 URL |
|
||||
| `sourceType` | string | - | 来源类型(`local`/`gist`/`registry`) |
|
||||
| `checksum` | string | - | 内容校验和(SHA256) |
|
||||
|
||||
示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"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 | 状态栏配置 |
|
||||
|
||||
示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"Providers": [
|
||||
{
|
||||
"name": "openai",
|
||||
"api_base_url": "https://api.openai.com/v1",
|
||||
"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 | 用户填写的值(运行时使用) |
|
||||
| `requiredInputs` | array | 必填输入项列表(自动生成) |
|
||||
|
||||
**schema 字段类型:**
|
||||
|
||||
| 类型 | 说明 | 使用场景 |
|
||||
|------|------|----------|
|
||||
| `password` | 密码输入(隐藏) | API Key |
|
||||
| `input` | 单行文本输入 | URL |
|
||||
| `number` | 数字输入 | 端口号 |
|
||||
| `select` | 单选下拉框 | 选择 Provider |
|
||||
| `multiselect` | 多选框 | 启用功能 |
|
||||
| `confirm` | 确认框 | 是否启用 |
|
||||
| `editor` | 多行文本编辑器 | 自定义配置 |
|
||||
|
||||
动态配置示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:简单预设(无动态配置)
|
||||
|
||||
```bash
|
||||
# 创建预设目录
|
||||
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",
|
||||
"api_key": "${OPENAI_API_KEY}",
|
||||
"models": ["gpt-4o", "gpt-4o-mini"]
|
||||
}
|
||||
],
|
||||
|
||||
"Router": {
|
||||
"default": "openai/gpt-4o",
|
||||
"background": "openai/gpt-4o-mini"
|
||||
},
|
||||
|
||||
"requiredInputs": [
|
||||
{
|
||||
"id": "Providers[0].api_key",
|
||||
"prompt": "Enter OpenAI API Key",
|
||||
"placeholder": "OPENAI_API_KEY"
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
# 配置预设(输入 API Key)
|
||||
ccr preset install simple-openai
|
||||
|
||||
# 使用预设
|
||||
ccr simple-openai "your prompt"
|
||||
```
|
||||
|
||||
#### 示例 2:高级预设(动态配置)
|
||||
|
||||
```bash
|
||||
# 创建预设目录
|
||||
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' : 'https://api.deepseek.com'}",
|
||||
"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,可以导出当前配置:
|
||||
|
||||
```bash
|
||||
# 导出当前配置
|
||||
ccr preset export my-exported-preset
|
||||
```
|
||||
|
||||
导出时会自动:
|
||||
- 识别敏感字段(如 `api_key`)并替换为环境变量占位符
|
||||
- 生成 `schema` 用于收集用户输入
|
||||
- 生成 `template` 和 `configMappings`
|
||||
|
||||
可选项:
|
||||
|
||||
```bash
|
||||
ccr preset export my-exported-preset \
|
||||
--description "导出的配置" \
|
||||
--author "Your Name" \
|
||||
--tags "production,openai"
|
||||
```
|
||||
|
||||
:::tip 分享预设
|
||||
导出的预设目录可以直接分享给他人。接收者可以:
|
||||
- **CLI 方式**:将目录放到 `~/.claude-code-router/presets/`,然后运行 `ccr preset install 预设名`
|
||||
- **Web UI 方式**:将目录上传到 GitHub,然后通过仓库 URL 安装
|
||||
:::
|
||||
|
||||
## 预设文件位置
|
||||
|
||||
预设保存在:
|
||||
|
||||
```
|
||||
~/.claude-code-router/presets/
|
||||
```
|
||||
|
||||
每个预设都是一个目录,包含 `manifest.json` 文件。
|
||||
|
||||
## 最佳实践
|
||||
|
||||
1. **使用动态配置**:为需要用户输入的配置项使用schema系统
|
||||
2. **提供默认值**:为非必填项提供合理的默认值
|
||||
3. **条件显示**:使用when条件避免不必要的输入
|
||||
4. **清晰的标签**:为每个字段提供清晰的label和prompt
|
||||
5. **验证输入**:使用validator确保输入的有效性
|
||||
6. **版本控制**:将常用预设保存在版本控制中
|
||||
7. **文档化**:为自定义预设添加描述和版本信息
|
||||
|
||||
## 下一步
|
||||
|
||||
- [CLI 参考](/zh/docs/cli/start) - 完整的 CLI 命令参考
|
||||
- [配置](/zh/docs/config/basic) - 详细配置指南
|
||||
@@ -164,27 +164,3 @@ curl -X DELETE "http://localhost:3456/api/logs?file=/home/user/.claude-code-rout
|
||||
- **maxFiles**: 3 - 保留最近 3 个日志文件
|
||||
- **interval**: 1d - 每天轮转
|
||||
- **maxSize**: 50M - 单个文件最大 50MB
|
||||
|
||||
## 日志分析
|
||||
|
||||
### 使用 jq 分析日志
|
||||
|
||||
```bash
|
||||
# 查看所有错误日志
|
||||
curl "http://localhost:3456/api/logs" \
|
||||
-H "x-api-key: your-api-key" | \
|
||||
jq -r '.[] | fromjson | select(.level >= 40)'
|
||||
|
||||
# 统计请求次数
|
||||
curl "http://localhost:3456/api/logs" \
|
||||
-H "x-api-key: your-api-key" | \
|
||||
jq -r '.[] | fromjson | .req.method' | \
|
||||
sort | uniq -c
|
||||
```
|
||||
|
||||
### 实时监控日志
|
||||
|
||||
```bash
|
||||
# 通过 API 实时获取最新日志
|
||||
watch -n 5 'curl -s "http://localhost:3456/api/logs" -H "x-api-key: your-api-key" | jq -r ".[-10:]"'
|
||||
```
|
||||
@@ -50,27 +50,6 @@ curl -H "x-api-key: your-api-key" http://localhost:3456/api/config
|
||||
| `/ui` | GET | Web 管理界面 |
|
||||
| `/ui/` | GET | Web 管理界面(重定向) |
|
||||
|
||||
## 错误响应
|
||||
|
||||
所有 API 在发生错误时返回统一的错误格式:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": {
|
||||
"type": "invalid_request_error",
|
||||
"message": "错误描述"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
常见 HTTP 状态码:
|
||||
|
||||
- `200` - 成功
|
||||
- `400` - 请求参数错误
|
||||
- `401` - 未授权(API Key 无效)
|
||||
- `404` - 资源不存在
|
||||
- `500` - 服务器内部错误
|
||||
|
||||
## 认证
|
||||
|
||||
### API Key 认证
|
||||
@@ -84,16 +63,6 @@ curl -X POST http://localhost:3456/v1/messages \
|
||||
-d '...'
|
||||
```
|
||||
|
||||
### 无认证模式
|
||||
|
||||
当没有配置 Providers 时,服务器会监听在 `0.0.0.0` 且无需认证:
|
||||
|
||||
```json5
|
||||
{
|
||||
"Providers": []
|
||||
}
|
||||
```
|
||||
|
||||
## 流式响应
|
||||
|
||||
消息 API 支持流式响应(Server-Sent Events):
|
||||
@@ -117,13 +86,3 @@ data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"Hello"}
|
||||
event: message_stop
|
||||
data: {"type":"message_stop"}
|
||||
```
|
||||
|
||||
## 速率限制
|
||||
|
||||
服务器本身不实现速率限制,建议通过反向代理(如 Nginx)配置。
|
||||
|
||||
## 版本管理
|
||||
|
||||
当前 API 版本:`v1`
|
||||
|
||||
所有 `/v1/*` 端点保持向后兼容。
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: config/basic
|
||||
title: 基础配置
|
||||
sidebar_position: 1
|
||||
---
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: config/providers
|
||||
title: 提供商配置
|
||||
sidebar_position: 2
|
||||
---
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: config/routing
|
||||
title: 路由配置
|
||||
sidebar_position: 3
|
||||
---
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
id: config/transformers
|
||||
title: 转换器
|
||||
sidebar_position: 4
|
||||
---
|
||||
Reference in New Issue
Block a user