llostinthesauce/fm-teardown

GitHub: llostinthesauce/fm-teardown

对 macOS 27 中 Apple Foundation Models CLI 工具 fm 的逆向工程笔记,系统性记录了其端侧与云端模型栈架构、CLI 命令用法及 OpenAI 兼容 API 行为。

Stars: 4 | Forks: 0

# `fm` — Apple Foundation Models CLI:逆向工程笔记 (macOS 27) 关于 **`/usr/bin/fm`**(随 macOS 27 发布的 Apple Foundation Models 命令行工具)及其背后的端侧 + Private Cloud Compute 模型栈的实地记录。 这里的所有内容均来源于**公开发布的 macOS 二进制文件**,使用标准工具(`strings`、`otool`、`codesign`、`curl`)以及 `fm` CLI 本身的实机运行推导得出。未分发任何专有权重、源码或资产。参见[免责声明](DISCLAIMER.md)。 ## TL;DR - **`fm` 是一个由 Apple 签名的轻量级 CLI**,基于公开的 `FoundationModels.framework`。它没有增加任何模型——它是通往 Siri 和 Apple Intelligence 所使用的同一技术栈的开发者门户。 - 它公开了**两个执行*层级***,而不是两个模型:`system`(端侧)和 `pcc`(Private Cloud Compute)。 - 在这些层级背后,`ModelCatalog` 枚举了一个真正的**模型库**:端侧语言层级包含 **`instruct_9m / 85m / 300m / 3b`**,一个单独的**代码模型**家族、**视觉**和**语音**模型,以及一个**包含 193 个用例的云 / PCC 适配器目录**。 - 3B 端侧层级以**稠密 (dense) + 稀疏 (sparse) 组合**的形式发布——对照 Apple 的博文进行交叉引用,即 **AFM 3 Core**(3B 稠密)+ **AFM 3 Core Advanced**(20B 稀疏,1–4B 激活)——并带有用于实现低延迟的 **`.draft`** 推测解码孪生模型(实测短文本补全约为 0.26 秒)。 - **`fm` 不负责**在模型之间进行路由——它只固定在一个层级。真正的端侧↔云端路由是一个 **Siri 端的编排层**(`ORCHNLRouterBridge` → `serverFallback` → PCC),受**证明**(`TC2XPCTrustedRequestProtocol`,一致性 token)控制。 - **`fm serve`** 是一个可正常工作的 **OpenAI Chat-Completions API** 服务器(支持流式和非流式传输,具有真实的 token 统计,支持 TCP 或 Unix socket)——可直接兼容 OpenAI 客户端,但**仅限聊天**:任何包含 `tools` 数组的请求都会返回 400 错误被拒绝(`Invalid tool definition`),因此必须将 agent 框架配置为完全忽略工具定义。 ## 文档 | 文档 | 内容 | |-----|--------------| | **[00 — 实地报告](00_FIELD_REPORT.md)** | 经过证据分级的综合结论;对常见假设的纠正;全局大图;诚实的局限性说明。 | | **[01 — CLI 参考](01_CLI_REFERENCE.md)** | 所有命令和参数、REPL 中的斜杠命令,以及包含已验证请求/响应示例的完整 `fm serve` API。 | | **[02 — 模型架构](02_MODEL_ARCHITECTURE.md)** | `ModelCatalog` 分层、端侧大小层级 + 适配器、代码/视觉/语音家族、PCC 层级、信任/证明,以及 Siri 如何在端侧↔云端之间进行路由。 | | **[03 — 官方交叉引用](03_OFFICIAL_CROSSREF.md)** | 将我们的发现映射到 [Apple 第三代 Foundation Models 文章](https://machinelearning.apple.com/research/introducing-third-generation-of-apple-foundation-models):模型名称核对(Core / Core Advanced / Cloud / Cloud Pro / ADM)、Apple 确认的内容、我们补充的内容,以及由此引发的修正。 | | **[原始笔记](ORIGINAL_NOTES.md)** | 促成此项研究的早期行为会话记录(隐去了主机规格),保留以作溯源。 | ### 证据分级 各项发现都附有标签,以便您区分实测事实与推论: - **[OBSERVED]** — 在真实的 macOS 27 主机上运行命令产生。 - **[STRINGS]** — 从已签名的 Apple 二进制文件的符号/字符串分析中恢复(高度确信该功能存在于操作系统中;但不一定能通过 `fm` 访问)。 - **[INFERRED]** — 推理得出的结论,已作相应标记。 ## 原始证据 (`artifacts/`) | 文件 | 内容 | |------|----------| | [`fm_model_ids.txt`](artifacts/fm_model_ids.txt) | 1,037 个 `com.apple.fm.*` 模型目录标识符(核心证据) | | [`pcc_use_cases.txt`](artifacts/pcc_use_cases.txt) | 193 个云/PCC `instruct_server` 用例适配器 | | [`cloud_endpoints.txt`](artifacts/cloud_endpoints.txt) | `afm.aiml.apple.com` / `smoot.apple.com` 推理 endpoint | | [`siri_pcc_models.txt`](artifacts/siri_pcc_models.txt) | `llm_siri_pcc` + `lw_planner_v1..v5` | | [`movie_schema.json`](artifacts/movie_schema.json) | 引导生成的 schema 示例(已进行实机往返验证) | | `logs/serve.log` | 捕获的 `fm serve` 输出(仅限环回接口) | ## 自行复现 在 macOS 27 机器上: ``` # CLI surface fm --help for c in respond chat token-count schema serve available quota-usage; do fm $c --help; done # Live on-device generation fm respond --greedy --no-stream 'Say hello in three words.' fm available fm quota-usage # Guided / constrained generation fm schema object --name Movie --string title --integer year --boolean rewatchable > movie.json fm respond --no-stream --schema movie.json 'Give me a classic sci-fi film.' # OpenAI-compatible server fm serve --port 1976 & curl -s localhost:1976/v1/models curl -s localhost:1976/v1/chat/completions -H 'Content-Type: application/json' \ -d '{"model":"system","messages":[{"role":"user","content":"PONG?"}],"stream":false}' ``` 二进制文件 / 目录检查(模型 ID 列表即来源于此): ``` codesign -dvvv /usr/bin/fm otool -L /usr/bin/fm CACHE=/System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld for f in "$CACHE"/dyld_shared_cache_arm64e*; do strings -a "$f"; done \ | grep -aoE 'com\.apple\.fm\.[a-z0-9._]+' | sort -u ``` ## 贡献 这些是基于单一 macOS 27 构建版本的笔记——非常欢迎来自**其他构建版本、硬件或支持 PCC 的主机**的发现。请参阅 **[CONTRIBUTING](CONTRIBUTING.md)** 了解哪些内容是有用的以及基本规则(禁止专有内容,保持证据分级,展示您的构建版本)。 ## *未*包含的内容 - 没有模型权重,没有提取的 Apple 源码,没有专有资产。 - 没有实时的 PCC 跟踪记录——测试主机上的 PCC 受证明控制,因此云端层级的详细信息来自于字符串分析,而不是云调用。 有关范围、版权和商标说明,请参阅 **[免责声明](DISCLAIMER.md)**。
标签:DLL 劫持, Foundation Models, 云资产清单, 人工智能, 大语言模型, 技术分析, 文档结构分析, 用户模式Hook绕过, 系统架构, 逆向工程