GeminiDesktop GeminiDesktop
教程指南

BYOK + Trial 混合定价:为什么我们让自带 key 的用户永远免费

发布于 · 作者: GeminiDesktop Team

BYOK + Trial 混合定价:为什么我们让自带 key 的用户永远免费

结论先行: 2026 年 AI 应用主流有两种定价——Cursor/Perplexity 的纯订阅,Zed/Continue 的纯 BYOK。前者把 API 成本算进订阅里卡流量,后者把成本全部推给用户。我们在 Gemini Desktop 上跑了第三种路线:Beta 期全免,GA 后一次性买断 + 7 天 trial,BYOK 用户永久免费。三个月数据显示:BYOK 转化率 31%,一次性买断转化率 12%,远高于订阅产品的平均水平。

一句话总结: 用户自己出 key 的时候我们不提供云算力,理论上也就没有成本;拦着不让用既反商业逻辑也反伦理。Trial 是给“不想自己折腾 API”的人准备的缓冲期,不是减配功能。

主流 AI app 的两条定价路线

先把 2026 年我能想到的典型 AI 工具排一下:

产品 定价路线 月费 BYOK 选项
Cursor 纯订阅(含 API 算力) $20 / $40 有,但减配(只能用自己 key 的部分模型)
Perplexity Pro 纯订阅(含搜索 + 模型算力) $20
Claude Code 纯订阅(Anthropic 账号绑定) $100+
Zed 纯 BYOK(编辑器本身免费) $0 必须
Continue.dev 纯 BYOK(开源) $0 必须
Warp 订阅 + BYOK 混合 $15 + BYOK

纯订阅路线的问题:用户付的是 API 成本 + 产品毛利,但 API 价格一年降一半,订阅价格不会降。纯 BYOK 路线的问题:面向普通用户的门槛太高,让非技术用户去 Google AI Studio 申请 key 基本等于放弃他们。

我们想做的是一款桌面 AI 工具,同时接住“技术型重度用户”和“付费省事用户”。于是走了第三条路。

为什么选 “Beta 全免 + GA 一次性 + BYOK 永久免费”

桌面端 Gemini Desktop 的定价结构是:

  1. Beta 期间全免费 —— 所有功能开放,无 paywall,拿数据 + 磨产品
  2. GA 之后切换到一次性买断 $49 —— 一次付费、永久激活,不按月订阅
  3. Trial 7 天免费 —— GA 之后的新用户有 7 天完整体验
  4. BYOK 永久免费 —— 任何时候只要用户配置了自己的 Gemini API key,paywall 自动消失

这四条不是“营销组合”,而是各自回答一个具体问题:

  • Beta 全免:不知道产品最终形态时,盲目收费是浪费用户信任
  • 一次性 $49:桌面端用户反感订阅,一次性买断符合桌面软件的心智锚点(参考 Sketch、Things、Cleanshot)
  • 7 天 trial:不想折腾 API 的用户也能完整体验再决定
  • BYOK 永久免费:下一节会专门讲

技术实现:Zustand persist + GA_LAUNCH_UNIX 单常量

定价逻辑最容易翻车的地方是“时间点判断”——Beta 期 vs GA 后、Trial 是否启动、还剩几天——每一条都依赖“服务端还是客户端当前时间”的判断。

我们的做法是把 GA 时间点写死成一个常量,所有判断都基于客户端本地时间 + 这个常量:

// shared/pricing.ts
export const GA_LAUNCH_UNIX = 1_735_689_600_000 // 2026-01-01 UTC
export const TRIAL_DURATION_MS = 7 * 24 * 60 * 60 * 1000

export function isBetaPeriod(): boolean {
  return Date.now() < GA_LAUNCH_UNIX
}

export function getTrialState(startedAt: number | null): TrialState {
  if (isBetaPeriod()) return { kind: 'beta' }
  if (!startedAt) return { kind: 'not-started' }
  const elapsed = Date.now() - startedAt
  return elapsed < TRIAL_DURATION_MS
    ? { kind: 'active', remaining: TRIAL_DURATION_MS - elapsed }
    : { kind: 'expired' }
}

Zustand 里用 persist 做 localStorage 持久化,再加一层冗余写入:

export const usePricingStore = create<PricingState>()(
  persist(
    (set, get) => ({
      trialStartedAt: null,
      licenseKey: null,
      byokApiKey: null,
      ensureTrialStarted: () => {
        const { trialStartedAt } = get()
        if (trialStartedAt || isBetaPeriod()) return
        const now = Date.now()
        set({ trialStartedAt: now })
        localStorage.setItem('gd_trial_at', String(now)) // 冗余
      },
    }),
    { name: 'gemini-desktop-pricing' }
  )
)

两个关键点:ensureTrialStarted 是幂等的(已启动就不重置),localStorage 冗余防止 Zustand persist 版本迁移时丢数据。

7 天 trial clock 启动逻辑

Trial 什么时候开始?我们试过两种方案:

  • 方案 A:首次启动即 Trial —— Beta 期安装的用户一打开就开始倒计时 → 问题:Beta 还没结束 trial 已经过期
  • 方案 B:只在 GA 之后启动 —— ensureTrialStartedisBetaPeriod() 时直接返回

方案 B 是正确的。GA 切换那一刻,所有现有 Beta 用户的 trial 才开始计时,体验上是“给老用户 7 天过渡期”。

ensureTrialStarted 在三个地方调用:应用启动、打开 paywall、调用任何消耗算力的功能。幂等性保证多次调用等价于一次。

BYOK 跳过 paywall 的道德判断

纯订阅派的人会说:“BYOK 用户绕过 paywall 是免费吃 UI 层价值,应该收’软件许可费’。”

Cursor 就是这个思路——你自带 key 也只能用阉割版的功能集合。

我们没这么做,理由有三条:

  1. 商业逻辑:用户的 key 意味着算力 API 成本由用户自己承担,我们没有任何可变成本。既然没有成本,收费的依据就只剩“软件许可”。但软件许可这件事在一次性买断($49)里已经收过了。
  2. 伦理判断:用户愿意出 key 通常意味着他是技术用户,对 API 价格敏感、自己做成本控制。在这类用户面前立“你用自己的 key 我还要收你软件费”的墙,本质是双重收费。
  3. 获客效率:BYOK 用户是最强的口碑放大器——他们把产品分享给同事的时候,往往附带一句“用自己的 Gemini key 就能免费用”。这句话的转化效率比任何广告都高。

从数据看,BYOK 用户的 30 天留存是一次性付费用户的 1.4 倍。这群人不是流失,而是活跃用户的核心。

License key UX:LemonSqueezy receipt → paste → activate

一次性买断用的是 LemonSqueezy。用户付款流程是:

  1. Paywall 点击 “Buy $49” → 跳转 LemonSqueezy checkout
  2. 付款完成 → LemonSqueezy 发送 receipt 邮件,内含 license key(一串 UUID)
  3. 用户回到 Gemini Desktop → 设置面板 → “I have a license key” → 粘贴 → 激活

MVP 版本完全没有服务端校验:客户端直接检查 key 格式是否匹配 UUID 正则,匹配就 unlock。听起来粗糙,但对一次性买断 + 桌面端来说已经足够——破解的成本远高于 $49。

这套 UX 刻意避开了“登录账号”这个动作。桌面端用户不喜欢账号,一次性买断更应该是“买了 = 拥有”。

Trial ≠ “付费功能减配”

很多订阅产品的 trial 是“缩水版”:限制导出、限制模型数量、水印。我们的 7 天 trial 给的是完整功能,和付费版一模一样。

这背后是“trial 到底在解决什么问题”的理解差异:

  • 订阅思路的 trial:目的是让用户产生“付费后更好”的期待 → 所以要阉割
  • 一次性买断思路的 trial:目的是让用户彻底验证“这个软件是不是值得买 $49” → 所以要完整

阉割版 trial 在一次性买断场景下会产生反作用——用户体验不到完整功能就不会买断,结果你既没收到钱也没留住用户。

没做的:server 端 entitlements / webhook 签名校验

为了快速上线,下面这些“理论上应该做”的我们暂时都没做:

  • 服务端 entitlements service:license key 的激活状态全部在客户端判断,没有服务端数据库
  • LemonSqueezy webhook 签名校验:不接收 webhook,也就不存在伪造问题
  • 设备数限制:同一个 key 可以在多台机器激活,没有设备指纹
  • revoke 机制:退款时我们只能相信用户会自觉卸载,无法远程 disable key

这些在规模更大之后都要补。但桌面端一次性买断 + MVP 阶段,这套简化方案的转化漏斗摩擦最小。

想看更多桌面端 AI 应用的产品细节,可以读 Gemini Mac App 还缺的 6 个功能,这是我们做 Gemini Desktop 时的另一篇复盘。

常见问题

Q1: 为什么不做订阅?

A: 桌面端用户的心智锚点是“一次性”。看看 Things、Cleanshot、Sketch、Things 3——所有顶级桌面端生产力工具都是一次性买断或混合模式。订阅在 Web 端是标配,在桌面端是逆人性。

Q2: BYOK 不会让你们收入下降吗?

A: 短期会有一部分“本来会付费的用户”转 BYOK。但这部分用户本来就是“对 API 成本敏感”的高感知群体,继续留在付费漏斗里的概率也低。让他们 BYOK 反而把他们从“可能流失”转成“活跃用户 + 口碑放大器”。

Q3: Trial 期结束后,用户怎么知道该买断还是 BYOK?

A: 我们在 Trial 还剩 2 天和到期时弹双选 paywall:左边“$49 一次买断“、右边“粘贴自己的 Gemini API key 永久免费用”。用户会按自己的技术水平选。

Q4: 这套定价适合所有 AI 应用吗?

A: 不。它适合可以 BYOK 的 AI 应用(用户自己出模型算力成本)。如果你的产品包含 RAG、向量数据库、爬虫等有服务端成本的部分,纯 BYOK 不能 cover,还需要订阅或充值。

结语

定价是产品哲学的外化。我们选择 BYOK 永久免费 + 一次性买断,本质是尊重“用户自己出成本”这件事,同时承认桌面端用户不喜欢订阅。这套组合不适合所有 AI 产品——但如果你正在做一款“客户端重、云成本轻”的工具,值得试试第三条路。