实验类型说明:这是同一个 DSH 版本的机制开关消融,不是实际旧/新版比较。真实版本对照已另做 20 组配对、240 个响应,见新报告。本页 −35.8% 只属于历史消融实验。
开启 DSH 的系统提示词追加机制后,这组实验的整段会话费用估值下降 35.8%,总 Token 却增加 2.4%。 这项优化的收益不能用“少了多少 Token”单独衡量。
同一版 DSH、同一个 Flash 模型,只切换有没有这个机制。主实验为 5 个固定合成业务工作流、30 组配对、60 个六轮会话,共 360 个真实模型响应。完整输出验收:关闭 178/180,开启 179/180。并非零错误,也不足以证明普遍更准确。
费用包含初始输入、续聊、两次规则更新和思考输出,统一按官方峰时价估算,不是实际账单或订阅额度。本轮 low thinking,无工具调用或压缩;结论不直接推广到所有编程任务。
| 主实验,全部六轮 | 关闭机制 OFF | 开启机制 ON | 开启后的变化 |
|---|---|---|---|
| API 费用估值 | $0.2008 | $0.1289 | −35.8% |
| 总 Token,含缓存输入和全部输出 | 640,547 | 656,024 | +2.4% |
| 总输入 Token,含缓存 | 546,406 | 582,024 | +6.5% |
| 未命中缓存的输入 | 287,590 | 124,424 | -56.7% |
| 输出 Token,已含思考 | 94,141 | 74,000 | -21.4% |
| 完整输出验收 | 178/180 | 179/180 | 不作普遍质量优劣判断 |
30 组配对中,开启组费用 30/30 更低。费用下降的 95% 分层配对 bootstrap 区间为 33.4%–38.1%;它描述这五个固定工作流的运行波动,不是所有 Agent 任务的节省保证。两组各累计 30 个会话;绝对费用差约 $0.0719。
这里没有将失败回答剔除再算成本。主实验三条错误、边界实验一条错误全部保留。
普通聊天 API 原本就能发送 system 消息。DSH 新增的机制决定的是:系统提示词变化后,把新内容放在哪里。
关闭时改写最前面的 system;开启时保留旧内容,把新的完整 system 追加到历史后面。模型按最新系统规则处理接下来的问题,而前面的请求前缀仍可复用。
不是给两个不同版本分别跑分:两组都固定在 DSH 0.1.5-rc.1 的同一提交。模型目录条目唯一的机制差异是有没有 systemPromptUpdate: 'in-history'。关闭组走原生头部改写分支,开启组走原生追加分支。
请求快照逐轮验证:关闭组始终只有一个 system;开启组依次为 1、1、2、2、3、3 个。开启组保留上一轮请求的消息前缀;关闭组在第三、第五轮更新时改变前缀。模型接口、思考强度、采样参数、源数据和问题保持一致,仅用独立等长 nonce 隔离会话缓存。
实现:核心分支 · 模型能力标记。本实验没有验证修改磁盘文件后自动热加载。
主实验每个会话更新两次,所以每组各有 60 个“更新后的首轮”。关闭组这 60 轮全部没有命中输入缓存;开启组的加权命中率为 88.3%。
| 仅更新后的首轮,60 次/组 | 关闭 OFF | 开启 ON |
|---|---|---|
| 命中缓存的输入 / 全部输入 | 0 / 185,784 | 179,840 / 203,582 |
| 加权命中率 | 0.0% | 88.3% |
| 完整输出验收 | 59/60 | 60/60 |
88.3% 命中,不等于省了 88.3% 的钱。 这个比例只描述更新首轮的输入;主结论的 35.8% 则按完整六轮计费,并包含输出。
| 全部六轮的费用组成 | 关闭 OFF | 开启 ON | OFF − ON |
|---|---|---|---|
| 命中与未命中的输入合计 | $0.087830 | $0.040073 | $0.047757 |
| 输出,含思考 | $0.112969 | $0.088800 | $0.024169 |
| 总计 | $0.200799 | $0.128873 | $0.071926 |
输出减少 20,141 tokens,其中思考输出减少 20,143,可见答案部分几乎不变。输出长度也变了,所以不能把整笔费用下降全部归因于缓存。 上表只是账目拆分,不是对缓存与模型内部推理进行独立因果分解。
同样,缓存命中来自 API usage,不代表我们能直接查看服务端的物理 KV。官方说明缓存是 best effort;本轮出现高命中,不保证每次都相同。缓存规则
每个工作流首次给模型 80 条合成记录,后续只给待处理 ID。系统规则在第三、第五轮变化,问题要求模型使用同一批历史数据按当前规则处理。其中部分 ID 在旧规则下已经处理过。
六轮顺序为 A → A → B → B → C → C:既看更新首轮,也看新规则能否延续。下面每行只有一个固定工作流,各重复六组配对,不是每行覆盖了大量不同项目。
| 固定工作流 | 改变的规则 | 关闭组平均费用/会话 | 开启组平均费用/会话 | 变化 |
|---|---|---|---|---|
| 重算订单 | 折扣、运费与免邮门槛 | $0.008070 | $0.004525 | -43.9% |
| 工单分派 | 优先级、团队与 SLA | $0.007243 | $0.005188 | -28.4% |
| 数据导出 | 删除旧字段并增加新字段 | $0.005587 | $0.003568 | -36.1% |
| 日志告警 | 状态码、延迟与环境筛选 | $0.005894 | $0.003727 | -36.8% |
| 发布检查 | 覆盖率、审批与决策顺序 | $0.006672 | $0.004471 | -33.0% |
展开:全部配对,以及没有通过的回答
图内每格是一组配对,格子面积相同,数字才表示费用变化大小。完整数据见 pairs.csv 与 responses.csv。
主实验 3 条错误都发生在日志聚合:OFF 的 logs-01 第 4 轮少算一个 api 事件;OFF 的 logs-04 第 5 轮分组计数错误;ON 的 logs-01 第 6 轮少算一个 api 事件。边界实验 OFF 的 long_prompt-02 第 3 轮查询了错误的服务 ID。
完整答案、预期答案、逐项结果都保留在 records.json。主实验整会话全部通过为 OFF 28/30、ON 29/30。少数错误的差别不能用来证明模型一般质量更优。
旧提示词仍占上下文,不会因为走缓存就消失。 独立边界测试把 120 条服务目录放进 system,用户问题很短,连续六次改变规则。这不是主实验里的正常更新频率,也没有合并进 35.8% 的结果。
| 边界测试,6 对、96 个响应 | 关闭 OFF | 开启 ON | 变化 |
|---|---|---|---|
| 总输入 tokens | 263,972 | 915,476 | +246.8% |
| 输入费用估值 | $0.070160 | $0.071204 | +1.5% |
| 输出费用估值 | $0.038350 | $0.007732 | -79.8% |
| 总费用估值 | $0.108510 | $0.078936 | -27.3% |
| 完整输出验收 | 47/48 | 48/48 | 保留全部错误 |
这个场景中,输入费用反而增加 1.5%;整体仍便宜,主要因为输出减少。它提醒我们:高命中率和长上下文可以同时出现,“一直追加就一定更省”的说法不成立。本轮没有压缩或触顶,不推测触顶后的净收益。
两组使用官方 deepseek-flash,low thinking、temperature 0、最大输出 8192。任务与验收均为合成、可公开数据;不发送私有项目内容。所有更新都是新的完整 system,不是普通 user 消息。
每个任务三组先 OFF、三组先 ON,配对内逐轮轮换顺序;最多并行三组。每个会话使用独立等长 nonce,减少跨会话缓存互相预热。缓存没有被客户端强制控制,也没有通过真实等待来人为提高命中。来源资料需要用于任务查询,并非无意义填充。
提供方自动重试关闭,预先允许基础设施故障时整对最多重来一次,答错不重跑。正式批次 0 次基础设施失败、0 次重跑,456 个响应全部有 usage。
DSH 用量口径:inputTokens 是未命中输入,cacheReadTokens 是命中输入;输出已含 reasoning。每条均核对总数。我们还检查了序列化请求、系统节点位置、旧前缀和会话流中的 usage,避免只相信汇总百分比。
价格统一为美元/百万 tokens:命中 0.006、未命中 0.30、输出 1.20,来自 2026-09-10 查阅的官方价目。这是峰时标准化估值;如果三项都按谷时减半,金额减半,相对变化不变。
展开:预试、冻结、统计与完整资源账
先进行了 12 次关闭思考的订单预试,出现基础业务计算错误。随后给两组统一改用 low thinking,六个场景共 76 次预试输出全部通过。88 次预试均排除在正式比较之外,但没有删除。 预试用来确定可用的实验配置,不能作为独立验证正式结论的证据。
之后在首个正式响应前冻结任务、参数、执行器、验收和分析程序。FROZEN.json 保存时间与哈希。这是本地预先冻结,不是公开注册或第三方签名证明。
统计单位是完整配对。主费用指标为 sum(ON cost) / sum(OFF cost) - 1,不是简单平均 30 个百分比。95% 区间在五个任务内部重采样完整配对,20,000 次,种子 81723。重复运行和区间只描述这些固定任务。
| 用途 | 实际响应数 | 总 Token | 峰时统一费用估值 |
|---|---|---|---|
| 主实验 | 360 | 1,296,571 | $0.329672 |
| 独立边界测试 | 96 | 1,217,849 | $0.187445 |
| low thinking 预试 | 76 | 416,793 | $0.083492 |
| 非思考预试 | 12 | 32,138 | $0.004602 |
| 登记范围总计 | 544 | 2,963,351 | $0.605211 |
总账不包含本次实验之前的探索、作者账户其他任务或编写报告的对话用量。详见 resources.json 与 完整方法。
复算和重新验收不需要 API Key,也不调用模型。 点击本页 Download ZIP 下载全部文件,解压后在包含 reproduce.py 的目录运行:
python3 reproduce.py verify
python3 reproduce.py recheckverify 从保存的原始记录重建请求、逐条复算费用、重算统计区间,并与发布结果比较。recheck 对每个保存答案重新执行同一个业务验收程序。验证成功意味着数据和验收结果可复核,不是声称模型所有答案都正确。
预期核心结果:
completed_pairs: 36
selected_responses: 456
all_responses_with_usage: 544
session_receipts_verified: 544
main/rewrite: 178 / 180
main/append: 179 / 180
stress/rewrite: 47 / 48
stress/append: 48 / 48
passed: true
展开:恢复证据、重画图片与实际重新调用模型
平铺发布包中的 bundle.json 去重保存消息、请求、原始记录和代码。将其恢复成目录:
python3 reproduce.py unpack ../dsh-cache-evidence保存的 usage 与答案还会与原始 DSH 会话提取的响应凭据核对。这些是客户端记录,不是提供方签名账单;本 Gist 提供提取后的响应凭据;未删减的原始会话流保留在作者的完整证据归档中。
恢复目录后,重画图片:
python3 -m venv .venv
.venv/bin/pip install matplotlib==3.11.1
.venv/bin/python source/render_figures.pySVG 内嵌字体轮廓;PNG 为 2400×1600。图表由保存数据生成,不由生成式模型绘制数字。
实际复跑需要自己的 DeepSeek Key 和固定源码环境。先准备源码与依赖:
git clone https://github.com/deepseek-ai/deepseek-harness.git ../dsh-source
git -C ../dsh-source checkout aa8262ec091698bae9a6b04773a6b5b06ad4aef2
cd ../dsh-source
pnpm install --frozen-lockfile --ignore-scripts
cd -
python3 reproduce.py prepare-live ../dsh-cache-repeat --harness ../dsh-sourceprepare-live 不调用模型,不更改源码版本;只写入研究测试入口和独立实验目录,并使用新的会话 nonce 避免刻意复用原实验缓存。然后自行设置 DEEPSEEK_API_KEY,显式启动:
python3 ../dsh-cache-repeat/run-live.py这一条才产生模型调用:计划 456 个响应,遇到基础设施失败才按预定规则重跑整对。新的服务器权重、缓存状态和输出无法冻结,所以这是方法复验,不保证相同数字。预试不会自动重跑。
对这五个固定工作流,DSH 的这个机制保留了更新时的缓存,整段会话费用也更低;但总 tokens 没有减少,所有节省也并非都来自缓存。
它支持把“提示词怎么更新”作为 Agent 成本的一项工程选择,不支持承诺所有任务省 35.8%、普通聊天消息可以替代系统更新,或无限保留旧提示词没有代价。
数据:逐响应记录 · 配对表 · 汇总 · 资源账 · 验证结果 · 冻结实验 · 详细方法
MEASURE WHAT CHANGED. KEEP THE LIMITS VISIBLE.