原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

DoboCache

作者:dobo123123版本 0.4.9i★ –i在你的电脑上运行
注册名称io.github.dobo123123/dobocache

安装

概览

作者提供的说明(英文原文)

MCP server for LLM prompt-cache observability: prefix diagnostics and per-call white-box report.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 搜索与 AI 记忆

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 需要你自己填写: DOBOCACHE_LOG_DIR, DOBOCACHE_WHITEBOX, DOBOCACHE_HIT_PRICE_PER_M, DOBOCACHE_MISS_PRICE_PER_M

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "dobocache": {
      "command": "npx",
      "args": [
        "-y",
        "dobocache"
      ],
      "env": {
        "DOBOCACHE_LOG_DIR": "your-value",
        "DOBOCACHE_WHITEBOX": "your-value",
        "DOBOCACHE_HIT_PRICE_PER_M": "your-value",
        "DOBOCACHE_MISS_PRICE_PER_M": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add dobocache --env DOBOCACHE_LOG_DIR=your-value --env DOBOCACHE_WHITEBOX=your-value --env DOBOCACHE_HIT_PRICE_PER_M=your-value --env DOBOCACHE_MISS_PRICE_PER_M=your-value -- npx -y dobocache

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "dobocache": {
      "command": "npx",
      "args": [
        "-y",
        "dobocache"
      ],
      "env": {
        "DOBOCACHE_LOG_DIR": "your-value",
        "DOBOCACHE_WHITEBOX": "your-value",
        "DOBOCACHE_HIT_PRICE_PER_M": "your-value",
        "DOBOCACHE_MISS_PRICE_PER_M": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "dobocache": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "dobocache"
      ],
      "env": {
        "DOBOCACHE_LOG_DIR": "your-value",
        "DOBOCACHE_WHITEBOX": "your-value",
        "DOBOCACHE_HIT_PRICE_PER_M": "your-value",
        "DOBOCACHE_MISS_PRICE_PER_M": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • DOBOCACHE_LOG_DIR env
    Directory for the local white-box JSONL log. Absolute path recommended. Optional; defaults to the platform log directory: %LOCALAPPDATA%\DoboCache\logs on Windows, ~/Library/Logs/DoboCache on macOS,…
  • DOBOCACHE_WHITEBOX env
    White-box report card mode: quiet (default, no card in tool output, log only), once (one card next call, then back to quiet), always (card on every call, ~300+ tokens each). Unrecognized values fall…
  • DOBOCACHE_HIT_PRICE_PER_M env
    Optional price per million tokens for cache-hit tokens used in savings estimates.
  • DOBOCACHE_MISS_PRICE_PER_M env
    Optional price per million tokens for cache-miss tokens used in savings estimates.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 dobo123123 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“搜索与 AI 记忆”中的其他服务器比较i

  • 星标数多于此分类中其他 5668 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 5668 个服务器的 99% 更新
  • 基础检查结果等于或优于此分类中其他 5668 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

DoboCache 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.4.9)于今天进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Context7, Codebase Memory, Exa

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Context7

作者:upstash

Up-to-date docs for AI agents

电脑或云端★ 64,224MIT昨天更新
安装

Codebase Memory

作者:DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

在你的电脑上运行★ 48,148MIT21天前更新
安装

Exa

作者:exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

在云端运行★ 5,213MIT2个月前更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

[简体中文](https://github.com/dobo123123/dobocache/blob/main/README.md) · [English](https://github.com/dobo123123/dobocache/blob/main/release/README.en.md)


DoboCache v0.4.9

命中缓存 + 白盒报告 —— 每一步都看得见、可复算。

DoboCache 是一个以 stdio 方式挂载的 MCP Server,作用是在你已有的编码 CLI / Agent 客户端和模型厂商 API 之间,把每一次请求的上下文整理成稳定、可复用、过长会自动补足的前缀,从而让厂商的前缀缓存(prompt caching)真正命中;命中与否、命中多少、哪一步做了调整,全部写进本地白盒日志并可随时查询。


官方入口声明

DoboCache 的官方代码仓库只有 https://github.com/dobo123123/dobocache 一处,官方发布物只在它的 Releases 页面。

在其他渠道看到同名项目、同名服务或付费版本,均非官方出品。本项目免费,不通过任何第三方平台售卖。

第一次用?请先看 [零基础三分钟上手](https://github.com/dobo123123/dobocache/blob/main/release/零基础三分钟上手.md) —— 从装 Node 到验证成功,六步走完,不用懂原理。

装的过程中报错,直接翻 FAQ 的「安装报错速查」,按报错原文查。

装不上、配不通、不知道怎么写配置?先看上面的 FAQ;还不行就到 Discussions 提问(安装类问题不用开 Issue)。

平台支持状态(装之前先看这一节)

DoboCache 是纯 JavaScript 的 stdio MCP Server,包内不含任何原生二进制(.node / .exe / .dll 数量均为 0),因此不存在 ABI 层面的平台锁定。但"能跑"和"验证过"是两件事,本版按实际验证程度如实标注:

平台状态验证到什么程度
Windows 10 / 11(x64)✅ 主打平台,已真机验证真机端到端跑通:本组实验 20 次连续请求对照(含真实 MCP 客户端挂载 + 厂商 usage 校验)、便携包解压即跑冒烟、全量 95 项测试通过、日志落盘实测 %LOCALAPPDATA%\DoboCache\logs
Linux(x86_64)🟡 容器环境已实测(非桌面真机)2026-11-04 在 Docker linux/amd64 + Node 官方 Linux 镜像内对发布包做真实运行:解压即跑、initialize/tools/list 返回合法、9 个工具全在、cf_judge 命中、cf_inject 返回 prefixReady=true、日志按 ~/.local/state/dobocache 落盘、XDG_STATE_HOME 生效、DOBOCACHE_LOG_DIR 优先级最高、只读目录降级不崩溃、Node 16 自检 exit 1。桌面 Linux 真机 + 图形客户端挂载、arm64 仍未验证(细节见 兼容性说明.md 附录 A)
macOS(Intel / Apple Silicon)⚠️ 未真机验证(预期可用)仅有单元测试覆盖:~/Library/Logs/DoboCache 路径解析及上述同批用例。没有在真实 Mac 上跑过完整链路

我们把边界说清楚:

  1. Windows 是主打平台,也是唯一做过真机端到端验证(真实客户端挂载 + 厂商 usage 回读)的平台;
  2. Linux 已在 linux/amd64 容器环境做过真实运行验证(协议链路 + 日志 + 只读降级 + Node 版本自检),但桌面发行版的图形客户端挂载、arm64 仍未验证;macOS 从未在真机运行过。因此 macOS 只写"未验证",Linux 只写"容器已实测",都不写"完整支持";成功率我们没有真实数据,不做任何百分比承诺;
  3. 欢迎反馈后修:在 Linux / macOS 上跑通或跑挂,都请反馈。我们不把这些平台当作"理论上没问题所以不用管"。

反馈渠道

渠道怎么用
GitHub Issues(推荐)标题带 [platform: macOS] 或 [platform: linux];正文附 node -v、uname -a(macOS 用 sw_vers)、cf_report 返回的 logDir / logDirSource、完整报错原文
私下联系(非公开)安全类问题请走 SECURITY.md 的私下上报渠道(GitHub Security Advisories),不要在公开 issue 中披露;一般问题走 Issues 即可。本项目当前不公开电子邮件地址,以避免维护者个人邮箱被骚扰、撞库或用于社工攻击
自查(反馈前先看)release/FAQ-使用须知.md §三(日志在哪)与 §七(prefixReady=false 怎么办),可解决大部分"看起来没生效"的问题

反馈时不要把提问原文粘进 issue:日志已脱敏(req- / sid- ),贴日志片段足够定位问题。


一、它解决什么问题

现代厂商 API 都提供前缀缓存:请求开头部分如果与上一次完全一致,这部分 token 按缓存价计费,不再全价重算。但真实对话里前缀经常"差一点点":

  • 系统提示词顺序不稳定、拼接顺序每次不同;
  • 历史消息被裁剪后长度对不齐缓存块边界(常见是 128 token 对齐);
  • 前缀长度小于厂商的最小缓存门槛,压根不进入缓存;
  • 重复指令、重复文档块让前缀越来越长却越来越脏。

任何一处不一致,缓存就整个失效——你以为在用缓存,其实一直在全价重算。DoboCache 就是把这些"差一点点"逐条修掉,并且把每一步的调整原因写清楚,让你能自己核对而不是只看一个漂亮数字。

二、九个可调用的工具(8 个业务工具 + 1 个 ping 健康检查)

server 共暴露 8 个业务工具 + 1 个健康检查(`ping`),均为 stdio 本地调用,不联网、不上传:

工具作用是否写盘
cf_judge命中判定:关键词分层(实体锚词/意图修饰词)→ 三层匹配 → 时效衰减 → 负向过滤,输出可解释证据(hit / score / evidence / matched)记白盒日志
cf_tier价值分级准入:提纯去噪 → A/B/C 分级 → 按预算从高到低填充,输出准入列表与丢弃明细否
cf_inject记忆提纯注入:把上下文整理成稳定前缀(去重 → 128 token 对齐 → 过门槛补足),返回可直接发送的 prefix / tail记白盒日志、冻结会话前缀(内存)
cf_warmup预热:正式请求前显式调用一次,用冻结前缀构造最小占位请求,触发厂商前缀缓存建立(会产生少量计费,需自行发一次 LLM 请求)否
cf_report白盒累计统计:累计命中率、原始/优化 token、按会话聚合(per_session),并回传日志实际落点 logDir / logDirSource;加 source="disk" 时改为从本地日志重新聚合(跨进程、跨天累计,客户端重启不清零),days= 限定只读最近 n 天否(读日志)
cf_meter请求计量快照(token 计数与计价相对值,不含任何请求正文)否
cf_prune工具输出确定性修剪:去重行、压缩空白、行数/字符数双上限,返回修剪前后体积比否
cf_normalize结构化结果归一:字段裁剪 + 稳定排序,返回不含原文的键值(nk-<16 位 hash>)否

典型参数:cf_inject(reset=true, sessionId=<你的会话标识>, minPrefixTokens=<目标厂商门槛>)。

参数在协议层做类型与范围校验(如 threshold ≥ 0、topK ≥ 1、maxChars ≥ 1、maxTokens > 0),越界会返回标准 -32602 校验错误并指明字段,不会静默生效。

三、版本说明(请先读这一节)

v0.4.9 = 发布通道切换版。npm 已公告自 2027-01 起限制「可绕过 2FA 的长寿命 token」直接发布,本版把发布通道整体切到 GitHub Actions OIDC Trusted Publishing:打 tag 时由 GitHub 签发短期令牌、npm 侧校验后直接收包,仓库与其设置里不再存放任何发布密钥,产物附带 provenance 签名、可追溯到具体 commit 与工作流运行。代码与缓存核心零改动,行为与 v0.4.8 逐字节一致。

项目说明
承接v0.4.7 的日志边界(单文件 10MB 轮转 + 默认保留 7 天)、cf_report 的 source="disk" 读盘聚合、cf_prune 口径澄清全部保留;更早的 v0.4.4 minPrefixTokens 修复与日志隐私脱敏(requestId → req-<8 位 hash>;sessionId → sid-<8 位 hash>;cf_normalize 键 → nk-<16 位 hash>)也仍在
本版改动① 对照图不再破图:两张对照图(命中率对照 / 三种请求端形态)改用 raw.githubusercontent.com 绝对地址,npm 包页面可直接显示出来;② 文档链接不再 404:根 README 里 9 处指向包内文档的相对链接(零基础上手 / FAQ / 兼容性说明 / SECURITY / LICENSE / 英文版 / 中文版)改为 GitHub 绝对地址,在 npm 页面上点击即可跳转;③ 便携包内文档保持原样:release/README.zh.md、README.en.md 继续用同目录相对路径——包内文档与图同目录,解压后离线也能看,两套路径各司其职
命中相关代码无代码改动。缓存核心(前缀冻结 / 对齐 / 分级准入 / 判定逻辑)与 v0.4.7 一致,dist 行为逐字节相同,仅 serverInfo.version 随版本号更新;默认档位下 cf_judge / cf_inject 返回只有一段 JSON、不含卡片
冒烟验证MCP stdio 冒烟通过(2026-11-07 本机 win32 实跑):serverInfo.version = 0.4.9、protocolVersion = 2024-11-05、9 工具齐全(ping/cf_judge/cf_tier/cf_inject/cf_meter/cf_warmup/cf_report/cf_prune/cf_normalize)、cf_judge 真实调用落盘成功(dobocache-2026-11-07.log.jsonl)、cf_report 返回 logDir / logDirSource(实测 calls=1、hitRate=80)
测试95 / 95 通过;tsc --noEmit 零报错;eslint src test 零告警
平台验证Windows 真机端到端已验证;Linux 已在 `linux/amd64` 容器内实测运行(协议链路 / 9 工具 / 日志分支 / 只读降级 / Node 版本自检,见「平台支持状态」与 release/兼容性说明.md);macOS 仅单元测试覆盖,未真机运行
不宣称本版不是性能提升版,也不是功能版。命中率与 v0.4.7 / v0.4.4 完全相同,请勿把本文任何数字读成「新版本更高」

为什么会有 v0.4.3:v0.4.2 正式包里,injectIncremental 第 4 步 topUpPrefixToMin(...) 之后缺少 prefix = topUp.prefix;,导致补足结果没有接回、参数形同虚设。厂商 D 系默认门槛低(295),正常前缀本就够长,所以一直没暴露;厂商 G 系真实门槛 1806+,必须靠补足才能过线,一补不上立刻露馅——这就是回归用厂商 G 的原因。v0.4.3 补上了这一行。

四、实测数据(20 次连续请求对照)

本组实测:同一套 20 次递进式连续话题。请求端为「某常见编码 CLI 工具」接入(模型来自厂商 G),白盒引擎以 stdio MCP 挂载 DoboCache;同一台机器、同一模型、同一套参数,只区分"挂载 / 不挂载"。

先说三个读表约定:① 「厂商 D」「厂商 G」是匿名代号,「某常见编码 CLI 工具」指某一商业化编码客户端,匿名是为了不把第三方产品的实测表现绑进本文;② 三种请求端统一用代号指代——WBX(自研白盒直连)/ DXH(官方 Harness headless)/ COD-X(常见编码 CLI),代号是请求端类型的缩写,不对应任何具体产品名,也不含第三方商标;③ 表中只报命中率与相对比例,不报任何金额,成本相关字段按 README §六 的计价系数折算相对值。

指标对照组(不挂载)实验组(挂载 DoboCache)
20 次请求命中率均值0.00%(20/20 次全为 0)98.59%
区间—96.08% – 99.79%
零命中请求数20 / 200 / 20
前缀就绪(prefixReady=true)—20 / 20
实际生效门槛 effectiveMinPrefixTokens—3450(= 3000 × 1.15,配置已生效)

关键读法,请连同三条一起看:

  1. 对照组每次都注入了不同的随机噪音制造前缀漂移,所以 20 次全 0——这不是"对照组很差",而是"前缀一变,厂商前缀缓存就整段失效"的真实写照;
  2. 实验组 20 次全部命中,前缀 prefixTokens 稳定落在 3456–4480,每一次 prefixReady 均为 true;
  3. 命中率是单次请求输入内部的缓存命中占比,不是绝对 token 节省量。两组输入量本就不同(对照组输入随请求次数从 39 累积到 2738 tokens,实验组稳定在"前缀 + 尾部"),因此不可跨组直接换算成绝对 token 数,也不要在不同实验之间横向混比。

把视角拉高一层:不挂载并不总是 0%。 命中率不是只由"挂不挂"决定,请求端自己怎么构造请求,决定了对照组的起点。同一套挂载逻辑换到三种请求端形态各跑 20 次:

先把三个请求端分别是什么讲清楚——对照组起点之所以差这么多,全在这里:

形态请求端是谁请求端自身是否做前缀处理对照组为什么是这个数
A · WBX 白盒自研直连DoboCache 自研的白盒测试底座(为跑对照实验自己写的直连请求端,不是任何官方客户端)不做,一点都没做:不构造前缀、不预热缓存、不复用会话,每轮只发「任务原文 + 随机噪音」20 次累计命中 0 / 28,846 tokens。请求端手里没有任何可复用的前缀,基线因此恒为 0.00%,属结构性零基线,不是"缓存被打崩"
B · DXH 官方 Harness headless厂商 D 的官方客户端(headless 模式)做,且由客户端与厂商侧共同保证:每次新会话固定注入约 2,560 tokens 的厂商全局系统前缀20 次累计命中 51,200 / 77,576 tokens = 66.00%;51,200 正好等于 2,560 × 20,可自行验证这 66% 全部来自官方前缀,与 DoboCache 无关
C · COD-X 常见编码 CLI某商业化编码客户端(厂商 G 请求端)不固定:无全局系统前缀,只有历史长前缀恰好稳定时才偶发命中组 8 全 20 次为 0;组 7 仅 R10 / R20 自然命中,逐次均值 9.87%

一句话讲明白:A 的 0% 是"这个请求端本来就没有前缀可命中"(我们自己搭的底座,故意什么都不做,用来测零基线);B 的 66% 是"官方客户端自带前缀垫在下面"。两者都不是 DoboCache 的作用结果。 这三个起点只说明一件事——对照组的高度由请求端自身的前缀处理能力决定。所以本表只能横着读同一形态内的「挂 vs 不挂」,不能竖着比"谁的对照组更高",更不能把跨形态百分比相减当作本方案的提升幅度。

请求端形态版本 · 实验来源对照组(不挂载)实验组(挂载)说明
A · WBX 白盒自研直连v0.4.0 · 实验 0310.00%93.09%自研白盒底座,未做任何前缀处理(结构性零基线)
A · WBX 白盒自研直连v0.4.2 · 实验 0320.00%91.89%同上
B · DXH 官方 Harness headlessv0.4.0 · 实验 03366.00%96.85%请求端自带约 2,560 tokens 全局系统前缀缓存;对照组随噪音累积由 84.27% 劣化到 54.54%
B · DXH 官方 Harness headlessv0.4.2 · 实验 03468.09%95.91%同批对照组基线同样来自厂商系统前缀缓存;实验组每轮未命中压至 135–426 tokens
C · COD-X 常见编码 CLI(厂商 G)v0.4.2 候选修复构建 · 组 79.87%90.58%对照组 18/20 次为 0,R10/R20 因长历史前缀自然命中
C · COD-X 常见编码 CLI(厂商 G)v0.4.3 · 组 80.00%98.59%即上表本组主数据

三条读法:

  1. 形态 B 的 66%–68% 不是 DoboCache 的功劳,也不是"提升幅度小"——那是请求端自己就挂了全局系统前缀缓存,对照组天生占便宜;而它随噪音累积一路劣化(84.27% → 54.54%),恰恰说明这种请求端的缓存同样脆弱;
  2. 三种形态的对照组起点从 0% 到 68%,差别全在请求端怎么构造请求,跨形态的对照值不可互比;唯一可比的是同一形态内部的"挂 vs 不挂";
  3. 挂载后三种形态都落在 90%–98%,说明"静态前缀复用"这件事与请求端形态无关,不是某一家请求端的特例。
  4. 口径提醒(比数字本身更要紧):形态 A / B 是「20 次请求累计口径」(累计命中 tokens ÷ 累计 prompt tokens),形态 C 是「20 次逐次请求命中率的均值」——两种统计算法不同,跨形态只能看量级,不能拿百分比互相加减;同一形态内部的「挂 vs 不挂」才是同口径对比。

再单独说清 COD-X 那两轮(组 7 与组 8)——这一格最容易被读歪:

两轮是同一形态、同一套 20 轮任务、同样的对照组构造方式(每轮在请求头部注入不同的随机噪音,故意让前缀漂移),唯一差别是挂载的版本。对照组不挂载、与版本无关,所以「组 7 = 9.87%、组 8 = 0.00%」不是"版本越高、不挂载越差",而是噪音注入本身的随机性:

  • 组 7 里 R10、R20 这两次,历史已累积到 10 轮 / 19 轮,长历史前缀足够长,厂商侧缓存自己对上了,这两次读到 99.27% / 98.10%;其余 18 次被噪音打散、读数为 0,20 次平均下来才是 9.87%;
  • 组 8 那 20 次的噪音把前缀全部打散,于是次次为 0,均值为 0.00%。

这两个数反过来说明了一件对本工具"不算功劳"的事:厂商自带缓存本身很好用——只要前缀稳定,它能吃到接近 99%。 全程的卡点只有一件事:前缀稳不稳。DoboCache 做的是把前缀稳定下来、让"稳"发生在每一次请求上,不是凭空制造命中。所以「不挂载 0%–9.87%」是压力条件下的读数,既不是"厂商缓存很差",也不该被读成"挂上就从 0 涨到 98 个点"。

组 7 实验组均值 90.58% 偏低同理:R9、R13、R16 三轮遇到厂商侧抖动(53.08% / 85.53% / 0.00%),剔除这 3 次后其余 17 次均值 98.41%,与组 8 按同一位置剔除后的 98.57% 只差 0.16pp——两个版本在稳定段上一致,不存在"版本升级带来 8 个点提升"这回事。逐次对照见 release/testdata/hitrate-regression-report-20261103.md 第六节。

统一口径:不挂载约 0%–68%(随请求端形态浮动),挂载后 90%–98%。表中每一行都能落到实验档案的实测记录上(实验 031 / 032 / 033 / 034 与组 7 / 组 8),并与汇总 CSV 的 source_exp / recompute_file 字段一一对应:release/testdata/hitrate-multi-platform-summary-20261105.csv——形态 A / B 的分子分母以 token 列同表落盘,形态 C 为逐次均值、逐次数据在同目录,任一行都可自行复算。逐次曲线与重绘图脚本见 release/scripts/hitrate-comparison.py。本表不含任何估算值或取整凑数。

关于测试规模:一句实话

这套数据来自 8 组对照实验,正式组每组 20 次连续请求,另有两组 5 次、10 次的前期门槛探测。

但要先把边界讲清楚:这些测试的单次请求体量都很小——每轮输入是同一份 AI 资讯盘点话题,前缀几百到数千 tokens,任务原文与逐次 usage 都在 release/testdata/,谁都能自己算一遍。

我们没有测「特别长的长任务」:单轮上万 tokens 的长文档问答、整个代码库的分析、几十轮的超长会话,都不在样本里。缓存前缀复用在这种体量下是否一样成立,我们没测过,也不打算替它下结论。

如果你手上正好有这类长任务,欢迎自己挂上去跑一遍再回来说话——把逐次 usage 记下来,比我们的任何承诺都有用。这也正是我们把逐次数据、任务原文、复跑步骤全部放进包里的原因:让你能自己验证,而不是只能信我们。

五、白盒报告:每一步都看得见

每次 cf_judge / cf_inject 之后,白盒日志会记录这一步做了什么、为什么做、效果如何。下面是一条按当前口径(v0.4.9)输出的记录示例:

{

"requestId": "req-1b0ff98f", "ts": 1793709231484, "reqIndex": 2, "promptChars": 36, "rawTokens": 201, "optimizedTokens": 4096, "hitRate": null, "savedTokens": 0, "savedPct": 0, "changes": [ {"kind": "align128", "label": "前缀 128-token 对齐:减少尾部部分命中", "detail": "追加 98 个对齐块"}, {"kind": "topup", "label": "前缀过门槛补充:达到最小有效缓存长度", "detail": "补充 63 块(高价值片段/文档块)"}, {"kind": "scenario", "label": "首条请求或缓存为空:轻量约束放行自由回答"} ], "note": "cf_inject:原始 201 tokens → 优化后 4096 tokens(前缀 4096 + tail);实际门槛 3450 tokens。", "sessionId": "sid-b6ca1662", "scenario": "first", "mode": "rebuild", "alignBlocks": 98, "prefixTokens": 4096 }

三类常用对照能力都在:第几次请求(reqIndex)、是否同一提问(req-... 相同即同一提问)、每一步动了什么(changes[] + note)。内容本身不落盘。

记录里 hitRate 为 null 表示本次请求未判定:cf_inject 处在注入阶段、请求尚未发出,且调用方没有把厂商返回的缓存 usage 回传给 DoboCache,本机就无法得知真实命中率——此时如实记 null(未判定),不再写 0。看到 null 不要读成"命中率 0%":要得到可判定的命中率,请在 cf_judge / cf_inject 里带上 hitTokens / missTokens(取自厂商 usage 的

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx