99.82% Cache Hit!DeepSeek Reasonix 开源了,一个为省钱而生的编码Agent

DeepSeek 上周又降价,这周 HN 上直接杀出一个开源项目——Reasonix,专门为 DeepSeek API 打造的编码 Agent。两个数据就直接抓住了我:**435M 输入 token,99.82% cache hit,一天只花了 $12**。

什么概念?同样的工作量放在 Claude Code 或者 Cursor 上,跑完这 4 亿多个 token,账单大概率在 $150-200 往上。而 Reasonix 的作者说这不是理论值——是真实用户 2026 年 5 月 1 号一天跑出来的实际数据。

赶紧翻了一遍它的设计文档,说实话,这个项目在”省钱”这件事上,思路值得所有用 AI API 干活的人看看。

## 为什么别的 Agent 烧钱,Reasonix 就能省?

先搞清楚一个关键机制:DeepSeek 的 API 有个叫做 **prefix cache** 的东西。当你发送的请求和之前的请求在开头部分字节完全一致时,这些 token 只需要按 cache hit 计费——价格大约是普通的 1/10。

听起来很美好对吧?但问题来了——绝大多数 Agent 框架每轮对话都在往 prompt 里塞时间戳、塞新的工具调用结果、重新序列化消息历史。这些看似无害的操作,每次都会改变请求的字节前缀,导致 cache hit 率在实际使用中通常 **不到 20%**。

Reasonix 的解决思路其实不复杂:**把对话上下文切成三个区域,严格保证前两个区域字节级不变**。

“`
┌─────────────────────────────────────────┐
│ IMMUTABLE PREFIX │ ← 会话期间固定不变
│ system + tool_specs + few_shots │ 每次都命中 cache
├─────────────────────────────────────────┤
│ APPEND-ONLY LOG │ ← 只追加,不修改
│ [助理₁][工具₁][助理₂]… │ 保留之前轮次的精确前缀
├─────────────────────────────────────────┤
│ VOLATILE SCRATCH │ ← 每轮重置
│ R1 思考过程、临时规划状态 │ 不上传到服务端
└─────────────────────────────────────────┘
“`

关键约束三条:
1. **Prefix 在会话启动时一次性计算、哈希、固定**
2. **Log 只追加,绝不改写**
3. **Scratch 区的内容在提炼后才折叠进 log**

就这么几个设计决策,把 cache hit 率从不到 20% 拉到 99%+。不是靠什么黑魔法,纯粹是认真处理了字节对齐的细节。

## 三个 Pillars,一个比一个实用

Reasonix 的设计文档把自己拆成了三个 Pillar,每个解决一个真实痛点:

### Pillar 1:Cache-First Loop

上面说了,就是保证 prefix cache 不失效。实现上还做了个有意思的事——**并行工具调用**。声明为 `parallelSafe: true` 的工具(读文件、搜索、web fetch 这类只读操作),会被自动分组并发执行。默认最多同时跑 3 个,实测在大量文件搜索的场景下能省不少时间。

### Pillar 2:Tool-Call Repair

这名字起得实在——就是修模型犯的错。DeepSeek 系列有几个已知的”小毛病”:

– **JSON 丢在 `` 里了**:Reasonix 会扫描 `reasoning_content`,把模型忘了吐出来的 tool call 捡回来
– **参数太多就丢三落四**:超过 10 个参数或嵌套超过 2 层的 schema 自动拍平成 dot-notation,调完再还原
– **同一个工具同一个参数重复调用**(call-storm):滑动窗口检测,自动拦截并插入反思轮次
– **JSON 写到一半被 max_tokens 截断**:检测到不闭合的 JSON,自动补全

说实话,这些场景我用 Cline 和 Claude Code 也都遇到过。前者能自己修,体验就好一截。

### Pillar 3:Cost Control

三层预设策略,默认是 `auto`:

| 预设 | 模型 | 成本倍率 |
|—|—|—|
| `flash` | V4 Flash | 1× |
| `auto`(默认) | Flash → Pro(难任务自动升级) | 1–3× |
| `pro` | V4 Pro | ~12× |

而且所有辅助调用——比如对工具结果做摘要、子 agent 的 grep 链——默认都走 V4 Flash,不管用户设的是什么预设。”让 Pro 替你写代码,别让 Pro 帮你念文件内容”——这个逻辑太对了。

还有一个细节很聪明:**turn-end auto-compaction**。每轮对话结束后,把工具调用结果自动做摘要压缩,避免上下文膨胀太快,间接省掉大量 cache miss 的浪费。

## 上手体验

安装极其简单:

“`bash
npm install -g reasonix
reasonix code my-project
“`

第一次运行会提示输入 DeepSeek API Key,输一次就记住了。之后直接在终端里干活:

– `reasonix code`——编码模式,有文件系统和 shell 工具
– `reasonix chat`——纯聊天,适合做技术讨论
– `reasonix run “task”`——一次性任务,流式输出到 stdout
– `reasonix doctor`——健康检查,看看 Node、API Key、MCP 配置有没有问题

支持 MCP 协议(Model Context Protocol),所以你可以接上自己的知识库、数据库、或者任意 MCP server。

还有个叫 `dsnix` 的短别名,少打几个字:

“`bash
npm install -g dsnix
dsnix code
“`

项目还提供了一个 **Tauri 桌面客户端**(prerelease),多 tab、右侧面板显示当前会话读写过的文件、底部实时显示 token 消耗和 cache hit 率。不过 CLI 才是主力,桌面版目前还在打磨 UI 阶段。

## 它跟别的 Agent 比怎么样?

拿几个我实际用过的来比:

**vs Claude Code**:Claude Code 的体验确实更成熟,但每个月 $20 订阅 + session limit 是硬伤。Reasonix 按量计费,用量低的时候成本优势巨大。而且 Reasonix 把 cache 做到极致后,长会话的成本控制明显更好。

**vs Cursor**:Cursor 闭源、贵、而且你永远不知道它下次更新会不会涨价。Reasonix 开源 MIT,你完全可以自己 fork 改逻辑。

**vs Aider**:Aider 是老牌开源选择了,但它不是 DeepSeek 原生优化的,在用 DeepSeek API 时 cache hit 率上不去。

**vs Cline**:Cline 也是我现在的主力,支持多 provider。Reasonix 目前只绑定 DeepSeek,这是它的优势也是劣势——用其他模型时这套 cache 机制就没用了。

## 一些思考

Reasonix 的出现让我觉得一个趋势越来越明显了:**AI 编码工具正在从”通用框架”走向”深度栈优化”**。

过去大家都想做一个框架,适配所有模型。但 DeepSeek 的 prefix-cache 定价策略跟其他家完全不一样——OpenAI 和 Anthropic 没有同等的机制。这意味着如果你只用 DeepSeek,专门为它的特性做优化,能获得不兼容的成本优势。

这件事对重度用户的意义很大。每天几百万 token 流量的场景,边际成本的差距可以差出 5-10 倍。而”代理能一直开着不用心疼钱”这件事本身,就改变了你使用 AI 辅助编码的习惯——你会更愿意让它尽早介入、更频繁地对话,而不是每问一个问题之前都要纠结”这轮会花多少钱”。

项目当前还是早期阶段(v0.6 左右),架构文档写得相当坦诚——连已知问题都列得很清楚。如果你已经在用 DeepSeek API 做编码辅助,值得花十分钟装上试试。至少跑个 `reasonix doctor` 看看它报告的那些指标,光那个 cache hit 百分比就够你琢磨好一阵了。

*项目地址:[github.com/esengine/DeepSeek-Reasonix](https://github.com/esengine/DeepSeek-Reasonix)*
*评论区说说:你现在主力用哪个 Agent?一个月的 API 账单大概多少?*