# Oppi 操作防复发规则

> 创建日期：2026-04-16
> 背景：反复排障后总结的操作规范，核心不是"再多修几次"，而是建立一套固定套路，防止同类问题反复出现。

---

## 问题根源四类

1. 旧窗口记住旧模型
2. 手动切到坏模型名
3. 重启时环境变量没带上
4. 同一个服务被重复启动

---

## 十条防复发规则

### 第一条：只保留一个默认主模型

已验证可用的长期默认模型固定为：

```
anthropic/claude-sonnet-4-6
```

不要频繁改来改去。

---

### 第二条：不要在手机里乱切旧模型

以下模型名属于"不要碰"清单：

- `opus-4-0`
- `3-5-haiku-latest`
- 其他未经验证的旧模型名

看到这些，默认跳过。

---

### 第三条：旧窗口报错时，不要继续救旧窗口

> 旧窗口一旦开始报错，直接放弃它。

- ❌ 不要在原窗口里继续切模型
- ❌ 不要反复重试、来回改 provider
- ✅ 直接新建一个全新窗口测试

---

### 第四条：每次重启 Oppi，都用同一组命令

```bash
# 1. 杀干净旧进程
pkill -f "oppi serve" || true

# 2. 带上两个 key 启动
ANTHROPIC_API_KEY=<your-key> OPENAI_API_KEY=<your-key> oppi serve &

# 3. 固定默认模型
oppi config set defaultModel anthropic/claude-sonnet-4-6

# 4. 确认端口和进程
lsof -i :7749
ps aux | grep "oppi serve"
```

不要手打一半，不要混着试 `kill`、`nohup`、`config set`。

---

### 第五条：每次重启后，只检查三件事

```bash
oppi config get defaultModel   # 必须是 anthropic/claude-sonnet-4-6
lsof -i :7749                  # 7749 必须在监听
ps aux | grep "oppi serve"     # serve 进程最好只剩一个
```

**判断标准：**
- ✅ defaultModel = `anthropic/claude-sonnet-4-6`
- ✅ 7749 在监听
- ✅ serve 进程只有一个

三点满足 → 服务器侧停手，不要继续折腾。

---

### 第六条：把"服务器问题"和"窗口问题"分开看

| 现象 | 判断 | 处理 |
|------|------|------|
| defaultModel 正确 + 7749 监听 + 单进程 | 服务器没问题 | 不要重启 |
| 某个窗口还在报错 | 窗口/缓存问题 | 开新窗口，不救旧窗口 |

**窗口报错的常见原因：**
- 那个窗口记住了旧模型
- 那个窗口还在用旧 provider
- App 端缓存了旧选择

---

### 第七条：两个 Key 都保留，但默认模型只固定一个

- ✅ `ANTHROPIC_API_KEY` 和 `OPENAI_API_KEY` 都可以有
- ✅ 默认模型长期只固定：`anthropic/claude-sonnet-4-6`
- ❌ 不要因为临时测试 OpenAI 就把服务器默认模型也改掉

临时测试 OpenAI → 在新窗口里切，不动服务器配置。

---

### 第八条：不要看到报错就立刻重启

排查顺序：

1. 先看是不是旧窗口
2. 再看是不是手动切到了坏模型
3. 再看是不是 key 问题
4. **最后**才考虑重启服务

> 重启是最后一步，不是第一反应。

---

### 第九条：把启动命令做成脚本

脚本路径（建议）：`~/restart-oppi.sh`

以后出问题时，不是重新拼命令，而是只执行：

```bash
bash ~/restart-oppi.sh
```

---

### 第十条：给自己定一个"故障止损规则"

- 同一轮排障里，**只允许做一次重启**
- 重启后仍然异常 → 先把输出贴出来，不再盲试第二套、第三套命令

> 越修越乱的根源是：输错后继续试了太多不同方向。

---

## 最短记忆版（6 句话）

1. 默认模型长期固定 `anthropic/claude-sonnet-4-6`
2. 坏窗口直接放弃，不救旧窗口
3. 不要点 `opus-4-0`、`3-5-haiku-latest` 这些旧模型
4. 每次重启只用同一组标准命令
5. 重启后只检查默认模型、7749、单进程
6. 服务器正常时，优先开新窗口，不要反复折腾旧窗口

---

## 相关文件

- 启动脚本：`~/restart-oppi.sh`（待创建）
