由大型語言模型驅動的可擴展網路軟體

簡要重點 – LLM 可在不增加常見臃腫的狀況下,讓網路應用程式具備可擴展性,而 Cloudflare Dynamic Workers 已經提供所需的隔離、可觀察性與資料原語,足以將此概念轉化為可投入生產的平台。


長尾問題與 LLM 的重要性

大多數網路應用程式僅服務於需求曲線的頂端,導致大量小眾使用者的需求未被滿足。 為極小的使用者群組新增功能,會使所有人的使用者介面變得更複雜,而傳統的開發週期也缺乏足夠的資源來填補這段長尾。

LLM 改變了經濟模式:它們能按需產生自訂程式碼,將「為一人而寫的軟體」從愛好者的奇想轉變為可擴展的服務。正如 Jeremy Morrell 所言:「過去一年,你的使用者突然獲得了以自然語言創造程式碼的能力。」

社群洞見

「未被滿足的功能長尾是真實存在的。大多數應用程式都能良好地處理常見情境,而由 LLM 產生的擴充功能,可以在不膨脹核心產品的情況下填補這個缺口。」 – harlan_pdx(HN 評論)


「可擴展的網路軟體」實際上是什麼樣子

可擴展性意味著能接入應用程式的事件(如資料更新、排程工作、UI 行為),並讓 LLM 產生的片段在沙盒中執行。 使用者撰寫自然語言請求,系統將其轉譯為程式碼,並以嚴格的權限集執行該程式碼。

安全擴充引擎的核心需求

要求 為何重要
經濟的執行 – 空閒成本近乎零,每次呼叫低於一美分 必須讓數千甚至數百萬個片段都負擔得起。
快速冷啟動 – 請求路徑擴充的延遲為個位數毫秒 使用者期望擴充功能感覺像原生功能,而非背景工作。
細粒度限制 – CPU、記憶體、網路、日誌量、執行時間 防止失控迴圈(例如 while true { print })導致平台崩潰。
強大的隔離 – 沙盒防止一個使用者的程式碼影響其他使用者或資料外洩 多租戶 SaaS 必須防範 Spectre 式攻擊與憑證竊取。
基於能力的 I/O – 程式碼只能透過明確的參考(例如 fetchApprovedEmail)執行動作 消除複雜代理邏輯的需求,使安全推理變得可處理。

現有的網路規模擴展性:Salesforce 的先例

Salesforce 已證明多租戶可程式化平台能在規模上蓬勃發展。其 Apex 語言讓開發者能新增自訂端點、排程工作與 UI 鈎子,同時平台會強制執行隔離、限制與交易安全性。

「Salesforce 的 Apex 讓你撰寫可在核心產品內執行的自訂邏輯,平台會處理路由、驗證與租戶隔離。」 – Jeremy Morrell

今日的關鍵差異在於,LLM 可自動產生類似 Apex 的程式碼,大幅降低非工程師的門檻。


執行原語的技術選項

選項 優點 缺點
解譯器(Lua、QuickJS、自訂 DSL) 占用空間小,容易嵌入 性能有限,需自訂沙盒加固
V8 隔離 成熟的 JIT、強大的隔離,Cloudflare 已在使用 每個隔離的記憶體較高,仍需能力門控
微型虛擬機(Firecracker、libkrun) 接近原生作業系統隔離,支援 POSIX 啟動延遲 > 1 秒,資源消耗較高
WebAssembly + WASI 語言無關,無內建 I/O(非常適合沙盒) 需要主機端能力注入,工具鏈複雜

HN 討論中的共識是,V8 隔離搭配能力模型 在網路規模 SaaS 上達到最佳平衡:

「沙盒執行絕對是其中一個面向……但如果他們公開外部端點,且存取控制邏輯有缺陷,沙盒的安全性也毫無意義。」 – socketcluster


Cloudflare Dynamic Workers – 一個現成的堆疊

Jeremy Morrell 強調,Cloudflare Dynamic Workers 是 2026 年用來打造可擴展網路應用程式最完整、最適合投入生產的框架。

內建原語符合需求

  • 可觀察性 – 運行時內建 OpenTelemetry 追蹤與尾端日誌。
  • 多租戶儲存 – Durable Objects 提供每位使用者的 SQLite,R2 儲存桶提供二進位資料儲存。
  • 持久執行 – Dynamic Workflows 支援長時間、具重試機制的工作。
  • 來源控制 – 內建的資產儲存,用於版本化擴充功能。
  • 主機式 LLM – Workers AI 讓擴充功能能呼叫 LLM,並依使用者設定配額。
  • 自-hosting 工具 – JavaScript 工具可在同一 worker 進程中執行,簡化測試。

範例:基於能力的擴充

// 主機提供的能力
export const getApprovedEmail = () => fetchEmailById(123, env.EMAIL_API_KEY);

// 使用者產生的片段(由 LLM 產生)
export default async function process({ getApprovedEmail }: { getApprovedEmail: () => Promise<Email> }) {
  const email = await getApprovedEmail();
  // ...自訂邏輯...
}

此片段只能呼叫 getApprovedEmail;它永遠不會看到原始 API 金鑰,從而消除憑證外洩風險。


文章中強調的實際應用案例

領域 由 LLM 驅動的擴充範例
AI 代理 為 Pi 新增自訂指令,解析特定網站並回傳結構化資料。
企業內部平台 員工撰寫按需執行的分析腳本,對共享資料湖執行,平台強制執行每位使用者的資料範圍。
支援平台 自動填入工單檢視的客戶特定診斷資訊,並提供由 LLM 產生的「重設配額」按鈕。
可觀察性工具 使用者注入自訂日誌轉換器、警報觸發腳本,或針對特定資源的超連結至儀表板。

社群反應 – 共識與懷疑

  • 共識 – 長尾需求與 LLM 產生程式碼的威力廣受認可。

    「未被滿足的功能長尾是真實存在的……LLM 產生的擴充功能可以填補這個缺口。」 – harlan_pdx

  • 對分發模式的懷疑 – 有人質疑「為一人而寫的軟體」為何必須基於網路。

    「為什麼需要客戶端/伺服器模型?我為什麼要在乎分發?」 – zahlman

  • 平台鎖定的擔憂 – 多位評論者指出,Cloudflare 可能不會成為通用主機;Google 或 Microsoft 可能採用類似模式。

    「很難想像 Cloudflare 會成為預設選擇;反而更容易看到 Google 或 Microsoft 這麼做。」 – bensyverson

  • 安全優先觀點 – 強調基於能力的設計,而非臨時的代理。

    「程式碼只能透過它被傳遞的參考來執行動作。」 – ryanrasti


建造者實用建議

  1. 從你信任的沙盒開始 – V8 隔離或 WASM + WASI 提供強大的安全邊界。
  2. 只暴露能力,而非原始 API – 傳遞如 fetchApprovedEmail 之類的函數給使用者程式碼;永遠不要交出金鑰。
  3. 善用現有的平台原語 – 使用 Cloudflare Dynamic Workers 的儲存、工作流程與 AI 繫結,避免重複造輪子。
  4. 實施嚴格的資源配額 – 透過限制每次呼叫的 CPU 時間、記憶體與網路呼叫次數,防範無限迴圈與拒絕服務攻擊。
  5. 提供簡單的分享模型 – 允許使用者將其擴充功能發布為套件,供同儕匯入,模擬「外掛市場」模式。

結論

LLM 協助編碼將使用者特定功能的長尾從開發噩夢轉變為可擴展的服務。透過結合基於能力的沙盒(V8 隔離或 WASM)與 Cloudflare Dynamic Workers 的內建可觀察性、儲存與 AI 整合,開發者如今即可推出以網路為首的可擴展平台。社群一致認同其潛力,但也警告必須從第一天就解決安全、成本與平台鎖定問題。

Sources

相關

  • Dispatch
  • Dispatch
  • 專案
  • Dispatch
  • 專案