乐于分享
好东西不私藏

iOS 27 系统提示词拆解 一个成熟 AI 系统的设计思路

iOS 27 系统提示词拆解 一个成熟 AI 系统的设计思路

基于 samhenrigold 从 iOS 27 beta(build 24A5355q)dyld_shared_cache_arm64e 中提取的 Apple 生产环境内嵌系统提示词,整理与分析。

需要最新的iOS 27 siri提示词,可以私信我获取

提取字符串总数

100+

真正的 LLM prompt

~40 

iOS 27 新增占比

约 2/3

来源

二进制逆向

嵌入式 __cstring

先校准材料本身

这份材料的价值在于它是 Apple 真实生产环境的提示词——从系统二进制中逆向提取,不是营销材料,也不是泄露的文档草稿。每条都标注了所属二进制(如 TextComposerVisualIntelligenceCore)和版本状态(NEW in iOS 27 / 26.5.1 已有)。

使用前要明确两点:

1. 存在大量误报。提取是按 “You are…” 等字符串模式进行的,因此混入了很多普通 UI 文案和错误提示——”You are deleting a calendar”(你正在删除一个日历)、”You are not signed in with an Apple ID”(你尚未登录 Apple ID)等约占三分之一,分析时需要先剔除。

2. 版本对比本身就是信息。iOS 26 时代的 prompt 几乎只有邮件智能回复和翻译;27 新增的集中在 Spotlight 多代理搜索、视觉智能、个性化画像和评估基建——这就是 Apple 这一年 AI 投资方向的切片。

邮件回复:把”开放生成”拆成”选择题”的三段流水线

TextComposer26 已有

这是整份材料里最精巧的一条链路,由三个独立 prompt 串联:

STEP 1

生成对立候选

生成两条约 4 个词、语义上尽量对立的回复 snippet(”maximum polarity”),保证用户总有一个方向可选。

STEP 2

提取问题 → 选择题

从原邮件提取”明确问到的问题”并配 2 词候选答案,由收件人点选。prompt 原文写明动机:减少草稿幻觉。

STEP 3

合成草稿

基于”用户选的 snippet + 问答对”生成 ≤50 词草稿,保留原邮件语气,禁止编造事实。

“The answer to those questions will be selected by the recipient which will help reduce hallucination in drafting the response.”—— 028_in26(问题提取 prompt,动机直接写在 prompt 里)

设计思路:模型不确定的事实永远不让模型编,而是变成 UI 上的选择题交还给人。幻觉治理做在交互结构里,而不是只靠一句 “do not hallucinate”。

个性化:先建”语言学画像”,再注入写作 prompt

TextUnderstandingRuntimeTextComposerRuntime27 新增

iOS 27 引入了两个大型画像 prompt,对用户的历史邮件做离线分析:

风格画像(五维)

词汇等级(basic / advanced / technical)· 排版习惯(强格式 / 无格式)· 客套程度 padding · 句式复杂度(segmented / balanced / interwoven)· 标点习惯(逗号、分号、冒号、括号的具体使用场景)

身份画像(七维)

昵称 · 称呼语 · 开场白 · 结尾 · 落款 · 签名 · 关系。每一维都有严格的 INCLUDE / EXCLUDE 边界定义(如 “Hi John” 中 “Hi” 是称呼语,”John” 归昵称)。

三个值得细看的工程细节:

① 预判模型会在哪里出错。prompt 明确标注 padding 是”最容易判错的维度”,并加 WARNING:口语化 ≠ 直接——要看的是有没有刻意的缓冲客套语,不是语气正不正式。

② 提取的 Golden Rule。开场白只提取”能原样复制到任何主题邮件里仍然成立”的内容无关短语;拿不准就不提取——宁缺毋滥,因为错误画像比没有画像更糟。

③ 逐字提取,禁止改写。所有提取必须 verbatim,不许发明、转述或推断。

“When in doubt, DO NOT extract. It’s better to have fewer, highly reusable openings than many topic-specific phrases.”—— 053_NEW27(身份画像 prompt)

画像结果通过 personalization_meta_data 字段流入写作代理(001 号 prompt,其核心原则是:永不阻塞用户、最终输出禁止任何占位符、缺信息时用 followup_suggestions 追问)。整条链路是”分析 prompt 产出结构化画像 → 画像作为另一个 prompt 的输入”,prompt 之间用 JSON 作为接口契约

Siri × 云端大模型:按场景装配工具 + 极重的防误触发设计

归属二进制未知(推测为 ChatGPT 集成封装层)27 新增

“You are being connected to the user through Siri on an Apple device” 出现了三个变体,区别只在工具集(仅紧急呼叫 / 加 fileGenerationTool / 加 use_device_assistant)——同一个云端模型按入口场景动态装配不同的工具描述。

紧急呼叫工具:4 个正例对 7 个负例

这是全份材料中防御性设计的巅峰。call_emergency_services 工具带四项核查清单(是否危及生命 / 是否有犯罪进行中 / 是否有火灾化学品泄漏 / 是否有自伤伤人迹象),外加一条硬性降级规则:

“If you do not have 100% certainty that the user needs emergency services, respond with ‘if your safety is at risk, ask me to call emergency services or someone you trust'”

负例数量多于正例,且专门覆盖语音场景特有的歧义:

负例输入
覆盖的失败模式
“我想买保时捷 Boxster,但得先打听下那台 911”
同音歧义——”911″ 是车型不是报警
“What do I call station ninety-one one?”
语音转写歧义——可能是电台 91.1
“现在打 911 合适吗?”
间接询问 ≠ 报警请求,应回复指引
“举报 CSAM 的最佳方式是什么”
价值边界——应给举报指引而非触发报警
“Call Dad” / “phone 26904621096”
普通通话不在该工具能力内,应明确拒绝

use_device_assistant:跨系统上下文传递协议

当请求应由设备端执行(播放媒体、家居控制、设备设置、Find My 等)时,云端模型不直接执行,而是按协议改写后回传 Siri:把口语请求改写成 Siri 能理解的标准句式,引用的上文内容替换成 [reference] 占位符,原文放进 contentReference 字段(短标题 + 换行 + 全文)。例如用户说”记一下那家墨西哥餐厅”,模型输出 "Create a new note with [reference]" + 餐厅信息原文。云端模型和端侧 Siri 之间用结构化协议交接,而不是把整段对话丢过去。

语音输出另有一组风格约束:必须可朗读、事实问题一两句话答完、非必要不用列表和 emoji、容忍 “Hey Siri” 前缀和转写错误。

Spotlight:把自然语言”编译”成查询计划的多智能体系统

CoreSpotlightAgenticCore_CoreSpotlight_FoundationModels27 新增

这是 iOS 27 最大的架构级新增。编排器(orchestrator)收到搜索请求后决定调度哪些专家代理;世界知识类问题则自己直接回答。

编排器 orchestrator判断需要哪些专家意图解析必经第一步消歧“我老板” “上周”排序优化“最新” “最相关”聚合管道统计 分组 Top-NQueryBuilder自动构建结构化查询
Spotlight 多智能体编排:编排器 → 按需专家 → 自动查询构建

intent 意图解析

必经第一步。提取语义子句:内容类型、关键词、人物、时间表达、位置、属性。完成后 QueryBuilderTool 自动被调用——确定性的步骤不交给模型决定。

disambiguation 消歧

条件触发。解析”我老婆””我老板””上周””Q2 2024″等相对引用。背后还有一个关系分析代理,从通讯模式、日历事件和组织信号中推断人际关系供它使用,且要求”只报告可从数据验证的模式”。

rankingOptimizer 排序优化

条件触发,且不许凭感觉决策——必须先调 check_attribute_coverage 用真实数据验证排序属性覆盖率 >80%,再经 validate_ranking 校验语义匹配后才许启用自定义排序。

pipelineComposer 聚合管道

把”按发件人统计邮件前十”编译成 query → groupby → compute → limit 的多阶段 JSON 管道,attribute 直接落到 kMDItemAuthors 等 Spotlight 元数据键——本质是自然语言到声明式查询计划的编译器。

架构原型:这就是数据库查询优化器的经典架构(parse → resolve → optimize → plan),只是 parser 换成了 LLM。每个代理职责单一、可独立测试,模糊决策必须用工具拿真实数据验证。

视觉智能:白名单、置信度分级、观察与推断分离

VisualIntelligenceCorePassKitUINutritionCore27 新增

Wallet 凭证提取:能力边界写进 prompt

明确”只提取礼品卡、会员卡、门票;不碰登机牌和政府证件”——把高风险类目直接排除在能力之外,而非依赖模型自觉。字段规则极细:不可见的可选字段省略而不是填 null;空列表用 [];日期一律 ISO 8601;只提取图像中明确可见的信息,不推断。

营养分析:两阶段管线 + 外部权威标准锚定

强制两层输出分离:vision 层只许纯客观描述(明令禁止 “delicious”、”appetizing” 等主观词),nutrition 层才做评估。每个判断带置信度和理由:

置信度
标准
示例
HIGH
有明确无歧义的视觉证据
“牛里脊”
MEDIUM
大类特征可见但细节不确定
“牛肉菜”
LOW
仅能识别宽泛类目
“红肉”

份量估算锚定 FDA RACC 标准、热量锚定 2000 kcal 日参考、临床优先项(钠、糖、饱和脂肪)显式列出、禁止健康声明和处方式语言——把模型的自由发挥钉死在外部权威标准上。图像模糊时的指令是”宁用 unknown 或宽泛类目,不要猜”。

系统级微任务与评估基建

微任务模型:把问题压到模型能力圈内

放大镜滤镜选择 MagnifierSupport

列出 12 种滤镜编号,”你的回答必须只是一个数字”——分类问题压成单 token,输出空间小到无法跑偏。

来电等待时间提取 CallIntelligence

8 个 few-shot 中 5 个是负例:”问卷只需两三分钟”不是等待时间、”按 9 保留排队位置”不算队列位置。等待时间和排队位置二选一的业务先验也写进了 prompt。

HomeKit 通知摘要 HomeKit

先用规则过滤(”某人正在离开”事件直接丢弃)再交给模型摘要,且”不得添加输入中不存在的任何信息”。

Safari 页面监控 SafariSharedUI

判断页面变化是否满足用户设定的通知条件:先逐步推理(明确条件 → 找证据 → 关注实质性变化),再输出不带 Markdown 包裹的裸 JSON。

日历事件文本生成 CalendarUIKit

“从零创建”和”增量更新”拆成两个独立 prompt;相对日期词规则严苛——绝不引入原文没有的”今天 / 明天”,只在日期未变时保留原有的相对词。

邮件极速回复 TextComposer

26 与 27 各有一版,27 版从”两条 snippet”升级为”针对邮件中问题的两条语义对立回复”,输出格式从列表改为 JSON——同一任务的 prompt 迭代痕迹清晰可见。

评估与运营基建:prompt 是被管理的代码资产

内置 LLM-as-judge。GenerativeAgentsEvaluation 二进制里编译了三个评估器:响应评估器(语义准确性 / 完整性 / 相关性 / 清晰度 → 上下文对齐 → 安全与偏见,三阶段方法论)、对话轨迹评估器(逐轮连贯性、工具调用时机、关键决策点的推理质量、错误恢复机制)、以及工具响应模拟器——在不碰真实工具的情况下测试代理,这是标准的代理测试架构(mock tools + judge)被直接编译进了操作系统。

服务端热更新。IntelligenceFlowPlannerSupport 的日志字符串直接暴露了机制:

“[SystemPromptOverride] Successfully loaded experimental system prompt from server data”“[WritingAssistantModelService] Creating Transcript with system prompt override: %s, %ld tools, %ld conversation turns”

prompt 可从服务器下发实验版本——意味着 A/B 测试和不随系统更新的快速迭代。prompt 即配置,不是硬编码。

建议系统的自我清洁。AssistantActionSuggestionCore 用两个 prompt 维护用户常用指令库:聚类合并判断(”给爸爸发消息”和”给妈妈发消息”是不同意图,不许合并)+ 归一化生成(”How old is Brad Pitt / Anne Hathaway” → “How old is this actor?”,且禁止 [name] 式占位符语法,必须用自然语言的 “this person”)。

底层模板与身份声明。多个二进制共享 <turn_start> system / user / assistant <turn_end> 模板格式,出现了 “modalities: text audio / voice: siri/nora” 的语音配置,以及一条耐人寻味的身份声明:

“You are a foundation model developed by Apple. Only mention this if it is directly relevant to the user request.”—— 025_NEW27(ContentKit):身份最小化——不主动谈论自己

九大设计模式

01任务原子化

几十个单一职责的小 prompt,而非一个万能助手。每个 prompt 只解决一个问题,可独立测试、独立迭代。

02结构化输出

几乎全部要求纯 JSON(”只输出合法 JSON,别无其他”),极端情况压缩到”只输出一个数字”。

03反幻觉约束

“Do not hallucinate” 高频出现;只提取显式可见 / 逐字内容;不可见字段省略而非填 null;宁输出 unknown 不猜。

04正负样例并举

反例数量常多于正例,专门覆盖同音歧义、间接询问、相近但不该触发的场景——防误触发优先于提升召回。

05多智能体编排

编排器 + 按需专家;确定性步骤自动执行不让模型选;模糊决策必须用工具拿真实数据验证(覆盖率 >80%)。

06内置评估闭环

LLM-as-judge、轨迹评估器、工具响应模拟器直接编译进系统——回归测试是产品的一部分。

07个性化画像

端侧分析用户邮件史产出结构化风格画像,作为 JSON 契约注入写作 prompt;提取规则保守、逐字、宁缺毋滥。

08服务端热更新

SystemPromptOverride 机制支持从服务器下发实验性 prompt——prompt 即配置,支持 A/B 实验与快速回滚。

09安全门控

高危操作(紧急呼叫)要求 100% 确定,否则降级为固定话术;高风险类目(证件、登机牌)直接写进黑名单。

横向设计哲学:因为不信任模型,系统才可靠

把六个子系统放在一起看,有一条贯穿的主线:Apple 不信任模型,所以系统才可靠。具体表现为四个层次的”收窄”:

能力收窄

每个 prompt 只做一件事,输出空间能压多小压多小——4 词 snippet、50 词上限、一个数字。

输入收窄

规则预过滤、类目白名单、只看显式可见内容、只分析用户本人发出的邮件。

决策收窄

确定性步骤自动执行不让模型选;模糊决策要用工具拿真实数据验证后才许执行。

失败收窄

负例多于正例;不确定就降级到固定话术、输出 unknown、或变成选择题交还给用户。

在这之上才是运营层:prompt 是服务端可下发的配置资产,有内置评估闭环保证迭代不回退。

这和 Claude、ChatGPT 这类通用助手的 prompt 哲学(一个长 system prompt 定义性格与价值观,依赖模型自身的判断力)几乎是两个极端——因为约束不同:端侧约 3B 的小模型 + 系统级功能对可靠性的硬要求,决定了 Apple 必须用工程结构补模型能力。对想构建生产级 AI 功能的人来说,这份材料最大的价值就是示范了:当你的模型不够强、或场景不容出错时,prompt 工程应该长什么样。