一个为 opencode 设计的插件,帮助你监控 API 上下文成本,在性价比降低时自动压缩记忆,并建议开启新窗口节省费用。
- 📊 实时 Token 追踪:记录每个 session 的 token 增长历史
- 💡 性价比分析:检测"历史 token 越积越多但新信息越来越少"的拐点
- 🗜️ 自动智能压缩:在合适时机触发压缩,注入结构化摘要 prompt,确保关键信息不丢失
- 💰 成本估算:根据模型价格表估算已消耗的美元成本(支持主流模型)
- 🪟 新 Session 建议:压缩完成后自动创建新 session,并将摘要注入,无缝续接工作
# 在你的项目目录下
mkdir -p .opencode/plugins
cp /path/to/context-optimizer.ts .opencode/plugins/mkdir -p ~/.config/opencode/plugins
cp /path/to/context-optimizer.ts ~/.config/opencode/plugins/插件文件放好后,重启 opencode 即会自动加载。
每次 AI 回复完毕(session.idle)
↓
计算最近 N 步的 token 新增量占总量的比例
↓
比例 < 15% 且总量 > 8000 tokens?
↓ 是
调用 session.summarize() 触发压缩
↓
experimental.session.compacting hook 注入结构化摘要模板
↓
session.compacted 事件触发
↓
显示系统通知(成本估算)
↓
2 秒后自动创建新 session,注入摘要,等待用户继续
编辑 context-optimizer.ts 顶部的 CONFIG 对象:
| 参数 | 默认值 | 说明 |
|---|---|---|
COMPACTION_THRESHOLD_RATIO |
0.15 |
触发压缩的性价比阈值(15%) |
RECENT_WINDOW |
5 |
计算最近新增量的窗口大小 |
MIN_TOTAL_TOKENS |
8000 |
最低触发 token 数(防止短对话误触) |
COST_PER_1M_INPUT_USD |
3.0 |
默认每百万 token 美元成本 |
MODEL_PRICING |
见代码 | 各模型的精确价格(自动匹配) |
| 模型 | 每 1M Input Token 价格 |
|---|---|
| Claude Opus | $15.00 |
| Claude Sonnet | $3.00 |
| Claude Haiku | $0.25 |
| GPT-4o | $2.50 |
| GPT-4 Turbo | $10.00 |
| GPT-4o mini | $0.15 |
| Gemini 2.0 Flash | $0.10 |
| Gemini 2.5 Pro | $1.25 |
# opencode 日志(macOS)
tail -f ~/Library/Logs/opencode/opencode.log | grep context-optimizer
# Linux
tail -f ~/.local/share/opencode/opencode.log | grep context-optimizer插件使用 opencode 官方 Plugin API:
- TypeScript 类型:
import type { Plugin } from "@opencode-ai/plugin" - 事件:
session.updated,session.idle,session.compacted,session.deleted - Hook:
experimental.session.compacting(注入结构化压缩 prompt) - SDK:
client.session.summarize(),client.session.create(),client.session.prompt()
MIT