Day 27:一天 98 次 Commit
盘盘猫开发日记写到第 27 天,撞上了整个项目最高产的一天:98 次 commit,三个全新产品(AI 起名、配对分析、流年运程)从零写到上线。能跑这么快,主要是之前几周打的地基在这一天集中兑现。
多臂盘盘猫同时开发多个产品的巅峰产出插画
先到位的两个重构
15 条流式路由标准化(PR #16)
此前 15 条 API 路由,每条都维护着一套自己的 ReadableStream 实现。PR #16 把它们全部迁移到共享的 createAIStreamResponse() 上:24 个文件变更,新增约 1,600 行,删除约 2,000 行,净减 400 行。顺带加上了生命周期钩子:initEvents、onComplete、onError、refundCreditsOnError。
有三条路由确实需要保留自定义处理:MBTI 聊天用累积缓冲区的差量模式,要从用户可见的文本里剥离内部信号标记;梦境长篇解析走多步骤生成协议;每日运势不走流式,带服务端缓存。这次迁移新增 36 个测试,@panpanmao/api 一共 173 个测试。
集中化成本日志(PR #21)
之前每条流式路由都有一段一模一样的样板代码:创建 cost logger,再用 as never 类型断言插入记录,绕过 Supabase 的类型限制。PR #21 用 createRouteCostLogger() 替换掉 20 个文件里的这个模式,类型绕过集中到一处,不用再到处复制。改完之后 1,942 个测试全部通过。
两个重构做完,"新增一个 AI 功能"的模板代码从每条路由约 80 行降到约 15 行。后面能一天上三个产品,靠的就是这 80 行到 15 行的差距。
三个新产品
AI 起名,4 小时从零到上线
中国人给孩子起名是件认真事:名字要关联八字五行求平衡,要看笔画吉凶的数理,还要顾家族的起名规则。找大师起一次名,要 200 到 2000 元。AI 的做法是根据出生数据排出五行格局,找出需要加强或平衡的元素,再生成名字,让每个字的五行属性、笔画数、音韵和语义都对得上。领域知识包里装着字-五行映射表、笔画数据库和起名规则。
从零到上线大约 4 小时。这 4 小时里 AI 写代码只是表层,真正省时间的是基础设施:认证、积分、流式传输、错误处理、内容过滤、历史保存,全部来自共享包,唯一需要新写的只有领域知识和 UI。
配对分析,算命的头号场景
根据两个人的姓名和出生信息分析缘分:五行相生相克评分、日柱和合分析、字级的五行互动,结果可以分享出去。算命这个市场最大的需求就是感情,配对自然成了最常见的使用场景。
流年运程,三个里最重的(PR #85)
这个产品上了一个全新的领域模块 domains/liunian/,里面有计算器(生肖、太岁分析、流年飞星、五行年运)、知识数据包(星曜目录、星曜-年份映射、太岁冲犯规则、生肖性格画像),还有 AI 提示词模板。一共 48 个文件变更,162 个领域测试通过。前端做了渐进式渲染:太岁横幅和流年飞星靠计算即时展示,AI 运势内容通过 SSE 逐步流入。
PR #96 后来修了一个挺微妙的 SSE 解析 bug:liunian 的 hook 在主读取循环里只解析以换行符结尾的完整帧,而最后一帧(chunk 加 done,但没有尾部换行)是作为尾部缓冲数据到达的,于是 hook 丢掉了 done 事件,给用户显示一个误导性的网络错误。其实解读早就完成了。修复方式是在终结化阶段刷新 decoder,把尾部缓冲里的 SSE 事件也解析掉。
城市库只有 46 个城市,北上的测试用户发现不了
同一天,PR #34 修了一个用户报告的 bug:八字的城市搜索库里只收录了 46 个中国主要城市,贵州的用户搜黔西南、黔东南这样的自治州,找不到自己的出生地。修复后数据库从 46 条扩到 379 条,覆盖全部 333 个地级行政区划(地级市/自治州/盟/地区)。每条带经纬度、所属省份和简称匹配的别名,外加 5 个新的地理编码测试。测试用户全在北京上海的话,这种 bug 永远发现不了。
AI 干活,我决策
Git 历史里散落着 claude/ 和 codex/ 分支,实际的工作流已经收敛成固定的六步:
-
我描述产品概念和需求
-
Claude Code 按已有的
createAIStreamResponse()模式创建 API 端点 -
另开一个 session,用共享组件库搭 UI
-
我 review、手动调领域 prompt,然后 merge
-
集成测试、积分消耗注册、Hub 卡片创建
-
部署
做到第三个产品时,这套流程已经接近机械化。前几个产品搭得费劲,后面每个都明显更轻松,架构的复利效应在这一天体现得很直接。
保守估计,今天 95% 的代码是 AI 生成的。我负责产品决策、review 输出、编写领域 prompt、处理集成,AI 负责写实现。剩下那 5%,也就是 prompt、产品判断和集成胶水,才是让它成为产品而不是 demo 的部分。
平均 9 分钟一次 commit
98 次 commit 摊在大约 15 个小时里,平均每 9 分钟一次,这个节奏肯定不可持续。但就算把数字打个折,一天之内上线三个产品,每个都带真业务逻辑、真 AI 集成、真积分经济、真数据持久化。这和"快速行动、打破一切"是两码事。产品方向到现在攒了 9 个,盘盘猫还是不会看手相。