寫作
Postmortem 跟比較長的工作筆記。
- Design · Data freshness 2026-07-23
不用假日表的到價警報:兩道閘門,不是一本黃曆
家庭 bot 怎麼盯股價又做到閒置零成本、假日零誤報——盤中閘門管成本、新鮮度閘門管正確性,外加一個上線隔天就被推翻的界線決策。
- Side Project · 型別安全 2026-07-22
tsc 一直說 0 error——因為它早就沒在檢查任何東西了
side project 裡的 @types/react 悄悄從 node_modules 消失。tsc --noEmit 照樣跑、照樣吐出 0 error——只是它已經不再檢查任何 React 相關的東西了,而 CI 綠燈完全看不出這件事。
- Side Project · 自建與選型 2026-07-22
跳過現成的筆順函式庫——結果「夠接近」這個門檻試了三輪才對
注音符號只有 1 到 4 筆,簡單到可以自己刻描寫判定,不用整套為完整漢字打造的函式庫。要不要自建的決定很好下;但要判定小孩的手指要畫到多接近才算「對」,卻試了三輪——前兩輪還是往相反方向各錯一次。
- Side Project · 前端渲染 2026-07-22
Chrome 裡完全正常:兒童注音 App 兩個只換個角度看才現形的 bug
幫女兒做的注音符號 App,兩個畫面 bug 都在 Chrome 裡看起來完全正常——一個要 Safari 才會現形,一個要真的印出來才會現形。兩次都是換一個檢視角度抓到的,不是盯著同一個畫面看更仔細。
- Side Project · CSS 2026-07-22
同一個 CSS bug 出貨了三次,因為修好一次沒有修好那個比例
一個圓角膠囊卡在另一個圓角容器裡,兩條曲線之間需要真正的間距,不然內層形狀會明顯戳出外層邊框。修過一次、又在別處修過一次,結果在同一個已經修好過的元件的新尺寸變體裡,又出貨了第三次。
- Side Project · 遊戲設計 2026-07-22
當『答錯的』其實聽對了
一個小孩聽到另一個符號例字開頭的「ㄅㄟˋ」,選了 ㄅ——結果配對遊戲說他沒配對成功。這與其說是修 bug,不如說是把一個產品原則變得真的可以被檢查:遊戲絕對不能懲罰答對的耳朵。
- Side Project · 隨機性與資料完整性 2026-07-22
四次裡有一次才會現形的 bug
兩個注音符號悄悄共用了同一個例字。大約四分之一的頁面載入,測驗模式會同時秀出兩張一模一樣的表情符號跟例字——這個巧合,直到有人把機率算出來才真的現形。
- LLM · Design 2026-07-20
寫入一模一樣,讀取完全相反:長期記憶 vs 提醒
LLM 不會學會你——「越用越懂你」得用工程做出來。兩個寫入路徑相同、讀取方向相反的功能,以及為什麼這隻 bot 沒有 recall 工具。
- LLM · API design 2026-07-17
一個工具一個檔案:把聊天機器人變成家庭公用設施的註冊表
14 個工具背後的 function calling 契約——錯誤即資料、脈絡穿透、兩條 opt-in 呈現協定,以及一個「按鈕叫不醒 bot」的尖銳陷阱。
- LLM · Production hygiene 2026-07-14
在 reasoning 模型與家庭群組之間的三層清洗
reasoning 模型會漏 <think> 區塊、MiniMax 偶爾把工具呼叫原封吐進回覆、LINE 渲染的 Markdown 語法剛好是零。一條管線接住全部三種。
- Self-hosting · Platform quirks 2026-07-11
LINE Messaging API 不會警告你的五個坑
mention 偏移量是 UTF-16 code unit、電腦版 @ 選單會憑空消失、零歷史 API、一次性 replyToken——以及每個坑如何在 bot 的架構上留下痕跡。
- Self-hosting · LLM 2026-07-08
住在 LINE 群組裡的家庭 AI 助手
為什麼我為家人自架一個 LINE bot,而不是叫大家去裝聊天 App——架構、四個關鍵設計決策,以及界線畫在哪裡。
- 機器學習 · 房地產估價 2026-06-25
估價模型的資訊天花板:用實價登錄做 AVM,為什麼 MdAPE 卡在 12% 就上不去
我用實價登錄建了一個房價估價模型,線上 10.7 萬筆實測 MdAPE 約 12%。然後我證明它不可能更準——殘差是這份資料裡根本沒有的東西。知道何時停手,比硬榨 1pp 更值錢。
- Postmortem · 資料工程 2026-06-23
假的零:當缺值該存 NULL、不該存 0
一張 IG 分析圖在粉絲數持續上升時卻歸零躺平。問題不是沒資料——是把該存 NULL 的地方,存成了假的 0。
- 遷移 · Astro 2026-06-23
那次每跑一遍就掉一篇文章的 build:把 blog 搬到 MDX
把五篇雙語文章從每頁一個 Astro 檔搬到 MDX content collection。兩個 bug 都是搬完才冒出來——一個保留欄位名,一個不肯讓中文變粗體的 Markdown 規則。
- 成本紀律 · LLM 2026-06-18
把 LLM 跑在 BigQuery,又不讓帳單隨使用者膨脹
我 pipeline 裡有兩個功能透過 BigQuery AI.GENERATE 呼叫 Gemini——一個批次分類器、一個 dashboard 上即點即用的按鈕。其中一個會悄悄隨人數膨脹。這是我把兩個都壓平的方法。
- 遷移 · 成本紀律 2026-06-10
把 $7.88/月的 n8n on Zeabur 換成 178 行的 OpenClaw 本地腳本
把一個家庭行程提醒從託管的 n8n 搬到本地 OpenClaw cron — 順手修了一個還沒爆的 bug。
- Postmortem · 開源貢獻 2026-05-28
把 issue 寫到好到讓別人替你送 PR
OpenClaw 回覆上下文處理裡一個無聲的 500 字元截斷 bug — 我寫了 issue,別人送了 PR。
- Postmortem · 開源貢獻 2026-05-22
修掉一個讓 OpenClaw Gateway 升級後永遠不重啟的 deadlock
一個 ESM dynamic import、一個 signal handler、一個 race condition,讓 gateway 悄悄壞掉六天。