申明:本文原創(chuàng)來(lái)自微信公眾號(hào)《iOS新知》,轉(zhuǎn)載以防文章丟失無(wú)法,如有不合適,聯(lián)系我立馬可以刪除!
前言
上周末想試試讓 Codex 幫我從零搭一個(gè) SwiftUI 項(xiàng)目。結(jié)果折騰了半天——Codex 能寫代碼,但不會(huì)自己開 Xcode、跑模擬器、看截圖。整個(gè)流程斷斷續(xù)續(xù),來(lái)回切窗口,體驗(yàn)很碎。
然后發(fā)現(xiàn) OpenAI 官網(wǎng)悄悄更新了一篇用例指南,專門講怎么用 Codex 開發(fā) iOS 和 macOS 應(yīng)用??赐曛笪也乓庾R(shí)到,不是 Codex 不行,是我用的姿勢(shì)不對(duì)。
核心思路就一句話:別依賴 Xcode GUI,讓 Codex 留在終端里干活。
CLI 優(yōu)先,別讓 Agent 碰 Xcode
OpenAI 這篇指南反復(fù)強(qiáng)調(diào)一個(gè)原則:CLI-first。
為什么?因?yàn)?Codex 是一個(gè) Agent,它最擅長(zhǎng)的事情是在終端里跑命令、讀輸出、做決策。你讓它去點(diǎn) Xcode 的按鈕,它做不到。但蘋果自己的 xcodebuild 命令行工具,幾乎能覆蓋所有構(gòu)建場(chǎng)景:
列出項(xiàng)目里所有 scheme
xcodebuild -list
構(gòu)建
xcodebuild -scheme MyApp -sdk iphonesimulator build
跑測(cè)試
xcodebuild -scheme MyApp -sdk iphonesimulator test
歸檔
xcodebuild -scheme MyApp archive -archivePath ./build/MyApp.xcarchive
build、test、archive、build-for-testing、test-without-building,全都能在終端完成。Codex 跑完一條命令,看輸出有沒(méi)有報(bào)錯(cuò),決定下一步干什么——這就是一個(gè)完整的 Agent 循環(huán)。
如果你覺(jué)得 xcodebuild 的項(xiàng)目配置太麻煩(確實(shí),.xcodeproj 那堆 XML 鬼才看的懂),可以試試 Tuist。它用 Swift 寫項(xiàng)目配置,生成 Xcode 工程,構(gòu)建也走命令行,對(duì) Codex 更友好。
項(xiàng)目深了就上 XcodeBuildMCP
純 xcodebuild 能搞定大部分事情,但當(dāng)項(xiàng)目復(fù)雜到一定程度——多個(gè) target、多個(gè) scheme、需要控制模擬器、截屏、看日志——光靠 shell 命令就不夠用了。
這時(shí)候該上 XcodeBuildMCP。
MCP 全稱 Model Context Protocol,是讓 AI Agent 調(diào)用外部工具的標(biāo)準(zhǔn)協(xié)議。XcodeBuildMCP 就是一個(gè) MCP Server,把 Xcode 的能力暴露給 Codex:
列出所有 target 和 scheme
指定模擬器構(gòu)建、啟動(dòng) App
跑完自動(dòng)截屏,Codex 能"看到"界面長(zhǎng)什么樣
讀取構(gòu)建日志和運(yùn)行日志
等于給 Codex 裝了一雙眼睛。它改完代碼,自己構(gòu)建,自己?jiǎn)?dòng),自己截屏看效果,不滿意再改——整個(gè)過(guò)程不需要你動(dòng)手。
指南里有個(gè)示例 prompt,我覺(jué)得寫的挺實(shí)用:
Add the onboarding flow for this SwiftUI app. Constraints:
Reuse existing models, navigation patterns, and shared utilities.
Use XcodeBuildMCP to list the right targets or schemes, build the app, launch it, and capture screenshots if you need visual verification.
Keep iOS and macOS compatibility intact unless I explicitly scope the work to one platform.
Tell me exactly which scheme, simulator, and checks you used.
關(guān)鍵在于你得明確告訴 Codex 它現(xiàn)在面對(duì)的是什么項(xiàng)目:是從零開始的新項(xiàng)目還是已有的工程,哪些平臺(tái)要兼容,驗(yàn)證方式是什么。說(shuō)得越清楚,Codex 干活越靠譜。
7 個(gè) SwiftUI 專用 Skill
這篇指南最讓我覺(jué)得有價(jià)值的部分,是它推薦了一整套 SwiftUI 開發(fā) Skill。Skill 相當(dāng)于給 Codex 加載一套領(lǐng)域知識(shí)和行為規(guī)范,裝上之后它寫出來(lái)地代碼質(zhì)量明顯不一樣。
SwiftUI Expert[1](作者是 SwiftLee 博主)— 通用型 SwiftUI 技能,內(nèi)置了大量最佳實(shí)踐。寫新功能、搭頁(yè)面,先掛這個(gè)。
SwiftUI Pro[2](作者是 Hacking with Swift 的作者)— 偏 Review 方向,覆蓋現(xiàn)代 API 用法、可維護(hù)性、無(wú)障礙、性能。適合寫完代碼讓 Codex 幫你審一遍。
Liquid Glass Expert[3](作者是 IceCubesApp 作者)— 專門針對(duì) iOS 26 和 macOS 26 的 Liquid Glass 新 API。今年 WWDC 之后這套視覺(jué)風(fēng)格是重頭戲,提前裝上有備無(wú)患。
SwiftUI Performance[4](同樣 Thomas Ricouard)— 掃描常見(jiàn)的 SwiftUI 性能坑,生成一份報(bào)告,按優(yōu)先級(jí)排列哪些問(wèn)題要先修。人和 Agent 都容易踩的坑,它都覆蓋了。
Swift Concurrency Expert[5](Thomas Ricouard)— Swift 并發(fā)那些莫名其妙的編譯器警告和報(bào)錯(cuò),有時(shí)侯連老手都頭疼。這個(gè) Skill 專治這種。OpenAI 自己也說(shuō)用了 GPT-5.4 之后需要它的場(chǎng)景少了,但并發(fā)診斷一吵起來(lái)它還是很有用。
SwiftUI View Refactor[6](Thomas Ricouard)— 幫你把巨大的 View 文件拆小,保持代碼風(fēng)格一致。
SwiftUI Patterns[7](Thomas Ricouard)— 推 @Observable 和 @Environment 的架構(gòu)模式,項(xiàng)目越大越需要統(tǒng)一的模式。
你看這 7 個(gè) Skill 里,Thomas Ricouard 一個(gè)人貢獻(xiàn)了 5 個(gè)。這哥們是 Reddit iOS App 的前開發(fā)者,IceCubesApp(Mastodon 客戶端)的作者,SwiftUI 社區(qū)里非常活躍的人。他的 Skill 質(zhì)量基本上是第一梯隊(duì)的。
實(shí)用建議
指南最后給了幾條實(shí)操建議,都挺實(shí)在:
從簡(jiǎn)單的開始。 新項(xiàng)目不用一上來(lái)就裝 MCP 和 Skill。先讓 Codex 搭個(gè)腳手架,寫個(gè)構(gòu)建腳本,確認(rèn)基本流程跑通。等項(xiàng)目復(fù)雜了再加裝備。
驗(yàn)證循環(huán)要小。 別每次改一行代碼就跑全量構(gòu)建。告訴 Codex 每次改完只跑最小的驗(yàn)證命令——比如只編譯你改的那個(gè)模塊,通過(guò)了再擴(kuò)大范圍。這樣 Codex 跑得快,你也不用干等。
保持在終端里。 這是貫穿全文的主題。xcodebuild 能搞定的就不要開 Xcode GUI。Codex 在終端里是自主的,一旦需要 GUI 操作就斷了。
XcodeBuildMCP 該上就上。 當(dāng)你需要 Codex 不只是寫代碼,還要自己驗(yàn)證界面效果的時(shí)候,XcodeBuildMCP 是目前最好的方案。Scheme 管理、模擬器控制、截屏這些,它全包了。
最后
這篇指南本質(zhì)上在講一件事:怎么讓 AI Agent 在 Apple 生態(tài)里真正"自治"。
核心就三步——xcodebuild 打底,XcodeBuildMCP 加持,Skill 拉高代碼質(zhì)量。把這三層疊起來(lái),Codex 就不只是個(gè)代碼補(bǔ)全工具,而是一個(gè)能自己構(gòu)建、自己跑、自己看結(jié)果、自己迭代的開發(fā) Agent。
對(duì)寫 iOS 的人來(lái)說(shuō),這套工作流值得試試。就算你平時(shí)不用 Codex,"CLI 優(yōu)先"和"小循環(huán)驗(yàn)證"這兩個(gè)思路,放到任何 AI 編程工具里都適用。
你有在用 AI Agent 寫 iOS 項(xiàng)目嗎?評(píng)論區(qū)聊聊你的工作流唄,一起交流學(xué)習(xí)一下。
參考資料
[1]
SwiftUI Expert: https://github.com/AvdLee/SwiftUI-Agent-Skill
[2]
SwiftUI Pro: https://github.com/twostraws/SwiftUI-Agent-Skill/blob/main/swiftui-pro/SKILL.md
[3]
Liquid Glass Expert: https://github.com/Dimillian/Skills/blob/main/swiftui-liquid-glass/SKILL.md
[4]
SwiftUI Performance: https://github.com/Dimillian/Skills/blob/main/swiftui-performance-audit/SKILL.md
[5]
Swift Concurrency Expert: https://github.com/Dimillian/Skills/blob/main/swift-concurrency-expert/SKILL.md
[6]
SwiftUI View Refactor: https://github.com/Dimillian/Skills/blob/main/swiftui-view-refactor/SKILL.md
[7]
SwiftUI Patterns: https://github.com/Dimillian/Skills/blob/main/swiftui-ui-patterns/SKILL.md
這里每天分享一個(gè) iOS 的新知識(shí),快來(lái)關(guān)注我吧