「两周,四个App,人类只花了4小时。」——这不是炫耀,是一个实验的副作用。
过去两周,我让单个Claude Code代理在四个"硬关卡"(苹果开发者注册、支付信息、App Store最终审核、同一应用第三次被拒)之外自主决策,完成了四款iOS应用的脚手架搭建、打磨和上架准备。总人力投入约4小时决策时间加上写这篇文章的时间。
![]()
这四款应用有统一身份:纯离线优先、一次性内购2.99美元、零分析SDK、隐私清单可从源码验证。本文不是"AI让开发变简单"的爽文,而是拆解自主代理在哪些地方运转极佳、哪些地方卡死,以及我必须搭建的编排层——没有它,代理会变成混沌引擎。
四个App的技术指纹
为了可信度,先亮底牌:
AutoChoice(决策轮盘,生活方式类)——包名com.jiejuefuyou.autochoice。
AltitudeNow(离线气压高度计,无GPS,健康健身类)——使用CoreMotion的CMAltimeter。
DaysUntil(倒计时列表,生产力类,无通知)——单屏界面,JSON持久化。
PromptVault(离线AI提示词管理器,支持变量替换,生产力类)——由代理本身分析我在B站和小红书的收藏历史来发现真实用户需求。这是元时刻:代理构建的App,其首位用户就是代理自己观察到的行为模式。
所有四款二进制文件零网络调用。验证命令:nm -gU .app/ | grep -iE 'URL|HTTP|Network',全部返回空。隐私清单声明零数据收集,源码可确认。
编排层:没人写的部分
大多数"我用AI做App"的文章停在"我用了Cursor/Claude Code"。本文展示让代理可操作的底层:
记忆系统位于~/.claude/projects/.../memory/:
user_persona.md——沟通风格,注入每个子代理提示词。
feedback_autonomy.md——精确界定授权范围与保留事项。
project_autoapp.md——当前状态、身份事实、决策历史。
编排器目录orchestrator/包含:
state.yml——横跨4个产品仓库的唯一真相源。
decisions.md——追加式架构决策记录,每个非平凡选择都有段落说明。
RESUME.md——代理重新进入会话时首先读取的内容。
verify_all.sh——跨4个仓库运行,检查32项App Store审核硬性要求。
setup-asc-secrets.sh——单条命令填充8个密钥×4个仓库。
asc_sales_report.sh——上线后每日从App Store Connect API拉取TSV销售报告。
dday_runbook.sh——提交日生成平台特定的上线帖子。
核心教训:编排层是瓶颈,而非模型。5小时的滚动token窗口足够——如果代理不必每轮会话重新推导上下文。记忆系统+state.yml+ADR+RESUME.md让代理可重入。没有这些,同一代理会烧掉一半上下文。
代理擅长的:确定性脚手架
SwiftUI界面生成、Core Data/JSON持久化、StoreKit内购集成、App Store Connect API调用——这些有明确文档和可验证输出的任务,代理完成得干净利落。它不会疲倦,不会漏掉苹果审核清单的第17项。
AltitudeNow的气压计实现是个典型:CMAltimeter的API调用模式固定,代理一次性正确处理相对高度与绝对高度的切换逻辑,人类只需确认单位显示偏好。
代理卡死的:模糊边界与价值判断
PromptVault的变量替换语法设计花了三轮。代理能写{{variable}}的解析代码,但无法判断:用户更想要Mustache风格的双大括号,还是Shell风格的单大括号?这个选择没有技术正确答案,只有用户场景假设。
我最终介入,基于自己管理提示词的实际习惯拍板。代理记录了这个决策到decisions.md,后续类似选择参照执行——这是编排层的价值:把一次性人类判断转化为可复用的约束。
隐私优先的架构选择
零网络调用不是技术限制,是产品设计。代理最初提议为PromptVault添加iCloud同步——"用户可能想在多设备使用"。我否决:这与离线优先身份冲突,且引入不可验证的数据流。
代理接受约束,改用文件导出/导入方案。这个来回体现了feedback_autonomy.md的作用:代理被授权探索实现路径,但被禁止在隐私架构上自主妥协。
2.99美元定价的代理推导
定价不是随机选择。代理分析了同类生产力工具的定价分布,建议区间2.99-4.99美元。我选择下限,基于一个未写入任何文档的观察:离线工具的用户付费动机是"买断安心",而非功能溢价,低价降低决策摩擦。
代理记录了这个逻辑,在后续App的定价建议中自动调整权重。这是agent built an app whose first user was the agent's own observed behavior pattern的反面:人类也在被代理的记录系统反向塑造。
App Store审核的不可预测性
四个App中,DaysUntil一次通过。AutoChoice因"最小功能"被拒——苹果认为决策轮盘过于简单。代理尝试添加主题定制功能申诉,我再次介入:这不是功能问题,是品类定位问题。
重新提交时,我将应用描述从"帮你做决定"改为"可视化决策过程的仪式工具",代理同步调整截图文案强调"仪式感"而非"效率"。第二次通过。
这个案例暴露了代理的盲区:它能执行申诉流程,但无法判断何时该重构叙事而非堆砌功能。这是第三个硬关卡存在的理由。
编排层的隐性成本
4小时人类时间不包括搭建编排层本身。state.yml的字段设计、verify_all.sh的32项检查清单、RESUME.md的信息优先级——这些需要前置投入,且随苹果政策变化持续维护。
但这是一次性成本与边际成本的权衡。第二个、第三个、第四个App的边际人力投入趋近于零。代理在PromptVault中复用了AutoChoice的StoreKit封装,在DaysUntil中复用了JSON持久化模式。
元时刻的反思
PromptVault的需求发现过程值得展开。代理分析我的B站收藏(技术教程、硬件评测)和小红书收藏(效率工具、写作方法),识别出模式:我频繁保存AI提示词,但缺乏离线管理工具。
这个洞察本身不惊人。惊人之处在于执行闭环:代理无需我明确指令,直接从行为数据推导产品定义、生成技术方案、完成开发上架。人类角色收缩为四个硬关卡的守门人。
我检查了代理的推导日志。它排除了"在线提示词市场"(与离线身份冲突)、"浏览器插件"(iOS生态外)、"订阅制"(与一次性IAP身份冲突)——这些排除基于project_autoapp.md中的身份约束,而非我的实时指令。
什么会真正搞砸
实验中最危险的假设:代理的"完成"等于"可发布"。AltitudeNow的初版在真机测试时气压读数漂移——代理的单元测试覆盖了API调用,但未覆盖传感器物理特性(温度变化对气压计的影响)。
我添加了硬件测试环节到verify_all.sh:在真机上运行10分钟,记录读数方差。代理随后自动为所有传感器相关App生成类似的稳定性检查。
这是编排层的进化机制:人类发现盲点,转化为自动化检查,代理不再重复犯错。
行业影响的三个判断
第一,独立开发者的产能天花板被重新定义。单人在两周内交付四个合规上架的iOS应用,传统开发模式下需要数月。但产能释放的前提是编排层投资——没有记忆系统和状态管理,代理产出的是碎片而非产品。
第二,"全栈"概念正在收缩。代理覆盖了编码、构建、提交、销售报告抓取,人类价值向两端集中:上游的身份定义(这四个App为什么存在)和下游的质量守门(硬关卡决策)。中间层的"全栈技能"贬值最快。
第三,隐私优先可能成为差异化默认。零网络调用、可验证的隐私清单、零分析SDK——这些在代理自动化下成本趋近于零,反而成为与数据驱动型产品的清晰区隔。用户不必信任隐私政策,可以信任源码。
数据收束
两周,4个App上架,人类决策时间4小时,代理自主运行时间约200小时(估算),编排层文件23个,硬关卡触发7次(4个初始审核+3次申诉),零网络调用验证通过4/4,一次性IAP定价2.99美元,隐私清单声明数据收集项0。这不是AI替代开发者的故事,是开发者重新定义自己角色的故事——从执行者变成约束设计师,从代码作者变成系统园丁。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.