跳转到内容
cd /languages
  • Apple 平台
  • 编程语言
  • AST 和符号支持

Maguyva 的 Swift 支持:面向 iOS 与 macOS 的代码图谱

Maguyva 以 AST、符号和图谱支持 Swift,让 AI 智能体在 iOS 和 macOS 代码中追踪协议、扩展、构造器和属性观察器。

为什么 Swift 需要的不只是文件搜索

Swift 会把一个类型分散到许多地方。一个结构体在一个文件里声明,从另外三个文件的扩展中获得行为,并遵循某个包中定义的协议。状态变化藏在计算属性和 willSet / didSet 观察器里。一次只读一个文件的智能体会漏掉其中的大部分。

Maguyva 会为这些结构建立索引,让智能体能一并看到一个类型的成员、协议遵循和调用方。

Maguyva 在 Swift 中提取什么

Maguyva 覆盖 .swift。可调用符号包括函数、init 和 deinit、下标、计算属性的 getter 和 setter,以及 willSet / didSet 观察器,因此改变状态的代码可以作为符号搜索,而不是埋在属性体里。

在结构体、枚举、协议和扩展中声明的成员会以所属类型限定(例如 CartStore.add),在扩展中新增的成员会归属到被扩展的类型。定义名会去掉泛型参数、协议遵循列表以及 ? / ! 后缀,因此查找时使用的是纯名称。调用会保留 self. 和类限定,尾随闭包也会计入调用的参数个数。

图谱记录调用、协议遵循、继承、重写、实例化、特性(attribute)、类型引用、读写以及 throw 边。

智能体提示词示例

  • “哪些类型遵循 PaymentProvider,它们各自在哪里创建?”(dependency_search)
  • “谁调用了 CartStore.add,来自哪些视图?”(先用 find_symbol,再用 dependency_search 的 incoming 方向)
  • “解释一条推送通知是如何到达收件箱界面的。”(get_task_context)

已知限制

  • 只有 .swift 源码会被映射。Storyboard 和 XIB 文件不在扩展名列表中,因此 Interface Builder 中的连接不在图谱范围内。
  • print、debugPrint、NSLog 和断言等标准库与 Foundation 调用会从关系中过滤掉,因此它们不是图谱的边。查找它们请使用 text_pattern_search。

后续步骤

通过快速入门连接仓库,然后在兼容性页面查看支持矩阵。如果同一产品也在 Android 上发布,请阅读 Kotlin 指南。

最适合场景

  • > 拥有大型应用 target 和共享 Swift 包的 iOS 与 macOS 团队。
  • > 围绕协议和扩展构建的代码库,一个类型的行为分散在许多文件中。
  • > 在修改共享模型、服务或协议之前需要做影响分析的智能体工作流。

智能体工作流

  • > 在修改协议要求之前,找出所有遵循该协议的类型。
  • > 跨 ViewModel、协调器和包追踪某个服务方法的调用方。
  • > 定位触及某个状态的构造器、计算属性和 `didSet` 观察器。

引擎细节

  • > 可调用符号包括函数、`init`、`deinit`、下标、计算属性的 getter 和 setter,以及 `willSet` / `didSet` 观察器。
  • > 结构体、枚举、协议和扩展的成员会以所属类型限定,例如 `CartStore.add`。
  • > 定义名会去掉泛型参数、协议遵循列表以及 `?` / `!` 后缀,调用会保留 `self.` 和类限定。

常用 MCP 入口工具

  • find_symbol

    需要定义和引用时,用类型、协议或方法名来查找。

  • dependency_search

    对协议使用它,可找到遵循它的类型;对方法使用 incoming 方向,可找到调用方。

  • get_task_context

    适用于“解释一条推送通知是如何到达收件箱界面的”这类提示词。