Skip to content
系列
128 篇文章

AI 時代的技術選擇

以採用度為主判準,輔以 AI 時代新增的五條判準(文件機器可讀性、型別、原始碼在不在 repo、資料骨架、機器可呼叫性),整理從前端到後端、從雲端到自架的技術選型。

「AI 時代的技術選擇」導讀:先選多人用的,其餘五條判準是拿來分勝負的

選型的主判準沒有變,仍然是採用度——而 AI 讓它更重要,不是更不重要:用的人多,訓練語料就多,agent 寫出來的正確率就高。這個系列整理的另外五條判準(文件的機器可讀性、型別、原始碼在不在你 repo 裡、資料骨架、機器可呼叫性)是用來在採用度相近時分勝負,或估算你選冷門要付多少代價。

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 一一對應。

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

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

AI SDK 的 message parts:對話介面的資料骨架

AI SDK v5 把一則 AI 訊息拆成 parts 陣列——text、reasoning、source-url、tool-* 各自是獨立片段。這個資料結構決定了現代 AI 對話介面怎麼寫:render 時 switch part.type,每種片段交給對應元件。這篇拆解 parts 模型的設計邏輯、useChat 的串流機制,以及它如何成為 AI Elements 這類元件庫的地基。

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

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

shadcn registry 與 MCP:元件分發的第三條路

元件分發向來只有兩條路:npm 套件(黑盒依賴)或手動複製貼上。shadcn registry 把第三條路標準化——元件以 JSON 描述原始碼與依賴,CLI 一鍵裝進你的 repo 變成你的程式碼。任何人都能架自己的 registry(AI Elements 就是一個),官方 MCP server 更讓 AI agent 直接瀏覽與安裝元件。

llms.txt:把文件寫給機器讀的那一份

llms.txt 是 Jeremy Howard 於 2024-09-03 提出的慣例(規範已更新至 v2):在網站根目錄放一份給 LLM 讀的 Markdown 索引。六個前端文件站實測:TanStack、shadcn、Zustand、AI SDK、Next.js 都有,React Router 是唯一 404。配套的 llms-full.txt(全文版)Anthropic、Cloudflare 等也已採用。這篇講規範內容、誰在用、以及它為什麼開始影響套件選型。

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

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

Microsoft Agent Framework:兩個框架合併之後,AutoGen 這個名字現在指誰

微軟把 Semantic Kernel 與自家 AutoGen 合併成 Microsoft Agent Framework,2026-04-02 發 1.0 GA(.NET 與 Python,Go 仍是 public preview)。被收編的 autogen-agentchat 停在 2025-09-30 沒再發版;但原作者那側的社群分支 AG2 沒有合併,六天前還在發 1.0.2,而且 `pip install autogen` 裝到的是 AG2 不是微軟。這篇拆解 MAF 的抽象、遷移時程,以及這團名字到底該怎麼讀。

LlamaIndex:它已經不是 RAG 框架了,而你可能還在照舊教學選它

LlamaIndex(GitHub 51,775 star,MIT,2026-08-21 實查)的重心已經從索引搬到 Workflows:獨立套件 llama-index-workflows 的 PyPI 週下載 281 萬,比傘狀套件 llama-index 的 197 萬還高。這篇拆核心抽象、跟自己刻 pipeline 的取捨,並實測它在繁中語料上的預設值——同樣的 chunk_size=1024,英文裝得下 4,645 字元,繁中只有 1,332。另附一個選型前必看的事實:TypeScript 版已封存停更。

Exa:為 agent 而不是為人設計的神經搜尋 API

Exa 把整個網頁索引轉成 embedding 再檢索,而不是比對關鍵字。2026-08 官方定價:/search $7 / 1k 次(含前 10 筆結果)、/contents $1 / 1k 頁、deep 系列 $12–15 / 1k 次,新帳號 $20 免費額度。這個 blog 的 CLAUDE.md 把 Exa 列在雲端抓取工具的第一順位,38 支 skill 裡有 16 支寫到它,站上既有文章只有 4 篇順帶提過——但一篇專文都沒有。這篇補上。

Modal:跑推論引擎的那一層,以及它什麼時候不值那個溢價

Modal 是按秒計費的 serverless GPU 平台,同時把 agent sandbox 做成一級公民(官方自報累計啟動逾 10 億個 sandbox、佔營收三分之一以上)。選型的關鍵不是它多方便,是你的 GPU 使用率:2026-08-21 實查,Modal A100 80GB 折算 $2.50/hr、RunPod 同卡 $1.59/hr,使用率超過六成四自己開機器就比較便宜;但同一天 H100 SXM Modal $3.95/hr、Lambda $3.99/hr,這張卡的溢價幾乎是零。

Composio:agent 接一百個 SaaS 時,誰替你保管每個使用者的 token

站上把 MCP 寫得很齊,卻從沒寫過它下面那一層:agent 要代表一萬個終端使用者去讀他們各自的 Gmail 時,refresh token 存在誰家、怎麼更新、怎麼撤銷。Composio 是這層目前最完整的一家——SDK 是 MIT,執行與託管 OAuth 是雲端服務;官方自稱 1,000+ toolkit,但託管 OAuth 清單實際列出 121 個,另外 96 個要你自備憑證。2026-08-15 起的新價目:免費 10 萬次 tool call、Pro $29/月。這篇拆它的授權模型到可操作的深度,並劃出「自己接 MCP server」與「用整合平台」的分界。

Tailscale:agent 住在你家,不是你連回家

自架一個 24 小時跑著的 agent,等於在自己網路裡開了一個必須從外面連得到、又不能開在公網上的東西。這篇拆 Tailscale 的四個機制各自解決什麼:tailnet 解決連得到、subnet router 解決碰內網、tag 與 ACL 解決權限邊界、policy 秒級生效與 tailnet lock 解決收得回。附 2026-08 實查的定價:Personal 免費、6 個使用者、user device 無上限、50 個 tagged resource。

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

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

Drizzle ORM:SQL-first 的 TypeScript 資料庫存取層

Drizzle ORM 是一個 SQL-first 的 TypeScript ORM——query builder 長得像 SQL,agent 寫出來的查詢在 diff 裡讀得懂。零依賴、約 7.4 KB gzipped,原生支援 Cloudflare D1、Neon、Turso 等 edge database。版本至今仍是 0.45.2,但週下載量已達 1,690 萬,超過 Prisma 的 1,380 萬。

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

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

CrewAI:用角色扮演組織多 Agent 協作的框架

CrewAI(GitHub 57.4k star,MIT,PyPI 週下載 1,164 萬)用角色(role)、目標(goal)、背景故事(backstory)定義 agent,再把一組 agent 編成 crew 來協作。跟 LangGraph 的圖優先和 MAF 的工作流優先不同,CrewAI 是團隊優先——你不畫節點和邊,你描述一個團隊裡每個人負責什麼。2024 年底完成 LangChain 依賴的全面移除,現在是獨立框架。商業端分開源套件與 AMP 託管平台,AMP 加的是視覺化建構、部署、追蹤與合規。

Supabase:把整個後端建在 PostgreSQL 上的平台

Supabase 不只是 Firebase 的開源替代,它的核心設計是把 Auth、Storage、Realtime 全部建在 PostgreSQL 的 schema 和 WAL 上。結果是:你可以用一條 SQL 查所有東西,pgvector 直接用,agent 寫 SQL 就能操作整個平台。108k GitHub stars、Apache 2.0 授權、Free 方案 500 MB 資料庫。

Vite 8 與 Rolldown:前端建置從雙引擎走向同一條管線

Vite 8 把開發期的 esbuild 與正式建置的 Rollup 收斂成 Rolldown;速度是結果,真正重要的是開發與 production 不再由兩套 bundler 語意拼接。

Vitest:共用 Vite 設定,但不要把 component test 當成 E2E

Vitest 的優勢不是 Jest API 長得熟,而是測試與應用共用 Vite 的 transform、alias 與 plugin;Browser Mode 增加真瀏覽器信心,卻仍不能取代完整 E2E。

Oxc 與 Oxlint:快不只是 Rust,而是把 parser、型別與規則重新接在一起

Oxlint 已從高速 ESLint 補充品走到支援 type-aware lint 與 JS plugin 的獨立 linter;遷移關鍵不是 50–100 倍跑分,而是確認規則、framework file 與 plugin 相容範圍。

TypeScript 7:Go 原生重寫讓 type check 變快,但遷移不只換掉 tsc

TypeScript 7 把 compiler 與 language service 原生重寫為 Go,官方與大型使用者回報約 10 倍級的改善;收益來自共享記憶體平行化,代價是舊 API 與 compiler option 必須清理。

Apache Kafka:不是把訊息排隊,而是保存可重播的事件日誌

Kafka 的核心是依 partition 排序、依 retention 保存的分散式 log;consumer group 用 offset 分工,exactly-once 只在 Kafka transaction 能涵蓋的邊界內成立。

RabbitMQ:先用 exchange 表達路由,再用 quorum queue 保住工作

RabbitMQ 的強項是 exchange、binding 與 queue 組成的訊息路由;需要高可用時以 quorum queue 為預設,並同時啟用 publisher confirm、manual ack 與冪等 consumer。

NATS 與 JetStream:先選即時訊息還是持久事件,再談同一套 API

Core NATS 是不落盤的 at-most-once pub/sub;JetStream 才加入 stream、consumer、ack、retention 與重播。兩者同用 subject,可靠性契約卻完全不同。

Redpanda:Kafka API 相容,不代表換 broker 可以不做驗證

Redpanda 以 C++/Seastar、thread-per-core 與每個 partition 的 Raft group 重做 Kafka-compatible event log;client 相容度高,營運與邊角語意仍須實測。

Apache Pulsar:把 stateless broker 與 BookKeeper 儲存拆開的事件平台

Pulsar 將 serving 與 storage 分離:stateless broker 處理連線,BookKeeper 保存 ledger 與 subscription cursor;彈性與多租戶能力換來更多營運元件。

Redis Streams:用 append-only log 與 consumer group 補上 Redis 的可靠訊息層

Redis Streams 以 `XADD` 保存可回讀 entry,consumer group 再用 Pending Entries List 與 `XACK` 追蹤處理;它比 Pub/Sub 可靠,但不是自動變成 Kafka。

AWS SQS 與 SNS:一個保存工作,一個把事件 fan-out

SQS 是 pull-based durable queue,SNS 是 push-based topic;常見可靠 fan-out 是 SNS topic 接多個 SQS queue,而不是讓多個 worker 共讀一條 queue。

Cloudflare Queues:把 Workers request 拆成可重試、可批次的背景工作

Cloudflare Queues 是 Workers 旁邊的 message queue:producer 把慢工作寫進 queue,consumer 用批次、ack/retry、delay 與 DLQ 處理失敗。它適合單步背景工作;流程需要記住多步驟狀態時,下一篇要看 Workflows。

Inngest:用 step 把 serverless function 變成可恢復的工作流

Inngest 讓一般 TypeScript、Python、Go function 以 step 為持久化邊界;失敗時函式從頭執行,但已完成 step 由紀錄回填,不再重做 side effect。

Restate:把 journal、durable state 與服務呼叫放進同一個執行模型

Restate 以 journal 記錄操作與結果,失敗後重跑 handler 並跳過已完成操作;Virtual Object 與 Workflow 再提供 keyed state、single-writer 與長期協調。

Hatchet:一套同時處理 task queue、DAG 與 durable task 的工作流引擎

Hatchet 以 Postgres-backed control plane 統一一般 task、DAG 與 durable task;durable task 在等待與 child task 邊界 checkpoint,恢復時重播 deterministic 編排碼。

tRPC:用 TypeScript inference 連起 client 與 server 的 API 合約

tRPC 讓 client 直接引用 server router 的型別,不需先寫 schema 或產生程式碼;v11 另有 alpha 階段的官方 OpenAPI 3.1 產生器。

oRPC:把 end-to-end type safety 與 OpenAPI 放在同一條路徑

oRPC 同時支援 implementation-first 與 contract-first,能用 RPC client,也能由同一個 router 服務 OpenAPI 3.1.1 HTTP endpoint。

ts-rest:保留 REST 語意的 TypeScript contract-first API

ts-rest 用共享 contract 描述 method、path、status code 與 schema,在不產生程式碼的前提下讓 server 與 client 保有端到端型別。

Zodios:用 Zod endpoint definition 建立 Axios 型別安全 client

Zodios 以中央 Zod endpoint definition 驅動 Axios client 的型別、runtime validation 與 alias,也能接 Express 和產生 OpenAPI。

Hono RPC:從 route implementation 推導 Fetch client 型別

Hono RPC 匯出 route 的 `typeof AppType`,讓 `hc` client 推導 input、response body 與 status code;它共享的是 TypeScript type,不是獨立 wire schema。

openapi-typescript:把 OpenAPI 變成零 runtime 的型別與 Fetch client

openapi-typescript 將 OpenAPI 3.0/3.1 產成純 TypeScript 型別;搭配 openapi-fetch,method、literal path、parameters 與 response union 都能由 schema 推導。

Stainless:從 OpenAPI 持續產生可發布的多語言 SDK

Stainless 以 OpenAPI 加上專屬 config 產生多語言 SDK、文件、CLI 與 MCP;重點不是一次性 codegen,而是 preview、發布與升級的持續產品管線。

Speakeasy:用 OpenAPI Overlay 與 workflow 管理多語言 SDK

Speakeasy 把 OpenAPI、Overlay、target 與 generator version 寫進 `.speakeasy/workflow.yaml`,可在本機或 CI 產生、編譯並發布多語言 SDK。

gRPC 與 Connect:同一份 Protobuf 合約如何跨服務與瀏覽器

gRPC 以 Protobuf service 產生跨語言 stub;Connect server 可同時支援 gRPC、gRPC-Web 與 Connect protocol,讓瀏覽器不必額外翻譯 proxy。

Protobuf 與 Buf:把跨語言 schema 的 lint、codegen 與相容性放進 CI

Protobuf 用穩定 field number 定義 binary message;Buf 補上 module、lint、remote plugin、generation 與 breaking-change check,讓 schema 能被治理。

GraphQL 與 Code Generator:型別安全來自 schema 加 operation,不只 schema

GraphQL schema 定義可查詢能力;GraphQL Code Generator 再結合實際 query、mutation、fragment,產生精確 result、variables 與 typed document。

Kysely:把 SQL 保留下來的 TypeScript 型別安全 Query Builder

Kysely 從資料庫型別推導查詢結果,保留 SQL 的可見性與逃生口;但 migration、實際 schema 與 generated types 仍要由團隊維持同步。

Better Auth:TypeScript 認證框架不是應用程式授權層

Better Auth 統一登入、session、provider 與外掛;resource-level authorization、撤銷時效和代理操作政策仍要由應用程式明確實作。

AI Agent 代理授權:不要把使用者 Token 直接交給模型

Agent 應以短效、限 audience、限權限的代理憑證執行單一任務,並同時保留使用者與 agent 身分、執行時授權、確認與稽核鏈。

AWS Lambda:選函式運算前,先讀懂事件、重試與並行度

Lambda 適合短生命週期、事件驅動且流量不規則的工作;真正的設計中心是 invocation、重試、冪等與下游容量,不是把容器切小。

AWS Fargate:不用管 EC2,不代表不用管 ECS

Fargate 移除容器主機管理,但 task definition、ECS service、VPC、IAM、擴縮、部署與可觀測性仍是你的系統。

AWS App Runner:從原始碼或 Container 到 Web Service 的最短 AWS 路徑

App Runner 把 build、deploy、TLS、load balancing 與 autoscaling 包成 Web service;換來的是較少的編排控制與必須理解的 VPC、instance 與健康檢查邊界。

Google Cloud Run:Service、Job、Worker Pool 是三種不同的 Container 生命週期

Cloud Run 不只是一個 HTTP container 平台;先按 request、run-to-completion、always-on pull worker 選對 resource,再設計 concurrency、identity 與擴縮。

Google Kubernetes Engine:GKE Autopilot 降低 Node 操作,不會消除 Kubernetes

GKE 代管 Kubernetes control plane;Autopilot 再代管多數 node 基礎設施,但 workload、policy、網路、升級相容性與成本治理仍屬於團隊。

Azure Container Apps:用 Revision、KEDA 與 Environment 跑 Serverless Container

Azure Container Apps 封裝 Kubernetes,提供 HTTP/TCP ingress、revision、KEDA scaling、jobs 與 Dapr;你仍要設計 replica concurrency、事件冪等、VNet 與身分。

Azure App Service:Web App 的核心不是 Container,而是 App Service Plan

App Service 代管 Web runtime、TLS、deployment 與 scaling;容量、成本和隔離則落在共享的 App Service Plan,不能只看單一 app。

CoreWeave:以 Kubernetes、GPU Fabric 與儲存組成的 AI 專用雲

CoreWeave 的價值不只是租 GPU,而是把 Kubernetes、GPU 網路、儲存與 inference 組成 AI infrastructure;代價是仍需平台工程與容量治理。

Lambda Cloud:從單台 GPU VM 到多節點 AI Cluster 的算力雲

Lambda Cloud 提供 on-demand GPU VM 與 1-Click Cluster;它賣的是較直接的 AI 算力環境,不是自動完成 training、serving 與 MLOps。

RunPod:GPU Pod 與 Serverless Endpoint 是兩種不同產品

RunPod Pod 適合互動與長駐 GPU 工作,Serverless 適合 queue-based 或 load-balanced inference;選錯會把 persistence、cold start 與重試語意混在一起。

Nebius AI Cloud:GPU Cluster、Managed Kubernetes 與 Serverless AI 的完整平台

Nebius 同時提供 GPU VM/cluster、Kubernetes、Slurm、storage 與 Serverless AI;先選責任層級,再比較硬體與價格。

Crusoe Cloud:從 GPU VM、Managed Kubernetes 到 Managed AI

Crusoe 同時提供 Infrastructure Cloud 與 Managed AI;GPU VM/cluster 給控制,serverless/dedicated inference 給較高抽象,兩者責任不可混寫。

Replicate:把模型版本變成 Prediction API,而不是租一台 GPU

Replicate 以 versioned model、prediction、Cog 與 deployment 抽象 GPU;整合者要負責版本釘選、async workflow、webhook 驗證、資料保存與成本上限。

DigitalOcean:從 Droplet 到 App Platform 的簡化型 Cloud

DigitalOcean 用 Droplet、DOKS、Managed Databases 與 App Platform 覆蓋常見產品架構;簡單來自較小的服務面,不是免除 OS、網路、備份與 HA 設計。

Hetzner Cloud:便宜 VM 的真正成本是你要擁有整個作業系統

Hetzner Cloud 以 Server、Network、Volume、Load Balancer 與 Firewall 提供精簡 IaaS;價格優勢只有在 patch、HA、backup、egress 與 on-call 成本算進去後才成立。

Vultr:Cloud Compute、VKE 與 GPU 之間怎麼選

Vultr 從 VM、bare metal、GPU 到 VKE、database 與 storage 都有;優勢是區域與產品選擇,風險是把多產品存在誤認為已完成架構整合。

Linode/Akamai Cloud:經典 VPS 產品如何接上 Edge 與 Managed Kubernetes

Linode 現在是 Akamai Cloud Computing 的 compute 基礎;VM、LKE、storage 與 managed database 仍有區域和網路邊界,不能因 Akamai edge 品牌就假設全部整合。

Scaleway:歐洲 Cloud 的 Instance、Kapsule、Serverless 與 Managed Data

Scaleway 已不只是低價 VM,而是涵蓋 compute、Kapsule、serverless、database、storage、AI 與 IAM 的歐洲 cloud;選型仍要逐 region 驗證成熟度與整合。

OVHcloud:Public Cloud、OpenStack、vRack 與 Dedicated Server 的組合

OVHcloud 的特色是 Public Cloud、OpenStack API、Managed Kubernetes、vRack 與 dedicated/private cloud 共存;彈性也帶來較多 network 與責任邊界。

Oracle Cloud Infrastructure:先理解 Compartment、VCN 與 Fault Domain

OCI 是完整 hyperscale cloud;架構起點不是 Compute shape,而是 tenancy/compartment IAM、region/AD/fault domain 與 VCN,再選 Compute、OKE、database 與 storage。

Proxmox VE:把 KVM、LXC、Cluster、Ceph 與 Backup 組成地端平台

Proxmox VE 整合 VM、container、cluster、HA、storage 與 backup;它降低虛擬化管理門檻,但 hardware、quorum、network、capacity 與 DR 仍由你負責。

OpenStack:不是一套虛擬化 UI,而是一組要長期營運的 Cloud Services

OpenStack 以 Keystone、Nova、Neutron、Glance、Placement、Cinder 等服務提供多租戶 IaaS;採用它等於建立 cloud platform team,而不是安裝完成就結束。

Vercel:Frontend Cloud 的優勢來自 Framework-aware Deployment

Vercel 把 framework build output、preview、CDN/cache 與 Functions 綁成 deployment;速度來自深度整合,代價是 runtime、data locality、成本與可攜性邊界。

Netlify:Atomic Deploy、Functions 與 Edge Functions 的 Web Platform

Netlify 以 atomic deploy 和 preview 為核心,Functions、Edge Functions、Blobs/Database 再加入動態能力;每種 runtime 與 state 都有不同一致性和限制。

Render:Web Service、Private Service、Worker 與 Cron 的完整 PaaS 拓撲

Render 的價值不是只把 repository 變 URL,而是用不同 service type 表達 public HTTP、private listener、queue worker、cron、data store 與 Blueprint。

Railway:用 Project、Service 與 Environment 部署完整應用拓撲

Railway 的核心不是一鍵部署,而是把多個 container service、環境、變數與私有網路放進同一個可操作的 application project。

Fly.io:Machines、Fly Proxy 與多區域部署的真實邊界

Fly.io 把可快速啟停的 Machines 放到指定 region,再由 Fly Proxy 與私有 6PN 接線;真正困難仍是有狀態資料的跨區一致性。

Koyeb:App、Service、Instance 與全球 Serverless 部署模型

Koyeb 以 App 收納 Services、以 Instance 在指定 region 執行 revision,並整合 global routing、autoscaling、private discovery 與 CPU/GPU compute。

Deno Deploy:Deno 2、Revision、Timeline 與全球 TypeScript Serverless

新版 Deno Deploy 是以 Deno 2 執行 application revision 的 serverless 平台;應以 timeline、context、database 與 observability 理解,而不是沿用 Deploy Classic 印象。

DigitalOcean App Platform:用 Component 與 App Spec 管理 PaaS 拓撲

DigitalOcean App Platform 以 Service、Worker、Job、Static Site 與 Function 等 Components 組成 App,再用 App Spec 保存可 review 的部署合約。

Coolify:自架 PaaS 的 Control Plane、Docker Server 與責任邊界

Coolify 用 SSH 控制自有 server 上的 Docker、proxy 與 resources;它簡化部署,但 OS、安全、容量、資料備份與平台復原仍由團隊負責。

Dokploy:Application、Docker Compose、Remote Server 與 Swarm 的自架 PaaS

Dokploy 同時支援單 container Application 與 Compose/Stack,並把單機、獨立 remote servers、Swarm cluster 定義成三種不同部署拓撲。

CapRover:Docker Swarm、Nginx 與 Persistent App 的自架 PaaS

CapRover 用 Docker Swarm、Nginx 與 captain-definition 提供簡化 PaaS;stateless app 可擴展,local persistent app 則被鎖在單一節點。

Dokku:把單台 Docker 主機變成 Git Push PaaS

Dokku 用 Git receiver、buildpack/Dockerfile、process model、Nginx 與 plugins 在單機提供 Heroku 式體驗;簡潔來自刻意縮小編排範圍。

Kamal:沒有常駐 Control Plane 的 Docker 部署工具

Kamal 從操作者端透過 SSH 把 immutable image 部署到 servers,靠 kamal-proxy 切換流量;它不是 scheduler,也不替團隊管理主機與資料。

Firebase:Auth、Firestore、Functions 與 Security Rules 的 BaaS 邊界

Firebase 的速度來自 client SDK 直連 Auth、Firestore、Storage 等 managed services;真正的後端合約落在資料模型、Security Rules、Functions 與成本限制。

Appwrite:可自架的 Auth、Database、Storage、Functions 與 Realtime BaaS

Appwrite 把 Auth、TablesDB、Storage、Functions、Realtime 與 Messaging 放進一致 API;Cloud 與 self-hosted 功能相近,維運責任卻完全不同。

Convex:用 Query、Mutation、Action 建立 Reactive TypeScript Backend

Convex 把 typed backend functions、transactional document database 與 reactive query subscription 綁在一起;關鍵是正確分開 deterministic mutation 和外部副作用 action。

PocketBase:SQLite、Auth、Realtime 與單一執行檔的 Backend

PocketBase 把 SQLite、collections、Auth、file storage、SSE realtime 與 admin UI 包進小型執行檔;部署簡單,但單機邊界與 v1 前相容性風險必須明講。

Nhost:PostgreSQL、Hasura GraphQL、Auth 與 Storage 的 BaaS

Nhost 以 PostgreSQL 為真實資料層,由 Hasura 產生 GraphQL,再把 Auth claims、role permissions、Storage 與 Functions 接進同一平台。

Kubernetes:從 Pod、Controller 到 Declarative Reconciliation 的容器編排

Kubernetes 的核心不是 YAML,而是 API objects、controllers 與 reconciliation loop;它管理 workload lifecycle,卻不自動解決 application state、資料一致性與組織治理。

Terraform:Provider、Plan、Apply 與 State 的 IaC 工作模型

Terraform 以 provider resource schema、configuration 與 state 對照真實 API,產生 plan 再 apply;最重要的資產不是 HCL,而是受控的 state 與變更流程。

Pulumi:用 TypeScript、Python、Go 等一般語言寫 Infrastructure as Code

Pulumi 讓一般程式語言註冊 cloud resources,再由 deployment engine、providers 與 stack state 執行 preview/update;語言能力增加,也要求更嚴格的 abstraction discipline。

SST v3:用 Components、Link 與 Dev Mode 組合 Full-Stack Cloud App

SST v3 以 TypeScript config、高階 app components、Pulumi/Terraform providers 與 resource linking 組合自有雲資源;它是 application-first IaC,不是代管 PaaS。

NestJS:Modules、Dependency Injection 與 Request Lifecycle 的 Node.js 架構框架

NestJS 的價值不是 decorator 本身,而是以 Module、Provider、DI 與可預期 request lifecycle 統一 HTTP、GraphQL、WebSocket 和 microservice application architecture。

Fastify:Plugin Encapsulation、JSON Schema 與高效 Node.js API

Fastify 的核心不只是 benchmark,而是以 plugin scope、hooks、decorators 與 compiled JSON Schema 建立可組合且有明確 request/response contract 的 Node.js API。

Elysia:Bun-first、Runtime Schema 與端到端型別安全的 API Framework

Elysia 把 runtime schema、TypeScript inference、OpenAPI 與 Eden client 串成同一條 contract,但 Bun-first 的效能優勢、plugin scope 與跨 runtime 相容性仍要分開驗證。

Django:ORM、Admin、Auth 與長期演進的 Python Web Framework

Django 的價值是把資料模型、migration、auth、admin、forms 與安全預設組成一致系統;代價是要理解 QuerySet、middleware、async 邊界與 production settings。

WireGuard:用 Cryptokey Routing 建立最小化 VPN Tunnel

WireGuard 是小而明確的 L3 加密 tunnel;它把 public key、peer 與 AllowedIPs 綁在一起,但不替團隊提供 identity、裝置管理或 policy control plane。

ngrok:從 Localhost Tunnel 到可控的全球 Ingress

ngrok 是由 agent 主動連出的 reverse proxy/ingress,不是把整台電腦加入 VPN;公開 endpoint 前仍要明確設定 authentication、traffic policy 與資料邊界。

ZeroTier:以 Controller 與 Flow Rules 組出跨網路 Virtual LAN

ZeroTier 把裝置放進可管理的 virtual L2/L3 network,嘗試 peer-to-peer 傳輸並由 controller 發布成員與 policy;它比單純 tunnel 更像軟體定義網路。

Twingate:以 Identity 與 Resource 取代整段網路存取

Twingate 透過 client、connector、controller 與 relay,把使用者授權收斂到特定 resource;它是 managed ZTNA,而不是任意 peer-to-peer overlay。

Teleport:以短效憑證、RBAC 與 Session Audit 管理基礎設施存取

Teleport 是 protocol-aware infrastructure access platform:Auth Service 簽短效憑證,Proxy 與 Agents 代理 SSH、Kubernetes、database、app 等資源並留下 audit evidence。

Socket.IO:Rooms、Acknowledgements 與斷線恢復的即時事件層

Socket.IO 是建立在 WebSocket/long-polling 上的事件協定與 runtime,不是原生 WebSocket 相容層;ordering、arrival、recovery 與水平擴展要分開設計。

WebSocket:雙向長連線只是起點,Protocol 與 Backpressure 才是工程

WebSocket 提供一條雙向 message transport,不包含 auth renewal、schema、ack、replay、rooms 或 backpressure policy;這些才決定 production correctness。

Server-Sent Events:用 HTTP Event Stream 做可恢復的單向推送

SSE 以普通 HTTP 傳送 text/event-stream,瀏覽器原生重連並帶 Last-Event-ID;簡單不代表自動 durable,server 仍要保存 cursor 後的事件。

PartyKit:把每個協作 Room 變成 Edge Stateful Server

PartyKit 以 room-keyed stateful server 收斂 WebSocket coordination,適合多人協作與 presence;但 durable document、authorization、hibernation 與 platform ownership 仍要明確設計。

Ably:Channels、Presence 與 Recovery 的全球即時訊息平台

Ably 管理全球 realtime connections、channels、presence 與短期 recovery;application 仍要定義 idempotency、durable business state、token capability 與 offline resync。

Liveblocks:Presence、Storage、Comments 與 Notifications 的協作後端

Liveblocks 把 room、presence、conflict-free storage、comments 與 notifications 做成 managed product primitives;導入時仍須對齊既有 auth、canonical DB 與 data lifecycle。

Yjs 與 CRDT:把並行編輯變成可交換、可重放的 Document Updates

Yjs 用 shared types 與可交換、可結合、冪等的 binary updates 收斂 concurrent edits;它不綁 transport,也不自帶 authorization、persistence 或 domain conflict resolution。

Cloudflare Durable Objects:讓 Workers 有狀態、協調與 WebSocket 的那塊拼圖

Durable Objects 把一個 name 或 ID 對到全球唯一、單執行緒、帶私有 SQLite storage 的 actor。它適合 per-room、per-user、per-tenant、per-run 這種需要強一致協調的邊界;真正的設計題是 object key 要切在哪裡。

Socket.dev:在 Dependency Diff 當下攔截惡意 Package 行為

Socket.dev 不只比對 CVE,而是分析新增套件的 install scripts、obfuscation、network、shell 與 ownership 變化,在 dependency merge 前暴露供應鏈行為風險。

Snyk:把 SCA、SAST、Container 與 IaC Findings 接進開發流程

Snyk 的價值是把 code、open-source、container 與 IaC findings 對到 project、fix path 與 developer workflow;成功導入取決於 baseline、ownership 與可執行的 policy。

Semgrep:把組織的安全規則寫成可讀、可測的 Static Analysis

Semgrep 讓團隊用接近 source syntax 的 patterns 與 taint rules 自訂 SAST policy;規則品質取決於 positive/negative tests、framework modeling 與 exception lifecycle。

CodeQL:把 Codebase 抽成 Database,再用 Query 追 Data Flow

CodeQL 先由 language extractor 建立 code database,再以 QL queries 查 AST、types、calls、control/data flow;深度來自 model,也帶來 build extraction 與 query maintenance 成本。

Renovate:把 Dependency Updates 變成可治理的持續流程

Renovate 不只是開升級 PR;packageRules、grouping、schedule、minimumReleaseAge 與 automerge policy 決定更新速度、review noise 和供應鏈暴露。

gitleaks:掃 Working Tree、Git History 與 CI Diff 的 Secret Detection

gitleaks 用 rules、regex、entropy 與 allowlists 掃檔案或 Git patches;找到 secret 後第一步是 revoke/rotate,而不是只刪檔或改寫 history。

zizmor:專門掃 GitHub Actions 的 Template Injection 與 Token 風險

zizmor 針對 workflow/action YAML 做 domain-specific static analysis,找 template injection、過寬 permissions、artifact credential leak 與 unpinned uses;它不分析被呼叫 shell script 本身。

Sigstore 與 SLSA:驗證誰用哪個 Build Process 產出這份 Artifact

Sigstore 提供 identity-bound signing、短效憑證與 transparency log;SLSA 定義可信 build provenance 的成熟度。只有在 deploy admission 驗證 identity、issuer、digest 與 build expectations 時才形成防線。

Google Cloud Model Armor:在 Prompt、Response 與 Agent Tool 前加 Runtime Filter

Model Armor 能在 runtime 檢查 prompt injection、jailbreak、敏感資料、惡意 URL 與內容安全;它是 probabilistic detector,不是 authorization 或 sandbox boundary。

Promptfoo Red Team:把 Prompt Injection、Tool Misuse 與資料外洩變成 Regression Tests

Promptfoo 以 plugins 產風險 probes、strategies 變形攻擊、targets 執行系統、graders 判斷結果;有價值的 red team 必須測整個 agent application,而不只是 foundation model。

AI Agent 沙箱逃逸與權限邊界:Container 不是 Security Boundary 的全部

Agent execution 要同時限制 kernel、filesystem、process、network、credentials 與 tool authorization;沙箱逃逸只是其中一條路,過寬 API token 往往更直接。

MySQL:成熟關聯式資料庫,不只是『大家都會用』

MySQL 的價值是成熟生態、InnoDB 交易與可預測維運;選它仍要理解索引、隔離級別、replication lag 與 schema migration。

MongoDB:Document Model 的彈性,代價在資料邊界

MongoDB 適合一起讀寫的聚合資料與可演進 document schema;真正難題是 embedding、transaction boundary、index 與 shard key。

DuckDB:把 OLAP Query Engine 放進 Process 裡

DuckDB 是 in-process columnar OLAP database,擅長直接分析 Parquet、CSV 與 DataFrame;它不是一般 web app 的多使用者 OLTP server。

Neon vs Turso:別把兩種 Serverless Database 都叫託管 Postgres

Neon 是 serverless PostgreSQL;Turso Cloud 目前是 libSQL/SQLite 相容平台。兩者都強調 scale-to-zero 與開發體驗,compatibility boundary 完全不同。

Agent Plugins 1.0:OpenAI、Google、AWS 罕見聯手,統一 AI Agent 擴充的封裝標準

Agent Plugins 1.0 是一個封裝格式標準,把 Agent Skills(Markdown 指令)和 MCP server 設定包成一個目錄,讓同一個 plugin 能被 ChatGPT、Cursor、GitHub Copilot、Kiro、VS Code 直接載入。它不是新的協議,是協議之上的包裝紙。Vercel 發起,OpenAI、AWS、Microsoft、Cursor 共同制定,Google 發佈當天加入——Anthropic 不在治理名單上,但 MCP 團隊正面回應。

自架推論伺服器怎麼選:從 Ollama 到 Xinference,六套工具的定位與取捨

自架推論伺服器分三層:執行引擎(llama.cpp)、服務引擎(vLLM、SGLang)、模型管理平台(Ollama、Xinference、Triton)。選對層級比選對工具重要——先問你的瓶頸在排程還是在部署流程,再決定複雜度放在哪裡。

Xinference:一個平台管 LLM、Embedding、語音與圖像模型的自架推論伺服器

Xinference 把 vLLM、SGLang、llama.cpp、Transformers、MLX 五種後端包在同一個管理層,用 Web UI 和 OpenAI 相容 API 統一管理 LLM、embedding、rerank、語音和圖像模型,適合需要多類型模型共存的自架部署;但管理層的解析邏輯也讓攻擊面比純 serving engine 大(CVE-2026-61539 是案例)。