给你的对话做一次全面体检。
每次对话都有一个隐形的"油箱"—— context window。 用着用着就满了,但你看不到油量表。满了之后要么报错,要么被强制压缩丢信息。
Context Doctor 就是这个油量表:
通过 session_status 获取当前 session 的实时数据:
回顾当前对话,统计:
根据采集的数据生成健康评分:
指标健康 🟢注意 🟡危险 🔴Context 使用率<50%50-80%>80%单轮平均 tokens<20002000-5000>5000工具输出占比<60%60-80%>80%预估剩余轮次>3010-30<10
综合评分:
输出可视化诊断报告:
text
🏥 Context Doctor 诊断报告
━━━━━━━━━━━━━━━━━━━━━
📊 综合评分:B(良好)
🔋 Context 油量
████████████░░░░░░░░ 58% (116,000 / 200,000)
📈 消耗统计
├─ 对话轮次:23 轮
├─ 输入 tokens:89,000
├─ 输出 tokens:27,000
├─ 本次费用:$0.42
└─ 平均每轮:5,043 tokens
🔍 空间占用 TOP 5
1. exec(cat large-file.log) — 12,300 tokens(10.6%)
2. web_fetch(docs.openclaw.ai) — 8,200 tokens(7.1%)
3. read(MEMORY.md) — 4,500 tokens(3.9%)
4. exec(git log --oneline) — 3,800 tokens(3.3%)
5. web_search("OpenClaw skills") — 2,100 tokens(1.8%)
⚠️ 发现问题
- exec 输出占总 context 的 42%,建议对大输出使用 head/tail 截断
- MEMORY.md 被读取 3 次,考虑缓存到对话上下文中
🔮 预测
├─ 预估剩余:约 17 轮对话
├─ 建议 compact 时机:再聊 10 轮后
└─ 如果继续当前节奏:约 35 分钟后达到 80%
💡 优化建议
1. exec 命令加 | head -50 限制输出长度
2. 大文件用 read 的 offset/limit 参数分段读取
3. 考虑在下一个自然断点执行 compact
如果多次执行诊断,对比历史数据:
text
📈 趋势(最近 3 次诊断)
诊断1 (14:00): 32% → B
诊断2 (15:30): 58% → B
诊断3 (16:45): 74% → C ⬆️
消耗速度:约 28% / 小时
加速中 ⚠️(工具调用频率增加)