它到底是什么

一句话:Reasonix 是一个专为 DeepSeek 模型深度优化的终端 Coding Agent。

市面上的 Coding Agent——Claude Code、Codex、Cursor——都是"模型无关"的,换模型只改个 API Key。Reasonix 反其道而行:它从架构层面围绕 DeepSeek 的 Prefix Cache 机制设计,把上下文维护、工具输出剪枝、启动注入全部做成 Cache 友好型。

效果是什么?你在同一个会话里写代码越久,每次请求命中的缓存越多,Token 成本越低。而不像其他 Agent,上下文越长越贵。

为什么 Prefix Cache 这么重要

先搞清楚一个概念。DeepSeek 的 API 支持 Prefix Cache:如果你多次请求的前缀部分(系统提示 + 历史对话)相同,API 会跳过这部分的计算,直接复用之前的 KV Cache。这意味着:

问题来了:大多数 Coding Agent 的上下文管理是"滚动压缩"——每隔一段时间把旧对话摘要一下,腾出空间。每一次压缩都会改变前缀,缓存全部失效。

Reasonix 的核心设计就是:尽量不动前缀,只追加新内容。

技术架构拆解

Cache 友好的上下文管理

Reasonix 的上下文管理分三层:

层级内容Cache 行为
稳定层(Stable Layer)系统提示 + 环境摘要 + 工具 Schema永远不改,从头到尾保持一致
累积层(Accumulating Layer)工具调用结果、代码变更记录只追加,不回改
压缩层(Compacting Layer)旧的对话历史只在必要时压缩,且保留原始前缀

对比其他 Agent 的做法:

Agent上下文策略Cache 影响
Claude Code滚动摘要压缩每次压缩后缓存失效,重新计费
Cursor窗口截断 + 摘要同上
Reasonix前缀稳定 + 追加 + 剪枝旧输出前缀始终命中缓存,成本递减

工具输出剪枝(Tool Result Snipping)

这是 Reasonix 最聪明的设计之一。Agent 调用工具后会产生大量输出(比如 cat 一个大文件、grep 搜索结果),这些输出在后续对话中会变成"过期数据"。

Reasonix 的做法:不是删除旧的工具输出,而是按比例剪枝。配置项 tool_result_snip_ratio = 0.6 表示:旧工具输出保留 60% 的内容,剩下的用摘要替代。这样既减少了 Token 数,又保持了前缀结构不变。

# reasonix.toml
[agent]
tool_result_snip_ratio = 0.6   # 旧工具输出保留比例
max_steps = 0                  # 0 = 无限制

双模型协作(Two-Model Collaboration)

Reasonix 支持同时跑两个模型:一个 Executor(执行者)负责写代码,一个 Planner(规划者)负责读代码和规划。两个模型各自维护独立的 Cache 会话。

# reasonix.toml
default_model = "deepseek-flash"       # 执行者:快且便宜
[agent]
planner_model = "deepseek-pro"          # 规划者:强但贵

为什么这么设计?因为规划和执行的上下文差异很大。规划需要看全局,执行只需要看当前任务。分开后,两个会话的前缀各自稳定,Cache 命中率都比混在一起高。

Go 重写,单二进制分发

Reasonix 1.0 是从 TypeScript 完全重写为 Go 的。收益:

怎么装

# npm(任何系统,拉预编译二进制)
npm i -g reasonix

# macOS Homebrew
brew install esengine/reasonix/reasonix

# 首次配置
reasonix setup                # 交互式向导 → 生成 ./reasonix.toml
export DEEPSEEK_API_KEY=***

# 开始用
reasonix run "implement the TODOs in main.go"
reasonix run --model deepseek-pro "review this module for security issues"

# 管道模式
echo "explain this code" | reasonix run

和同类方案对比

方案定位Reasonix 的区别
Claude CodeAnthropic 亲儿子,Claude 模型深度集成Reasonix 是 DeepSeek 的"亲儿子",围绕 Prefix Cache 优化
Aider通用 Git-aware Coding AgentAider 不做 Cache 优化,上下文管理是通用策略
Cursor / WindsurfIDE 集成,GUI 为主Reasonix 是纯终端 TUI,面向 "活在终端里" 的开发者
OpenCode开源通用终端 AgentOpenCode 模型无关;Reasonix 深度绑定 DeepSeek 的 API 特性
Continue / ClineVS Code 插件完全不同的使用场景,Reasonix 不做 IDE 集成

MCP 插件系统

Reasonix 支持 MCP(Model Context Protocol)插件,通过 stdio JSON-RPC 通信:

# reasonix.toml
[[plugins]]
name    = "github"
command = "reasonix-plugin-github"
call_timeout_seconds = 600

# 每个工具可以单独设置超时
tool_timeout_seconds = { "generate_video" = 1800 }

内置工具在编译时自注册,外部工具通过插件加载。权限系统支持 ask/allow/deny 三种模式,可以精确控制 Agent 能做什么。

权限与沙箱

Reasonix 有一套完整的权限系统:

# reasonix.toml
[permissions]
mode  = "ask"                                # 无匹配规则时的默认行为
deny  = ["Bash(rm -rf*)", "Bash(git push*)"] # 永远禁止
allow = ["Bash(go test:*)"]                  # 永远允许

[sandbox]
workspace_root = ""              # 写操作限制在当前目录
allow_write    = ["/tmp"]        # 额外允许写的目录
forbid_read    = ["${HOME}/.ssh"] # 禁止读取的目录

还有 Checkpoints 机制:每次编辑前自动快照,按 Esc-Esc/rewind 可以回退。比 Git stash 轻量,比 Undo 可靠。

实际体验的坑

谁在做

Reasonix 由 esengine 团队开发,核心维护者是 yuhuahui。项目 2026 年 4 月发布 1.0 Go 重写版,之前是 0.x 的 TypeScript 版本。

项目采用 MIT 协议,社区通过 Discord 和 GitHub Discussions 交流。Windows 构建有 SignPath Foundation 提供的代码签名。

总结

Reasonix 的核心价值不是"又一个 Coding Agent",而是第一个真正围绕 DeepSeek API 特性设计的 Agent。Prefix Cache 不是新概念,但之前没有 Agent 把它当成一等公民来优化。

如果你主要用 DeepSeek 写代码,而且经常有长时间的开发会话(超过 30 分钟),Reasonix 的 Cache 优化能实实在在地省钱。如果你用 Claude 或 GPT,这个工具对你没什么意义。

项目地址:github.com/esengine/DeepSeek-Reasonix

官方文档:esengine.github.io/DeepSeek-Reasonix

Discord 社区:discord.gg/XF78rEME2D