MCP 崛起与苹果的 AI 框架设想
在最近一段时间,在社交网络上,越来越多的 Model Context Protocol(MCP)使用者展示了各种丰富多彩的应用场景,从操控 Blender 创建精美场景,到利用最新的 GPT-4o 图片构建完整的漫画故事。MCP 巧妙地打开了以文本为主要互动手段的大模型,与现实世界之间的大门。
上周,随着 OpenAI 宣布 Agent SDK 对 MCP 的正式支持,这标志着 MCP 已经成为了大模型和现实工具通讯上的事实标准。
尽管 MCP 的协议本身并不特别复杂,但无论从 Server 的实现、配置,还是提示词构建,仍然需要跨越一定的技术门槛。在接下来几个月,MCP 更多地仍将是专业人士和技术发烧友的得力助手(效率工具)。特别值得考虑的是,MCP 在安全方面完全依赖于使用者本身的判断,对于绝大多数普通用户来说,如何将其无缝融入日常工作和生活仍然是一项不小的挑战。
考虑到苹果不久前宣布将“More Personalized Siri”功能推迟到明年,我们是否可以合理预期,在即将到来的 WWDC 2025 上,苹果会推出一个类似 MCP 的创新框架(根据苹果一贯的风格,很可能不会简单照搬现有标准),并在操作系统和系统应用中深度集成该能力?
结合苹果不局限于某个特定云端 AI 大模型的开放策略,一个包含在系统中、支持类似 MCP 功能且可被开发者灵活调用的框架无疑是极具吸引力和想象空间的。一方面可以优雅解决普通消费者的信任痛点,同时也能显著简化开发者适配不同大模型的技术烦恼。进一步设想,如果再增加允许 MCP 服务器或实现在 App Store 上线的可能性,无疑会从根本上改变 MCP 的安全性完全由使用者自己负责的现状。
苹果长久以来的核心优势都在于如何巧妙打通软硬件沟通的壁垒,给最终用户呈现一个相对可控、安全、完整的体验。无论作为开发者还是最终用户,我都衷心期待看到上述愿景在不久的将来得到实现。
欢迎 点赞、 转发
SwiftUI 的 Environment 是一个优雅且功能强大的依赖注入机制,几乎每个 SwiftUI 开发者都会在日常开发中接触和应用。这一机制不仅简化了视图间的数据传递,也为应用架构设计提供了更多的可能性。本文将暂且搁置具体的实现细节,转而聚焦于 Environment 在架构中的角色与边界,探讨那些常被忽视却至关重要的设计理念与实践经验。
这不是一篇 TCA 的框架评测,而是一篇探讨“架构设计如何影响应用性能”的分析文章。Karin Prater[6]以 Krzysztof Zabłocki 在 Swift Heroes 2023 的演讲[7]为切入点,分析了 TCA 在发展过程中遭遇的性能瓶颈及其应对思路。Prater 指出,尽管 TCA 在可组合性和可测试性方面有诸多优势,但在大型项目中,这些特性也可能带来不容忽视的性能代价。文章鼓励开发者从实践出发,权衡架构设计与性能表现之间的取舍。
Swift Testing 的参数化测试虽能有效减少重复代码、提升并发执行效率,但默认基于 String(describing:)
的用例名称,往往无法准确传达测试意图,尤其在测试套件变复杂后尤为明显。Paul Samuels[9]在本文中介绍了如何通过实现 CustomTestStringConvertible
协议,让每个测试用例拥有清晰可读的描述,从而提升 Xcode Navigator 中的可读性。作者还分享了进阶技巧,例如为常见类型(如 Bool
)封装描述生成工具,并提出了在当前宏系统限制下的替代方案。
在实际项目中,Magnus Jensen[11]需要一个支持 Label、Title、Subtitle 和 Detail 四种文本内容的列表项组件,因此创建了灵活可扩展的 ListItem
。他通过定义 ListItemSlotable
协议和泛型包装器 _ListItemSlotted
,实现了在不破坏原组件结构的前提下,为列表项灵活插入前置(leading)和尾部(trailing)内容的能力。这种插槽式设计增强了组件的可组合性,避免了常见的视图层级混乱问题。为了简化调用,还提供了基于字符串的初始化方式。本文展示了如何以符合 SwiftUI 思维的方式构建简洁而强大的组件系统。
TabView
的能力在 SwiftUI 中持续演进:从最早的标签页(Tab)切换,到引入滑动分页(Pager)行为,再到 iOS 18 支持侧边栏(Sidebar)样式与分组配置,逐步成长为多平台通用的导航组件。在本文中,Antoine van der Lee[13]通过多个实用代码示例,系统讲解了 SwiftUI TabView
的基础与进阶用法。
Matt Massicotte[15]以一位“刚接触 SwiftData 的开发者”视角,分享了他在两个项目中使用 @ModelActor
的真实体验。文章剖析了 ModelActor
初始化过程对线程上下文的依赖、与 MainActor
的微妙关系,以及 ModelContext
非 Sendable 特性所带来的并发访问挑战。Matt 还构建了一套扩展方法,帮助我们安全地在 actor 内执行带有 context
的异步操作,并提出了一个支持主线程与后台访问的 Database
抽象。
除了测试用例外,我个人通常不会采用文中介绍的
withContext
模式将闭包注入 actor。但 Matt 在构建这一机制过程中展现出的并发技巧,确实令人印象深刻。
Xcode 的 project.pbxproj
文件长期以来都是团队协作中的“冲突温床”。Pedro Piñera[17]在本文中总结了多种有效的缓解策略:从经典的多项目拆分、使用 Tuist / XcodeGen 进行项目生成,到将 SwiftPM 作为本地项目管理工具,再到 Xcode 16 中引入的“同步文件夹(Synchronized Groups)”功能,以更低的维护成本减少频繁的结构变动所带来的合并冲突。
由 Chris McGee[19]撰写的这篇文章,介绍了 Swift 团队正式发布的 Swift 工具链版本管理器 Swiftly 1.0。该工具可用于快速安装、切换、更新 Swift 工具链,支持 macOS 和主流 Linux 发行版,并可通过 .swift-version
文件统一团队使用的 Swift 版本。Swiftly 完全由 Swift 编写,具备良好的可移植性和开发体验,是在 Xcode 之外安装 Swift 的推荐方式。
📚 查看安装文档[20]
Swiftly 最初由 Patrick Freed[21]开发,并已将其捐赠给 Swift 社区。
WanAndroid 是一个知名的中文安卓学习社区,本项目由 seasonZhu[23]基于其开放 API 编写的 iOS 客户端。实现本身并不复杂,但值得一提的是,作者过去几年内曾分别使用 SwiftUI、Flutter、uni-app 和 ArkTS(HarmonyOS)开发过同类项目。通过围绕相同业务需求进行跨平台、多框架的实现,作者不仅加深了对各平台差异的理解,也形成了自己的一套组件化与响应式开发思路。对希望探索跨平台开发策略的读者来说,这是一个颇具参考价值的项目。
如果你觉得这份周报或者我的文章对你有所帮助,欢迎 点赞、赞赏,并将其 转发给更多的朋友。
参考资料
[1]
weekly.fatbobman.com: https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本: https://fatbobman.com
[3]
Discord: https://t.ly/gzxeh
[4]
SwiftUI Environment:理念与实践: https://fatbobman.com/zh/posts/swiftui-environment-concepts-and-practice/?utm_source=fatbobman%20weekly%20issue%2077&utm_medium=web
[5]
从 TCA 的演进看架构设计对性能的影响 (The Composable Architecture: How Architectural Design Decisions Influence Performance): https://l.fatbobman.com/w077-01
[6]
Karin Prater: https://x.com/swiftyplace
[7]
演讲: https://www.youtube.com/watch?v=ie0ava5PoYE
[8]
让参数化测试更具可读性 (CustomTestStringConvertible): https://l.fatbobman.com/w077-02
[9]
Paul Samuels: https://hachyderm.io/@paulio87
[10]
打造灵活且可定制样式的 SwiftUI 列表项 (Building Flexible, Styled ListItems in SwiftUI): https://l.fatbobman.com/w077-03
[11]
Magnus Jensen: https://x.com/magnuskahr
[12]
TabView 全面解析 (SwiftUI TabView: Explained with Code Examples): https://l.fatbobman.com/w077-04
[13]
Antoine van der Lee: https://x.com/twannl
[14]
ModelActor 真有点怪 (ModelActor is Just Weird): https://l.fatbobman.com/w077-05
[15]
Matt Massicotte: https://mastodon.social/@mattiem
[16]
Xcode 项目中避免合并冲突的策略 (Strategies to Avoid Merge Conflicts in Xcode Projects): https://l.fatbobman.com/w077-06
[17]
Pedro Piñera: https://mastodon.social/@pedro@mastodon.pepicrft.me
[18]
Swiftly 1.0 发布:Swift 工具链版本管理器: https://l.fatbobman.com/w077-07
[19]
Chris McGee: https://github.com/cmcgee1024/
[20]
查看安装文档: https://www.swift.org/install/macos/
[21]
Patrick Freed: https://x.com/patrick_freed
[22]
基于 RxSwift 编写的 iOS wanandroid 客户端: https://l.fatbobman.com/w077-08
[23]
seasonZhu: https://juejin.cn/user/4353721778057997
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有