AI 筆記:計畫趕不上變化

這陣子用 AI agent 來寫程式,過程中被自己習慣的流程卡了幾次,這篇就當作是提醒自己的踩雷記錄。

一開始的想像:高階模型負責規劃,低階模型負責幹活

一開始我用的是很多人都推薦的做法:

  • 先用一個比較強、比較貴的模型,幫整個功能做超詳細的規劃。
  • 規劃細到什麼程度?包含要改哪個檔案、哪一段程式、步驟順序都先排好。
  • 然後再讓便宜一點的模型,照這份計畫一條一條執行。

看起來很划算:強模型負責「想清楚」,弱模型負責「照做」,不會讓強模型狂燒 token,而且弱模型不太容易亂衝。

如果是個小功能、一個人開發、repo 變動不大,這套 workflow 其實還算好用。

繼續閱讀 ➜

我如何與 AI Agent 協作開發

我主要工作是 iOS app 開發,現在工作有很大一部分是在終端機裡與 AI agent 協作:研究方案、規劃功能、修改程式碼、分析 crash,最後再由人進行審查與驗收。

現在的 model 都很強大,真正影響成果的已經不是 prompt 寫得多漂亮,而是能否提供完整 context、把重要知識外部化,並將重複流程工具化。這篇文章會整理我日常工作流程,以及幾個已經實際使用的案例,希望能跟各位交流分享,聽到更多人的使用案例。

繼續閱讀 ➜

macOS Caps Lock 零延遲設定教學

在 macOS 底下我們可以按 Caps Lock 鍵切換輸入法,但每次按的時候都會覺得有一點頓頓的,無法立即切換過去,這不是你的錯覺!

本文分享兩個重點:

  1. 讓 Caps Lock 切換輸入法「立刻生效、沒有延遲」
  2. 讓這個設定「開機自動套用」,不用每次重開機都重打指令
繼續閱讀 ➜

讓 Calibre 找到繁中書籍的元資料

Calibre 什麼都好,就是中文書的元資料讓人崩潰

用 Calibre 管理電子書庫的人大概都經歷過這個流程:匯入一本書,點「下載元資料與封面」,然後看著搜尋結果轉圈圈,最後跳出來的不是空白就是一堆不相關的英文書。

這不是 Calibre 的問題。Calibre 的元資料架構設計得很好,它支援多個來源同時搜尋,讓你挑最完整的那筆。問題在於,內建的來源幾乎都是英文世界的資料庫,找不到繁體中文書。

現有方案為什麼不夠用

目前 Calibre 內建能用的來源大概就這些:

  • Google Books — 偶爾能找到中文書,但資料經常殘缺。簡介只有一兩句、標籤沒有、封面模糊,有時候連作者名字都是拼音。

  • Goodreads — 繁中書目少得可憐,大部分台灣出版的書根本搜不到。

  • Kobo Metadata Plugin — 社群有人開發了一個從 Kobo 抓資料的外掛,設定台灣區之後確實能用。不過它不是每次都能找到資料,覆蓋率有限。

有更多適合台灣讀者的來源,總是一件好事。所以我決定自己動手。

繼續閱讀 ➜

KOHi — 把 KOReader 的閱讀標註匯入 Obsidian

用 KOReader 看書的人大概都有同樣的經驗:讀到好段落就順手畫個重點、寫個筆記,但讀完之後呢?這些標註就一直留在閱讀器裡,再也沒打開過。

我自己用 Obsidian 管理所有筆記,一直想把 KOReader 的 highlight 也整合進來,卻找不到現成的工具。手動複製貼上太慢,寫腳本又要處理 KOReader 那套 Lua 格式的 metadata。

所以我寫了 KOHi,一個 Obsidian plugin,專門解決這件事。

KOHi 做什麼

USB 接上閱讀器,在 Obsidian 裡執行一個指令,就能把 KOReader 的 highlight 和筆記匯入 vault。每本書產生一份 Markdown 筆記,包含書籍資訊和所有標註。

核心功能:

  • 自動偵測儲存模式 — KOReader 有三種存放 metadata 的方式(book folder / koreader/docsettings / koreader/hashdocsettings),KOHi 全部支援,不用自己去找檔案在哪裡。
  • 模板自訂 — 產生的筆記格式完全可控。用 Nunjucks 模板語法,可以自訂 frontmatter、章節分組、頁碼、highlight 顏色等所有欄位。也提供預設模板,不想自己寫也能直接用。
  • 選擇性匯入 — 可以一次匯入全部,也可以用模糊搜尋挑特定幾本書。
  • 重複匯入覆蓋 — 重新匯入同一本書時,可以選擇是否要自動覆蓋舊筆記,不會產生重複檔案。
繼續閱讀 ➜

Swift Package 多語言支援

在開發 iOS 應用程式時,使用 Swift Package Manager (SPM) 來模組化程式碼已經成為主流做法。然而,當你在 Swift Package 中實作多國語言支援時,可能會遇到一個令人困惑的問題:Package 內的本地化在測試時運作正常,但整合到主專案後卻失效了。本文將深入探討這個問題的根源,以及如何透過 CFBundleLocalizationsCFBundleAllowMixedLocalizations 這兩個 Info.plist 設定來解決。

繼續閱讀 ➜