Product taste · AI-native workflow
一个人,如何用 AI 把想法变成上线的产品?
- Claude Code写代码、造关
- Codex审计、测试
- Kimi配色、场景
格织是我一个人做的数织游戏。产品上的每个取舍由我来定;写代码、造关、审计,交给三个 AI 模型分工完成。下面是它从一个想法走到 App Store 和 Google Play 的全过程。
- 600
- 关精选像素画
- 9
- 种语言
- 170+
- 个国家和地区上架
- 952
- 张候选被我淘汰
中国大陆因游戏版号问题,暂不支持 App 下载;可体验网页试玩。
上架过程:从真机测试到双平台发布
- iOS:先用 TestFlight 在真机上测,首次审核被要求补充信息(Guideline 2.1),我录了一段真机演示提交上去:从启动走过 5×5、10×10、每日挑战、购买、付费画册、设置和收藏。审核通过,在 170 多个国家和地区上架。
- Google Play:已正式上线,现可通过公开商店页下载。上线前完成了封闭测试,并配置数据安全、内容分级、内购和供审核员解锁完整版的审核码。
03技术栈
一套 React 交互,跑在网页、iOS 和 Android 上
格织的核心是一块最多 225 格、要被手指反复拖动的棋盘。我用 React + TypeScript 把全部交互只写一次,再用 Capacitor 包成 iOS 和 Android 应用;网页试玩跑的也是同一份代码。振动、iOS 从左边缘滑动返回、商店内购这些只有手机系统才有的能力,分别用各平台的原生代码来做。正因为核心只写一次,我一个人才维护得了三个平台。
完整过程
- 游戏:React 19、TypeScript、Vite、Vitest。
- iOS 和 Android:Capacitor 8。iOS 接 StoreKit 2,Android 接 Play Billing。
- 内容与每日挑战:Cloudflare R2 + CDN。官网:Cloudflare Workers。
- 测试:自动测试之外,iOS 用一台 iPhone X(iOS 16)测旧设备,另租一台 iPhone 17 测新系统;Android 在真机上调触感。
04玩法
手感藏在细节里
解一局数织,手指要在棋盘上拖几百次,所以我把手感放在第一位:振动、声音、拖动够不够流畅,还有通关时那段揭晓动画。好不好玩,往往就取决于下面这些不起眼的地方。
操作
- 自动补叉一行涂够了,剩下的格子自动标叉。
- 简易模式默认点一下就能把叉改成方块;严谨模式要先擦掉叉,留给老玩家。
- 撤销按一笔算拖了一整行,撤销就撤一整行。
- 重开先确认清空棋盘前先问一句,误触不会让半局白做。
- 画册与收藏600 关收进 16 本主题画册,解一关,收藏里多一幅画。
为什么这样做
- 反馈越少见的时刻,反馈越重一局要涂几百格,每一格都有一下短振和一声轻响;涂完一整行,那一下更重;只有通关,才有一段渐强的振动和音效。
- 节奏揭晓分阶段展开通关后,棋盘收拢,浮出“藏品解锁!”,最后升起成绩卡。前几段动画有所重叠,成绩卡最后出现,让画先留一会儿。
- 性能流畅高于特效揭晓原本是画面从模糊慢慢变清晰,更好看,但每次打开 App 后的第一次通关都会卡一下。我选了流畅,把它删了。
- 品牌图标也是一局数织图标在 Claude Design 里做,本身就是一小盘数织:只用两种颜色,格子和 App 里一样有厚度,留着一个叉,最后一格还悬在半空,背后叠着画册。
看截图4
完整过程
- 反馈按一局里出现的次数分三层:涂格子(几百次)、涂完一行或一列(十几次)、通关(一次)。涂色、画叉、擦除各有不同的振动;一笔拖过去,后面的格子振得更轻,但每一格都还摸得出来。我试过换成系统最弱的那种振动,结果整笔像从手上消失了。默认档位下,涂完一行时那一格换成两下紧挨着的短振,手上是更重的一下;通关是渐强的三拍,配上音效和揭晓动画。设置里的强度原本是低 / 中 / 高三档,在安卓真机上一测,高档和低档是同一个波形,于是改成“优雅 / 鲜明”两档。
- 揭晓分四步,各有各的时间:0–0.74 秒棋盘收拢,0.30–1.16 秒“关卡解锁!”逐字浮现,0.26–1.16 秒棋盘上移让位,1.20–1.82 秒成绩卡升起。早期版本把这些挤在 1.07 秒里一起发生,画刚成形就被推走,眼睛不知道该看哪里。
- 删掉模糊:揭晓原本是画面从模糊变清晰。整个 App 只有通关时才会画这种模糊效果,每次启动后第一次画它,画面就会卡一下,这正是“第一次通关卡一下”的原因。我的原则是流畅永远高于画质和特效,所以删掉了;现在标题醒目只靠字号、字重和颜色。
- 图标:用 Claude Design 做,选的是第 6c 版 Steel navy。底色是夜里的藏青,格子和 App 里一样有厚度、按下会下沉;右下留着一个叉,画叉是解题的一部分;最上面一块悬在半空,是揭晓前的最后一格;背后叠着的几页是画册。
05提示
只教你,不替你下
几乎每款数织游戏都有提示,代码也不难写。常见的做法有两种:限定次数,用完付费;或者直接替你涂上一格。前者让人卡住时先犹豫要不要花钱,后者涂完了,你还是不知道它为什么对。
格织的提示免费、不限次数,而且只教、不替你下。按一下,它读取当前盘面,找出此刻最容易看懂的那一步,点亮那一行或那一列,再用一句话讲清为什么。格子由你自己涂。
一个盘面上常常有十几行都能往下推。程序按顺序一行行扫,但人不是这样看的:一行 10 格里的数字 9,扫一眼就知道中间几格必涂;要同时盯着 5 和 3 两个数字的那一行,就得想一会儿。所以提示按“看懂要费多少力”来排,先给最省力的那一步。它也不照着答案告诉你涂哪格:照答案涂也能涂完,但只有顺着人的思路一步步推,玩家才学得会。
所以提示同时也是教程:第一关的新手教学用的就是它,之后遇到没见过的推理技巧,也由它来讲。在 AI 能替我写的代码之外,这是我最在意的一个产品决定。
「数字 9 不管放哪,中间这几格都一定会涂到。」
完整过程
- 每条提示只分析一行或一列:当前盘面上已经涂了什么、叉了什么,加上这一行的线索。推理的手法有七种,从「线索正好占满整行」到「空隙塞不下任何一段」。
- 排序看的是「看懂这一步要费多少力」:手法本身的门槛、要同时盯着几个数字、这一步能不能涂(只能画叉的步骤更难看出来)。同样好懂的,再比能推出几格。
- 唯一会对照答案的时候,是检查你有没有涂错:一旦发现涂错,提示会先告诉你错在哪一行,而不是在错误的盘面上继续推。
- 如果还是没看出来,不涂任何格子再按一次,它会把与第一条线交叉的那条线也点亮,交点就是这一步说的那一格。两条线一交叉就等于给出答案,所以要你再问一次才给;再往后,无论按几次,它都不会替你涂。
- 开发时踩过的坑:第一版提示的结论来自程序求解,相当于先知道了答案,再配上一段通用的说法;那段说法假设这一行还是空的,没看你已经涂了什么、叉了什么。结论是对的,推理过程却不是人会有的:我在真机上看到,一行 5 格、两端已经画了叉,数字 3 其实只剩一个位置,提示却还在说“考虑 3 的可能位置,它们存在重叠区域”。后来改成只在这一行当前真正放得下的位置里推,并写了测试钉住:提示推出的每一格,都必须和关卡校验用的逐行求解程序一致。
06关卡生产
AI 出候选,机器检查,我终审
600 幅画,我一个人画不完。于是我搭了一条流水线:AI 按主题批量出候选,每张先过自动检查(只有一个解、能靠推理解开、不和已有关卡重复、配色可用),然后我一张张看,决定留下、返工还是淘汰。到现在,正式库留下 600 关,被我淘汰的候选有 952 张。
- AI 出候选题材、构图、配色
- 自动检查唯一解 · 推理可解 · 查重 · 配色
- 我终审留下 · 返工 · 淘汰
- 进入正式库接进游戏、回归测试、发布
完整过程
- 自动检查:数据格式、只有一个解、只靠一行一行推理就能从空棋盘解到底、不用猜、旋转和镜像后也不和已有关卡重复、每种颜色都真的用到。正式库 600 关全部通过(2026-09-21)。
- 我的判决理由大致三类:画得不像、题材太小众(多数人认不出),还有一类是有救的,退回返工。
- 造关和上线是两个分开的 skill:造关的 skill 做到交出候选为止,由我终审;通过的关卡再交给上线的 skill,负责接进游戏、跑回归测试和发布。
- 一次对比(2026-08-12):我把造关的 skill 写得更复杂(v7.1),同一天新旧两版各做 36 关交给我终审,通过数反而从 25 降到 20。于是只保留查重和交接格式,多加的自查步骤删掉。
- 早期一批 102 关跑自动审计:没有一个必须修的问题(阻断),26 条提醒(警告)。
07AI 分工
谁做什么,是一路试出来的
首屏那三行分工,不是一开始就定好的。项目刚开始,我让 Claude 写核心代码,把批量造关交给 Codex,后来也让 Kimi 接过造关。
转折在 7 月 22 日。那天我让三家同时造关,一半带着 Claude 写的造关 skill,一半不带,结果就是下面这张图。从那天起,主力造关转交给 Claude,之后仍做过 Codex 的补充试验。
另外两家没有因此退场,而是换到了更适合它们的位置。Codex 最擅长把事情讲给人听,Kimi K3 的审美在三家里最好。各自具体做什么,见下面三张卡片。
- Claude Code写代码、造关游戏的核心代码和主要功能,都是和它一起写的。造关按 puzzle factory skill 走,要 Opus 级别才造得好;Sonnet 造的关,我大多留不下。
- Codex审计、测试把代码审计写成我读得懂的报告,比对几个分支和 worktree,告诉我项目走到了哪。部署网站、给手机装调试包这类我自己也能做的活,交给它更省时间。
- Kimi配色、场景最早的关卡都是白底。Kimi K3 按每关的题材补上背景;原先画得不像、颜色太少、大片同色平铺的配色,也由它重新升级。
看截图5
完整过程
- 7 月 22 日这次试验的范围:三家在同一天、从同一份代码开工,每家一组带 skill、一组不带,题材各组自己选,最后都由我一张张终审。每组只有 8–16 张候选,题材没有完全控制;这是我的工作流试验,不能单独证明 skill 导致了差异,也不是通用模型排名。
- 分开看送审数和通过数:Codex 从不带 skill 的 4/9 变为带 skill 的 1/8,送审数更少;Kimi 从 6/14 变为 3/16,送审数更多。两者本次留下的数量和比例都下降,但不能把分母变化归为同一个原因。
- 为什么后来不再给 Codex 写 skill:8 月我专门为它写过四版,想确认是不是 skill 不合身。四版都没赶上它不带 skill 的成绩;其中一版让它自己循环批量出图,产量很大,我能留下的却很少。量换不来质,造关就没再交回给它。
- 为什么造关要 Opus:一关要同时顾到像不像、能不能只靠推理解开、配色好不好看,这三件事是一起权衡的。Sonnet 也造过,差距很明显,后来造关只用 Opus 级别的模型。
- Claude 的造关 skill 为什么越改越短:从 v1 到 v7.2,我一度往里加了越来越多的自查步骤,同一天对比下来,流程越重,通过的反而越少。最后留下的是几条真正管用的画法,比如给剪影加一个交代语境的小道具、在主体四周留出空白。这几条来自一次三个 Claude 并发的实验:同一份 skill,通过率差了一倍多,差别全在画法上。
- 为什么背景和配色交给 Kimi:最早的关卡是白底,揭晓时只有主体。美术升级时,每一关要按题材配一片场景,水下、夜空、室内的墙和地板,这是审美活。三家的产出摆在一起,Kimi 家的旗舰 K3 画得最好看,所以交给了它,不是为了省 token。配色升级也一样,由它重新配色,再一本画册一本画册地交给我验收。
- 为什么审计和杂活交给 Codex:它交出来的东西最适合人读。审计报告会讲清每段代码做什么、质量怎样;比较几个分支和 worktree 时,会告诉我哪边领先、哪些还没合并。测试、部署、打包这些我自己也能做的事,交给它,我就能把时间留给判断。
08每日一关
关卡先到,日期清单最后更新
每天一关,是让玩家明天还会回来的理由。每日关卡放在 CDN 上,App 先读一份日期清单,再按日期取当天的关卡。如果清单先更新、关卡还没传完,网络一断,玩家就会点开一个空日期。所以我发布时先检查整批内容,逐个上传,全部到位才更新清单;上传失败会自动重试,整次发布重跑一遍也不会出错。
09国际化
9 种语言,界面和关卡名分开管理
格织按系统语言自动切换 9 种语言,认不出的就显示英文。界面文字和 600 个关卡名分开管理,各有各的检查,哪种语言漏翻一条都过不了;换语言不影响存档。连商店里的名字也跟着系统语言走:中文系统里叫「格织」,英文系统里叫「Gridweave」。我还留了一个小心思:中日韩玩家通关时,英文名显示在上、本地名在下,顺手认一个英文单词。
Debug
在一台旧 iPhone 上,从左边缘滑动返回时,会闪出一两百毫秒的空白。很少有人会注意到,我还是一帧一帧追到它消失。
iOS 左缘返回时露出空白
在一台 iPhone X 上,从屏幕左缘滑动返回,手指下会露出空白,或闪过一帧旧画面。代码里已经切回了上一页,屏幕上却还没把它画出来。我把一次返回拆成几个阶段逐帧测量,把顺序反过来:先露出已经画好的上一页,再完成切换。之后在真机上连续测了 15 次,空白和旧帧都没有再出现。
- 手势开始
- 等页面画完
- 露出上一页
手指已经在动,画面还在等。
- 上一页早已画好
- 手势开始,直接露出
- 之后再完成切换
第一帧就是正确的画面。
完整过程
- 设备:iPhone X,iOS 16。
- 改前的测量(5 次中位数):画册返回约 101 ms(约 6 帧),收藏详情返回约 194 ms,每日挑战返回约 114 ms。格织的界面是一张网页,外面包着一层 iOS 原生壳;两者之间传一次消息约 11–13 ms,不是瓶颈。
- 先试了两个办法,都不够:一是离开时不销毁上一页,省掉了重新创建,但回来时仍要重新排版、重新绘制;二是多等一帧再露出,代码那边准备好了,屏幕上的像素还是没画完。
- 最终做法:让上一页一直保持画好的状态,单独放在一个图层上(合成层),手势一开始就直接露出它,真正的页面切换放到之后再做。
- 改后:从手势到露出约 3–7 ms(5 个有效样本)。完整绘制仍要 80–110 ms,但第一帧已经不用再等它了。
- 验收:15 次真机测试,快速滑动、中途取消、返回后的状态都检查过,无白帧、无旧帧。
- 插曲:用 Instruments 测内存时,测试工具自己占到约 1.85 GB,被系统结束;换 Safari Web Inspector 交叉核对,确认游戏本身没有内存问题。
最快了解它的方法,是玩一关。
先玩免费的 100 关和每天的新关。喜欢的话,4.99 美元一次性解锁全部。
具体价格以当地商店显示为准。 中国大陆因游戏版号问题,暂不支持 App 下载;可体验网页试玩。
想看代码?网页试玩的源码公开在 GitHub: Jackjimmy/gridweave-demo ↗











































