A laptop computer sitting on top of a wooden desk

OpenClaw 默认配置跑一段时间会遇到两个问题:额度消耗太快、长会话超时崩溃。这篇文章记录我实际调优的 8 个参数,以及背后的原因。

先说清楚架构

我用的组合:

  • GitHub Copilot Pro+:月付 $19,提供 1500 次/月的 premium request 额度
  • Claude Opus 4.6:通过 Copilot 的模型路由访问,模型 ID github-copilot/claude-opus-4.6
  • OpenClaw:负责 Telegram 交互、Skill 调用、定时任务

额度计算逻辑:每次 AI 助手回复 = 1 次 premium request(包括 tool call 后的回复)。1500 次听起来很多,但没优化的话很快就不够用。

8 项标准优化

1. 模型只保留 Copilot,清空 fallbacks

问题:默认配置有多个 model provider 做 fallback,一旦主模型超时,会依次尝试所有 fallback,每次尝试都消耗额度。

优化:

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "github-copilot/claude-opus-4.6",
        "fallbacks": []
      }
    }
  }
}

fallbacks 清空后,失败直接报错,不会触发 2-3 次无效重试。每月节省约 50 次。


2. 超时从 600s 降到 300s

问题:默认 600 秒超时意味着一次卡住的请求要等 10 分钟才报错,这段时间后续消息全部积压。

优化:

{
  "agents": {
    "defaults": {
      "timeoutSeconds": 300
    }
  }
}

300 秒对于正常任务绰绰有余,能更快发现异常,减少因超时引发的重试链。


3. Session Compaction:safeguard 模式

问题:长时间运维会话(比如调试一个服务器问题来回 SSH 几十次),上下文会膨胀到 API 拒绝接受,然后触发重试。

优化:

{
  "compaction": {
    "mode": "safeguard",
    "reserveTokensFloor": 120000
  }
}

safeguard 模式:当上下文接近模型 context 上限时,自动压缩历史,保留关键内容,防止因 context 过长导致的 API 报错。reserveTokensFloor 是保留的输出 token 缓冲。


4. Context Pruning:30 分钟 TTL

这是效果最显著的优化。

问题:tool call 的输出(SSH 命令结果、文件内容、API 响应)通常很长,但 30 分钟后基本没有参考价值,却还占着 context 的大量空间。

优化:

{
  "contextPruning": {
    "mode": "cache-ttl",
    "ttl": "30m",
    "keepLastAssistants": 5,
    "minPrunableToolChars": 30000,
    "softTrim": {
      "maxChars": 3000,
      "headChars": 1000,
      "tailChars": 1000
    },
    "hardClear": {
      "enabled": true,
      "placeholder": "[旧工具输出已清理]"
    }
  }
}

关键参数说明:

  • ttl: "30m":30 分钟前的 tool 输出自动进入裁剪候选
  • keepLastAssistants: 5:保留最近 5 条 AI 回复(保持对话连贯性)
  • minPrunableToolChars: 30000:只有超过 3 万字符的 tool 输出才裁剪(避免误裁)
  • softTrim:保留头尾各 1000 字符,中间折叠为占位符
  • hardClear:超限时完全清空替换为占位文字

实际效果:context 大小减少 50%+,长会话稳定性大幅提升。


5. 关闭 Discord

问题:Discord WebSocket 连接不稳定,频繁断连会触发 gateway 异常,进而导致一连串错误重试,消耗额度。

{
  "channels": {
    "discord": {
      "enabled": false
    }
  }
}

我的使用场景只用 Telegram,Discord 直接关掉。每月节省约 100 次。


6. 关闭 Heartbeat

问题:Heartbeat 是 OpenClaw 的存活检测机制,默认每 30 分钟发一次 ping,每次 ping = 1 次 API 调用。

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": ""
      }
    }
  }
}

关掉后每天节省 48 次调用,每月 节省约 1440 次。这是最大的单项节省。


7. 清理无用 Model Providers

问题:配置了多个 model provider(openrouter、各种 API 代理),gateway 启动时会对所有 provider 做后台健康检查,每次检查消耗额度。

{
  "models": {
    "providers": {}
  }
}

只保留 github-copilot,其他全删。每月节省 20-50 次。


8. 关闭 Exec 审批(新版 4.5+)

问题:新版 OpenClaw 默认开启 elevated 权限审批,AI 执行 shell 命令时需要用户确认,会卡住自动化工作流。

在 openclaw.json 的 exec 配置里:

{
  "exec": {
    "requireApproval": false
  }
}

适合信任你的运维场景,不适合多人共享或不确定任务的场景。


一键应用脚本

以上 8 项可以用这段 Python 脚本批量写入:

import json, os

path = os.path.expanduser("~/.openclaw/openclaw.json")
with open(path) as f:
    c = json.load(f)

d = c.setdefault("agents", {}).setdefault("defaults", {})

# 1. 模型 + 清空 fallbacks
d["model"] = {"primary": "github-copilot/claude-opus-4.6", "fallbacks": []}

# 2. 超时 300s
d["timeoutSeconds"] = 300

# 3. Session Compaction
d["compaction"] = {
    "mode": "safeguard",
    "reserveTokensFloor": 120000
}

# 4. Context Pruning
d["contextPruning"] = {
    "mode": "cache-ttl",
    "ttl": "30m",
    "keepLastAssistants": 5,
    "minPrunableToolChars": 30000,
    "softTrim": {"maxChars": 3000, "headChars": 1000, "tailChars": 1000},
    "hardClear": {"enabled": True, "placeholder": "[旧工具输出已清理]"}
}

# 6. 关闭 Heartbeat
d["heartbeat"] = {"every": ""}

# 5. 关闭 Discord
c.setdefault("channels", {}).setdefault("discord", {})["enabled"] = False

# 7. 清理 providers
c.setdefault("models", {})["providers"] = {}

with open(path, "w") as f:
    json.dump(c, f, indent=2, ensure_ascii=False)

print("配置已更新,重启 openclaw gateway 生效")

运行后重启 gateway:

openclaw gateway restart

版本兼容性注意

部分参数只在新版(4.5+)支持,旧版写入会导致 gateway 启动失败:

参数旧版 ≤3.28新版 4.5+
compaction.notifyUser❌ 不支持✅
compaction.memoryFlush❌ 不支持✅
auth.cooldowns❌ 不支持✅
discord 配置键名allowenabled

如果 gateway 重启失败,先用 openclaw gateway logs 看具体报错,通常是某个不支持的字段导致的。


优化后的月度用量

优化前:Heartbeat + Discord + fallbacks + context 膨胀,单日可能消耗 150+ 次。

优化后(1500 次/月分配):

用途日均月估算
日常运维对话30-50 次600-800 次
量化策略巡检0(直接 cron,不走 AI)0
定时天气/报告2 次60 次
合计~660-860 次

1500 次的额度留有充足余量,即便某天密集运维消耗 200 次,月末也不会超限。


有 OpenClaw 配置问题或者额度不够用的情况,欢迎来 Telegram 聊。

延伸阅读:


📷 封面图 · Flux Schnell AI 生成 · panshi.io 品牌风格