“星光手账 · Handbook”
“独立提出、独立 own 的从 0 到 1 项目。一个用户×NPC 维度的策展编辑器,把散落在各功能的 AI 生成产物编排成可分享的手账。17 天从 PRD 到提测。”
一个没人做的需求
我们的产品整了很多活。卡牌、秘密空间、NPC 手机、装扮、朋友圈、表情包……每一个都是完整的产品链路:给大模型输入角色信息和用户数据,生成一个特定主题的最终产物。用户花钱买了,看完一次就走了。
这些产物散落在各个功能里。用户和 AI 角色的关系明明很深,但没有一个地方能把这份关系完整地呈现出来。
我觉得需要有一种方式将这些产物整合起来,给用户一个能够编排和展示的空间。于是我写了 PRD:一本可翻页、可装饰、可分享的电子手账——不是创作工具,而是策展已有的情感产物。
这个需求之前有人提过。运营觉得需要,但难以估计实现难度;研发觉得交互逻辑打磨很麻烦。一直没人 own 它。
五一假期的伏笔
五一假期我做了一个个人项目——“过期糖果 · 明信片桌”:一个可以拖拽、缩放、旋转明信片的网页画布。初衷是为了跳过摄影师——在网页上布置一个策展环境,截图直接当效果图。
做完之后我意识到:这不就是手账编辑器的核心交互吗?放缩、旋转、图层——技术上验证过了,我能做出来。
19:00 打磨完,19:30 上评审
5 月 13 日,19:30 的需求评审会。19:00 我才把 demo 打磨到差不多像话的水平。我问 mentor:能上需求评审不?他说:上。
于是我紧急上了。在会上云淡风轻得像个干了几年的正职,但实际上这是我第一次在公司 own 一个从 0 到 1 的项目。
评审会上 0 个人有异议。有同事说:这个需求是不是很久以前有人提过,研发说不好做。产品总监说:别听研发的,我看这个都快做完了。
第二天,评审正式通过。批注:产品自己先做,找个研发带下。
兴奋和慌张各占一半。
第一周:陡峭的学习曲线
我有 Python 经验,TypeScript 会一点,Go 完全没碰过。“大型项目协作”对我来说只是一个抽象的概念。
我用一套 AI 辅助开发工具链来做这个项目。第一周极度痛苦——不只是语法层面的问题,而是“工业级项目里每一个文件都有自己的位置和约定,而我不知道这些约定”的问题。
最深刻的教训是一个 CAS 乐观锁被“锁死”的 bug:自动保存带着 version 号做并发控制,服务端 HTTP 200 返回但 body 里藏着业务错误,前端把脏的 version 存进了 store。之后每次保存都永远对不上,但因为 HTTP 层面是 200,前端完全不知道自己已经“中毒”了。用户的编辑全部丢失。
小项目里 200 就是成功;大项目里 200 只是信封,信的内容可能是坏消息。
产品我给研发我加需求
技术方案定稿后,我发现了一个遗漏——卡牌故事组件没写。
这个组件是前一个项目(Card-Neo)和手账之间的桥:我在 Card-Neo 里预埋的故事、台词、语音字段,终于有了一个完整的渲染出口。如果不做,策展深度少一层;如果做,等于我自己埋的钩子在这里被回收了。
最后我上演了一出经典剧目——研发做了一半,突然被产品加需求。所不同的是,这次研发是我自己,产品也是我自己。
“产品我”的判断是——就算被“研发我”骂,这个需求也要加上。
全链路调试
接入原生 app 后,分享功能彻底挂了。每次 debug 都像开盲盒:
修了 JSB bridge 不兼容 → 图片全黑(SVG 不渲染 offscreen 元素)→ 字体消失(11.6MB 字体需要 base64 内联)→ 后端页数隔离 bug(第一次改 Go 代码)→ 分享返钻没接入(需要理解 Activity 框架注册机制)……
pipeline 每跑一次五六分钟,都是煎熬。但每一层的修复都很干净——因为我参与了技术方案设计,知道链路该长什么样。
Code Review
MR 提交后,mentor 给了四条 review。每一条都不是“你写错了”,而是“你可以做得更对”:
- 前端不该有 800 行硬编码素材数据(走配置中心)
- 页面价格不该放代码里(走远程配置)
- handler.go 不要内联业务逻辑(参考其他功能的分层模式)
- 页数计算不能 hardcode “3 页免费”(从数据动态推导)
每一条当天解决。这是我第一次经历真正的工程 code review。从中学到的比写代码本身还多。
设计打磨
作为产品经理,我对“能用”和“好用”之间的差距有天然的感知。
分享图的每一个像素都被我在测试机上审视过:logo 尺寸、金色色值、二维码样式(金色边框 + 白底黑码)、副标题文案、QR 链接(从官网首页改为直达角色对话页)、国内/海外环境自适应、导出分辨率。
这不是在写代码。这是在打磨产品。
回看
5/13 评审通过
5/29 测试环境提测
17 天。独立提出、独立 own。技术方案 4 轮迭代。15 个前端组件,7 个后端方法,3 张数据表。两个仓库,三十多次 commit。
手账本不是一个 AI 产品。它是胶水。把 AI-native 的产物与用户体验胶合在一起。我们不应该为 AI 而 AI——模型生成了卡牌、生成了日记、生成了秘密空间,但如果这些产物散落各处、看完即走,那 AI 的价值就没有被充分交付给用户。
手账本把它们编排在一起,让用户说出“这是我和 TA 的故事”。