iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
Vibe Coding

神隊友.swift:30 天 Vibe Coding 打造育兒 iOS App 系列 第 7

[Day 7] 沒寫過 Swift,怎麼用 AI Agent 快速上手:學習方法、開發規範和驗收標準

  • 分享至 

  • xImage
  •  

Day 7

文章同步發表在我的個人 Blog

沒寫過 Swift,怎麼用 AI Agent 快速上手:學習方法、開發規範和驗收標準

我平常主要開發 Laravel、Filament 和雲端服務,以後端為主,寫過一陣子 Android,沒寫過 Swift。這 30 天要開發一個可用的 iOS App,同時每天發一篇文章,時間其實是相當緊迫的。

1. 我要如何快速收集資訊,快速進入開發

不先從頭學語言,先弄清楚自己不知道什麼,再讓 AI Agent 幫忙找、幫忙整理。

從 0 開始:怎麼快速收集資訊、進入狀況

  • 列問題(Questions):先寫下不知道的,像有哪些新工具、要裝哪些 skill、怎樣算完成
  • 找來源(Sources):YouTube 影片、別人公開的 skills repo、官方文件,也請 Codex 規劃。影片以 2026 年的為主
  • 萃取(Extract):用 NotebookLM 讀影片,抓出概念、踩過的坑、除錯做法、驗收條件
  • 查證(Verify):用 Claude Code 對官方文件,查不到出處的標「待確認」
  • 產出(Output):整理成開發方法、規範、驗收標準,下面三節分別展開

2. 開發方法:誰做哪一步,什麼時候停下來

開發由 Codex 規劃、Spectra 寫規格、Claude Code 實作。

Spectra 是龍哥開發的一套規格驅動開發(Spec-Driven Development)的工具:先把要做什麼、做到怎樣才算完成寫成文件,AI 照文件實作,做完再對照文件驗收。用 Laravel 來比喻,它有點像管需求的 migration:每次變更是一個資料夾,做完用 /spectra-archive 併進「系統現在該有的行為」。

開發流程:誰做哪一步,什麼時候停下來

開發流程:誰做哪一步,什麼時候停下來

  • Codex(規劃):拆需求、定驗收條件,用 $spectra-propose 產生規格
  • Spectra(規格):proposal、design、specs、tasks,每個 task 都寫成可以執行的條件
  • Claude Code(實作):用 /spectra-apply 一次做一個 task,每個綠燈都 commit
  • 驗證(Verify):build 通過、測試真的有跑,功能做完再加上模擬器畫面
  • 修復(Repair):驗證失敗交給 /spectra-debug,只修這一個錯,修完重新驗證
  • 停下來(Stop):修 3 次仍失敗,停下來交給我
  • 審查(Review):全部通過後由 Codex 審查,我確認,再用 /spectra-archive 封存
  • 需求中途改了:請 Codex 用 $spectra-ingest 更新規格,再回到實作

入口都在 Claude Code,我不會在兩個工具之間切換,規劃和審查的時候,在 Claude Code 裡用 /codex:rescue 把工作交給 Codex:

步驟 在 Claude Code 輸入 實際誰做
規劃 /codex:rescue 讀 plan.md,用 $spectra-propose 建立下一個功能的 change Codex
審查 /codex:rescue 審查 <change> 的實作和驗證證據 Codex
需求改了 /codex:rescue 用 $spectra-ingest 更新 <change> Codex

規則只有一條:規劃和審查加 /codex:rescue,其他步驟直接打指令。

這個流程有三個原則:

  • 不是每件事都走 Spectra:會改變 App 行為、需要驗收的才走,像新功能、改資料模型;改文字、調顏色直接做
  • 驗證要有證據:AI 要能自己證明做完了,所以要拿得到 xcodebuild 和模擬器,就像 Day 5 提到的「誰能開瀏覽器,誰就負責驗收」
  • 失敗要有停止條件:驗證失敗交給 /spectra-debug,修 3 次仍失敗就停下來通知我

這個想法參考了 Graph Engineering:把 AI 的工作流程畫成一張圖,每個失敗都有去處,也有停下來的邊界。

停下來之後換我接手,用過去 debug 的經驗判斷方向:

  1. 先看錯誤訊息:分清楚是編譯不過、測試失敗,還是行為不對
  2. 請 AI 先解釋:說明原因和證據,不要先改程式碼
  3. 換 Codex 再看一次:兩邊說法不同,就回頭看證據

3. 規範:每份文件管什麼、AI Agent 要遵守什麼

開發會用到好幾份文件,每份各管一塊,彼此不重複:

文件 管什麼 誰建立 不寫什麼
plan.md 整個 App 要做哪些功能、先後順序、這次不做什麼 我,Codex 協助規劃 單一功能的細節規格
AGENTS.md 分工、開發流程、build 和測試指令、驗證、停止條件 Codex 起草,我確認 個別功能的需求
CLAUDE.md 匯入 AGENTS.md,加上 Claude Code 專屬的工具用法 Claude Code 重複寫一次共用規則
Spectra change 單一功能的 proposal、design、specs、tasks Codex 用 $spectra-propose 產生 其他功能的需求

整體方向放在 plan.md Spectra 只處理 AI Agent 交給它的那一個功能,不會自己去讀 plan.md。所以流程是:Codex 先讀 plan.md,挑出下一個要做的功能,整理成需求,再用 $spectra-propose 開出規格。「整個 App 要做哪些、先做哪個、哪些這次不做」由 plan.md 決定,每個功能的驗收條件則寫在 Spectra 的規格裡。

共用規則寫在 AGENTS.md Codex 讀 AGENTS.md,Claude Code 讀 CLAUDE.md,兩邊都要知道同一套驗收標準,所以規則只寫一份,CLAUDE.md 第一行用 @AGENTS.md 匯入。Claude Code 的官方文件有說明這種寫法。

有衝突時各看各的:範圍和順序看 plan.md、行為看 specs、做法看 design、驗證門檻看 AGENTS.md。Claude Code 實作時發現需求不對,不能自己在 tasks 裡改,要回去請 Codex 更新規格。

AGENTS.md 會寫五段:分工、開發流程、驗證、停止條件、回報。其中回報是為了我自己,要求 AI 講清楚動了哪些檔、用到哪些新的 Swift 寫法、哪裡是猜的,我才有辦法驗收。實際內容明天建專案時寫好再介紹。

4. 驗收標準:做到什麼程度才算完成

AI 說「做好了」不算數,要拿出證據。證據依照時機分三種,不是每次都要全部做:

什麼時候 要看到什麼
AI 每改完一次 build 成功,測試有跑而且全部通過
一個功能做完 上面那些,加上在模擬器上走過主要流程,我自己也點過一次
重要的版本 上面那些,加上裝到手機上能用

規格也要寫成驗收得了的樣子,我訂了四條規則:

  1. 驗收條件寫成看得到的結果:不寫「做一個交接清單頁」,要寫「新增一筆紀錄,把 App 關掉重新打開,資料還存在」,這樣才驗得出資料有沒有真的存進手機
  2. 列出預期會改到的檔案:驗收時對照 AI 實際改了哪些,多出來的就要問為什麼
  3. 「怎麼測試」跟「驗收條件」分開寫
  4. 每個 task 只有一個可以驗證的成果:太大就拆開

後三條參考了一支 SwiftUI 影片作者公開的範本(連結在文末)。這四條明天會寫進 Spectra 的設定檔 openspec/config.yaml,之後每次產生規格都會自動套用。

5. 我自己要看懂多少

規範和驗收都交給流程之後,我要先掌握的是能判斷驗收結果的最少知識。AI 交出來的 SwiftUI 大概長這樣,後端工程師第一次看,比較陌生的是這六種寫法:

AI 交出來的 SwiftUI,先看懂這六個地方

看得懂這六種,AI 的程式碼大致就讀得下去。其他的等卡住再查,我把可能卡住的地方分成四層,每一層對應一種常見的症狀:

卡住的時候,去哪一層查

SwiftData 和 Swift 6 的並行這兩塊,錄製影片的教材通常講得不深入,所以有些資料仍需要自行研究與查詢。於是我告訴自己一個方向:如果同一類型的問題卡住三次,那個區塊就必須深入研讀

明天

明天是上工的第一天。我會跟 AI Agent 一起把 Xcode 安裝、設定起來,介紹 Xcode 基本的開啟方式和操作,再簡單介紹今天整理的規範寫成檔案之後的樣子:AGENTS.mdCLAUDE.mdopenspec/config.yaml

參考資源

影片

文章與 Repo

官方文件


上一篇
[Day 6] 投票頁上線:建立正式 D1、部署 Worker,上線前我檢查了什麼
系列文
神隊友.swift:30 天 Vibe Coding 打造育兒 iOS App 7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言