模型 / 数据集
tigicion/dao-code avatar
tigicion/dao-code

Dao Code 道:把 DeepSeek 前缀缓存当成架构约束的终端编码代理

Open-source TypeScript terminal coding agent for DeepSeek-V4 — builds on DeepSeek's strong price-performance and ultra-cheap cache pricing, engineering byte-stable prefixes and cache-reusing forks so cross-session memory and a continuous self-correction layer add almost no token cost; 1M context, Skills/MCP/Hooks, Claude Code config compatible.

1,084 个 Star43 个 ForkTypeScriptMIT

秒懂

它是什么?
Dao Code 是一个 MIT 许可的 TypeScript 终端编码代理,命令为 dao。它的核心判断是:与其用昂贵模型换取体验,不如围绕 DeepSeek V4 的缓存定价做工程,用字节稳定的前缀和复用缓存的 fork 让记忆与反思几乎不增加 token 成本。
适合谁用?
如果你的主力模型是 DeepSeek V4,且愿意接受 Claude Code 风格的配置格式,Dao Code 值得先在非关键仓库上跑一轮:用 npm i -g dao-code 安装,配好 DEEPSEEK_API_KEY,然后用 /cost 和 /audit cache 观察真实命中率,再决定是否让它碰生产代码。如果你的团队已经深度绑定 Anthropic 账号体系、依赖 Claude Code 的 hooks 与权限模型,或者任务需要远超 1M 上下文的长程推理,迁移的收益不足以覆盖替换成本。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是可运行性与单位成本,不是模型能力

README 把动机写得很直白:编码代理只有在你能真正跑起来时才有用。它点名了两个障碍,Claude Code 需要 Anthropic 账号与网络访问,在中国大陆开箱即用的门槛偏高;GLM 的 Coding Plan 配额紧张、不容易抢到。Dao Code 的应对不是换一个更强的模型,而是换一条成本曲线:DeepSeek 注册即用、按量付费、在大陆可直连,项目本身以 MIT 协议完全开源。

所以它的目标用户很具体。一是模型预算敏感、但日常要跑读代码、改代码、执行命令、修 bug 这类循环的个人开发者;二是希望把代理嵌进终端而不是 IDE 插件的团队;三是已经在用 DeepSeek、想找一个能复用其缓存定价的客户端的人。它不适合把模型能力上限当作第一诉求的场景,README 自己也承认这是「用昂贵模型买体验」之外的另一条路,而不是同一条路上的更优解。

字节稳定的前缀,和复用缓存的 fork

README 给出的机制可以拆成两层。第一层是前缀本身:系统提示、工具表、记忆被刻意保持字节稳定,目的是让 DeepSeek 的前缀缓存尽可能命中。第二层是跑在 fork 上的任务:反思层和记忆读写以复用主前缀缓存的 fork 形式运行,这样它们不会破坏前缀,也就不会把命中率打回去。README 对缓存价差的表述是,DeepSeek 前缀缓存的命中价约为未命中价的 1/120,约两个数量级。

数据流大致是:会话结束时蒸馏出偏好、项目约定与关键事实;下次启动时用确定性方式拿这些记忆去核对当前代码,过期的丢弃,变化的标记出来,而不是无条件累加。记忆有衰减式 GC 清理,模型也可以按需调用 memory_read。上下文接近上限时触发自动压缩,README 列出的路径是反应式重试、就地清理过期的工具结果、增量摘要,摘要器失败时退化为硬截断;超大输出溢写到磁盘,上下文里只留一个指针。

这里有一个值得注意的设计取向:把「缓存纪律」写进了优先级。README 描述的宪法式优先级是,安全与真实性高于你的当前指令,你的当前指令高于 Dao Code 的核心策略(模型与缓存纪律),核心策略高于 skills 与记忆。也就是说第三方 skill 可以改变做事方式,但改不动安全与缓存这两条底线。这个排序是否合理可以讨论,但它至少承认了一件事:缓存命中率不是优化项,而是被当作约束来对待的。

安装、鉴权与几个真正会用到的命令

README 给出的入口是 npm 包 dao-code,命令名是 dao,Node 版本要求 ≥20(仓库里有 .nvmrc)。安装方式按 README 的写法是全局安装后直接调用命令。运行前需要配置 DeepSeek 的 API key,README 中出现的环境变量名是 DEEPSEEK_API_KEY。

仓库里另外给出了两个脚本:npm run accept:cache 会对真实 API 跑一段多轮对话,用来观察命中率从冷启动爬升到稳态的过程,README 明确说这是机制演示,成本数字来自真实的评测套件而不是这个脚本。评测数据存放在 evals/runs/<task>/run-1/agent.log,README 称可以用 /cost 随时重放核对。

会话内的斜杠命令有两个和成本直接相关:/cost 显示命中率与花费,/audit cache 通过四维指纹定位「是什么破坏了缓存」。如果你打算认真用这个工具,/audit cache 大概率会比 /cost 更常打开,因为前者回答的是可操作的问题。README 还提到配置格式与 Claude Code 兼容,这一点在迁移时省事,但也意味着你得接受一套并非为本项目设计的配置语义。

成本口径:README 的数字怎么读

README 给出的评测是 7 个 SWE-bench 风格任务,取自 valibot、date-fns、es-toolkit、sqlglot、hono 这几个真实开源仓库,合计输入 3,886,037 token,聚合缓存命中率 95.8%,单任务区间 85.4% 到 97.7%。按 DeepSeek V4 Pro 的官方价格计算,一个完整特性(读、改、测试、自审)花费在 ¥0.07 到 ¥0.21 之间,均值 ¥0.15,7 个任务合计 ¥1.07。README 强调每个数字都能追溯到 evals/runs/<task>/run-1/agent.log。

跨厂商对比的部分,做法是把同一份 token 轨迹分别按各家官方费率计价,并且把 Dao Code 的高命中率也「让利」给 Claude 一方。即便如此,README 称总成本仍比 Claude Opus 4.8 便宜约 30 倍,比 Sonnet 4.6 便宜约 18 倍。表里给出的价格口径是 2026-06 官方费率,DeepSeek V4 Pro 命中/未命中/输出为每 1M token $0.003625 / $0.435 / $0.87,Claude Opus 4.8 为 $5 / $25(命中按 0.1 倍缓存读计),Sonnet 4.6 为 $3 / $15,倍数为 USD 对 USD,与汇率无关,人民币按 ¥7.1/$ 换算。README 还给了一个交叉验证:把 L1 按当前费率重新计价得到 ¥0.140,与日志内 /cost 报告的 ¥0.136 接近。

读这些数字时要注意边界。任务只有 7 个,仓库集中在少数几个 JS/TS 项目,样本量决定了它说明的是「这个机制在这些任务上成立」,而不是普适的成本承诺。倍数对比依赖把同一份轨迹套到另一家费率上,这能隔离模型定价差异,但隔离不了行为差异:真实使用 Claude Code 时产生的轨迹不会和这份一模一样。

记忆与反思的代价,以及它们可能出错的地方

跨会话记忆是这个项目最容易被误读的部分。README 的卖点是「记住且可信」:会话结束蒸馏,启动时用确定性方式对当前代码做核验,过期的删掉,变化的标出来,而不是无脑堆历史。这个设计明显是在回应一类常见故障,记忆里存着一条早已被重构掉的约定,模型据此写出错误的代码,而使用者还以为它「了解项目」。

但核验机制本身有边界,README 没有展开说明。确定性核验能处理的是那些可以被当前代码直接证实或证伪的事实,比如某个文件是否存在、某个导出名是否还在。偏好类记忆(命名风格、提交信息习惯、评审口味)很难被代码证伪,它们更可能长期留存并缓慢漂移。README 提到有衰减式 GC 清理死记忆,但没有给出衰减的判据。如果你在意这一点,需要自己在使用中观察,而不是相信「自验证」这个词覆盖了全部情况。

反思层的定位是卡住时自审、跑偏时拉回。它跑在复用主缓存的 fork 上,所以 README 说几乎不增加花费。这个说法在缓存命中率维持高位时成立,一旦前缀被破坏,反思本身就变成一笔按未命中价计费的开销。这也是 /audit cache 存在的理由。

评测驱动的迭代,以及 13/14 与 70/89 的边界

README 报告了两组结果。一组是 SWE-bench 风格、取自近期真实开源修复的基准,采用 fail2pass 加 pass2pass 双轨判定,测试文件对代理隐藏以防刷分,结果是 13/14。另一组是 Terminal-Bench 2.1,89 个第三方代理编码任务通过 Harbor 运行,覆盖系统管理、安全、数据科学、科学计算、调试、机器学习等方向,使用 deepseek-v4-pro 在官方 1 倍超时下通过 70 个,78.7%。

README 特意说,重点不是分数,而是达到这个分数的过程是评测驱动的工程:读真实失败轨迹,发现并修掉的是框架本身的 bug,而不是调提示词。这个说法如果成立,说明项目把评测当成了开发流程的一部分,而不只是发布时的宣传材料。

不过这两组数字都需要按原样理解。它们是项目自带的评测流程产出的,不是独立第三方复现。13/14 的 14 个任务具体构成、70/89 的失败分布,材料里都没有展开。Terminal-Bench 的 1 倍超时意味着结果对延迟敏感,换机器或换网络环境未必复现。把这两个数字当作「可以参考的自评」而不是「已证实的能力下界」,是更稳妥的读法。

什么情况下它不合适

最直接的一种:你的工作流已经围绕 Anthropic 账号、Claude Code 的 hooks 与权限模型建立起来,并且团队对此有合规或审计要求。Dao Code 声称配置格式兼容,兼容的是格式,不是行为等价,权限提示的粒度、审批门的触发条件都可能不同,迁移需要重新验证。

第二种:任务本身需要远超 1M 上下文的长程推理。README 把 1M 上下文列为 DeepSeek V4 的属性,同时用自动压缩来「把上下文带过上限」。压缩意味着信息有损,摘要器失败时还会退化为硬截断。对于需要精确记住早期细节的任务,这条路径会丢东西,而且丢在哪一步不容易被发现。

第三种:你依赖第三方 skill 去做关键决策。宪法式优先级明确把 skills 排在核心策略之下,skill 改不动安全与缓存底线。这是安全设计,但反过来说,任何试图通过 skill 覆盖缓存策略或安全判断的用法都会失效,而且失效方式可能不够显眼。

第四种:你需要一个稳定的、长期不动的依赖。项目仍在快速迭代,从 v0.4.0 到 v0.4.7 的发布节奏集中在 2026 年 6 月底到 7 月中。快速迭代对早期采用者是好事,对把它放进关键路径的团队是风险。

替代方案:Aider 的路线差异在哪

在同一类终端编码代理里,Aider 是一个合适的对照,因为两者的分歧不在功能表上,而在对「上下文成本」的处理方式上。Aider 的仓库映射与编辑格式是围绕通用模型设计的,它通过挑选相关文件、生成精简的上下文来降低 token 消耗,缓存是顺带的收益。Dao Code 反过来,把缓存命中当作一等约束:前缀保持字节稳定,记忆与反思跑在复用缓存的 fork 上,上下文接近上限时压缩而不是提前裁剪。

这个差异决定了各自的适配面。如果你的模型是 DeepSeek 这类前缀缓存价差极大的供应商,Dao Code 的路线能把价差直接变成成本优势,README 里 95.8% 的聚合命中率就是这条路的产物。如果你在多个模型供应商之间切换,或者主要用缓存定价不突出的模型,Aider 那种与供应商无关的上下文裁剪更稳,因为它不依赖任何一家的缓存行为。

还有一点不同:Dao Code 明确以 DeepSeek V4 为目标模型,README 说它「面向 DeepSeek V4(1M 上下文)、中文优先」。这意味着它的默认行为、工具表布局、记忆策略都是为这一个模型调过的。Aider 没有这种绑定,代价是没有为任何单一供应商做过这种程度的对齐。

维护成本与许可

许可证是 MIT,仓库根目录有 LICENSE 文件。MIT 允许商用、修改、再分发,义务主要落在保留版权声明与许可文本上。这里不构成法律意见,如果你的组织对开源引入有流程要求,仍需按内部流程走一遍。

升级成本方面,材料能支持的信息有限。项目处于 0.4.x 阶段,2026 年 6 月底到 7 月中连续发布了 v0.4.0、v0.4.1、v0.4.7,说明接口与行为都还可能变动。配置与 Claude Code 兼容这一点降低了迁移成本,但也意味着配置语义由上游决定,上游变化时这边要跟。

真正需要你自己盯的是缓存命中率的长期走势。README 提供 /cost 和 /audit cache 两个入口,前者看结果,后者定位原因。前缀一旦因为升级、技能安装或记忆增长而不再字节稳定,命中率会掉,成本会以约两个数量级的幅度放大。这是这个项目最需要持续观察的单一指标,而它恰好是内置命令可以直接读出来的。

编辑结论

如果你的主力模型是 DeepSeek V4,且愿意接受 Claude Code 风格的配置格式,Dao Code 值得先在非关键仓库上跑一轮:用 npm i -g dao-code 安装,配好 DEEPSEEK_API_KEY,然后用 /cost 和 /audit cache 观察真实命中率,再决定是否让它碰生产代码。如果你的团队已经深度绑定 Anthropic 账号体系、依赖 Claude Code 的 hooks 与权限模型,或者任务需要远超 1M 上下文的长程推理,迁移的收益不足以覆盖替换成本。上手前必须自己验证三件事:DeepSeek 官方后台的账单是否与 /cost 读数一致、/audit cache 报出的指纹断裂点是否落在你可接受的频率上、以及记忆在代码变更后是否真的被剪枝而不是被静默保留。README 里 13/14 与 70/89 这两个数字都来自项目自带的评测流程,不是第三方复现结果。

官方来源

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. tigicion/dao-code on GitHub
社区笔记

社区笔记