基于大语言模型的可扩展网络软件
概要 – 大语言模型让网络应用无需传统臃肿即可实现可扩展性,而 Cloudflare 动态 Worker 已经提供了实现这一理念所需的安全隔离、可观测性和数据原语,使其成为可投入生产的平台。
长尾问题与大语言模型的重要性
大多数网络应用只服务于需求曲线的顶端,导致大量小众用户需求得不到满足。 为极小的用户群体添加功能会使整个界面变得更复杂,而传统的开发周期又缺乏足够的带宽来填补这一长尾。
大语言模型改变了经济模型:它们可以按需生成定制代码,将“为一个人开发的软件”从极客爱好转变为可扩展的服务。正如 Jeremy Morrell 所言,“在过去一年里,你的用户突然获得了用自然语言生成代码的能力。”
社区洞察
“未满足功能的长尾是真实存在的。大多数应用在常见场景下表现良好,而由大语言模型生成的扩展可以填补这一空白,且不会让核心产品变得臃肿。” – harlan_pdx(HN 评论)
网络上可扩展软件的实际形态
可扩展性意味着能够接入应用事件(记录更新、定时任务、UI 操作),并让大语言模型生成的代码片段在沙箱中运行。 用户用自然语言提出请求,系统将其翻译为代码,然后在严格的能力集下执行。
安全扩展引擎的核心要求
| 要求 | 为何重要 |
|---|---|
| 经济高效的执行 – 空闲成本接近于零,每次调用低于一美分 | 千万级或百万级代码片段必须负担得起。 |
| 快速冷启动 – 请求路径扩展的延迟为个位数毫秒 | 用户期望扩展体验原生流畅,而非后台任务。 |
| 细粒度限制 – CPU、内存、网络、日志量、执行时间 | 防止失控循环(如 while true { print })导致平台崩溃。 |
| 强隔离性 – 沙箱防止一个用户的代码影响其他用户或泄露数据 | 多租户 SaaS 必须防范 Spectre 类攻击和凭证窃取。 |
基于能力的 I/O – 代码只能通过显式引用(如 fetchApprovedEmail)执行操作 |
消除复杂代理逻辑的需要,使安全推理变得可管理。 |
现有的网络规模可扩展性:Salesforce 的先例
Salesforce 已证明,一个支持多租户的可编程平台可以在大规模下蓬勃发展。其 Apex 语言允许开发者添加自定义端点、定时任务和 UI 钩子,而平台则负责强制执行隔离、限制和事务安全性。
“Salesforce 的 Apex 允许你在核心产品内部编写自定义逻辑,平台会处理路由、认证和租户隔离。” – Jeremy Morrell
今天的关键区别在于,大语言模型可以自动生成功能类似 Apex 的代码,极大地降低了非工程师的使用门槛。
执行原语的技术选项
| 选项 | 优点 | 缺点 |
|---|---|---|
| 解释器(Lua、QuickJS、自定义 DSL) | 占用空间小,易于嵌入 | 性能有限,需自定义沙箱加固 |
| V8 Isolates | JIT 成熟,隔离性强,Cloudflare 已在使用 | 每个隔离实例内存较高,仍需能力控制 |
| 微型虚拟机(Firecracker、libkrun) | 接近原生的 OS 隔离,支持 POSIX | 启动延迟 >1 秒,资源消耗更高 |
| WebAssembly + WASI | 语言无关,无内置 I/O(非常适合沙箱) | 需要主机端能力注入,工具链复杂 |
HN 讨论中的共识是,结合能力模型的 V8 Isolates 在网络规模 SaaS 中达到了最佳平衡点:
“沙箱执行绝对是其中一环……但如果暴露外部端点且访问控制逻辑有缺陷,沙箱的安全性也毫无意义。” – socketcluster
Cloudflare 动态 Worker – 一个现成的开发栈
Jeremy Morrell 指出,Cloudflare 动态 Worker 是 2026 年构建可扩展网络应用最完整、最成熟的生产级框架。
内置原语满足核心需求
- 可观测性 – 运行时内置 OpenTelemetry 跟踪和尾部日志。
- 多租户存储 – Durable Objects 用于每个用户的 SQLite,R2 存储桶用于二进制对象存储。
- 持久执行 – 动态工作流支持长时间运行、具备重试机制的任务。
- 源码控制 – 集成的工件存储用于扩展版本管理。
- 托管大语言模型 – Workers AI 允许扩展调用大语言模型,并为每个用户分配令牌预算。
- 自托管工具链 – JavaScript 工具可在同一 worker 进程中运行,简化测试。
示例基于能力的扩展
// 主机提供的能力
export const getApprovedEmail = () => fetchEmailById(123, env.EMAIL_API_KEY);
// 用户生成的代码片段(由大语言模型生成)
export default async function process({ getApprovedEmail }: { getApprovedEmail: () => Promise<Email> }) {
const email = await getApprovedEmail();
// ...自定义逻辑...
}
该代码片段只能调用 getApprovedEmail;它永远不会看到原始 API 密钥,从而杜绝凭证泄露。
文中强调的真实世界用例
| 领域 | 大语言模型驱动的扩展示例 |
|---|---|
| AI 代理 | 为 Pi 添加自定义命令,解析特定网站并返回结构化数据。 |
| 企业内部平台 | 员工编写按需运行的分析脚本,针对共享数据湖执行,平台强制执行每个用户的权限范围。 |
| 支持平台 | 自动填充工单视图中的客户专属诊断信息,并提供由大语言模型生成的“重置配额”按钮。 |
| 可观测性工具 | 用户向仪表板注入自定义日志转换器、告警触发脚本或资源特定的超链接。 |
社区反馈 – 共识与质疑
- 共识 – 长尾需求和大语言模型生成代码的强大能力广受认可。
“未满足功能的长尾是真实存在的……大语言模型生成的扩展可以填补这一空白。” – harlan_pdx
- 对分发模式的质疑 – 有人质疑“为一个人开发的软件”为何必须基于网络。
“为何必须采用客户端/服务器模型?我为何关心分发?” – zahlman
- 平台锁定担忧 – 多位评论者指出,Cloudflare 可能不会成为通用托管平台;Google 或 Microsoft 也可能采用类似模式。
“很难想象 Cloudflare 会成为默认选择;更可能看到 Google 或 Microsoft 采取这种做法。” – bensyverson
- 安全优先视角 – 强调基于能力的设计优于临时代理。
“代码只能通过其被传递的引用执行操作。” – ryanrasti
开发者的实用建议
- 从可信的沙箱开始 – V8 Isolates 或 WASM + WASI 提供强大的安全边界。
- 仅暴露能力,而非原始 API – 向用户代码传递如
fetchApprovedEmail这样的函数;永远不要直接提供令牌。 - 利用现有平台原语 – 使用 Cloudflare 动态 Worker 的存储、工作流和 AI 绑定,避免重复造轮子。
- 实施严格的资源配额 – 通过限制每次调用的 CPU 时间、内存和网络调用次数,防范无限循环和拒绝服务攻击。
- 提供简单的共享模型 – 允许用户将扩展发布为可被同行导入的包,模仿“插件市场”模式。
结论
大语言模型辅助编程将用户特定功能的长尾从开发噩梦转变为可扩展的服务。通过结合基于能力的沙箱(V8 Isolates 或 WASM)与 Cloudflare 动态 Worker 内置的可观测性、存储和 AI 集成,开发者今天即可启动以网络为核心的可扩展平台。社区普遍认可其潜力,但同时警告:安全、成本和平台锁定问题必须从第一天起就予以重视。
Sources
相关
- Dispatch
- Dispatch
- 项目
- Dispatch
- 项目