-
Notifications
You must be signed in to change notification settings - Fork 1
Bash zh
Edge 用 just-bash(纯 JavaScript shell)替换了上游的原生 shell,运行在 Cloudflare 的 VFS 中。
上游的 bash 工具通过 node:child_process 启动真实 shell 进程。模型发送命令,宿主以子进程执行,具备完整 Linux 能力——原生二进制(git、python、cargo)、管道、后台进程、信号和环境变量。输出流式返回。工具通过标准 ctx.tools 管线注册。
Cloudflare Workers 不能 spawn 子进程。Edge 用 just-bash(v3.3.0)替换了整个 shell 后端——一个在 Worker 的 V8 isolate 里运行的纯 JavaScript shell,提供 20+ 内置命令:
-
文件操作:
cat、ls、mkdir、rm、cp、mv、touch、head、tail -
文本处理:
grep、rg、sed、awk、sort、wc、xargs、diff -
搜索:
find,支持 glob 和正则 -
自定义命令:
git(通过 Computer API)、assets、artifacts
所有文件操作在 Cloudflare Computer 的虚拟文件系统(VFS)上运行,不是真实 Linux 文件系统。
| 后端 | 模式 | 工作方式 | Plan 要求 |
|---|---|---|---|
DirectShellBackend |
直连 | just-bash 在 Durable Object 内运行。最简路径——无跨 Worker 通信。 | 所有 plan(含免费试用) |
WorkerShellBackend |
隔离 | just-bash 在独立 Worker 中运行(通过 Computer Worker Loader 绑定)。Shell 执行与 DO 内存隔离。 | 需要 LOADER 绑定(Workers Paid) |
后端自动选择:有 LOADER 环境绑定时用 WorkerShellBackend,否则用 DirectShellBackend。
系统提示词明确告知模型 shell 的限制:
"The shell is just-bash, not Linux: native binaries and background processes are unavailable."
- 工具注册机制(
ctx.tools.register()) - 工具执行管线(pre-execute、guards、around-dispatch、post-execute)
- 输出 schema(command、output、exitCode、outputTruncated)
| 能力 | 上游 | Edge |
|---|---|---|
| 原生二进制 | ✅ git、python、node 等 |
❌ 仅内置命令 + Computer git |
| 后台进程 | ✅ &、nohup
|
❌ 不支持 |
| 管道到外部程序 | ✅ `cmd1 | cmd2` 任意二进制 |
| 环境变量 | ✅ 完整 env
|
export
|
| 信号 | ✅ SIGTERM、SIGKILL
|
|
| 文件系统 | ✅ 真实 Linux FS | /usr,workspace 外无 /tmp
|
输出限制:每次执行 65,536 UTF-8 字节。超出部分截断并标记。
超时:默认 120 秒,可通过 DSH_EDGE_DEFAULT_COMMAND_TIMEOUT_MS 配置(最大值也默认 120 秒,可通过 DSH_EDGE_MAX_COMMAND_TIMEOUT_MS 配置)。
执行模型:在 DO isolate 内同步执行(DirectShellBackend)或隔离 Worker(WorkerShellBackend)。每个 turn 内无并发 shell——每条命令执行完毕后才运行下一条。
安全:just-bash 以 executionLimitProfile: 'hardened' 和 defenseInDepth: { enabled: 'auto' } 运行。
| 组件 | 分类 | 上游对应 |
|---|---|---|
| just-bash shell | 替换 | node:child_process |
| DirectShellBackend | 替换 | 本地进程 spawning |
| WorkerShellBackend | 替换 | 隔离子进程 |
| 工具注册 | 复用 | ctx.tools.register() |
关键观察:Bash 是 Edge 中适配最重的工具。整个执行引擎被替换——从原生进程 spawning 到纯 JS 解释器。尽管如此,面向模型的接口完全相同:相同的工具名、参数和输出格式。模型通过系统提示词声明调整行为。
**评估 Cloudflare Containers 实现真实 bash。**Cloudflare Containers(2025 年发布)可以在 Workers 旁运行完整 Linux 容器。这将启用原生二进制(
git、python、node)、真实管道和后台进程——弥合与上游的能力差距。Container 需要挂载 VFS workspace 并将 shell 结果通信回 DO。至少需要 Workers Paid plan。现有的WorkerShellBackend接口可能可以扩展为向 Container 而非 Worker Loader 分发。
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发