[反馈] web_search 的两个成本相关点:调用 token 未计入会话用量、单次调用成本偏高 #6395
freerunningkid
started this conversation in
General
Replies: 1 comment
补充:相同的搜索用量漏记问题与代码定位我们也遇到了官方账单与 DSH 本地会话用量不一致的情况,排查后发现相同的搜索 usage 记录缺口,补充以下信息。 核查版本: 缺口在搜索 provider 的响应处理阶段,而不只是 UI 展示或统计遗漏。 对应上游路径:
当前调用链: 具体观察:
期待修复~ |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
先说明来意:这是在日常使用中做了一次费用对账后整理的反馈,目的是把可复现的事实和证据摆出来,供团队评估,也供社区参考。dsh 的整体体验很好(插件化结构、prompt cache 的命中率都很省心),下面两点是我们在真实任务里遇到的实际差异,绝无指责之意;如果有理解偏差,欢迎随时指正。
环境:dsh 0.1.5-rc.1(npx 安装)· Windows 11 ·
deepseek-official/deepseek-flash· presetlean·reasoningEffort: high时间:2026-09-12 09:00–12:00(周六,全闲时价)· 任务:一个"本地大模型服务化 + 硬件行情"调研(42 个会话 / 39 个委托子代理 / 1,430 step / 233 次
web_search)一、
web_search的调用 token 未计入会话用量,本地可见花费约为账单的一半dsh-web-search-deepseek每次搜索会发起一次独立的 Anthropic 兼容 Messages 调用。从我们能观察到的三个位置看,这次调用的 usage 没有归属到发起会话:GUI 的 stats 胶囊、session_projcache.json、以及会话 JSONL 中assistant/message.usage。同一时间窗的对照(本地 = 逐条累加
assistant/message.usage;账单 = 平台用量明细导出 CSV):差额:未命中输入 +8,437,229、输出 +716,335;本地可见部分约为账单的 49%。
定位过程(可与上表互相印证)
web_search次数观察到的规律:
request_count2,024 vs 本地 step 1,355,多出的约 669 次 ≈ 232 次搜索 × ~2.9 轮服务端检索(默认maxUses: 5)。带来的不便
tokenUsage的展示(stats 胶囊、/compact的占用估算、contextPressure)在搜索密集的任务上会明显偏低。一点建议(供参考)
searchTokens: {uncachedInput, cacheRead, output})并让tokenUsage投影一并暴露;web_search的返回值里附上本次搜索的 token/成本,agent 就能即时调整检索策略;Web search段落显式说明"一次搜索 = 一整轮 Messages 调用(服务端最多maxUses轮检索)"。目前这句只在 package README 里出现,使用者不容易第一时间看到。二、网页调用单次成本偏高
我们理解这是接口能力所限(README 已说明 DeepSeek 没有独立检索端点,"one search costs a full model turn"),只是希望把实测数字反馈上来,便于评估默认值:
maxUses: 5/maxTokens: 4096)web_fetch一次常规的多子代理调研(每个子代理检索若干次)累计下来就是十几元,而且这部分在客户端还不可见(见第一点)。几点不成熟的想法:
maxUses: 5 → 2、maxTokens: 4096 → 1024。我们这边实测这两个值仍然够用,单次成本约降到 ¥0.02;或至少在设置页标注这两个字段的成本影响,交给使用者决定。三、附带发现:默认
contextWindow: 1_000_000使 auto-compaction 未触发同一批数据里:42 个会话、1,430 step、上下文最高约 192k,compaction 事件 0 次。原因是
dsh-compaction-basic的阈值 =thresholdRatio(0.8) × contextWindow,而 DeepSeek 适配器默认窗口为 1,000,000 → 阈值约 80 万 tok,实际很难达到。这一点本身不产生额外费用(有 prompt cache 兜底),但会带来一个隐性风险:上下文只增不减,若缓存未命中,同一批约 1.1 亿 tok 的重发会从 ¥2.2 变为 ¥220(命中 ¥0.02/M 与未命中 ¥1–2/M 相差 50–100 倍)。是否可以考虑默认按模型真实可用长度声明窗口,或在
contextPressure达到一定比例时给出提示?四、复现方式与说明
两个脚本只对数据源(会话 JSONL / 平台导出 CSV)做纯统计,不含密钥或个人信息,需要的话我可以把脚本与逐会话明细贴上来。
需要说明的是,以上判断来自已发布包的 README 与编译产物(npx 安装,无源码树),如果搜索 usage 其实归属在别处、或本地对账方式有误,请随时指出,我这边会立刻更正。
五、我们侧已做的临时缓解
改后经
web/deepseek-search-llm-request事件确认请求体为max_tokens=1024, max_uses=2。这只是我们侧的临时缓解,计量归属的差异依然存在,最终如何取舍还是以官方判断为准。All reactions