Skip to content
所有分類

tech

518 篇文章

TanStack Router:把路由變成編譯期可驗證的東西

TanStack Router(2023-12 發 1.0,週下載約 20M)把路徑、params、search params 全部做成編譯期推導:導航到不存在的路由是型別錯誤,不是執行期 404。這篇拆解它的三個核心設計——型別安全、search params 一等公民、與 Query 整合的 loader——以及為什麼這在 AI agent 寫碼的時代價值被放大。

Temporal:把流程寫成程式碼,崩了也能接著走完

Temporal 是 durable execution 平台(Server 1.31.2、Python SDK temporalio 1.31.0,MIT,2026-08 實查)。它跟 BullMQ / Celery 那種任務佇列的差別不是規模,是保證的東西不同:佇列保證訊息被消費,Temporal 保證一段橫跨多次外部呼叫的流程走完。代價是工作流程碼必須決定性——而 LLM 呼叫天生非決定性,這篇講這個張力怎麼解、什麼時候不划算。

Trigger.dev:用行程快照做持久任務,不要求你的程式碼有決定性

Trigger.dev 是 Apache 2.0 的持久任務平台(v4.5.12,2026-08 實查),用 CRIU 對整個 Node.js 行程做記憶體快照來暫停與復原。跟 Temporal 的 replay 模型不同,它不重跑你的編排碼、不要求決定性——LLM 呼叫直接寫在 task 裡就行。代價是快照無法保留 TCP 連線,還原後要自己重建;而且快照是 cloud-only,自架拿不到。

WebMCP:讓網頁把自己的功能交出去給 agent 呼叫

WebMCP 讓網頁用 document.modelContext.registerTool() 把自己的功能註冊成 agent 可呼叫的工具,取代 agent 猜 DOM 點按鈕。Chrome 已在 149 開 origin trial、預計 157 進 stable,Edge 150 跟進。但 WebKit 明確表態反對(「agent 本質上是輔助科技,網站不該把它單獨挑出來對待」),Mozilla 給 neutral。這篇講兩套 API 怎麼寫、安全模型擋在哪、以及在只有一個半引擎支持的情況下要不要現在投資。

techdeep-dive

實測五個繁中用語檢查工具:一個能用,一個的 --fix 會把「只是」改成「隻是」

在 109 篇確實含中國用語的文章上,zhtw-mcp 精確率 29.4%、召回 85.2%,twlint 是 21.2% / 82.5%——但 twlint 有 195 個 error 級判斷是把合法正體字當簡體字(干→幹 60 次、只→隻 15 次),跑 --fix 會毀掉文章。最有用的發現不是誰勝出:zhtw-mcp 幫我補了五個自己漏抓的中國用語,也擋下一個我誤列的(審計)。工具的價值在校準你的清單,不是取代它。

Zod:從表單驗證長成 TypeScript 生態的通用合約

Zod 週下載 224M(2026-08 實查),已遠超「表單驗證庫」的定位:API 邊界、環境變數、路由 search params、LLM tool schema 與 structured output,全在用同一套 schema。核心機制是「一次定義、兩層收穫」——執行期驗證與靜態型別從同一個來源推導。Zod 4(2025-07 上 npm)主打更快、更省 tsc。

omp(Oh My Pi):把 Pi 的極簡主義翻過來的 batteries-included 分支

omp 是 Pi 的 fork,但不只是插件層堆疊:它多了約 80,000 行 Rust,把 grep/shell/AST/PTY 全部搬進 in-process。內建工具從 Pi 的 7 個變成 31 個,外加 14 個 LSP op、28 個 DAP op、60+ 供應商。同一份 codebase,兩個相反的賭注。

AI 時代的 React 套件選型:從 TanStack 三件組到整層 Stack 的地圖

以 TanStack Router(19.7M 週下載)+ Query(55.8M)+ Zustand(44.5M)為核心,配 Vite、react-hook-form + Zod(224M)、Tailwind + shadcn、Vitest + Playwright,整理純 SPA 的當代預設 stack。AI 時代選套件多了三個判準:文件有沒有 llms.txt(TanStack 全家有、React Router 沒有)、型別安全能不能當 agent 護欄、原始碼是不是在你 repo 裡讓 agent 讀得到。

AI Elements:Vercel 把 ChatGPT 式介面拆成可複製的 shadcn 積木

AI Elements 是 Vercel 為 AI SDK 生態出的 React 元件庫,registry 現有 48 個元件,涵蓋 Conversation、Reasoning、Sources、Tool 等 AI 介面積木。走 shadcn 模式:npx ai-elements@latest 把原始碼直接複製進專案,完全可改,跟 useChat 的 message parts 一一對應。

飛控的「自主」共 56 項,只有一項是為了把握機會

ArduPilot 的 ModeReason 列舉就是「機上自主決策」的完整清單:56 個值裡 43 個是飛機自己決定的,其中 21 個是偵測到危險,而只有 SOARING_THERMAL_DETECTED 一項是因為發現機會。至於 end-to-end,PX4 主線那個 mc_nn_control 的 tensor arena 只有 10 KB、Kconfig 預設 n,ArduPilot 主線一個都沒有。

無人機熱像儀的價格為什麼跳著漲:出口管制畫出的成本階梯

熱像儀的價格跳著漲,是因為美國 CCL 6A003.b.4.b 把管制切在焦平面 111,000 個元素上:384×288 差 408 個像素過關,640×512 超過三倍,中間沒有常見規格,而 Boson 640 的定價是 320 版的 2.04–2.31 倍。至於 Note 3.b 那條豁免,限制的不是解析度是焦距——你可以有熱像儀,但不能有望遠的熱像儀。

量產爬升的證據不在工廠,在「無法決標公告」裡

量產爬坡的公開證據不在工廠,在政府電子採購網:消防署 88 組熱顯像無人機的案子中央統一定價,六個消防局第一次招標無人投標,我拉到的七件決標金額全部等於預算、一毛沒殺,投標池大約六家公司。但補做的雲梯車對照組(流標/決標 0.54,高於無人機的 0.33)推翻了本文原本的第一條結論——流標是台灣消防裝備採購的常態。

燈光秀的「群飛」裡沒有群:兩百架只同步一個整數

把 Skybrush 那套開源燈光秀韌體 9,199 行搜遍 neighbour、collision、swarm,沒有任何一架飛機知道別架的存在——兩百架之間同步的全部內容,是一個 GPS 週內秒加一個毫秒偏移,防撞是在地面的編排軟體裡算完的。而資安檢測規範第 7 章那個群飛專章,十二個項目的「遙控無人機」欄從頭到尾都是「-」,測的是交換器與路由器。

續航從 40 分鐘到 6 小時,換的不是電池是機體形態

同一台 5 公斤機、同一顆 2 公斤電池,多旋翼懸停要 512 W 飛 41 分鐘,定翼機巡航只要 128 W 飛 164 分鐘、航程 197 公里,而且那個航程跟巡航速度無關。VTOL 的代價不是轉換時燒掉的能量(只佔 2.4%),是它必須同時揹旋翼和機翼,吃掉約四分之一航程;台灣這條階梯從 40 分鐘的電動多旋翼一路到 6 小時的內燃機直升機。

無人機為什麼只能飛 30 到 45 分鐘:一條式子就算得出來

懸停功率跟起飛重量的 1.5 次方成正比,電池能量只跟重量的一次方成正比——這一個指數差讓加電池的報酬遞減得非常快,而最佳電池比例解出來是起飛重量的三分之二,跟槳徑、旋翼數、效率、能量密度全部無關。真正壓住續航的不是法規重量門檻是酬載:要飛 60 分鐘需要 314 Wh/kg 的電芯,今天最好的高倍率芯是 242 Wh/kg。

跳頻不是加密:ExpressLRS 原始碼與台灣的頻道數功率上限

ExpressLRS 的跳頻順序由一句綁定口令經 MD5 推出 UID、再餵給一個線性同餘產生器算出來,完全可複現(我移植成 Python 跟原始 C 碼逐位元對過),而鏈路本身沒有任何加密,只有 14 bit CRC。台灣 LP0002 又讓頻道數變成功率上限:2.4 GHz 跳頻用滿 75 個頻道可以發 1 W,不足只能發 0.125 W。

類比 FPV 圖傳在台灣找不到條文可走

類比 FPV 圖傳在台灣有兩個獨立的問題:LP0002 給 5.8 GHz 的窗口只有 125 MHz,而市售頻道表橫跨 300 MHz,四十個經典頻道把發射寬度算進去只剩十八個落在窗口內。更硬的是 §4.10.1.1 對 5.8 GHz 只寫「採用跳頻之發射器材」,而類比圖傳固定頻率不跳頻——它不是違反哪一條,是這份規範裡沒有一條長成它的樣子。

GPS 被干擾的那七秒:飛控怎麼發現、又為什麼預設不偵測

在 SITL 裡把無人機飛到 28 公尺,再打開模擬器內建的 GPS 干擾,約 7 秒後飛控自己宣告 EKF 失效、切成 LAND、降落上鎖——它沒有飛走,也沒有墜毀。而讀 PX4 原始碼會發現 EKF2_GPS_CHECK 的 12 道閘門裡,第 11 位的「干擾」偵測預設是關的:估計器自己就抓得到干擾,詐騙卻只能靠接收機告訴它。

PX4 還是 ArduPilot:真正的分岔在授權條款

把兩套都 clone 下來各 build 一次之後,有三件事跟原本的認知不一樣:ArduPilot 的 EKF3 檔頭直接寫著推導來自 PX4/ecl,兩套在最難的那一層是同源的;PX4 近一年的提交來自公司網域(Auterion 一家 380 筆),ArduPilot 來自個人信箱且一個人佔 37%;而真正決定選哪個的不是效能,是 BSD-3 vs GPLv3 與你要改的是哪一層。

反制無人機為什麼難:干擾正在失效,而台灣的難題不只是技術

電戰反制有一個根本限制:它需要有訊號才能攻擊。光纖導引不發射無線電、衛星通訊繞過地面干擾器、AI 終端導引在最後一段完全不需要鏈路——三種手段正在系統性地讓干擾失效,所以重心從軟殺移向攔截。而台灣的難題還多一層:監察院的調查報告記錄了國防部在兩個月內把無人機應處 SOP 改了三次,從「可擊落」改成「只能射信號彈、第一擊須經部長授權」,再改回「7.62mm 以下輕兵器擊落」。那不是技術問題。