# 《Crush 从入门到精通》第二章:基础配置详解
## 配置文件结构
### 配置文件位置
Crush 的配置文件采用 YAML 格式,主要查找以下位置:
```
配置查找顺序(优先级从高到低):
1. $CRUSH_CONFIG_PATH 环境变量指定的路径
2. $DATA_DIR/crush.yaml(默认 ~/.crush/crush.yaml)
3. ./crush.yaml(当前工作目录)
```
### 完整配置结构
```yaml
# ~/.crush/crush.yaml 完整配置示例
$schema: "https://charm.land/crush.json"
# 模型配置
models:
large:
model: "gpt-4o"
provider: "openai"
max_tokens: 4096
temperature: 0.7
small:
model: "gpt-4o-mini"
provider: "openai"
# 提供商配置
providers:
openai:
id: "openai"
name: "OpenAI"
base_url: "https://api.openai.com/v1"
type: "openai"
api_key: "${OPENAI_API_KEY}"
models:
- id: "gpt-4o"
name: "GPT-4o"
context_window: 128000
# MCP 配置
mcp:
servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
# LSP 配置
lsp:
gopls:
command: "gopls"
enabled: true
# 权限配置
permissions:
skip_requests: false
allowed_tools:
- "read"
- "write"
- "edit"
- "bash"
```
---
## LLM 提供商配置
### 支持的提供商类型
Crush 支持多种 LLM 提供商:
```yaml
# 提供商类型
type:
- "openai" # OpenAI 官方 API
- "openai-compat" # OpenAI 兼容 API
- "anthropic" # Anthropic (Claude)
- "gemini" # Google Gemini
- "azure" # Microsoft Azure OpenAI
- "vertexai" # Google Cloud VertexAI
```
### OpenAI 配置示例
```yaml
providers:
openai:
id: "openai"
name: "OpenAI"
base_url: "https://api.openai.com/v1"
type: "openai"
api_key: "${OPENAI_API_KEY}"
```
### Anthropic 配置示例
```yaml
providers:
anthropic:
id: "anthropic"
name: "Anthropic"
type: "anthropic"
api_key: "${ANTHROPIC_API_KEY}"
```
### OpenRouter 配置示例
```yaml
providers:
openrouter:
id: "openrouter"
name: "OpenRouter"
base_url: "https://openrouter.ai/api/v1"
type: "openai-compat"
api_key: "${OPENROUTER_API_KEY}"
models:
- id: "anthropic/claude-3.5-sonnet"
name: "Claude 3.5 Sonnet (via OpenRouter)"
```
---
## 环境变量支持
### 配置中的环境变量
配置文件支持 `${ENV_VAR}` 形式的变量引用:
```yaml
providers:
openai:
api_key: "${OPENAI_API_KEY}"
# 支持默认值
# api_key: "${OPENAI_API_KEY:-sk-default-key}"
```
### 支持的环境变量
| 变量名 | 用途 |
|--------|------|
| `OPENAI_API_KEY` | OpenAI API 密钥 |
| `ANTHROPIC_API_KEY` | Anthropic API 密钥 |
| `GOOGLE_API_KEY` | Google AI API 密钥 |
| `VERTEXAI_PROJECT` | GCP 项目 ID |
| `VERTEXAI_LOCATION` | GCP 区域 |
| `AWS_ACCESS_KEY_ID` | AWS 访问密钥 |
| `AWS_REGION` | AWS 区域 |
---
## 模型选择与切换
### Large/Small 模型分离
Crush 采用双模型策略:
```yaml
models:
# 大模型:用于复杂推理和代码生成
large:
model: "gpt-4o"
provider: "openai"
temperature: 0.7
# 小模型:用于简单查询和快速响应
small:
model: "gpt-4o-mini"
provider: "openai"
temperature: 0.3
```
### 模型参数配置
```yaml
models:
large:
model: "claude-sonnet-4-20250514"
provider: "anthropic"
max_tokens: 8192
temperature: 0.7
top_p: 0.9
think: false # 仅 Anthropic
reasoning_effort: "medium" # 仅 OpenAI
```
---
*本文是《Crush 从入门到精通》系列文章的第二章*
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!