跳到主要内容
赞助推荐 搬瓦工怎么选:三网直连 CN2 GIA-E
AI 大模型

OpenCode Go 接进 DSH:缓存 99.8% 命中,计费打六折

16 分钟阅读阅读()
赞助推荐 团队协作里的 AI 办公工作台

OpenCode Go 每月 10 美元给 DeepSeek V4.1 Flash 100 美元额度,接进 DSH 后同一会话第二轮缓存命中 99.8%,成本只剩首轮的 2.4%。这个数字成立的前提只有一个:请求里带一个稳定的 x-opencode-session 头,而它在 DSH 里会因为一行配置静默失效。

数据来自 2026-11-07 的真实订阅账号与实测请求,DSH 侧数据在 0.2.1-rc.5 headless profile 上抓包获得,单价以 OpenCode 官方 Go 文档当日页面为准。

赞助推荐 一人公司 · 创业装备库
赞助推荐 一人公司 · 创业装备库

这 10 美元买到了什么

OpenCode Go 是订阅制,不是充值制。每月固定 10 美元,换一批模型各自的月度美元额度,额度用完可以切到免费模型,或者开启 Extra Usage 回落到按量付费余额。

对 DeepSeek V4.1 Flash 来说,这个额度是每月 100 美元。但它不是一个整块,而是被切成三个滚动窗口,其中 5 小时窗口最容易被撞到。

指标 数值 说明
订阅价 10 美元 / 月 Go 档,单成员工作区
V4.1 Flash 月度额度 100 美元 5 小时窗口 20 美元,每周 50 美元
V4 Pro 月度额度 15 美元 5 小时窗口仅 3 美元
官方估算请求数 21.6 万次 / 月 按典型 coding agent 请求结构

三个窗口的额度分配

DeepSeek V4.1 Flash 在 Go 套餐下的三层额度窗口横向条形图

同一个月度额度被切成 5 小时、每周、每月三层,最短窗口只有总额度的五分之一。

把额度换算成 token 更直观。DeepSeek 在 Go 上采用峰谷定价:低谷时输入每百万 token 0.15 美元、输出 0.60 美元、缓存读 0.003 美元;高峰是低谷的两倍,高峰时段为 UTC 周一至周五 01:00–04:00 与 06:00–10:00,折成北京时间就是工作日上午 9 点到 12 点、下午 2 点到 6 点。

所以 100 美元能买多少 token,取决于你让它读多少、写多少,还取决于缓存命中率。三个纯理论值如下,全部按低谷价计算。

100 美元的理论兑换量

计费类型 低谷可买 高峰可买
纯输出(生成) 1.67 亿 token 8330 万 token
纯新输入(读代码) 6.67 亿 token 3.33 亿 token
纯缓存读(重复上下文) 333 亿 token 167 亿 token

注意:V4 Pro 的额度只有 15 美元,5 小时窗口 3 美元,按官方估算约 1050 次请求。它适合攻坚,不适合当主力。真正跑量的模型必须是 V4.1 Flash。

实测:缓存到底命中没有

订阅之前最该确认的不是价格,是缓存有没有生效。同样一份上下文,命中缓存和没命中,成本差 50 倍——缓存读每百万 0.003 美元,未命中输入每百万 0.15 美元。

验证方法很直接:同一个会话里,连续两次发送完全相同的前缀,看第二次的 cached_tokens 是否接近 prompt_tokens。

DSH 侧的两轮抓包(18.9k 上下文)

场景 prompt_tokens cached_tokens 命中率 allowance 耗时
首轮 18,978 640 3.4% 0.00165 45.1s
次轮(同会话) 18,989 18,944 99.8% 0.000039 2.6s

第二轮的成本只有首轮的 2.4%

同一会话首轮与次轮额度消耗对比条形图,次轮仅为首轮的百分之二点四

同一会话内前缀不变时,第二次请求的额度消耗断崖式下降,耗时从 45 秒降到 2.6 秒。

另一次更小规模的独立验证也复现了同样的形状:4035 token 的上下文,第一次缓存命中 73%,第二次升到 98.3%,额度消耗从 0.00010421 降到 0.00001389。

两次实验用的是不同的客户端、不同的上下文长度,但结论一致:只要 session 头稳定,OpenCode 网关就会把请求固定路由到同一后端,prompt 缓存正常复用。9 月那次「缓存完全不命中」的问题,在现在的链路上不复现。

要点:判断缓存是否生效,不要看响应耗时,看 usage.prompt_tokens_details.cached_tokens。耗时受网络和排队影响,这个字段不会说谎。

接进 DSH 的三个硬坑

先说结论:DSH 原生支持 OpenCode Go,一个插件都不用装。前提是版本 ≥ 0.2.0-rc.2,从这个版本起它自己会发 x-opencode-session。低于这个版本才需要补 session-header 插件。

配置本身很短,全部写在 profile 的 cordis.patch.yml 里。

最小可用配置

- id: llm-pi-ai
  config:
    providers:
      opencode-go:
        displayName: OpenCode Go
        models:
          - id: deepseek-v4.1-flash

- id: agent-default-model
  config:
    provider: opencode-go
    model: deepseek-v4.1-flash

注意这里没有写 baseURL,也没有写 contextWindow。因为 DSH 内置的 pi-ai 目录里已经声明了:端点 https://opencode.ai/inference/go/openai/v1、上下文窗口 100 万、最大输出 38.4 万、协议 openai-completions。写冗余配置不加速,只会制造第二个真相源。

provider 段还需要一行,把凭据来源指向一个环境变量。变量名沿用 DSH 对该 provider 的默认约定,值放在 profile 的 .env 里,别提交进仓库。

坑一:这一行不能写 api

这是最难查的一个坑。如果你在 opencode-go 那一段里写了 api: openai-completions,请求会正常返回、不报任何错,但 cached_tokens 恒为 0。

根因在 DSH 的 buildProvider:只有 spec.api === undefined 时,它才走 reuseCatalogProvider 复用目录自带的实现;那层实现被 withOpenCodeSessionHeader 包过,负责补 session 头。一旦写死 api,就走 createProvider 新建,包装被绕过,头静默消失。

两种写法的结果差异

写法 provider 来源 session 头 缓存结果
不写 api 复用目录实现 自动补上 命中 99.8%
写了 api createProvider 重建 缺失 恒为 0,且不报错

注意:这个坑没有错误提示。 配置看起来完全正常,请求也成功,唯一的症状是缓存永远不命中、成本按 50 倍走。排查成本的时候,第一件事就是回去把 api: 删掉。

坑二:Region 不设成 Global,模型直接不可用

OpenCode 侧默认只允许 Europe 与 United States 区域,DeepSeek 两个模型需要你在 Console 的 Settings › Privacy 里把 Regions 选成 Global。不做这步,key 正确、配置正确,依然调不通。

这个设置页只对有活跃 Go 订阅的 owner 或 admin 显示。订阅前打开是看不到 Regions 那一栏的,容易误以为文档漏写。

坑三:key 长度是 51

复制 key 的时候尾部多一个字符(比如 %)是常事,症状是 HTTP 401。与其反复调 DSH,不如先量长度:

KEY=$(cat "$KEY_FILE")
[ ${#KEY} -eq 51 ] && echo ok || echo "长度不对: ${#KEY}"

403 来自 Cloudflare,不是 OpenCode

用 Python 脚本调这个端点会直接 403,返回体是一行 error code: 1010。这不是鉴权失败,也不是额度问题,是 Cloudflare 的 WAF 在拦 UA 指纹。

三个客户端打同一个端点,结果完全不同。

同一端点、不同默认 UA 的结果

客户端 默认 User-Agent 结果
Python urllib Python-urllib/3.13 403,error code 1010
Node fetch (undici) 不发送 UA 200
curl curl/8.x 200

所以官方文档里那句「客户端应当用自己的 user agent 标识自己,而不是通用 SDK 或 HTTP 库的名字」,不是建议,是硬性拦截。只是触发条件很具体——curl 和 Node 都不受影响,偏偏 Python 的标准库 UA 会被拦。

如果你们用 Python 写健康检查、监控探针或者批量任务,这里一定会踩。加一行自定义 UA 就好。

req = urllib.request.Request(
    url, data=body, headers={
        "Authorization": "Bearer " + key,
        "Content-Type": "application/json",
        "User-Agent": "your-agent/1.0",
        "x-opencode-session": "ses_stable_id",
    })

额度的真实购买力

OpenCode 在每个响应的 usage.opencode 里回了两个字段:list_cost 是按模型标价算出的费用,allowance 是实际计入套餐额度的金额。两者的比值稳定在 0.600。

这意味着 Go 套餐按标价的六成计消耗:100 美元额度,实际对应约 166.67 美元的标价用量。这也是为什么官方敢说 100 美元能跑 21.6 万次请求——比按标价直接除算出来的多得多。

三次请求的系数校验

请求 list_cost allowance 比值
短请求探活 0.00001830 0.00001098 0.600
长上下文首轮 0.00017368 0.00010421 0.600
长上下文次轮 0.00002315 0.00001389 0.600

但这个额度不是稳定定价,它在两个月里被改过四轮:9 月 10 日接入时 15 美元,9 月中限时四倍到 60 美元,10 月 12 日提到 80 美元,10 月底到 100 美元。一个半月翻了六倍多。

同期 Go Plus 从 160 美元提到 200 美元。这种幅度不是成本下降,是获客补贴。

一个半月里的额度曲线

DeepSeek V4.1 Flash 在 Go 套餐中的月度额度变化柱状图,从九月十五美元升至十一月一百美元

DeepSeek V4.1 Flash 在 Go 套餐里的月度额度变化,从 15 美元到 100 美元,六次调整全部是上调。

背景:补贴期的曲线只能参考,不能当架构前提。OpenCode 这条线在两个月里已经调整过多次,方向随时可以反过来。

现在用,但别把它当长期方案

把 DeepSeek V4.1 Flash 接进 DSH 这件事,技术上是成立的,成本上是划算的,但它建立在三个会变的前提上:额度还在涨、六折系数还在、把 Region 放开这件事还允许。

所以落地时的优先级应该是:把模型路由和凭据放在能一行切走的地方,把业务逻辑和 DSH 的绑定降到最低。真要长期跑量,自己的 DeepSeek key 留在 .env 里当备份,切回去只改两行。

另外一个实测出来的数字值得写进产品预期:21.6k 上下文的冷 prefill 要 109 秒,而次轮只要 5 秒。这不是配置问题,是大 system prompt 的必然代价。做长会话产品时,要么把稳定前缀拆出来单独命中缓存,要么就别指望首轮有交互感。

要点:省钱的关键不是换更便宜的模型,是让缓存命中。同一份上下文,命中与不命中差 50 倍——这比任何订阅费率都重要。

引用与来源

赞助推荐 一键部署 AI 大模型
赞助推荐 一键部署 AI 大模型
赞(0)
未经允许不得转载:80aj » OpenCode Go 接进 DSH:缓存 99.8% 命中,计费打六折
赞助推荐 低成本上手 Claude Code 的中转选择
赞助推荐 低成本上手 Claude Code 的中转选择

相关推荐

  • 暂无文章
赞助推荐 一键部署 AI 大模型
赞助推荐 一键部署 AI 大模型