刘聪NLP
26-05-21 12:11 微博认证:AI博主

分享一个Agent开源项目,把KV Cache玩出了花,任务成本可降到Hermes的1/6

现在各种Agent框架泛滥,很多时候我们Token的消耗,大部分都花在了输入侧。

系统提示词、工具定义、skill 描述、历史消息、文件内容、网页快照、压缩摘要,这些东西只要进入上下文,每一轮都可能参与计费。

今天就给大家分享一个Agent开源项目-OpenClacky,

真是把Prompt Cache玩出了花,把agent任务的成本打到极低,

从官方对比报告,相当于OpenClaw的1/3、Hermes的1/6,比Claude也是便宜一些。

并且这个项目不是那种Demo,各项功能都比较完善,

可本地运行,开源MIT 协议,有 CLI、Web UI、多 Session、Skill、浏览器自动化,也接了飞书、企微、微信这些国内IM等。

我是直接拿我开源模型月报整理来做的对比,确实比OpenClaw花费要更少。

OpenClacky是如何做到的呢?

先从system prompt说起,

都是到系统提示词,在一个session里,加载了就不要动,

因为对prompt cache来说,前缀越稳定,后面复用率就越高。

但对于Agent系统来说,日期、文件目录、模型信息、更新的skill等本身就要更新到系统提示词中,

这样能让模型效果更好,但就会失去缓存命中。

OpenClacky则增加了一个session context模块,存放日期、模型、系统、路径等信息,

而system prompt保持session中永远不变,

相当于把静态规则和动态状态分开了,静态的东西适合被缓存,动态的东西适合被更新。

当然,这种情况下,如果用户新装了一个skill的话,那么很难被识别,

因为系统提示词中缺少对应的name、description等信息,可能触发skill的调用频率会变低,

OpenClacky的解法是,

通过一个invoke skill来发现对话中提到的skill的名称、描述等信息,自行去调用提到的skill内容

然后再去调用。

---
name:invoke_skill
description:Invoke a specialized skill to handle specific tasks. Use this when user's request matches a skill's description (e.g., code exploration, document creation, etc.). This will read the skill's instructions and execute them appropriately (either inline or in a subagent).
---

你可能觉得跟Claude Code的ToolSearchTool差不多,

但还是有很大的不同,

invoke skill不单单是检索skill,它其实是启动了一个sub agent,

并且对于main agent来说,最后只会拿到结果,在整个history中是不会有其他一些冗余信息的,

就可以极大的减少上下文长度。

并且,OpenClacky中内置可靠的工具只有16个,这也本身会极大减少上下文长度,

PS:OpenClaw 23、Claude Code 40+、Hermes 52.

然后是压缩,采用Insert-then-Compress

与其他Agent压缩,另起线程让其他模型整理不同,

OpenClacky直接在当前session 的末尾插入一条压缩指令,让当前会话自己把前面内容整理掉,极大程度利用前面的cache内容。

压缩之后,再把history组成更短的结构:system prompt、summary、最近若干消息。

虽然这也会带来一次新的缓存状态变化,

但相比于新起线程直接吃掉所有上下文,还是减少很多消耗的。

还有当用户3分钟没有进行输入时,为了防止cache因无请求过期,并且history 上下文超过一定程度时,就会触发压缩机制。

主要还是节省长思考间隙下的cache缓存消失的问题,长上下文warm的费用要高度缓存摘要+短上下文warm。

OpenClacky还有一个很细的 cache marker 设计。

在给消息加 cache 标记时,不是只盯最后一条,会处理尾部两条。

可以解决,调用工具失败等场景需要单步回退的操作,

但是要注意marker不能标记在session context模块上(一次性信息,下轮丢失,会导致缓存位置不对)

最后,

你可能觉得这些改动没什么,

但在Agent时代,可能一个小的trick就可以节约大量的成本。

多一个常驻工具,多一段没用的 skill 描述,多一次 system prompt 改写,多一轮缓存,多一段没有压缩的浏览器 snapshot。

每一处都不致命,叠在一起就很贵。

所以OpenClacky真的值得看一下,

好好研究一下底层逻辑。
#how i ai##ai创造营#

发布于 江苏