三、模型和 AI 问题
📌 本节包含 10 个问题:Q26: API 401 报错 | Q27: API 429 限流 | Q28: 模型回复慢 | Q29: Token 超限 | Q30: Ollama 连不上 | Q31: 本地模型质量差 | Q32: 国产模型配置 | Q33: 模型故障转移 | Q34: 控制 API 费用 | Q35: 不同对话用不同模型
Q1: API 调用报错 401 Unauthorized
现象: 发消息后 AI 不回复,日志中出现 401 Unauthorized 或 Invalid API Key。
原因: API Key 无效、过期、或者余额不足。
解决方案:
bash
# 第一步:检查 Key 是否配置正确
# 推荐通过环境变量设置:
echo $OPENAI_API_KEY
# 确认 Key 没有多余的空格或换行
# 第二步:测试 Key 是否有效
openclaw health
# 如果报错,说明 Key 有问题
# 第三步:去提供商后台检查
# OpenAI: https://platform.openai.com/account/api-keys
# Anthropic: https://console.anthropic.com/settings/keys
# 确认 Key 没有被撤销,账户余额充足
# 第四步:重新设置 Key
export OPENAI_API_KEY="sk-proj-new-key-here"
# 然后重启 GatewayQ2: 报错 429 Too Many Requests(API 限流)
现象: 高频使用时出现 429 错误,AI 间歇性不回复。
原因: 超过了模型提供商的 API 调用频率限制(RPM/TPM)。
解决方案:
bash
# 方案一:启用模型故障转移(推荐)
# 在 ~/.openclaw/openclaw.json 中配置:
# {
# "agents": {
# "defaults": {
# "model": {
# "primary": "openai/gpt-5.2",
# "fallbacks": ["anthropic/claude-sonnet-5", "openai/gpt-5.2-mini"]
# }
# }
# }
# }
# 方案二:使用 OpenRouter(聚合多个提供商,限流更宽松)
export OPENROUTER_API_KEY="sk-or-xxxxx"
openclaw config set agents.defaults.model "openrouter/openai/gpt-5.2"
# 方案三:升级 API 账户等级(更高的 RPM/TPM 限制)
# 去各提供商控制台升级Q3: 模型回复很慢
现象: 发送消息后,AI 要等 10-30 秒甚至更久才开始回复。在终端日志中可以看到请求已发出,但响应迟迟不返回。
原因: 大模型本身推理就需要时间,加上网络延迟,响应时间会更长。
解决方案:
bash
# 方案一:换用更快的小模型
openclaw config set agents.defaults.model "openai/gpt-5.2-mini"
# gpt-5.2-mini 速度是 gpt-5.2 的 3-5 倍,日常对话足够用
# 方案二:流式响应默认已启用
# OpenClaw 默认使用流式输出(边生成边发送),无需额外配置
# 方案三:减少系统提示词长度
# 精简 SOUL.md 中不必要的指令,精简 MEMORY.md 内容
openclaw agents list
# 查看当前 Agent 列表
# 方案四:使用本地模型(延迟最低)
ollama pull llama3.1:8b
openclaw config set models.providers.ollama.baseUrl "http://127.0.0.1:11434"
openclaw config set agents.defaults.model "ollama/llama3.1:8b"
# 方案五:检查网络延迟
ping api.openai.com
# 如果延迟高,考虑使用代理或换区域更近的提供商Q4: Token 超限报错(context length exceeded)
现象: 对话到一定长度后报错 maximum context length exceeded 或 token limit。
原因: 每个模型都有上下文窗口限制。对话历史 + 系统提示 + 记忆文件的总 Token 数超过了模型限制。
解决方案:
bash
# 查看当前会话的 Token 使用情况
openclaw sessions list
# 方案一:使用 /compact 命令手动压缩上下文
# 在聊天界面中发送 /compact,OpenClaw 会自动压缩旧消息
# 也可以配置自动压缩阈值:
# 在 ~/.openclaw/openclaw.json 中设置:
# {
# "agents": {
# "defaults": {
# "compaction": {
# "reserveTokensFloor": 20000
# }
# }
# }
# }
# reserveTokensFloor 越大,压缩越激进
# 方案二:使用上下文窗口更大的模型
# 不同 provider 的上下文窗口会随版本变化,先查当前 models 目录再设置