跳到主要内容

移动应用商店审核与 AI 功能:发布频率的碰撞

· 阅读需 10 分钟
Tian Pan
Software Engineer

一个 Prompt 回归在上午 9 点上线。在 Web 应用上,工程师在午饭前就回滚了系统 Prompt,追踪日志随之恢复平静。在 iOS 上,同样的回归存在于 App Store 三周前审核通过的二进制文件中——团队现在必须在两种方案中做出选择:要么在服务端替换 Prompt(这会使商店对用户实际行为的审核失效),要么申请加急审核(这需要花费 24-48 小时,还要消耗一点与平台团队积攒的人情值)。哪种方案都不在操作手册(runbook)里。

这就是部署节奏冲突(deploy cadence collision):Web AI 功能按照团队的时钟迭代,而移动端 AI 功能则按照平台的时钟迭代。大多数发布流程(release trains)在有人想到“Prompt 是否应该与二进制文件绑在同一辆列车上”之前就已经确定了。结果是税收在悄然累积——审核延迟、不对称的回滚延迟、在重新提交时无法通过隐私审核的未披露 AI 界面,以及一整类移动端工程师修复速度仅为 Web 同行十分之一的 AI Bug。

无人估价的异步性

大多数 AI 团队已经内化的智能体循环(agent-loop)迭代周期,假设 Prompt 是团队端到端拥有的配置字符串。你调整它,推送它,观察评估仪表板,再进行调整。反馈循环是分钟级的,有时甚至是秒级的。移动端的发布周期在结构上则完全不同。

Apple 的审核过程在正常情况下以天计,当审核员标记了某些与政策相关的条目时,时间会更长。Google 的审核在涉及内容政策或 AI 披露规则时可能会延长到一周,而且这两个平台都保留将提交的审核升级为深度审核且不告知原因的权利。那些已经在 Web 端习惯了“我二十分钟就发布了 Prompt 修复”的团队,当同样的修复涉及到 App Store 上的二进制文件时,必须主动改掉这种直觉。

这种冲突不仅仅关乎延迟,更关乎哪一个时钟主导哪项变更。Web 端的 Prompt 编辑只是配置发布:波及范围小,回滚容易,流量形态会立即告诉你是否奏效。而嵌入在移动端二进制文件中的 Prompt 编辑则是受监管的发布产物:平台审核过它,平台的内容政策适用于它,平台可能部分由于它而对应用进行了年龄限制,而更换二进制文件意味着平台必须重新审核用户行为所依赖的界面。

打包式 vs. 服务端获取式 Prompt

部署节奏冲突迫使团队做出的第一个架构决策是:Prompt 应该存在于二进制文件中,还是存在于应用启动时获取的运行时配置端点中。两种选择都有其合理性,但也都有团队往往在付出代价后才能察觉的成本。

将 Prompt 与二进制文件打包可以保证 App Store 审核的真实性:审核员看到的即是用户体验到的。商店可以对其内容规则应用实际的 Prompt 文本,审核员可以验证隐私披露是否与 Prompt 的数据处理行为匹配,且二进制文件是一个可重复、已签名的单一产物。代价是每次 Prompt 变更都是一次二进制发布,并伴随着完整的审核周期。

服务端获取式 Prompt 将 Prompt 与二进制文件解耦。应用作为一个瘦壳发布,在启动时从配置端点拉取其系统 Prompt——通常还包括模型选择、Temperature 参数和工具定义。团队获得了类似 Web 的迭代速度。代价是商店审核的是“壳”而不是行为,团队因此继承了一项隐形义务:每一次服务端的 Prompt 变更现在都是对受监管界面的变更,团队成了防止发布那些“如果商店看到就不会批准的内容”的唯一防线。

大多数生产环境中的应用最终会介于两者之间。骨架——系统 Prompt 的结构部分、工具目录、角色设定(persona)——被打包。旋钮——措辞微调、基于评估的调整、A/B 测试变体——通过远程获取。接缝处比拆分本身更重要:团队必须明确记录哪些属于“商店审核过的行为”,哪些属于“团队在运行时拥有的微调”,因为下一位标记该应用的审核员可不会替你分辨。

披露陷阱

Apple 2025 年 11 月的指南变更首次将第三方 AI 列为受监管类别。与外部 AI 服务共享个人数据的应用——从包含用户姓名的系统 Prompt 到将聊天记录发送给模型的工具调用——现在必须指名道姓地披露 AI 提供商,在首次传输前获得用户的明确同意,并以一种不会被埋没在服务条款中的方式展示该披露。Google 并行的政策轨道,以及其 2025 年关于 AI 内容标签和生成式 AI 应用规则的更新,在不同的维度上提高了类似的门槛。

陷阱在于这些披露是在应用审核时提交的。审核员阅读隐私声明,将其与二进制文件的实际行为进行对比,然后要么接受提交,要么发送一封需要一周时间才能解读出的拒绝信。如果一个团队发布了一个在 TestFlight 中完美运行的 AI 功能,然后从拒绝信中得知“我们可能使用 AI 来提升你的体验”这种说法已不再是可接受的披露方式,那么他们刚刚失去了一个发布窗口。

更糟糕的是,披露界面是锚定在二进制文件上的。如果二进制文件中写着“我们将你的消息发送给名为 Provider X 的第三方 AI 进行摘要”,而团队随后通过服务端配置切换到了 Provider Y,那么二进制文件现在就是在对用户撒谎。商店审核的是一个不再符合现实的披露。如果团队没有在二进制文件的元数据中锁定模型版本——明确命名二进制文件承诺的具体提供商、具体模型系列、具体数据流——那么下一次隐私审计将会暴露出一个合规性问题。

热修复的不对称性

当提示词效果回归(regression)影响到生产环境时,不同平台的响应成本截然不同。在 Web 端,回滚只需推送一次配置并清除缓存。而在 iOS 端,回滚路径取决于团队在回归发生前构建了什么。

打包了提示词的团队有三个选择,但没一个是好的。提交一个二进制热修复补丁并等待常规审核——这通常需要数天,如果审核员注意到 AI 交互面并引入政策审核员,时间会更长。申请加急审核——这是团队每年大概只能请求两三次的限额特权,还没等平台开始拒绝,甚至即便申请了,也无法保证通过。或者,只能接受该回归在下一次发布列车到达前一直留在生产环境中。

通过服务端获取提示词的团队有第四个选择,即更换配置并继续。这个选项让“节奏冲突”看起来被解决了。其实不然。这种更换现在成了对应用商店已审核行为的未披露变更,如果这种更换涉及数据流或第三方提供商,它就跨入了平台刚刚监管的披露领域。这条快速路径变成了悄悄积累合规债的路径。

真正能够规模化的原则是提前规划热修复层面:写下哪些类别的变更可以在没有合规风险的情况下进行服务端更换(如措辞微调、基于评估的调整、在已披露范围内的拒绝策略微调),哪些类别需要发布二进制版本(如提供商变更、新的数据流、新的工具能力),以及哪些类别既需要服务端更换,又需要在下一列发布列车中进行披露性的二进制更新(如模型系列升级、实质性改变商店已审核行为的提示词变更)。拥有这种分类体系的团队可以快速响应;没有的团队要么动作太慢,要么动作太快以至于最终被推到审核员面前。

两列发布列车,一套评估集

更深层的架构认知是,Web 和移动端的 AI 交互面运行在结构完全不同的发布周期上,而那些假设单一节奏的评估(eval)和可观测性系统会悄然偏离。Web 端的提示词每周都在调优;iOS 端的提示词则按平台的时钟调优。到第三个月时,尽管团队认为它们是同一个功能,这两个交互面实际上运行着完全不同的产品。

评估集必须意识到这一点。在第六周被评估系统捕获的回归不应统一应用到“提示词”上——它必须知道该回归影响哪个交互面,哪个交互面立即继承修复,以及哪个交互面在下一列发布列车上继承修复。可观测性栈必须按交互面进行维度细分。值班轮换必须明确,iOS 端上午 9 点的告警与 Web 端相同的告警属于不同级别的事故,它们有不同的回滚选项、需要唤醒不同的利益相关者,以及在需要升级处理时与平台沟通的语调也不同。

在两个交互面上运行单一发布节奏模型的团队,将在 P1 级移动端提示词回归首次撞上节假日周末和平台侧审核队列时,发现这种不对称性。而那些已经内化了“两个时钟”并构建了架构接缝来遵循它们的团队——如打包 vs 获取的分离、模型版本锁定、披露 vs 调优的分类体系、具备交互面感知能力的评估切片——将把下一次处理 P1 级事故的时间花在解决实际回归上,而不是耗在平台的审核时间线上。

未来 18 个月的前瞻

平台方并未止步。2025 年 11 月的 Apple 指南只是监管第三方 AI 的第一步,而从 2026 年 4 月开始的 iOS 26 SDK 要求将迫使更多应用进入新的披露制度,无论它们是否愿意。Google 2025 年的 AI 内容路径已经发出信号,政策覆盖面将持续扩大——模型披露、训练数据证明、端侧 vs 云端路由透明度,这些都是平台团队内部正在进行的对话。

移动端 AI 的发布周期将变得越来越受监管,而不是相反。那些还没有构建元数据流水线来满足下一轮政策门槛的团队,将在下一个发布窗口学习如何面对新格式的拒绝邮件。那些将节奏冲突视为架构问题而非工作流不便的团队,将能够更快地出货,而其他团队则只能在一次次审核队列中以缓慢的方式吸取相同的教训。

References:Let's stay in touch and Follow me for more thoughts and updates