对oh-my-opencode的简单修复,节约5~10倍的API消耗。

一直喜欢用 oh-my-opencode 进行vibe,但是发现API消耗特别严重。一开始用azure的opus API原价硬吃,结果一天干了三百刀,不敢再用了。后来再换上了team账号,但是跑个半小时就把5h limit顶满了,去一查发现缓存率才20%。

然后换了不同的coding agent,比如说 codex,oh-my-pi,发现缓存率都很正常,于是用oh-my-pi去探索了下为什么这个oh-my-opencode的缓存率那么低。最后发现是 oh-my-opencode 在system prompt里注入了当前时间,而这个时间每秒都会刷新,导致cache完全工作不了。别的coding agent的cache率都能到90%,而这个omo只能到20%不到。导致输入token价格直接爆了。

发现了原因之后给 omo 提交了个pr

之后只要关掉这个 omo_env 注入系统提示词就可以大幅节约api消耗。测了一下能从25%的cache率提升到95%,搞不好能节约个10倍的价格。不过好像这个虽然merge了但是还没有进正式版本。

所以另外也简单搞了个插件可以删掉这个块。oma-dotfile/plugins/omo-env-remover.js at master · ControlNet/oma-dotfile · GitHub


现在终于不会刷爆API了。

Note:这是oh-my-opencode的bug不是opencode的

121 个赞

很实用,点赞

2 个赞

感谢佬分享哇

2 个赞

太强了,能给omc也做一个吗

1 个赞

头一次听说,这是?

1 个赞

首先得确定有没有相同的问题,大部分这种agent应该不会往system prompt里插入这种动态的时间吧……

1 个赞

基于pi的fork GitHub - can1357/oh-my-pi: ⌥ AI Coding agent for the terminal — hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more

哇,感谢大佬!

找了一下历史记录.omc没有这个问题。
image

出这种情况也不觉得奇怪,以前ClaudeCode不是就干过这事,故意给请求加随机数阻止缓存吗

纯粹是 AI VibeCoding 的锅吧

一开始引入这个问题的是

这个 Commit 明确是":robot: GENERATED WITH ASSISTANCE OF [OhMyOpenCode]“

只能说纯 ai 背大锅

2 个赞

vibe coding的坏处,写的太快了,没有人愿意认真review了 :rofl:

写agent还是要懂点LLM原理的,不然很多事情真的完全没感知到

omo 好在啥都抄点,作者活跃。
但这个问题实在太灵了……

只能说作者压根不在意 token 账单

佬,这个插件怎么用呢?下载到本地然后导入?

直接放plugins文件夹内就行了,不用写 opencode.json 里,进opencode然后/status就能看到是否已经加载

看到应该是加载成功了,谢谢佬

佬友这个怎么看的,是有啥命令嘛?

1 个赞

大佬家里有矿

2 个赞

看最新版 這是合入了嗎