iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
ChatGPT & Codex

這隻 LINE Bot 不是我寫的:30 天讓 Codex 從零幫我做到上線系列 第 17

Day 17 - 不是越強越好:我用 Codex Sol、Terra、Luna 做完四次實作後,學會先看「任務的形狀」

  • 分享至 

  • xImage
  •  

不知不覺,這次的鐵人挑戰賽已經走過一半。

前半段幾乎每天都在實作新功能、處理問題,再把服務部署上線。今天先不做新的功能,也不急著繼續往下一站走,想插播一篇不同的內容:回頭整理這段時間實際使用 Codex Sol、Terra 和 Luna 的心得。

這不是一篇模型規格比較,也不是要替三個模型排高低。我想從前幾次真正完成的功能出發,看看面對不同形狀的任務時,我為什麼會選擇不同模型,以及實際合作後各自帶來什麼感受。

這段期間,我用 Codex 持續替 LINE Cafe Bot 加功能。

它先學會在正確時間提醒我去收藏的咖啡廳,接著記住我喜歡安靜、有插座、適合工作的店;後來又能直接在推薦卡片裡選時間、加入 Google Calendar,最後再補上一個一直看得見的 Rich Menu。

https://ithelp.ithome.com.tw/upload/images/20260828/20183556hXnl0Fiqpj.jpg

這幾次開發剛好分別使用了 Codex Sol、Terra 和 Luna。

一開始我也很容易把模型想成一條由強到弱的直線:重要的工作用最強的,簡單的工作再往下選。但真的把三個模型放進同一個產品、處理不同功能後,我的想法改變了。

選模型真正要看的,不是功能有多大,而是任務的形狀。

需求還很模糊嗎?過程中有多少取捨?完成條件能不能清楚列出來?工作可以拆成一段一段驗證嗎?這些問題,比「哪個模型排名比較高」更有用。

Sol:當問題還沒有唯一答案

我第一次明顯感受到 Sol 的價值,是替 Cafe Bot 加入主動提醒。

表面上的需求只是一句話:

週六下午兩點去第二間,提前一小時提醒我。

真正拆開後,卻同時牽涉自然語言時間、Firestore、Cloud Tasks、Cloud Run、OIDC 驗證、LINE Push Message、失敗重試與避免重複通知。

這種任務的麻煩不在某一段程式特別難,而是每個決定都會影響下一段。如果只想到「失敗時要重試」,就可能忘記重試造成重複提醒;如果只確認 Cloud Build 成功,也可能漏掉新版其實還沒有部署到 Cloud Run。

後來做 Rich Menu 時,我又一次選了 Sol。這次程式量不算大,但問題更開放:固定選單到底該放哪些入口?哪些功能一定要留在對話脈絡裡?換圖失敗時怎麼保住舊版?圖片、座標、API、安全與部署要如何一起驗證?

Sol 適合我的地方,不只是能處理更多程式碼,而是能在答案還不明確時,協助我把系統、產品與風險放在一起判斷。

如果一個任務需要先回答「怎樣才算做得對」,而不只是「規格有沒有做完」,我會優先想到 Sol。

Terra:日常開發的務實主力

提醒功能完成後,我想讓 Bot 記住使用者明確設定的咖啡偏好。

這次需求的邊界清楚許多:定義合法的偏好 key、儲存到 Firestore、擴充 Gemini Function Calling、套用到地圖推薦、補上確認流程與測試,再部署到 Cloud Run。

它不是單檔的小修改,仍然要讀懂既有程式,也要跨資料模型、訊息流程、AI 呼叫和雲端服務整合。但每一步都有明確目的,也能各自驗證。

這正是我使用 Terra 最舒服的地方。

Terra 並不是「少思考的 Sol」。在這次實作裡,它把力氣放在資料模型、流程一致性與可驗證的修改上,沒有因為能做更多,就把第一版變得過度複雜。

例如偏好記憶沒有一開始就偷偷分析聊天紀錄、猜測使用者喜好,而是只保存使用者明確說出口、看得見、改得掉也刪得掉的設定。對產品來說,這樣反而更可靠。

遇到日常但跨模組的功能,要穩定完成讀程式、修改、測試、部署與檢查,我會把 Terra 當成很務實的起點。

Luna:完成條件清楚,就能快速往前

接下來的 Datetime Picker,目標非常具體:使用者在咖啡廳推薦卡片上選好時間,Bot 就能找回正確店家,並建立時間不偏移的 Google Calendar 連結。

我可以很清楚地寫出完成條件:

  • 按鈕格式正確;
  • 能透過短期 session 找回店家;
  • session 綁定正確的使用者與對話;
  • LINE 回傳的時間能以台北時區正確處理;
  • 部署後能從手機走完整條流程。

雖然它也碰到 LINE postback、Firestore、時區和 Calendar,但工作可以切成很小的步驟:先讀現有流程,再補 session、訊息處理與測試,最後部署和實機驗證。

這種「知道好結果長什麼樣子,而且每一步都能檢查」的工作,很適合 Luna。

Luna 帶來的不是省略驗證,而是讓驗證成為推進方式。它可以快速處理邊界清楚的小範圍改動;而資料驗證、時區、部署狀態和手機實測,仍然是我自己不會省略的交付條件。

三個模型不是排名,而是三種工作節奏

OpenAI 官方文件目前把 Sol 定位為適合複雜、開放式、需要更多分析與打磨的工作;Terra 是日常工作的務實主力;Luna 則適合目標清楚、可重複執行的任務。

放回我的實作經驗,我會這樣理解:

模型 我會在什麼情況使用 這次的實作
Sol 問題模糊、跨很多層、需要判斷與取捨 主動提醒、Rich Menu 的設計與安全部署
Terra 範圍清楚,但需要穩定完成跨模組整合 個人偏好記憶
Luna 完成條件明確,可以拆小並反覆驗證 Datetime Picker 與 Calendar 流程

這不是說同一件事只能交給某一個模型。需求寫得更清楚後,原本需要 Sol 探索的工作,可能就能交給 Terra 或 Luna;反過來,一個看似很小的按鈕,如果牽涉模糊的產品決策、安全邊界和既有系統,也可能需要 Sol。

所以現在選模型前,我會先問自己三個問題:

  1. 我是否已經知道「完成」長什麼樣子?
  2. 這個任務主要是執行,還是需要大量判斷與取捨?
  3. 我能不能把結果拆成幾個明確的驗證點?

答案還很模糊,我會從 Sol 開始;需要完成日常而完整的整合,我會選 Terra;規格與驗收條件都很清楚,我會讓 Luna 快速推進。

最後,模型選擇只是起點

這四次實作也讓我更確定:選對模型,不等於工作已經完成。

主動提醒要真的等到 LINE 訊息出現;偏好要確認下一次推薦有正確套用;Datetime Picker 要在手機上檢查店名與時區;Rich Menu 的圖片則一定要打開來看,因為檔案成功產生,不代表圖示沒有壓住文字。

模型可以幫我分析、實作和檢查,但最後決定功能能不能交付的,仍然是測試、部署狀態與真實使用流程。

如果要替這段經驗留下一句話,我會寫:

不要先問哪個模型最強;先看眼前的問題,究竟需要探索、整合,還是穩定地重複完成。


延伸閱讀與程式碼


上一篇
Day 16 - 記錄不是終點:我讓咖啡足跡回頭影響 LINE Bot 的下一次推薦
下一篇
Day 18 - Codex CLI 和 App 該怎麼選?從只看終端輸出,到真正看見成品
系列文
這隻 LINE Bot 不是我寫的:30 天讓 Codex 從零幫我做到上線23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言