DeepSeek-Reasonix:缓存命中率90%的AI编程助手


DeepSeek-Reasonix 是一个专门为 DeepSeek API 优化的终端编程助手。它通过“只往后加内容、绝不改前面”的对话管理方式,把 DeepSeek 的前缀缓存命中率拉到 90% 以上,让长会话的成本降到原来的五分之一左右。

AI 编程一小时只花一毛钱?这个终端工具靠“不翻旧账”做到了

这个叫 Reasonix 的东西不是又一个 AI 聊天外壳,它干的事特别偏科。别人家的 AI 编程助手都在比谁能解更难的算法题、谁能写更复杂的代码,Reasonix 在比谁能让 DeepSeek 的缓存多命中几次。就这么一个目标,然后它就真的便宜到了让人怀疑定价是不是标错了的程度。有用户在 Hacker News 上晒单,跑了大半天,输入将近四千万个 token 是缓存命中的,只有一百多万个 token 是新算的,你自己算算这省了多少钱。

你可能要问了,缓存命中率高有什么了不起?我给你打个比方。你去食堂打饭,每次都要从头排队,从门口走到窗口,跟打菜阿姨说“我要番茄炒蛋”,阿姨再去锅里舀。缓存命中相当于阿姨记住了你,你下次来的时候,刚走到门口阿姨就喊“番茄炒蛋对吧,接着”。排队的时间省了,走路的功夫省了,说话的气力也省了。Reasonix 干的就是让阿姨记住你,而且记一整年不忘记。你说这省不省钱。

缓存这事儿得从头捋清楚

你先理解一个最基本的原理。每次你问 AI 一个问题,其实不是只发你刚打的那句话,你要把整段对话都重新发给它。比如你之前聊了十轮,每轮两千字,那第十一轮的时候,你得把前面两万字加上新问题一起发过去。AI 的服务器每次收到这堆字,都要重新算一遍,就像你每次去便利店,店员都要把你从进门到挑东西到走到收银台的全过程重演一遍,累不累。缓存就是来解决这个累的。

服务器发现你这次发的两万字里面,前面一万九千字跟上次一模一样,那前面这一万九千字我就不算了,直接用上次算好的结果,我只算你新加的那一千字。这就是缓存命中。命中越多,你花的钱越少,因为 AI 按 token 收费,命中的 token 便宜很多,有些模型甚至便宜八九成。

DeepSeek 的缓存定价原本就低,命中之后更是便宜到几乎可以忽略不计,这就是为什么有人敢开着 AI 跑一整天的原因。

现在问题来了。大部分 AI 编程助手,每次发请求的时候会偷偷改前面的话。比如它在系统提示里加一行当前时间,精确到秒的那种。上一轮是下午两点三十五分二十二秒发的,下一轮是两点三十五分五十八秒发的,就这几十秒的差别,服务器一看,哎你这次的前缀跟上次不一样了啊,从头算吧,缓存白瞎。还有更狠的,有些助手为了省上下文长度,会把前面的对话压缩一下,重新写个摘要塞进去,这一改,整个前面的内容都变了,缓存全部失效。

还有些会在工具调用列表里加东西减东西。工具列表是放在比较前面的位置,你一改这个列表,前面一大段都变了,缓存命中率直接掉到百分之二十以下。Reasonix 的作者在文档里吐槽说,大部分通用框架根本不关心这件事,每次重建 prompt 的时候,时间戳乱插、历史记录乱排序、工具定义的格式甚至因为 JSON 序列化的空格数量不一样就导致缓存失效。你说这冤不冤,一个空格的事儿,多花几十倍的钱。

Reasonix 的玩法是“只加不改”

Reasonix 的核心策略特别简单粗暴,就是追加式历史记录。什么叫追加式?就是聊天记录只往后加新内容,绝不修改前面已经存在的东西。你上一轮说的话,原封不动留着。上一轮 AI 的回答,原封不动留着。上一轮调用的工具和结果,也原封不动留着。新一轮的消息,贴在最后面。就这么一个原则,DeepSeek 的服务器一看,哎前面这哥们我认识,字节前缀一模一样,直接读缓存。

这就好比你在写日记。正常人写日记,今天心情不好就把昨天那页撕了重写,Reasonix 的做法是昨天那页不动,今天在下一页接着写,明天再下一页。整本日记从头到尾都是连续的历史,没有涂改没有撕页。DeepSeek 读这本日记的时候,每次都能从第一页一直读到上次停下来的地方,全都能命中缓存,只有最后一页的新内容是重新算的。

这个策略听起来简单,但你去翻一下市面上主流的 AI 编程助手,能做到这一点的没几个。很多助手为了控制上下文长度,会做压缩和摘要。比如聊了一百轮之后,把前面八十轮的内容删掉,用一段总结代替。这一删一写,前面所有的缓存都没了。Reasonix 的选择是不压缩、不摘要、不删改,宁可让上下文变长,也要保住缓存命中率。因为对他们来说,命中的 token 便宜到可以忽略不计,就算上下文再长,只要命中率高,总成本还是低得吓人。

Hacker News 上有个叫 kiproping 的用户专门去翻了 Reasonix 的架构文档,发现他们讲得很明白。大部分 Agent 每一轮都会重排对话顺序、重写内容、或者注入新的时间戳,实践中的缓存命中率不到百分之二十。Reasonix 用了一套完全不同的思路,把稳定前缀当作第一优先级,什么都给这个让路。这就是为什么他们敢说长会话能保住百分之九十以上的命中率。

R1 的思考过程他们也没浪费

DeepSeek 有个推理模型叫 R1,这模型有个特点,它会在输出正式答案之前先输出一大段推理过程,就是那种“我得想想这个问题……首先……其次……不对这个思路有问题……换一个……”的内容。很多框架拿到这段内容之后看都不看直接扔掉,就像外卖吃完连塑料袋一起扔垃圾桶。Reasonix 觉得这是浪费,他们把这堆推理过程拆开了、揉碎了、存起来了。

具体怎么拆的呢?他们把推理内容分成几个部分。子目标,就是 AI 打算先做什么再做什么。假设,就是 AI 基于什么前提在推理。不确定项,就是 AI 觉得哪些地方信息不够。失败路径,就是 AI 尝试过哪些方法但走不通。把这些东西存成计划状态之后,AI 就从一个“你问我答”的聊天机器人,变成了一个“我在持续跟进这个项目”的工作伙伴。

我给你说个场景你就懂了。你让 AI 修一个 bug,普通 AI 会直接给你一段代码,你拿去试,不行再回来问。Reasonix 配合 DeepSeek R1 会怎么说呢?它会说:“我刚才试着在 A 文件里找了找,没发现问题。然后我去看了 B 文件的第 42 行,那个变量名拼写看起来有问题。我试了两种改法,第一种导致 C 模块报错,第二种看起来能跑,但我不确定会不会影响 D 功能。要不你先告诉我 D 功能是不是必须保持原样。”你看,这不是在回答问题,这是在跟你同步工作进度。

Hacker News 讨论里有人提到,这种“思维收割”的能力在长项目开发中特别好用。你不需要每次都从头给 AI 解释背景,因为它自己记得之前想过什么、试过什么、卡在哪了。而且这些思考过程本身也能被缓存,因为它们是作为稳定历史的一部分追加进去的,不是改写的。这就形成了一个正向循环:AI 想得越多,缓存命中率越高;缓存命中率越高,你越舍得让它想。成本不增反降,你说气不气人。

工具调用出错他们帮你擦屁股

AI 调用工具这件事,看着简单其实坑特别多。模型输出的是 JSON 格式的文本,比如它想调用一个搜索工具,会输出一段像 {"tool": "search", "query": "hello world"} 这样的东西。但是模型偶尔会手滑,输出成 {"tool": "search" "query": "hello world"},少了一个逗号。或者输出成 {"tool": "search", "query": "hello world",最后多了一个中文逗号。或者干脆输出一半就被截断了。

大部分框架遇到这种情况就直接报错,告诉你模型输出格式不对,工具调用失败。然后你得重新问一遍,运气好的话模型下次输出对了,运气不好的话继续错。每一轮失败都在消耗你的 token,而且因为每次都是新的请求,缓存基本用不上。Reasonix 在这件事上做了三套修复机制,作者管它叫工具调用修复。

第一套是 JSON 修复。模型输出的 JSON 缺逗号、缺引号、多括号,它能自动补上。
第二套是从思考过程里捞工具调用。有时候模型在 `标签里已经把要调用的工具写清楚了,只是最后输出格式乱了,Reasonix 会去那个标签里把信息捞出来。
第三套是处理截断内容。如果模型输出被截断了,它会尝试补全。

这三套机制叠在一起,工具调用失败的几率大大降低。

有用户评论说这东西就像汽车里的减震器。平时没人提它,但少了以后你会体验到 AI 每隔五分钟撞一次墙的感觉。一个 JSON 少个逗号就要多花一轮对话的钱,多花几十秒的时间,还打断你的工作流。把这些小毛病修掉之后,整个体验就从一个“得伺候着用”的东西变成了一个“能放心用”的东西。而且这些修复都是在本地做的,不经过 API,不消耗 token,不破坏缓存。

MCP 让他们家的工具接口特别顺

MCP 的全称是模型上下文协议,你可以理解成 AI 的 USB 接口。以前 AI 要读你的文件、查你的数据库、操作 GitHub,每个工具都要单独写一套对接代码。有了 MCP 之后,只要按照这个协议的格式配置一下,AI 就能直接用。Reasonix 把 MCP 当成一等公民来支持,支持三种连接方式:标准输入输出、服务器发送事件、以及流式 HTTP。

具体怎么用呢?你写一个配置文件,告诉 Reasonix 你要连哪些 MCP 服务器。比如你想连 GitHub,就配一个 github 的配置,里面写上权限和认证信息。你想读本地文件,就配一个 filesystem 的配置,指定能访问哪些目录。你想查数据库,就配一个 postgres 的配置,写上连接字符串。然后 AI 就能通过这些接口去读 GitHub 的仓库、读你电脑上的文件、查数据库里的记录、操作各种外部服务。

Hacker News 上有个用户说他以前用其他框架的时候,让 AI 读一个文件要折腾半天。要么是权限问题,要么是路径格式不对,要么是 AI 不知道怎么调用。换了 Reasonix 配合 MCP 之后,直接说“去看看配置文件里那个 timeout 参数是多少”,AI 自己就会去读文件、找参数、然后回答。整个过程你不需要告诉它用什么命令、读什么路径、怎么解析,它自己通过 MCP 就知道了。

这就像你以前去一个陌生城市,每次出门都要查地图、问路、担心走错。现在你有了导航,说一句“去火车站”,导航自己就规划路线、播报方向、提醒拐弯。MCP 干的就是这个活,把 AI 从一个“你得告诉它每一步怎么走”的东西,变成了一个“你说目标它自己想办法”的东西。而 Reasonix 把 MCP 的接口做得特别顺滑,配置简单、连接稳定、支持多种传输方式,用起来基本不操心。

还有三个小配件挺实用

Reasonix 还做了三个小东西,单独拿出来都不算大,但凑在一起挺顺手。

第一个是长期记忆。你可以把项目的背景信息、你常用的偏好设置、甚至你踩过的坑写进去,AI 每次启动的时候会读这些记忆,不用你每次都重新说一遍。比如你习惯用空格缩进不用 Tab,或者在写错误处理的时候喜欢用特定的模式,写进记忆里,AI 就记住了。

第二个是技能包。技能包是用 Markdown 写的脚本,你可以把常用的操作打包成一个技能。比如你经常要做代码审查,可以把审查的流程、检查点、输出格式写成一个技能包,然后告诉 AI “跑一下代码审查技能”,它就会按照你写好的流程一步步执行。你可以理解为给 AI 配了一套自定义指令,不用每次都说“你先检查这个、再看那个、最后输出成那种格式”,直接叫技能名字就行。

第三个是钩子。钩子是在特定事件发生时自动执行的动作。比如你可以在每次 AI 生成代码之后,自动跑一遍测试。或者在每次修改文件之后,自动做个备份。或者在每次会话结束的时候,自动把这次的对话摘要存进长期记忆里。这些钩子不需要你手动触发,AI 自己在干活的过程中就会顺带执行。

这三个东西的文件结构大概是这样的。在你的项目根目录下有一个 .reasonix 文件夹,里面分几个子目录。memory 目录放记忆文件,skills 目录放技能包,hooks 目录放钩子脚本,还有一个 config.json 放整体配置。你随时可以进去改、加、删,AI 下次启动的时候会自动加载最新的内容。这就像给 AI 配了一个工具箱,里面放着你不常用的但关键时刻特别有用的那些工具,要用的时候叫一声就行。

怎么装怎么用

安装这事特别简单,不需要下载安装包、不需要配置环境变量、不需要编译。你电脑上只要有 Node 环境,版本不低于 22,然后在终端里敲一行命令就行:npx reasonix code。第一次运行的时候它会问你 DeepSeek 的 API Key,你去 DeepSeek 官网注册一个账号,到后台把 API Key 复制过来贴进去,就好了。

除了 code 这个命令,还有几个挺常用的。reasonix chat 是纯对话模式,不涉及代码操作,适合问问题或者做规划。reasonix run 是跑预设的任务。reasonix doctor 是检查配置和连接有没有问题。reasonix replay 是回放之前的会话,这个功能特别有意思,你可以像看录像一样回头看 AI 之前做了什么、调了什么工具、说了什么话,方便你复盘哪里出了问题。

Hacker News 上有用户抱怨说这个工具的终端界面有点问题,输入框在浅色主题下看不清字,开发团队估计都是深色主题用户没注意到这个。还有人说那个官方网站的动画效果让页面一直上下跳动,看文档的时候很难受。这些都是小毛病,不影响核心功能,但确实说明这个项目在产品化程度上还有提升空间。不过考虑到它刚发布不久,而且是开源项目,这些问题后面应该会有人修。

这玩意到底适合谁

如果你只是偶尔问个代码问题,或者写个几十行的脚本,用 Claude Code 或者 OpenCode 或者直接网页版就够了。Reasonix 的很多优化在短会话里体现不出来,因为缓存还没开始发挥作用会话就结束了。它的主场是那种你一开就是一整天、一跑就是几百轮、一读就是几十个文件的长会话场景。

比如你在大改一个项目的架构,需要 AI 帮你理解现有代码、规划改动方案、逐步实施、然后测试和修复。这个过程可能要持续好几天,每天你跟 AI 的对话可能有上百轮。普通助手到了第三天可能已经混乱了,要么忘了之前的约定,要么上下文太长开始胡言乱语,要么成本已经高到肉疼。Reasonix 在这种场景下的表现就好很多,因为它的追加式历史记录让 AI 始终能看到完整的上下文,缓存机制让成本保持低位,记忆和技能包让 AI 不用每次都重新学习你的偏好。

还有一个适合的场景是你需要 AI 持续监控什么东西。比如你写了一个脚本让 AI 每隔一段时间检查一下服务器的日志,发现错误就分析原因并尝试修复。这种长时间运行的任务,成本控制就特别重要。Reasonix 的高缓存命中率让这种“一直开着”的用法变得可行,不然光是维持一个会话的成本就能让你月底看账单的时候血压升高。

Hacker News 讨论里有人把这东西比作 DeepSeek 的专用发动机调校包。别的助手是通用轿车,哪儿都能开,但油耗不低。Reasonix 是给 DeepSeek 这辆车专门调了发动机和变速箱,在它擅长的路况上跑得又顺又省。你如果用的是 DeepSeek,而且用量不小,这东西值得试试。你如果用别的模型,或者用量不大,那继续用你现在的工具就好,不用专门换过来。

最后说一句,这个项目跟 DeepSeek 官方没有关系,是个独立开源项目。作者在首页特意写了这句话,估计是不想让人误会。但正因为是独立的,它才敢这么偏科、这么激进地只优化 DeepSeek 的缓存策略。如果是官方做的,要考虑兼容性、要考虑其他模型、要考虑各种边界情况,反而做不到这么极致。