6.8 万星,就为了省一个 API Key

6.8 万星,就为了省一个 API Key

一个 47 天前创建的仓库,现在有 68,509 星、1,845 个 fork、160 个 open issue。

README 第一句话是这么写的:

装上这个插件,不用登录、不用注册、不用填 API Key,就能用 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型——完全免费,不限量。

它叫 dsh-our-free-model,是一个 DeepSeek Harness(DSH)的插件。

不是模型公司发的,不是官方合作,就是一个第三方插件。6.8 万星,相当于每 10 个给 DSH 点 star 的人里,就有 2 个顺手给了它。

我把它拆了一遍。结论先说:它不生产免费额度,它只是免费额度的搬运工。 而且搬运的方式,比“免费”两个字刺激得多。

它到底装了什么

装上之后,DSH 的模型选择器里会多出一个分组。你选一个模型,发一句话,请求会从四条不同的车道出去:

dsh-our-free-model 的四条车道

车道 来源 代价
免费车道 OpenCode Zen 公共网关 指纹对抗,上游一改就断
Kilo 车道 Kilo AI 公共免费池 prompt 可能被上游记录
EAC 车道 作者自建协付网关 要 GitHub 登录 + star
账号车道 10 家 IDE 的账号体系 封号风险,条款风险

四条车道,四种“免费”的哲学。最值得看的是第一条。

最狠的一条:让网关以为你是 OpenCode

OpenCode 有一个公开的免密网关。免费层不要 Key、不要登录,但有一个前提:它只认自己的客户端。

上游的报错写得很直白:free tier can only be used from within OpenCode。

插件要在 DSH 里用这批模型,问题就变成了:怎么让网关相信,发请求的就是 OpenCode?

仓库里的 docs/free-lane-wire.md 记录了整个过程,读起来像一份逆向工程笔记:

  • 请求路径必须是 /inference/v1/chat/completions
  • 请求头必须带 x-opencode-session-id
  • 这个 session id 不是随便生成的,ses_ 后面的 12 位 hex 要符合特定的“铸造形状”
  • 工具声明里,read 和 shell 必须同时存在,参数 schema 要和官方客户端逐字一致
  • User-Agent 里只要出现 deepseek-harness,不区分大小写,直接 403

最后一条很有意思。上游不是在做通用校验,是在点名拉黑这个插件所属的宿主。

插件的应对写在源码里:把归属 UA 里的 deepseek-harness 改写成 dsh,按格式铸造 session id,把工具 schema 逐字复刻。

这不是“调用公开 API”,这是客户端指纹对抗。

今天能用,是因为作者昨晚刚把指纹对上;明天上游改一个字段,所有用户一起断。10 月 13 日、10 月 16 日,这个网关两次收紧校验,插件两次跟着改。这不是稳定的基础设施,是一场持续的猫鼠游戏。

而且它踩在条款的灰色地带。上游开放的是“给 OpenCode 客户端用的免费额度”,不是“给任何第三方宿主用的免费 API”。插件没有破解密钥,但它绕过了客户端识别——这件事该怎么定性,取决于上游想不想追究。

Kilo 是真免费池,但代价写在模型卡上

第二条车道干净得多。

Kilo AI 的公共网关有一批 isFree: true 的模型,真的不需要账号、不需要 Key、不需要指纹。插件的 src/kilo.js 只有 168 行,一个固定 base URL 加一个普通的 POST。

但它的模型卡上写着一句话:

Prompts may be logged by the upstream provider and used to improve their services. Not suitable for production or sensitive data workloads.

翻译过来:你的 prompt 可能被上游记录,用来改进服务;不适合生产环境和敏感数据。

插件的 README 也没藏着,直接写“这条车道适合扔一次性的活,不适合放秘密”。

所以“免费”的定价里,有一部分是你交出去的数据。

EAC:用 star 换额度

第三条是作者自己掏钱部署的协付网关,模型带 EAC 前缀。

解锁方式很直接:GitHub 登录,并且 star 这个仓库。

Worker 里的逻辑是,登录后检查 GET /user/starred/,star 了才签发专属令牌;之后每 12 小时复查一次,取消 star 就在窗口内吊销。

这是一个很聪明的增长设计:把“免费额度”变成“star 按钮”。6.8 万星里,有多少是这样换来的,没人知道。

但它也不可持续。作者的钱、作者的服务器、作者的带宽,哪天不想掏了,或者被薅穿了,这条车道说关就关。

十个账号渠道:把 IDE 的免费额度搬进 CLI

第四条最庞大。

vendor/channel-pack/ 下接了十家 AI 编程工具的账号体系:Qoder、TRAE、Cline、LobsterAI、Loomy、Raccoon、MiniMax Code、ZCode、Gemini Code Assist,还有默认停用的 OpenCode。

每家都有登录流程、账号池、每日积分领取的适配代码。你登录自己的账号,插件把额度接进 DSH 的模型选择器。

问题在于,这些免费额度本来是各家 IDE 拴住自家用户的手段。你把登录态交出去,让一个第三方插件在 CLI 里消耗它,等于把“仅限本产品使用”的条款绕了过去。

issue 区已经有用户反馈:LobsterAI 账号被封、CodeBuddy 国内版遭风控、WorkBuddy 国际版访问受限。这些是个案,不代表所有人都会中招,但封号的成本是你一个人担,省下的可能只是几块钱 API 费。

“不限量”的真相

README 对“不限量”的定义很克制:不存在额度体系——不用充值、不按 token 计费、没有套餐。

但它紧接着列了三条硬边界:

  1. 按 session 限速。短时间打满会返回 429,插件把模型标成“已达限额”,下一轮探测恢复。
  2. 地区限制。部分模型对特定地区不放行,归入 region-limited 分组。
  3. 速度随缘。有模型首字延迟超过 30 秒;mimo-v2.6-flash-free 可以在思考阶段静默 60 到 70 秒,期间上游计了 3000 多个 reasoning token,却一帧都不发,客户端很容易误报“空响应”。

这不是“无限”,这是“没有额度面板,但有无数个隐形的墙”。

一个必须说的供应链问题

这个项目的 npm 包名有一个坑。

裸名的 dsh-our-free-model 不是作者发布的。README 用警告框写着:那个包由第三方打包,index.js、client.js 被改动,还多了仓库里从未有过的 src/channel-visibility.js。

官方发布的是带 scope 的 **@ebony-vinyl/dsh-our-free-model**,或者 GitHub Releases 里的 tgz。

装错包,你拿不到签名校验,也拿不到应用内升级。这类“借开源项目名字发投毒包”的套路,这两年太多了。

作者在供应链上确实做了功课:应用内升级用 Ed25519 签名清单 + 逐文件 SHA-256,下载、校验、备份、原子替换、回读,任一步失败自动回滚。镜像被投毒,结果是升级失败,不是执行恶意代码。

但别忘了,它仍然是一个明文 JavaScript 的本地插件。装进 DSH,它和你的文件、终端、会话在同一个进程边界里。签名能证明“这个包是作者发的”,不能证明“这个包不会读你的东西”。

所以,值不值得装

分三种人:

学生、爱好者、跑原型:可以试。拿它查公开文档、写样板代码、做格式转换,成本很低。记住一条:别把密码、密钥、客户代码、公司内部文档发进任何免费车道。

公司机器、敏感项目:不要装。出网目标、prompt 落点、账号合规,这三件事 IT 部门都会问,而这个插件一条都给不了标准答案。

靠 AI 吃饭的开发者:把它当“临时备用通道”,别接进正经流程。它的命脉不在自己手里——OpenCode 改一次指纹、Kilo 改一次政策、作者停一次服务器,你的工作流就断一次。

最后

6.8 万星,买的不是“免费模型”。

买的是“不用注册、不用 Key、装上就能用”的那一下爽感。

但免费的东西,账单总会以另一种形式出现:你的 prompt 去了上游,你的账号登录态存在插件里,你的工作流建在一条随时会断的指纹上。

它最值钱的地方,其实不是让你省下那几十美元 API 费,而是把“免费层经济学”演给你看:

只要存在“只给自家客户端用的免费额度”,就一定会有人把它通用化;而上游的解法,从来不是客户端识别,而是配额和计费设计。

至于这个插件,我的建议很简单:

可以读,可以学,可以拿来应急。

别把秘密交给它。


参考来源:

评论

暂无评论。

登录后可发表评论。