Repository navigation
v0.1.12
通过 CPA 插件商店安装(推荐)
本插件已收录进 CPA 官方插件源,无需额外配置三方源。
在管理面板的插件商店里直接搜 FreeTier 2API 一键安装即可。
手动安装
下载对应平台的 freetier2api_<版本>_<goos>_<goarch>.zip,解压后把其中的
freetier2api 动态库放进 CPA 的 plugins/ 目录。
归档里已经用的是宿主要求的 freetier2api{ext} 文件名,解压后无需改名。
| 平台 | 下载归档 |
|---|---|
| Linux x86_64 | freetier2api_<版本>_linux_amd64.zip |
| Linux arm64 | freetier2api_<版本>_linux_arm64.zip |
| macOS Apple Silicon | freetier2api_<版本>_darwin_arm64.zip |
| macOS Intel | freetier2api_<版本>_darwin_amd64.zip |
| Windows x64 | freetier2api_<版本>_windows_amd64.zip |
checksums.txt 可用于核对归档完整性;配置与账号导入见仓库 README。
本版要点
fix: ZCode 套餐领取补上活跃上报,持有判读改用 billing/balance,提升至 0.1.12
问题:官方 ZCode 客户端显示账号有可领套餐且能领,插件控制台却把按钮永久
置灰成「已领取」,实际上一个套餐都没领到。控制台的按钮状态只由
ClaimStatus.Claimable(= offered − held)决定,因此问题出在对上游的两处读数
上,而非领取链路本身。
根因一:preview 之前缺少年度活跃上报(主因)
- 活动套餐的投放以「当日活跃」为资格信号,而不是纯粹的账号权益快照。
官方桌面端每次启动发 app_launch、每个自然日发一次 app_daily_active
(packages/services/src/telemetry/telemetryCore.ts),缺这两条事件的账号
billing/preview 恒空。 - 插件从不发送,于是 offered 为空 → claimable=0 → 页面显示「已领取」。
这解释了为什么表现为「客户端有、插件没有」且不报错。
根因二:持有集合读了已废弃接口
- billing/current 已被官方标注废弃(codingPlanProviderAvailability.ts、
bigmodelUsageQuotaProvider.ts),持有套餐的权威来源是 billing/balance 的
data.plans。旧接口返回空时 held 恒空,会朝相反方向出错(全部误列为可领)。 - 同时补齐官方对 plans[] 的过期归一:status=active 但 ends_at 早于服务端时间
应视为 expired,否则活动结束后按钮会一直灰在「已领取」。
改动:
- 新增 internal/vendors/zcode/activation.go:按官方 sendReport 的 16 字段上报
app_launch / app_daily_active,每账号每自然日一次(进程内去重,与 claimGate
同一套「状态属于实例」约定,不引入 state 依赖)。仅凭 JWT 解出的 user_id
归属,不带 Authorization(官方该端点同样匿名)。上报失败不阻断 preview,
但会记录原因。 - 重写 fetchPlanSnapshot:先上报活跃 → billing/balance(一次拿齐 plans +
balances + server_time)→ billing/preview。删除废弃的 PathBillingCurrent,
额度查询由 3 次请求降为 2 次,balance 不再重复取数。 - heldPlanIDs 改从 balance 的 data.plans 判定,并接受服务端时间做过期归一。
- claimStatusOf:preview 成功且确实无投放才是「已领取」;活跃上报失败导致的
空列表改为携带 Error,页面保持按钮可点并显示原因,不再谎报。 - FetchQuota/PreviewPlans 收敛为 adapter 方法(上报去重需要实例状态)。
其他:
- 控制台模型表状态列文案「已禁用」→「禁用」(账号表不变)。
测试:新增 activation_test.go(事件体 16 字段逐项校验、每日去重与失败撤销、
账号时区下的自然日)与 heldPlanIDs 过期归一等用例,全部不触网。
Co-Authored-By: Claude Code noreply@anthropic.com
Full Changelog: v0.1.11...v0.1.12