308 lines
7.7 KiB
Markdown
308 lines
7.7 KiB
Markdown
# OpenFang 配置指南
|
||
|
||
> 记录 OpenFang 配置文件位置、格式和最佳实践。
|
||
|
||
---
|
||
|
||
## 1. 配置文件位置
|
||
|
||
```
|
||
~/.openfang/
|
||
├── config.toml # 主配置文件(启动时读取)
|
||
├── .env # API Key 环境变量
|
||
├── secrets.env # 敏感信息(可选)
|
||
├── daemon.json # 守护进程状态
|
||
└── data/
|
||
└── openfang.db # SQLite 数据库(持久化配置)
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 主配置文件 (config.toml)
|
||
|
||
### 智谱 (Zhipu) 配置
|
||
|
||
```toml
|
||
[default_model]
|
||
provider = "zhipu"
|
||
model = "glm-4-flash"
|
||
api_key_env = "ZHIPU_API_KEY"
|
||
|
||
[kernel]
|
||
data_dir = "C:\\Users\\szend\\.openfang\\data"
|
||
|
||
[memory]
|
||
decay_rate = 0.05
|
||
```
|
||
|
||
### 百炼 (Bailian) 配置
|
||
|
||
```toml
|
||
[default_model]
|
||
provider = "bailian"
|
||
model = "qwen3.5-plus"
|
||
api_key_env = "BAILIAN_API_KEY"
|
||
|
||
[kernel]
|
||
data_dir = "C:\\Users\\szend\\.openfang\\data"
|
||
|
||
[memory]
|
||
decay_rate = 0.05
|
||
```
|
||
|
||
### 配置项说明
|
||
|
||
| 配置项 | 说明 | 示例值 |
|
||
|--------|------|--------|
|
||
| `default_model.provider` | 默认 LLM 提供商 | `zhipu`, `bailian`, `gemini` |
|
||
| `default_model.model` | 默认模型名称 | `glm-4-flash`, `qwen3.5-plus` |
|
||
| `default_model.api_key_env` | API Key 环境变量名 | `ZHIPU_API_KEY` |
|
||
| `kernel.data_dir` | 数据目录 | `~/.openfang/data` |
|
||
| `memory.decay_rate` | 记忆衰减率 | `0.05` |
|
||
|
||
---
|
||
|
||
## 3. API Key 配置
|
||
|
||
### 方式 1: .env 文件(推荐)
|
||
|
||
```bash
|
||
# ~/.openfang/.env
|
||
ZHIPU_API_KEY=sk-sp-xxxxx
|
||
BAILIAN_API_KEY=sk-sp-xxxxx
|
||
GEMINI_API_KEY=your_gemini_key
|
||
DEEPSEEK_API_KEY=your_deepseek_key
|
||
OPENAI_API_KEY=your_openai_key
|
||
GROQ_API_KEY=your_groq_key
|
||
```
|
||
|
||
### 方式 2: secrets.env 文件
|
||
|
||
```bash
|
||
# ~/.openfang/secrets.env
|
||
ZHIPU_API_KEY=sk-sp-xxxxx
|
||
BAILIAN_API_KEY=sk-sp-xxxxx
|
||
```
|
||
|
||
### 方式 3: 通过 API 设置
|
||
|
||
```bash
|
||
# 设置智谱密钥
|
||
curl -X POST http://127.0.0.1:50051/api/providers/zhipu/key \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"key":"your-zhipu-api-key"}'
|
||
|
||
# 设置百炼密钥
|
||
curl -X POST http://127.0.0.1:50051/api/providers/bailian/key \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"key":"your-bailian-api-key"}'
|
||
```
|
||
|
||
### 方式 4: 启动时指定环境变量
|
||
|
||
```bash
|
||
# Windows PowerShell
|
||
$env:ZHIPU_API_KEY = "your_key"
|
||
./openfang.exe start
|
||
|
||
# Linux/macOS
|
||
ZHIPU_API_KEY=sk-sp-xxx ./openfang start
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 支持的 Provider
|
||
|
||
### 4.1 国内 Provider
|
||
|
||
| Provider | 环境变量 | Base URL | 说明 |
|
||
|----------|----------|----------|------|
|
||
| zhipu | `ZHIPU_API_KEY` | `https://open.bigmodel.cn/api/paas/v4` | 智谱 GLM |
|
||
| zhipu_coding | `ZHIPU_API_KEY` | `https://open.bigmodel.cn/api/coding/paas/v4` | 智谱 CodeGeeX |
|
||
| bailian | `BAILIAN_API_KEY` | `https://coding.dashscope.aliyuncs.com/v1` | 百炼 Coding Plan |
|
||
| qwen | `DASHSCOPE_API_KEY` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | 通义千问 |
|
||
| volcengine | `VOLCENGINE_API_KEY` | `https://ark.cn-beijing.volces.com/api/v3` | 火山引擎 Doubao |
|
||
| moonshot | `MOONSHOT_API_KEY` | `https://api.moonshot.ai/v1` | Moonshot Kimi |
|
||
| deepseek | `DEEPSEEK_API_KEY` | `https://api.deepseek.com/v1` | DeepSeek |
|
||
|
||
### 4.2 国际 Provider
|
||
|
||
| Provider | 环境变量 | Base URL | 说明 |
|
||
|----------|----------|----------|------|
|
||
| openai | `OPENAI_API_KEY` | `https://api.openai.com/v1` | OpenAI GPT |
|
||
| anthropic | `ANTHROPIC_API_KEY` | `https://api.anthropic.com` | Anthropic Claude |
|
||
| gemini | `GEMINI_API_KEY` | `https://generativelanguage.googleapis.com` | Google Gemini |
|
||
| groq | `GROQ_API_KEY` | `https://api.groq.com/openai/v1` | Groq |
|
||
| mistral | `MISTRAL_API_KEY` | `https://api.mistral.ai/v1` | Mistral AI |
|
||
| xai | `XAI_API_KEY` | `https://api.x.ai/v1` | xAI Grok |
|
||
|
||
### 4.3 本地 Provider
|
||
|
||
| Provider | 环境变量 | Base URL | 说明 |
|
||
|----------|----------|----------|------|
|
||
| ollama | - | `http://localhost:11434/v1` | Ollama 本地 |
|
||
| vllm | - | `http://localhost:8000/v1` | vLLM 本地 |
|
||
| lmstudio | - | `http://localhost:1234/v1` | LM Studio 本地 |
|
||
|
||
---
|
||
|
||
## 5. 可用模型
|
||
|
||
### 智谱 (Zhipu)
|
||
|
||
| 模型 ID | 说明 | 适用场景 |
|
||
|---------|------|----------|
|
||
| glm-4-flash | 快速模型 | 日常对话、快速响应 |
|
||
| glm-4-plus | 高级模型 | 复杂推理、深度分析 |
|
||
| glm-4 | 标准模型 | 通用场景 |
|
||
| glm-4-air | 轻量模型 | 简单任务 |
|
||
|
||
### 百炼 (Bailian)
|
||
|
||
| 模型 ID | 说明 | 适用场景 |
|
||
|---------|------|----------|
|
||
| qwen3.5-plus | 通用对话 | 日常对话 |
|
||
| qwen3-coder-next | 编码专家 | 代码生成 |
|
||
| glm-5-bailian | GLM-5 | 通用场景 |
|
||
| minimax-m2.5-bailian | 支持视觉 | 多模态任务 |
|
||
| kimi-k2.5-bailian | Kimi K2.5 | 长文本处理 |
|
||
|
||
### 其他推荐模型
|
||
|
||
| Provider | 模型 ID | 适用场景 |
|
||
|----------|---------|----------|
|
||
| gemini | gemini-2.5-flash | 开发任务 |
|
||
| deepseek | deepseek-chat | 快速响应 |
|
||
| groq | llama-3.1-70b | 开源模型 |
|
||
|
||
---
|
||
|
||
## 6. 快速切换 Provider
|
||
|
||
### 方法 A: 修改 config.toml
|
||
|
||
```toml
|
||
# 切换到智谱
|
||
[default_model]
|
||
provider = "zhipu"
|
||
model = "glm-4-flash"
|
||
api_key_env = "ZHIPU_API_KEY"
|
||
|
||
# 切换到百炼
|
||
[default_model]
|
||
provider = "bailian"
|
||
model = "qwen3.5-plus"
|
||
api_key_env = "BAILIAN_API_KEY"
|
||
```
|
||
|
||
**重要**: 修改后必须完全重启 OpenFang!
|
||
|
||
### 方法 B: 创建不同配置的 Agent
|
||
|
||
```bash
|
||
# 创建使用智谱的 Agent
|
||
curl -X POST http://127.0.0.1:50051/api/agents \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"manifest_toml": "name = \"Zhipu Agent\"\nmodel_provider = \"zhipu\"\nmodel_name = \"glm-4-flash\""}'
|
||
|
||
# 创建使用百炼的 Agent
|
||
curl -X POST http://127.0.0.1:50051/api/agents \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"manifest_toml": "name = \"Bailian Agent\"\nmodel_provider = \"bailian\"\nmodel_name = \"qwen3.5-plus\""}'
|
||
```
|
||
|
||
---
|
||
|
||
## 7. 配置验证
|
||
|
||
### 检查当前配置
|
||
|
||
```bash
|
||
# 检查 API 返回的配置
|
||
curl -s http://127.0.0.1:50051/api/config
|
||
|
||
# 检查状态
|
||
curl -s http://127.0.0.1:50051/api/status | grep -E "default_provider|default_model"
|
||
|
||
# 检查所有 Provider 状态
|
||
curl -s http://127.0.0.1:50051/api/providers | grep -E "id|auth_status"
|
||
```
|
||
|
||
### 检查 Agent 配置
|
||
|
||
```bash
|
||
# 列出所有 Agent 及其 Provider
|
||
curl -s http://127.0.0.1:50051/api/agents | grep -E "name|model_provider|ready"
|
||
```
|
||
|
||
### 测试聊天
|
||
|
||
```bash
|
||
# 测试 Agent 是否能正常响应
|
||
curl -X POST "http://127.0.0.1:50051/api/agents/{agentId}/message" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"message":"Hello"}'
|
||
```
|
||
|
||
---
|
||
|
||
## 8. 重要注意事项
|
||
|
||
### 8.1 配置热重载限制
|
||
|
||
**关键**: OpenFang 将配置持久化在 SQLite 数据库中,`config.toml` 只在启动时读取。
|
||
|
||
- `/api/config/reload` **不会**更新已持久化的默认模型配置
|
||
- 修改 `config.toml` 后必须**完全重启 OpenFang**
|
||
|
||
```bash
|
||
# 正确的重启方式
|
||
curl -X POST http://127.0.0.1:50051/api/shutdown
|
||
# 然后手动启动
|
||
./openfang.exe start
|
||
```
|
||
|
||
### 8.2 Agent 创建时的 Provider
|
||
|
||
如果创建 Agent 时没有指定 Provider,OpenFang 会使用数据库中存储的默认配置,而不是 `config.toml` 中的配置。
|
||
|
||
### 8.3 API Key 验证
|
||
|
||
确保 API Key 格式正确:
|
||
- 智谱: `sk-sp-xxxxx` 或 `xxxxx.xxxxx.xxxxx`
|
||
- 百炼: `sk-xxxxx`
|
||
|
||
---
|
||
|
||
## 9. 常见问题
|
||
|
||
### Q: 修改 config.toml 后配置没有生效?
|
||
|
||
**A**: 必须完全重启 OpenFang,热重载不会更新持久化配置。
|
||
|
||
### Q: Agent 显示 ready: false?
|
||
|
||
**A**: 检查 Agent 使用的 Provider 是否配置了 API Key:
|
||
```bash
|
||
curl -s http://127.0.0.1:50051/api/agents | grep -E "auth_status|ready"
|
||
```
|
||
|
||
### Q: 如何查看所有可用的 Provider?
|
||
|
||
**A**:
|
||
```bash
|
||
curl -s http://127.0.0.1:50051/api/providers
|
||
```
|
||
|
||
### Q: 如何在不重启的情况下切换 Agent?
|
||
|
||
**A**: 前端可以通过选择不同 Provider 的 Agent 来切换,无需重启。
|
||
|
||
---
|
||
|
||
## 更新历史
|
||
|
||
| 日期 | 变更 |
|
||
|------|------|
|
||
| 2026-03-17 | 初始版本,记录配置热重载限制 |
|