Skip to content

ChongjinHuang/opencode-context-optimizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

context-optimizer — opencode 上下文成本优化插件

一个为 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
  • Hookexperimental.session.compacting(注入结构化压缩 prompt)
  • SDKclient.session.summarize(), client.session.create(), client.session.prompt()

License

MIT

Releases

No releases published

Packages

 
 
 

Contributors