xiaowei-system/skills/devops/devops-umbrella/references/new-api-debugging.md

4.7 KiB
Raw Blame History

New-API 本地模型网关 — 运维调试手册

来源2026-06-24 调试 m3 模型 Internal Server Error session DB 路径:/var/lib/new-api/one-api.db(正确) 旧备份:~/.openclaw/workspace/one-api.db(过期,勿用)


进程信息

# 进程查找
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 查询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()
"

当前 token2026-06-240ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP

查询渠道和 Abilities

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 查询全为空 同上 同上

添加模型到多个渠道

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()

测试模型调用

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 搜索:

grep "20260624131917" /var/log/new-api/oneapi-20260624211749.log | head -20

按模型搜索:

grep -i "minimax-m3\|m3\|500\|internal\|panic" /var/log/new-api/oneapi-20260624211749.log | tail -20

Hermes 配置参考

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...