用 Agent Skills 构建 iMessage 风格的 iOS 聊天与通话应用

Stream Blog2026-08-26 05:05

Agent Skills 能把聊天应用做到什么程度?

这篇教程展示了一个较完整的实践:从一个 SwiftUI 项目开始,让编码智能体借助 Stream Agent Skills 生成和配置代码,最终实现一款具有 iMessage 风格聊天和 FaceTime 风格音视频通话能力的 iOS 应用。

项目使用 SwiftUI、Stream Chat 和 Stream Video,并通过 stream-cli 与 stream-swift 两项技能辅助编码智能体完成开发。

最终实现的功能

完成后的应用包含:

  • iMessage 风格的消息收件箱,包括头像、消息预览、未读状态和时间信息;
  • Edit 和 Filter 菜单;
  • 消息列表与悬浮式消息输入框;
  • 联系人资料页,可直接发起语音或视频通话;
  • Messages、Calls、Contacts、Search 四个主要标签页;
  • FaceTime 风格的音视频通话界面。

教程要求使用 Xcode 26 或更高版本,并准备相应的 Stream 应用配置。

两项 Agent Skills 如何分工

项目主要使用两个技能。

stream-swift 负责理解开发需求、协调任务,并帮助编码智能体查找所需的最新文档信息,再按照规则将实现应用到 Swift 项目中。

stream-cli 则负责服务端相关操作,例如管理用户凭证、初始化用户、频道和消息等数据。

安装方式如下:

npx skills add https://github.com/getstream/agent-skills --skill stream-cli
npx skills add https://github.com/getstream/agent-skills --skill stream-swift

在给定初始 Xcode 项目后,教程中的编码智能体按照几个关键步骤组织应用:聊天与视频分别放入独立服务文件;通过 CLI 获取服务端签名的用户 JWT;初始化 6 个联系人以及 6 个一对一聊天频道;根据提示词定制 Liquid Glass 风格界面;Chat 和 Video SDK 客户端则以单例方式初始化。

从 SwiftUI 项目开始

编码智能体会通过 Swift Package Manager 配置聊天与视频所需 SDK。

由于应用支持视频通话以及聊天中的媒体上传,还需要在项目配置中声明照片、摄像头和麦克风权限,分别用于媒体上传、视频通话和音频通话。

演示项目没有另外编写初始化数据脚本,而是通过 CLI 调用服务端聊天 API,创建用于展示的联系人和聊天频道。

聊天服务如何组织

生成的聊天服务使用 @MainActor 单例管理 ChatClient。客户端只创建一次,同时负责应用 iMessage 风格主题以及连接当前用户。

聊天部分还配置了本地存储能力,以支持离线场景。

这种结构的重点是把 SDK 客户端生命周期从具体 SwiftUI View 中抽离出来,避免在 View body 或计算属性中反复创建客户端。

视频通话与界面定制

视频部分同样由独立服务负责,包含 Video 客户端、通话协调器以及定制后的通话 UI。

教程通过 SDK 提供的 ViewFactory 定制多个界面,包括等待通话、本地视频、通话顶部状态栏、麦克风与摄像头控制、拨出界面以及来电界面。

其中通话控制区域包含麦克风、摄像头、扬声器、切换摄像头和挂断等按钮。应用还会在根视图处理呼出、呼入和通话中的状态覆盖层。

联系人资料页提供语音和视频按钮。用户发起并接听通话后,本地与远端设备进入实时 WebRTC 会话。

Agent Skills 的价值在哪里?

这个案例的重点并不只是复刻 iMessage 的视觉效果,而是展示一种新的 SDK 集成方式:把产品 SDK 的使用规则、文档检索方式和 CLI 操作封装成面向编码智能体的技能。

在这一模式下,编码智能体不仅生成 SwiftUI 界面代码,还参与 SDK 安装、服务端数据初始化、身份凭证配置、客户端生命周期管理以及聊天和音视频能力的整合。

对于正在尝试 AI 编程工作流的开发者而言,这个案例提供了一个相对完整的参考:Agent Skills 可以承担的不只是代码补全,而是围绕特定 SDK 和开发规范执行一系列相互关联的工程任务。

评论

请登录后发表观点

暂无数据