mailwal

Fatbobman's Swift Weekly #158

Fatbobman

Fatbobman's Swift Weekly #158

Who Is the Real Threat to AI-Relay Apps?

Who Is the Real Threat to AI-Relay Apps?

Read on web →

Last week, I was invited to Beijing to attend the inaugural Apple App Incubator event, where Tim Cook attended in person to present awards to the winners.

Unlike existing initiatives that primarily focus on campus-oriented creative competitions and introductory coding education, the Apple App Incubator is a dedicated initiative launched in China for developers, designers, and entrepreneurs. It is designed to provide deep technical, design, and commercialization support for teams that already have a solid product foundation. Consequently, the finalist apps demonstrated an impressive level of polish and commercial maturity—some had already raised millions or even tens of millions of dollars in funding, alongside equally impressive creations crafted by solo developers or small teams of just a few people.

A year ago, seeing these beautifully crafted apps and services, I would have cheered without hesitation and wished them tremendous commercial success. But today, I found myself caught in an indescribably mixed emotion.

The vast majority of the participating projects incorporated AI capabilities. Aside from a few running on-device, most adopted a business model centered on “cloud-based LLMs + subscriptions.” Setting aside the few products with truly defensible commercial moats, the underlying architecture of many apps can be distilled down to: a polished UI + extractable rules + third-party cloud models. I think of these as AI-relay apps.

With the rise of generative UI and plugins/skills bundled with pre-configured capabilities, general-purpose AI tools can now offer comparable utility at near-zero marginal cost. Weighing overall subscription expenses, an increasing number of users may well prefer a single, all-in-one foundation model subscription over paying individually for multiple niche apps—even if the latter offer a more meticulously tailored user experience. This means the true competitor to these “AI-relay” apps is quietly shifting from traditional copycats to the foundational model providers themselves.

This realization has become even more apparent recently. With my personal AI tool, as our interactions multiplied, Claude Code has fully internalized its invocation and collaboration logic. Now in day-to-day use, without any explicit prompts, it automatically spins up fresh contexts and drives the entire workflow forward, naturally adhering to my working habits. I had originally planned to write a dedicated runner script to act as an orchestrator for this deterministic workflow, but that has now become entirely unnecessary. While this differs from everyday consumer apps, it proves a crucial point: when an agent can remember, learn, and adapt to individual habits, it is entirely capable of dynamically ‘generating’ a bespoke experience just for you.

Furthermore, if the core value of a commercial app mostly boils down to rules and prompts that can be easily abstracted and extracted, then even if model providers have no intention of cloning it, the app’s clever core logic can still be rapidly reverse-engineered, replicated, and widely shared by users driven by a culture of open sharing. And when replication no longer relies on directly copying code or stealing design assets, creators face far more complex challenges in trying to protect their work through legal means.

For indie and small-team developers, even as we celebrate the tremendous superpowers AI grants us, we must take a sober look at a harder question: how much of our product’s moat actually stems from beyond the AI model? Faced with the looming threat of being superseded by general-purpose models, what truly irreplaceable value can we still deliver to our users?

“AI empowering you” and “AI empowering your product” have always been two entirely different things.

Previous Issue|Newsletter Archive


This Week’s Sponsor

Swift Pro —— Love Swift, but not Xcode?

Swift Pro brings Swift development into IntelliJ IDEA. Native editing, compiler assistance, SwiftPM and Xcode workflows, debugging, tests and SwiftUI previews, with all the JetBrains navigation and refactoring you already know. One plugin, just $4.

Try Swift Pro →


Recent Recommendations

iOS 27: App Intents Testing

For App Intents, unit tests that directly call perform() can only verify the Swift implementation itself. They cannot guarantee that Siri, Shortcuts, or Spotlight can correctly discover, construct, and execute those intents. The AppIntentsTesting framework introduced in iOS 27 provides a new approach, extending App Intents testing beyond individual Swift methods to verify the integration contract between an app and the system.

Anton Gubarenko demonstrates how to use IntentDefinitions in a UI Testing Target to dynamically discover Intents and Entities, then perform out-of-process tests through the actual App Intents infrastructure. The process requires neither importing the app’s Intent types nor interacting with the UI. Beyond verifying Intent execution results, it can also test Entity queries, persistent identifier resolution, and parameter passing between different Intents.

Although these tests run in a UI Testing Target, they don’t require simulating user taps or interacting with the Shortcuts interface. This also demonstrates another use for UI Testing: leveraging process isolation to perform system-level integration tests rather than limiting it to traditional UI automation.


Xcode Projects for the Command Line and Coding Agents

Xcode 27.2 not only introduces a new JSON-based project configuration format, project.xcproj, but also provides two accompanying command-line tools: xcodeproj for creating and modifying projects, managing targets, build phases, build settings, and Swift packages; and xcprojformatter for format normalization and basic structural validation.

Artem Novichkov explains how to use these tools, highlights common pitfalls, and compares their capabilities with those of Xcode MCP. He specifically recommends using AGENTS.md or a Skill to instruct agents to prioritize xcrun xcodeproj instead of editing project files directly. After all, while JSON makes configuration files easier to read, that doesn’t necessarily make direct editing safe. Rather than having agents interpret and maintain complex project structures themselves, relying on dedicated tools with explicit operation semantics, constraint checks, and meaningful error feedback is often a more reliable approach.


some View? without parentheses in Swift 6.4

When declaring optional opaque or existential types in Swift, we’ve always needed an extra pair of parentheses, such as (some View)? or (any Delegate)?. This stems from Swift’s parsing rules for some, any, and the optional type suffix ?, which prevent the compiler from interpreting some View? the way developers might intuitively expect.

Swift 6.4 changes this behavior through SE-0521, making some View? and any Delegate? valid syntax. Sarun Wongpatcharapakorn explains the background of this improvement, where it applies, and when parentheses are still required. He also connects the change to Swift’s potential future requirement for explicit any: as the ExistentialAny feature moves forward, SE-0521 removes an unnecessary syntactic burden from that transition.


HomeView and Apple TV 4K 2026

Last week, Apple introduced two new devices for the home: HomeView and the 2026 Apple TV 4K. Compared with the Apple TV 4K, which continues along an established product path, HomeView deserves more attention. It aims to bring smart home controls, household information, and everyday interactions together through a new device interface. Michael Tsai has collected related coverage and community perspectives on both products. The discussions surrounding HomeView’s positioning, use cases, and lack of a dedicated App Store are particularly worth further participation from developers.

HomeView’s arrival might unexpectedly benefit CarPlay. Although HomeView doesn’t offer a dedicated third-party app store, Apple allows existing CarPlay audio and video apps to run on HomeView without modification. In the past, some developers may have had little incentive to support in-car experiences, but adding the home as another use case changes the value of that investment. If developers begin supporting CarPlay to reach HomeView users, CarPlay itself could gain broader app support as a result.


Comparing On-Device and Private Cloud Compute Summaries

Apple Foundation Models offers both on-device and cloud-based processing through Private Cloud Compute. Although the latter can handle longer contexts, does that necessarily mean it produces better text summaries?

Building on his earlier work in Making On-Device Summaries Work for Real Issue Lengths, which explored token budgets and content truncation, Tiago Henriques uses the Evaluations framework provided by Xcode 27 to compare the two approaches. The most valuable takeaway isn’t how either model performs, but the author’s evaluation methodology: rather than assuming that a larger model or more complete context will inevitably produce better results, he uses repeatable tests to inform whether adopting a more complex technical solution is actually justified.


Assistive Access — iOS Easy Mode, Revisited

Assistive Access is an accessibility feature Apple introduced in iOS 17 to help users with cognitive disabilities navigate their devices more easily through larger interface elements, simpler navigation, and a more focused set of features. Starting with iOS 26, third-party apps can also use an AssistiveAccess Scene to provide interfaces and interaction flows specifically designed for this mode.

Bas Broek explains how to use the relevant APIs and test Assistive Access interfaces with SwiftUI Preview. He also emphasizes that Assistive Access isn’t simply about enlarging an existing UI. It requires reconsidering which features are truly necessary, which navigation steps can be eliminated, and how reducing choices and interactions can lower users’ cognitive load.

Tools

iPhone Use: Let AI Assistants Control a Real iPhone over USB

Developed by ZhongErXin, iPhone Use builds on WebDriverAgent (WDA) from the Appium ecosystem, exposing real-device automation capabilities through a local MCP tool and providing accompanying Skills. Agents can connect to and control a real iPhone over USB, using both the UI element hierarchy and screenshots to identify interaction targets. When element-based targeting fails, they can fall back to coordinate-based taps using screenshots. Users can also participate directly through a live preview by tapping, dragging, and scrolling.

iPhone Use isn’t limited to testing apps you’ve developed yourself. It can also interact with other installed apps, such as Notes, WeChat, and Weibo. This makes it more than an automated testing tool, opening up new possibilities for exploring how AI agents can interact with real mobile devices.


yomado: A Virtual Workspace for AI Agents

As AI agents begin interacting with desktop software through screenshots, mouse movements, and keyboard input, giving them a dedicated workspace may help reduce interference with users’ everyday activities. Developed by GuoYu, yomado is a native macOS tool that creates virtual displays and moves the application windows needed for a task into them, providing a relatively independent workspace for visual automation without requiring a physical display dongle. Its accompanying Skill enables agents to create virtual displays, move windows, verify the environment, and restore windows to their original locations when a task is complete.


Sill: Control Mac Windows from Your iPhone or iPad

Developed by Noah, Sill is a free, open-source remote window control tool that streams individual Mac windows or the entire desktop to an iPhone or iPad, allowing interaction through touch, Apple Pencil, a keyboard, or a trackpad. It supports local networks, USB, and direct nearby wireless connections, as well as remote access through a self-managed VPN such as Tailscale. No account registration or third-party cloud relay service is required.

What makes Sill interesting is how carefully it adapts the experience of using an individual Mac window on a mobile device. Features such as window thumbnail switching, a portrait-mode trackpad on iPhone, window resizing, and access to Mac application menus make desktop apps easier to operate on smaller screens.


SwiftDataSync: Building CloudKit Sync and Sharing for SwiftData Apps

SwiftData has long lacked support for sharing data across iCloud accounts, and Mark Battistella has been exploring a solution. SwiftDataSync uses a local SwiftData store as its data foundation and integrates with CloudKit’s private and shared databases through CKSyncEngine, supporting multiple Record Zones simultaneously. A single device can own its own projects while also participating in workspaces shared by others, maintaining separate synchronization and sharing states for each.

Unlike SwiftData’s built-in automatic synchronization, SwiftDataSync isn’t a plug-and-play framework. Developers must implement the mapping between their data models and CloudKit records themselves, and explicitly define deletion handling, conflict resolution, and merge strategies. The framework takes responsibility for synchronization state management, persistent change tracking, retries after failures, and maintaining sharing relationships, offering an alternative for apps that need finer control over synchronization behavior.


Thanks for reading Fatbobman’s Swift Weekly! This post is public so feel free to share it.


谁是 AI-relay App 的真正威胁

网页版

上周应邀去北京参加了首届 Apple 应用孵化器(Apple App Incubator)的活动,期间蒂姆·库克也亲自出席并为优胜者颁奖。

与侧重于校园创意选拔与基础编程教育的既有赛事不同,Apple 应用孵化器是苹果公司在中国为开发者、设计师和创业者设立的专项孵化与技术支持项目,为已有一定产品基础的团队提供深度的技术、设计及商业化扶持。因此,最终入选的项目无论在完成度还是商业成熟度上都相当出色,其中既有已获得数百万乃至千万美元投资的团队,也不乏单人或几人规模的精巧作品。

如果一年前看到这些设计精美的应用和服务,我会毫不犹豫地为其喝彩,并预祝他们取得好的商业回报;但在今天,我却陷入了一种难以言说的复杂情绪。

现场的参赛作品绝大多数都引入了 AI 能力。除个别基于端侧运行外,多数采用“云端 LLM 大模型 + 订阅制”的商业逻辑。抛开少数具备独特商业壁垒的项目,相当一部分应用的底层逻辑可以概括为:精美的 UI + 可被提炼的规则 + 第三方云端模型。我把这类产品称之为 AI-relay App。

随着生成式 UI 和预设能力的 Plugins/Skills 的普及,通用 AI 工具正以极低的边际成本为用户提供类似的能力。面对综合订阅支出,越来越多的用户可能会倾向于选择一份全能的大模型一揽子订阅,而不是为每一个垂直场景分别付费——即便后者的最终呈现和打磨程度或许更好。这意味着,这类 AI-relay 应用真正的竞争对手,正悄然从传统的商业模仿者,转变为基础大模型服务商本身。

这种感受最近愈发明显。对于我的个人 AI 工具,随着交互频次的增加,Claude Code 已经完全理解了它的调用与协作逻辑。现在在实际使用中,无需任何额外提示,它就能依循我的个人习惯自动开启新上下文并推进整个工作流。原本我打算专门编写一个 runner 脚本来充当确定性工作流的调度器,现在发现完全没有必要了。虽然这与面向普通消费者的 App 场景有所不同,但它至少印证了一点:当 Agent 能够记忆、学习并适应个人偏好后,它完全有能力为你动态“生成”专属于你的应用体验。

进一步说,如果一个商业应用的核心价值大多是可以被抽象和提炼的规则与 Prompt,那么哪怕模型厂商本身无意主动复制,在庞大的用户基数与社区分享欲的驱动下,这套设计精巧的核心逻辑也可能被迅速复刻并广泛分发。而当复刻不再依赖直接复制代码或设计素材时,原创者想通过法律手段保护自己的成果,也将面临更加复杂的挑战。

对独立和小团队开发者而言,在欣喜于 AI 带来强大赋能的同时,或许更需要清醒地审视:自己的产品究竟还有多少来自“非 AI 模型端”的壁垒?面对被通用模型“替代”的潜在威胁,又能为用户提供哪些不可轻易“替换”的独特价值?

“AI 给你赋能”与“AI 给你的产品赋能”,从来都是两件截然不同的事。

前一期内容|全部周报列表

如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 Buy Me a Coffee 支持我的创作。

本周赞助

Swift Pro —— 喜欢 Swift,却不想用 Xcode?

Swift Pro 将 Swift 开发带入 IntelliJ IDEA:原生编辑、编译器辅助、SwiftPM 与 Xcode 工作流、调试、测试和 SwiftUI 预览,再加上你早已熟悉的 JetBrains 导航与重构。一个插件,仅需 4 美元。

试用 Swift Pro ->


近期推荐

iOS 27:通过 AppIntentsTesting 验证系统级集成 (iOS 27: App Intents Testing)

对于 App Intents,直接调用 perform() 的单元测试只能验证 Swift 实现本身,却无法保证 Siri、Shortcuts 或 Spotlight 能够正确发现、构造和执行这些 Intent。iOS 27 引入的 AppIntentsTesting 为此提供了新的测试方式:让 App Intents 的测试从验证单个 Swift 方法,扩展到验证应用与系统之间的集成契约。

Anton Gubarenko 展示了如何在 UI Testing Target 中,借助 IntentDefinitions 动态查找 Intent 和 Entity,并通过真实的 App Intents 基础设施完成进程外测试。整个过程不需要导入应用的 Intent 类型,也不需要操作 UI。除了验证 Intent 执行结果,还能测试 Entity 查询、持久化标识符解析,以及不同 Intent 之间的参数传递。

虽然测试运行在 UI Testing Target 中,却不需要模拟用户点击或操作 Shortcuts 界面。这也展示了 UI Testing 的另一种用途:利用进程隔离能力完成系统级集成测试,而不局限于传统的 UI 自动化。


面向命令行与 Coding Agent 的 Xcode 工程 (Xcode Projects for the Command Line and Coding Agents)

Xcode 27.2 不仅引入了新的 JSON 工程配置格式 project.xcproj,还提供了两款配套命令行工具:xcodeproj 用于创建和修改工程,管理 Target、Build Phase、Build Settings 和 Swift Package;xcprojformatter 则负责格式规范化与基本结构验证。

Artem Novichkov 介绍了这两款工具的用法、常见陷阱,以及它们与 Xcode MCP 的能力差异。他特别建议通过 AGENTS.md 或 Skill 约束 Agent 优先使用 xcrun xcodeproj,而不是直接修改工程文件。毕竟,JSON 格式虽然让配置更加易读,却不意味着直接编辑就足够安全。相比让 Agent 自行理解和维护复杂的工程结构,使用具备明确操作语义、约束检查和错误反馈的专用工具,往往是更可靠的选择。


Swift 6.4:让可选的 some 和 any 类型告别括号 (some View? without parentheses in Swift 6.4)

在 Swift 中声明可选的不透明类型或存在类型时,我们一直需要额外添加一组括号,例如 (some View)? 或 (any Delegate)?。这是由于 Swift 对 some、any 与可选类型后缀 ? 的语法解析规则,导致编译器无法按照开发者的直觉理解 some View?。

Swift 6.4 通过 SE-0521 调整了这一规则,让 some View? 和 any Delegate? 成为合法写法。Sarun Wongpatcharapakorn 介绍了这项改进的背景、适用范围及仍需保留括号的情况,并将这项改进与 Swift 未来可能强制使用 any 的方向联系起来:随着 ExistentialAny 特性的推进,SE-0521 提前消除了这项迁移过程中不必要的语法负担。


HomeView 和 Apple TV 4K 2026

苹果上周推出了两款面向家庭场景的新硬件:HomeView 和 Apple TV 4K 2026。相比延续既有产品路线的 Apple TV 4K,HomeView 更值得关注。它试图将智能家居控制、家庭信息展示与日常交互整合到一个新的设备入口。Michael Tsai 分别汇总了两款产品的相关报道与社区观点。尤其是围绕 HomeView 的定位、使用场景,以及缺少独立 App Store 所引发的讨论,值得开发者进一步参与。

HomeView 的出现,或许会意外地让 CarPlay 受益。尽管 HomeView 没有开放独立的第三方应用商店,但苹果允许现有的 CarPlay 音频和视频应用无需修改便可在 HomeView 上运行。过去,一些开发者可能缺乏适配车载场景的动力,但家庭场景的加入改变了这笔投入的价值。如果开发者为了进入 HomeView 而开始适配 CarPlay,那么 CarPlay 也可能因此获得更多应用支持。


端侧与私有云摘要对比 (Comparing On-Device and Private Cloud Compute Summaries)

苹果在 Apple Foundation Models 中同时提供了端侧和云端(Private Cloud Compute)的处理能力。尽管后者能够处理更长的上下文,但是否意味着生成的文本摘要质量就一定更好?

Tiago Henriques 延续了 Making On-Device Summaries Work for Real Issue Lengths 关于 Token 预算与内容截断的实践,利用 Xcode 27 提供的 Evaluations 框架,对两种方案进行比较。这项实践最值得借鉴的并非某个模型的表现,而是作者的评估方式:不预设更大的模型或更完整的上下文必然带来更好的结果,而是通过可重复的测试,为是否引入更复杂的技术方案提供依据。


重新审视 iOS 的“极简模式” (Assistive Access — iOS Easy Mode, Revisited)

Assistive Access 是苹果从 iOS 17 开始提供的一项辅助功能,通过更大的界面元素、更简单的导航和更精简的功能选择,帮助有认知障碍的用户降低使用设备的复杂度。从 iOS 26 开始,第三方应用也可以通过 AssistiveAccess Scene,为这一模式提供专门设计的界面与交互流程。

Bas Broek 介绍了相关 API 的用法,以及如何利用 SwiftUI Preview 测试辅助访问界面。他同时指出,辅助访问并非简单地放大现有 UI,而是需要重新审视哪些功能真正必要、哪些导航可以省略,以及如何通过减少选择和操作步骤来降低用户的认知负担。

工具

iPhone Use:让 AI 助手通过 USB 操作真实 iPhone

由 ZhongErXin 开发的 iPhone Use 基于 Appium 生态中的 WebDriverAgent(WDA),将真机自动化能力封装为本地 MCP 工具,并提供配套的 Skills。Agent 可以通过 USB 连接并操作真实 iPhone,结合界面控件树与截图判断操作目标;控件定位失败时,也可以根据截图改用坐标点击。用户还可以在实时预览中直接点击、拖动和滚动,参与操作过程。

iPhone Use 并不限于测试自己开发的 App,还可以操作手机上其他已安装的应用,例如备忘录、微信、微博等。这让它不仅是一款自动化测试工具,也为探索 AI Agent 与真实移动设备的交互提供了新的可能。


yomado:为 AI 智能体准备一块虚拟工作屏

当 AI 智能体开始通过截图、鼠标和键盘操作桌面软件时,为它准备一块专用的工作屏幕,或许能减少对用户日常操作的干扰。由 GuoYu 开发的 yomado 是一款 macOS 原生工具,可以创建虚拟显示器,将任务所需的应用窗口移入其中,为视觉自动化提供相对独立的工作空间,无需额外的硬件显示器欺骗器。配套的 Skill 让 Agent 具备自行完成虚拟显示器创建、窗口迁移、环境验证,以及任务结束后的窗口恢复等能力。


Sill:在 iPhone 和 iPad 上操作 Mac 窗口

由 Noah 开发的 Sill 是一款免费开源的远程窗口操作工具,可以将 Mac 的单个窗口或整个桌面传送到 iPhone、iPad,并通过触控、Apple Pencil、键盘或触控板进行操作。它支持局域网、USB 和近距离无线直连,也可配合 Tailscale 等自有 VPN 远程访问,无需注册账户,无需依赖第三方云端中转服务。

Sill 的有趣之处,在于它围绕“在移动设备上使用一个 Mac 窗口”打磨了一套交互:窗口缩略图切换、手机竖屏触控板、窗口尺寸调整,以及 Mac 应用菜单访问,让桌面应用更便于在小屏幕上操作。


SwiftDataSync:为 SwiftData 应用构建 CloudKit 同步与共享

SwiftData 一直欠缺跨 iCloud 账户数据共享的能力,Mark Battistella 在这方面做了探索。SwiftDataSync 以本地 SwiftData 存储为数据基础,通过 CKSyncEngine 对接 CloudKit 的私有数据库与共享数据库,支持同时管理多个 Record Zone。同一设备既可以拥有自己的项目,也可以参与他人共享的工作空间,分别维护各自的同步与共享状态。

与 SwiftData 内置的自动同步机制不同,SwiftDataSync 并非开箱即用的框架。它要求开发者自行实现数据模型与 CloudKit 记录之间的映射,并明确处理删除、冲突与合并策略。框架则负责同步状态管理、变更持久化、失败重试及共享关系维护,为需要精细控制同步行为的应用提供了另一种选择。

© 2026 fatbobman
548 Market Street PMB 72296, San Francisco, CA 94104