我会把工具分成两类:直接影响收入的第一周接好,只影响舒服程度的晚一点买。判断标准不是功能多不多,而是半夜出事时你能不能独自恢复。

7 层工具栈责任表

先建一张「工具栈责任表」。这张表比 Notion 里收藏 30 个 SaaS 更有用,因为它写的是谁负责、哪里告警、坏了怎么退回。

层级默认选择后台字段或材料出事时先看哪里
Web 应用Next.js、Rails、Laravel 三选一release id、commit sha、环境变量版本部署日志、错误日志、最近一次发布
数据库Postgresmigration id、backup timestamp、connection pool慢查询、连接数、备份恢复点
支付Stripe Checkout 或 MoRCheckout Session id、customer、subscription、payment_statuswebhook 日志、订单表、Stripe Dashboard
邮件Resend、Postmarkmessage id、bounce reason、suppression list退信列表、发送域名、DKIM/SPF
错误日志Sentryrelease、environment、user id、trace id最近 24 小时新增 issue
行为分析PostHog、Plausibleuser id、feature flag、conversion event付费漏斗、按钮点击、页面路径
模型调用OpenAI、Anthropicmodel、input tokens、output tokens、cache tokens、cost单用户成本、单功能成本、失败率

如果一个工具不能填进这张表,先别买。它可能很好用,但不一定适合一人公司。

付款层要记哪些字段?

Stripe Checkout 的核心对象是 Checkout Session。不要只保存一个「支付成功」布尔值,后面退款、发票、订阅升级都会追着你要原始字段。

Stripe 字段存到你数据库的用途
id作为订单和 webhook 幂等键,避免重复开通权益
mode区分一次性付款、订阅和保存支付方式
payment_status判断 paidunpaidno_payment_required
status区分 Session 是 opencomplete 还是 expired
customer绑定用户和 Stripe Customer
customer_details.email账单邮件和客服检索
subscription订阅产品的续费、取消、升级入口
payment_intent一次性付款的争议、退款、风控排查
metadata.user_id把 Stripe 事件映射回内部用户

Stripe fulfillment 文档强调,履约不能只靠 success_url。用户付款后可能关闭浏览器,或者网络中断,成功页没有被访问。你要监听 checkout.session.completed,延迟支付方式还要看 checkout.session.async_payment_succeeded。履约函数用 Checkout Session ID 重新 retrieve,并写成幂等逻辑。

模型成本日志第一天就做吗?

做。AI SaaS 和普通 SaaS 的差别在毛利会被单个用户吃掉。Reddit 上有团队因为 OpenAI 用量拿到 3000 美元 surprise bill 的案例,很多小团队的真实问题不是模型不会用,而是月底才知道哪个功能在烧钱。

最低限度,把这些字段写进 ai_usage_events 表:

字段例子为什么要存
user_idusr_123找出亏钱用户
feature_idpdf_summary比较功能毛利
provideropenaianthropic供应商账单对齐
modelgpt-5.5claude-opus-4-7追踪模型切换影响
input_tokens1200普通输入成本
output_tokens400输出成本通常更贵
cached_tokensOpenAI 的 usage.prompt_tokens_details.cached_tokens看 prompt cache 是否真省钱
cache_read_input_tokensAnthropic 的缓存读取 tokens计算缓存命中后的成本
cache_creation_input_tokensAnthropic 的缓存写入 tokens避免把首次写缓存当成异常
request_cost_usd0.014按请求算毛利
latency_ms1800区分成本问题和体验问题
error_coderate_limit_exceeded处理限流和重试

OpenAI prompt caching 会在 usage.prompt_tokens_details.cached_tokens 里返回缓存命中 token。Anthropic prompt caching 会返回 cache_read_input_tokenscache_creation_input_tokensinput_tokens。注意 Anthropic 文档里说,启用缓存后 input_tokens 只代表缓存断点之后的新输入,总输入要把 cache read、cache creation 和普通 input 加起来。

哪些后台先别买?

先别急着买 CRM、复杂工单、A/B testing、数据仓库、销售自动化、社媒排程。它们都可能有价值,但早期很容易变成「为了管理不存在的团队而买的工具」。

一人公司最先要稳定的是这 5 件事:

  1. 用户能登录。
  2. 用户能付款。
  3. 支付后权益能开通。
  4. 模型调用失败会降级或提示。
  5. 成本异常当天能报警。

做到这 5 件事,再去买让你舒服的工具。

后台权限和网络环境怎么收口?

支付、模型、部署和银行后台不要散在十几台设备上。Stripe webhook 排查、OpenAI 用量查询、Anthropic prompt cache 调试、Cloudflare 或 Vercel 回滚,经常会在同一个晚上发生。

我的做法是把财务和部署后台放进一套固定设备、固定 2FA、固定恢复码的清单里。跨城市办公或出差时,可以用海外银行 + Stripe + AI 工具全场景承载这些关键后台操作。这里解决的是登录连续性和后台可用性,不是给普通浏览做加速。

上线前检查表

检查项合格标准
Stripe webhookcheckout.session.completed 写入订单,重复事件不会重复开通
Success pagesession_id 查询状态,但不承担最终履约
模型成本每次请求能查到 user、feature、model、tokens、cost
Prompt cacheOpenAI/Anthropic 缓存字段进入日志,不靠感觉判断是否省钱
告警支付失败率、模型失败率、单用户成本、队列堆积都有阈值
备份数据库备份能恢复到最近 24 小时内的可用点
密钥Stripe、OpenAI、Anthropic、邮件服务密钥都有轮换记录

一人公司的工具栈要像背包。背包太重,你走不远;背包太轻,第一次下雨就会崩。

相关阅读