Day:292 NEXT
第 292 天的年度檢討:從 Ingrelens 與 cosGlint 的基礎建設到架構解耦,LLM 與後端分離、Orchestrator 上線;經歷 11 月大流量的佇列塞車與 48 小時救火,補齊觀測與調度。cosGlint 的使用者已超過兩千,內建 13k+ 商品,1.3.0 也推出了全方位部位檢測。
本文目錄
從開始做 Ingrelens 到今天是第 292 天,時間過得很快。回頭看從一步一步打造 Ingrelens 與 cosGlint,到找到夥伴分工,我也能把精力放在更關鍵的事情上,cosGlint 到現在已有兩千多名註冊使用者,也內建了超過 13000+ 件商品,即使手邊沒有商品可拍照,也能直接選一件來分析。
三月啟動產品計畫時,我在 GitHub Copilot 的 Agents beta 上摸索,也用過還有點笨拙的 Claude 3;到現在已經走到 Opus 4.5,這段模型演進的速度確實驚人。不過這次想記錄的,是我這一年的檢討。
我很慶幸當初做了大家口中的「過度設計」。具體來說是在產品尚未上線的階段,就先把 LLM 服務與後端邏輯完全解耦。表面看起來像多此一舉,但這個決定讓後續擴充反而輕鬆。
我們一開始把後端與 LLM 綁在一起,初期沒問題;可當任務複雜度上來,維護成本與耦合度就一起拉高。現在後端 API 的數量已超過 500 支,LLM 任務也拆得很細,如果持續讓兩邊緊密綁定,複雜度會呈倍數成長。五月我決定把 LLM 完全剝離,讓它成為可獨立調度的服務。雖然在當時看是多做一步,但現在管理與迭代的成本明顯下降。
在這個架構下我做了一套 LLM Orchestrator,專門管理多模型、多供應商和多種任務的日常運作:集中管理 prompt,提供 provider 切換與調度,維護 api key pool,並設計 fallback 機制。API 和任務越來越多,這層編排就成了穩定性的關鍵。把 LLM 從後端拆開後,即使任務多、模型多,我們還是能持續推出更新,也比較容易找出問題。
回顧過去每一篇檢討,其實我們都還沿著當初 3 月的規劃在走,只是 roadmap 太龐大,看起來才花了這麼多時間,確實我們到現在還是燒自己的錢,而不是去搞 VC,一方面可能時機還沒到,一方面我實在不喜歡空口說白話,市場上太多拿個空殼的 MVP 去拿幾億美金,雖然那也是他們的實力,但那些產品說真的我也只用了一次,不少產品後來似乎也沒再更新,就退場了?但 VC 確實蠻愛把錢丟到這種團隊,當然人脈和圈子也是差異。
雖然 Ingrelens 和 cosGlint 暫時還沒 VC,我們也確實還把比較多資源放在開發 app 上,對於目前的規劃來說,至少還有三個版本 cosGlint 才算符合當初啟程時的規劃。



但 Ingrelens 就是不斷在觀察使用者中做出改善,前半年其實都在基礎建設,所以提供了基礎的網頁版讓使用者可以在網頁上掃描產品及個人化分析,但這顯然體驗不好,所以在五月的時候其實我就直接決定提早進入 APP 版本的開發,我還記得啟動時間是 6/3,一直到上架其實已經過了兩個月,兩個月聽起來很快但其實整個產品線已經過了半年,說沒有壓力是騙人的!
當然 vibe coding 熱潮正起,很多人隨便弄一下然後就開課或是賺到錢的案例,也會讓我有點懷疑人生,啊我 .... 搞這麼複雜幹嘛?
但轉個念我們還是繼續做了 cosGlint,整個正式上線其實已經到了九月,初期其實推廣得很不順,因為沒有太多預算投入廣告,所以至今完全都沒有買任何廣告,但到現在也有兩千多名使用者。
回顧
回頭看,我們也許還有許多做得不好的地方,但這些都是得走過的路。有 AI 可以幫忙,我覺得更該把發現的問題記下來,邊做邊調整方向,也提醒自己:堅持理念的前提,是這條路真的走得通。
我們很清楚 cosGlint 還有進步空間。從第一波大流量襲來、信箱被 alert 淹沒,到如今系統相對穩定順暢,這中間花了不少力氣。
回想 11 月夥伴的推廣文突然引來大量使用者,確實有一刻被打得措手不及。但我做的第一件事不是直接修 bug,而是先用一小時把所有後端 log 整合到 GCP Logging,確保之後能清楚追蹤事件的因果鏈。隨後才逐一處理警報、修正問題、立即部署並觀察成效,如此反覆近 48 小時,持續觀測系統穩定度。
上線前有做測試,但沒有覆蓋「一次上百個任務互相競爭」的情境。我們的分析任務會進佇列等待 worker 處理(可以想像成排班的工人),小量時當然沒問題;一旦大量任務同時 pending,問題就浮現:有的任務卡住不前、有的重試機制不夠健全、後面的任務也缺乏繞行與降載策略,結果佇列迅速塞滿,新任務不斷湧入,整體吞吐量被拖垮。這次事件讓我們補齊了高併發下的觀測、調度與回溯能力,並把壓力測試納入常態流程。
也感謝這些人流造成的問題,讓我可以把 worker 修復到可正常運作,有異常會自動刪除異常任務繼續進行,時至今日即使有異常的任務也可以正常拒絕刪除後繼續處理別的任務。
其實我們仍有部分改動是不在 roadmap 上的,像是我們最新推出的髮質檢測系統 以及全身分割部位的配配個人化分析系統,原本其實只有 findskin 的臉部檢測,但大量使用者進來後,我們才發現,化妝品、保養品不只是臉,還得分別考慮頭髮/臉/身體/手/腳,所以當下我們決定暫停所有計畫,全力改善這個問題!
終於我們在 cosGlint 1.3.0 版的時候推出全方位的配配個人化分析,現在 cosGlint 可以根據你所有的部位去作化妝品保養品的個人化分析,並且他仍然在持續進化... 就在明年一月中你會發現 cosGlint 會更加友善好用!
NEXT 下一步
目標是讓使用流程更短、更清楚。你只要拍照就能看到可用的結果並做選擇;我們把背後的繁瑣處理好,持續把理解成本降到最低,下一步我們將完成 cosGlint 身為保養 app 的最後一哩路。
雖然說是最後一哩路,但其實這才是起點而已,所謂最後一哩路是指我對 cosGlint 這品牌的設計將會是 2.0 前的最後一塊拼圖,2.0 開始將會是不同體驗的保養 app,相信明年的 2.0 可以帶給大家更多的驚豔,但我們還是會先把 1.x 的功能做紮實,也把資料整理完整。
cosGlint 並不是幫你轉送分析而已,我們 db 就有完整的 INCI 成分庫和各種危害資料作為基礎,這些資料都是目前使用體驗良好的基石,findskin 則是完全我們自有的演算法。
明年第一季主要的推進方向
- 資料整理
- 1.4 ~ 1.5 版兩個大改版的推進
- 接著準備邁入 2.0 的路線