Skip to content

Code Runtime zh

pawaca edited this page Aug 30, 2026 · 1 revision

代码运行时

未实现。有多种 Cloudflare 产品可作为实现路径。

上游参考:Code Runtime

上游提供了什么

代码运行时是一个可选的能力接缝,执行模型编写的程序并捕获输出和返回值。独立于 agent loop 主干。

  • CodeRuntimectx.codeRuntime)— 抽象服务,提供 run(request) 方法、语言描述符('typescript''python')和隔离标签('worker-thread''process''container')。
  • 程序以 async 函数体运行,支持顶层 awaitreturn。宿主函数作为全局命名空间对象暴露(如 tools.search())。
  • 故障分类:exception、timeout、abort、worker-exit(OOM)、invalid-output(非 JSON)、output-limit。
  • 绑定安全:命名空间名视为不可信输入,防止原型链污染,所有参数/返回值必须是无损 JSON。

Edge 当前状态

未实现 没有安装 CodeRuntime 服务。dsh-code-runtime 包不在 Edge 的依赖中。模型无法在 bash 工具之外执行代码片段。

Cloudflare 能力

三种潜在实现路径,各有不同的隔离保证和 plan 要求:

方案 语言 隔离级别 Plan 可行性
Workers isolate 仅 JS/TS V8 isolate(与 Workers 相同) 免费 高——Edge 已使用 WorkerShellBackend 通过 Loader binding 向隔离 Worker 分发工作。同样的模式可以执行 JS/TS 代码片段,宿主函数绑定跨边界序列化。
Dynamic Worker dispatch 仅 JS/TS 独立 Worker isolate 付费 中——Cloudflare Service Bindings 允许向临时 Worker 分发。比进程内执行隔离更强。需要运行时将代码组装为 Worker 脚本。
Containers 任意(Python、Node、Go 等) 完整 Linux 容器 付费(beta) 中——Cloudflare Containers 运行完整 Linux 环境。可托管任意语言运行时。延迟较高(容器冷启动)但隔离最强。匹配上游的 'container' 隔离标签。

可复用的现有模式:Edge 的 WorkerShellBackend 已经通过 Loader binding 向隔离 Worker 分发 just-bash 命令。同一个 LOADER binding 可以适配为接受代码片段而非 shell 命令,在免费 plan 上提供 JS/TS 代码运行时,无需额外基础设施。

架构总结

组件 分类 备注
CodeRuntime 服务 缺失 未安装,上游包不在依赖中
Workers isolate 执行 潜在方案 免费 plan,仅 JS/TS,现有 Loader 模式
Container 执行 潜在方案 付费 plan,任意语言,冷启动延迟

TODO

**评估 Workers-isolate JS/TS 代码运行时。**现有的 WorkerShellBackend + Loader binding 模式可以适配为执行 JS/TS 代码片段并绑定宿主函数。这将在免费 plan 上提供代码运行时,无需 Containers。关键问题:上游 CodeRuntime 接口能否用 Worker 后端满足?宿主函数绑定如何跨 Worker 边界序列化?每次执行的内存和 CPU 限制是多少?

**评估 Container 多语言代码运行时。**对于 Python 等语言,Cloudflare Containers 提供完整 Linux 环境。关键问题:容器冷启动延迟多少?容器能否在 session 内跨代码运行复用?Container 与 DO 生命周期如何交互(容器是否会比 DO 激活存活更久)?

English

中文

Clone this wiki locally