快轉到主要內容
  1. 生成庫/

軟體

這頁是程式那一邊。上架的九支在Apps有各自的介紹頁,這裡講的是它們作為一批東西的樣子 —— 以及一個人怎麼同時養著 52 個專案還沒有把自己搞丟。

九支在 App Store 上的
#

圖 1 · 九支上架 app 的圖示
九個 iOS app 圖示排成網格:遺忘花園、原子在場、聽覺旅伴、英語 N+1、甘特星球、假名私塾、Python 點線面、回聲種子、紅樓夢模擬器
圖說:九支全部支援多語系、全部把 AI 推論放在裝置上跑(沒有伺服器、沒有帳號、沒有訂閱)。
App一句話
甘特星球3D 視覺化習慣養成 + 端側 AI 樹洞
假名私塾五十音學習,含系統鍵盤擴充與手寫辨識
英語 N+1離線 AI 英語外教,CEFR 自動定級
Python 點線面三維度 Python 教學,內建 Python 3.13 執行環境
原子在場防深偽錄音存證,雜湊鏈 + 數位簽章
聽覺旅伴DSP 即時合成噪音 + 108 種環境音
回聲種子記錄思想,做成訓練未來 AI 的數位遺產
紅樓夢模擬器AI 敘事引擎,120 回播放與三種結局比較
遺忘花園滑動式相片整理,被放下的照片長成廢棄樂園

但上架的只是九分之一
#

類別數量內容
上架 iOS app9見上表
未上架原型28AR 遊戲、輸入法、端側 TTS、麻將教學、像素繪圖…
網站 / 服務6含這個網站本身
共用函式庫5跨 app 互推卡片、共用字型、廣告整合範本…
開發工具4上架截圖產生器、Xcode MCP、設定檔同步…
合計52

那 28 個原型不是失敗品,是還沒有理由上架的東西。端側 Stable Diffusion 的可行性驗證、Whisper 離線轉錄的 NPU 效能測試、Qwen3-TTS 的 Swift 移植 —— 這些跑完就知道答案了,答案本身比一個上架的 app 有用。

講一點做法
#

一、52 個專案需要一本目錄,而且目錄不能是程式碼。 每個專案在一個獨立的倉庫裡有一張 YAML 卡:它叫什麼、在哪個資料夾、上架了沒、版本多少、Bundle ID 是什麼、對外的宣傳詞怎麼寫。這本目錄不放程式碼,只放指標。有一支驗證腳本會檢查每張卡指到的路徑是不是還在、有沒有重複的 slug、有沒有孤兒。

為什麼要這樣?因為「這個 app 的隱私政策網址是什麼」這個問題,一年會被問到二十次 —— App Store 送審時、寫網站時、app 裡放連結時。答案只能有一個地方,其他地方都從那裡讀。

二、跨 app 的互推是資料,不是程式。 九支 app 會互相推薦彼此。做法不是在每支 app 裡寫死另外八支的清單(那樣每次上架新 app 就要改九個專案),而是這個網站上有一份 JSON,app 啟動時去拉。新增一支 app = 改一份 JSON。

三、共用的東西要真的抽出來。 字型、互推卡片的 SwiftUI 元件、廣告整合的樣板,這三樣被獨立成套件。抽出來的判準很簡單:同一段程式碼要被第三個專案複製貼上的時候,就是該抽的時候。 第二次可以忍,第三次不行。

四、上架材料是產出來的,不是做出來的。 九支 app × 六種語系 × 每種語系數張截圖 —— 這個數字用手做會死人。截圖的排版、文案、機型外框是一份設定檔,跑一支腳本輸出全部。這也是為什麼上表那個「52」不會壓垮我:真正手工的部分被壓到很小。

沒講的部分
#

  • 那本目錄的欄位設計、以及驗證腳本實際檢查哪些東西
  • 端側 AI 那條線:模型怎麼選、怎麼量化、怎麼塞進 App Store 的體積限制裡
  • 28 個原型裡哪幾個其實已經可以上架、以及為什麼沒有
  • 11 種語系的翻譯流程,以及怎麼確保譯文沒有默默壞掉

這頁講的是「同一件事要做九次」怎麼收斂成「做一次、跑九遍」。你的工作裡如果也有那種九次,委託頁