# New-API 本地模型网关 — 运维调试手册 > 来源:2026-06-24 调试 m3 模型 Internal Server Error session > DB 路径:`/var/lib/new-api/one-api.db`(正确) > 旧备份:`~/.openclaw/workspace/one-api.db`(过期,勿用) --- ## 进程信息 ```bash # 进程查找 ps aux | grep new-api | grep -v grep # /usr/local/bin/new-api --port 3000 --log-dir /var/log/new-api # 端口 ss -tlnp | grep 3000 # LISTEN 0 4096 *:3000 *:* users:(("new-api",pid=1062462,fd=9)) ``` ## 数据库路径(关键!) | 用途 | 路径 | 说明 | |------|------|------| | **生产数据库** | `/var/lib/new-api/one-api.db` | 实际运行中的数据 | | 旧备份(勿用) | `~/.openclaw/workspace/one-api.db` | 2026-04-27 过期备份 | **如果查询 channels/abilities/tokens 全为空,先确认用的是正确路径。** ## 查询 Token ```python # 用 Python 查询(sqlite3 命令行工具不可用时) python3 -c " import sqlite3 db = '/var/lib/new-api/one-api.db' conn = sqlite3.connect(db) cur = conn.cursor() # 查所有 token cur.execute('SELECT id, name, key FROM tokens') for r in cur.fetchall(): print(r) conn.close() " ``` 当前 token(2026-06-24):`0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP` ## 查询渠道和 Abilities ```python import sqlite3 db = '/var/lib/new-api/one-api.db' conn = sqlite3.connect(db) cur = conn.cursor() # 所有渠道 cur.execute('SELECT id, name, type, status, base_url FROM channels ORDER BY id') for r in cur.fetchall(): print(r) # 特定模型的 abilities(如 m3) cur.execute('SELECT * FROM abilities WHERE model LIKE \"%m3%\" OR model LIKE \"%minimax%\"') for r in cur.fetchall(): print(r) conn.close() ``` ### abilities 表结构 | 列 | 说明 | |----|------| | group | 路由组(通常 `default`)| | model | 模型名(如 `minimaxai/minimax-m3`)| | channel_id | 渠道 ID(对应 channels.id)| | enabled | 是否启用(1=启用)| | priority | 优先级(数字越小优先级越高)| | weight | 权重 | | tag | 标签 | ### channels 表关键列 | 列 | 说明 | |----|------| | id | 渠道 ID | | name | 渠道名称(如 NIM-k1)| | type | 类型 | | status | 状态(1=活跃)| | base_url | 上游 API 地址 | | models | 渠道支持的模型列表 | ## 常见错误排查 | 症状 | 原因 | 解法 | |------|------|------| | `Invalid token` (Hermes 报 Internal Server Error) | session 重置后 token 失效;或用了旧备份 DB | 查询 `/var/lib/new-api/one-api.db` 的 tokens 表取最新 token | | `GET /v1/models/xxx` 返回 404 | new-api 未配置该模型到 abilities | INSERT INTO abilities VALUES('default','minimaxai/minimax-m3', channel_id, 1, 10, 2, NULL) | | m3 报 503 Service Unavailable | 模型名拼写错误(如 `minimax-m3.0` 错误,应为 `minimax-m3`)| 用 `minimaxai/minimax-m3` | | abilities 查询全为空 | 用了错误数据库路径 | 改用 `/var/lib/new-api/one-api.db` | | channels 查询全为空 | 同上 | 同上 | ## 添加模型到多个渠道 ```python import sqlite3 db = '/var/lib/new-api/one-api.db' conn = sqlite3.connect(db) cur = conn.cursor() model_name = 'minimaxai/minimax-m3' channel_ids = [1, 4, 5, 6, 7, 8, 9, 10, 11] # NIM-k1~k9 for cid in channel_ids: # 检查是否已存在 cur.execute('SELECT COUNT(*) FROM abilities WHERE model=? AND channel_id=?', (model_name, cid)) if cur.fetchone()[0] == 0: cur.execute('INSERT INTO abilities VALUES(?,?,?,1,10,?,NULL)', ('default', model_name, cid, 2 if cid in [1,4,6,8,9] else 1)) print(f'Added to channel {cid}') else: print(f'Already exists in channel {cid}') conn.commit() conn.close() ``` ## 测试模型调用 ```bash TOKEN="0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP" curl -s -X POST http://127.0.0.1:3000/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d '{"model":"minimaxai/minimax-m3","messages":[{"role":"user","content":"say hi in 3 words"}],"max_tokens":20}' \ --max-time 60 ``` ## 日志位置 ``` /var/log/new-api/oneapi-*.log ``` 按 request ID 搜索: ```bash grep "20260624131917" /var/log/new-api/oneapi-20260624211749.log | head -20 ``` 按模型搜索: ```bash grep -i "minimax-m3\|m3\|500\|internal\|panic" /var/log/new-api/oneapi-20260624211749.log | tail -20 ``` ## Hermes 配置参考 ```yaml providers: newapi-local: api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP base_url: http://127.0.0.1:3000/v1 cost_factor: 0.0 default_model: minimaxai/minimax-m3 models: - minimaxai/minimax-m3 - minimaxai/minimax-m2.7 - minimaxai/minimax-m2.5 ``` > ⚠️ 配置里的 api_key 格式:`sk-0Ex...`(旧格式可能有 sk- 前缀),实际 new-api 只认 `0Ex...`。