Agent Skills
› cloudflare/computer
› exec
exec
GitHub说明 exec 技能用于执行 ECMAScript 模块而非 Shell 命令。需在动态 Worker 中评估代码,支持 Node.js 内置模块及文件系统操作,限制网络访问与资源大小,适用于自动化脚本处理。
触发场景
需要运行 JavaScript 代码片段
使用 node:fs/promises 进行文件读写操作
执行失败提示 Disallowed operation
安装
npx skills add cloudflare/computer --skill exec -g -y
SKILL.md
Frontmatter
{
"name": "exec",
"description": "How exec works in this workspace. The command is the source of an ECMAScript module, evaluated in a fresh Dynamic Worker, not a shell command. Read this before running code, and when a run fails with \"Disallowed operation called within global scope\" or returns nothing."
}
Running code
Every exec call takes JavaScript module source, not a shell
command. The durable object builds a module graph from it, starts a
fresh Dynamic Worker, and evaluates the module there. Nothing is shared
between calls.
The shape of a module
Put the work inside the default export, and return what you want back:
import { readdir, readFile } from "node:fs/promises";
export default async function (input) {
const names = await readdir(input.dir);
const first = await readFile(`${input.dir}/${names[0]}`, "utf8");
return { count: names.length, first };
}
- The default export gets the call's
inputvalue. - Its return value comes back as the result's
value. It must be JSON-compatible. console.logandconsole.infogo to standard output.console.warnandconsole.errorgo to standard error.- A thrown error ends the run with a non-zero exit code and the message
on standard error. So does a promise that rejects with nothing
handling it, so
awaiteverything you start. - Code at the top level runs before the call is set up. A file read or a
fetchthere fails withDisallowed operation called within global scope. Imports at the top are fine.
What code can import
node:fs/promises(alsonode:fs): the workspace's files. The supported calls arereadFile,writeFile,mkdir,rm,readdir,stat,lstat,readlink,symlink,chmodandaccess. All of them are async.- Node.js built-ins such as
node:path,node:crypto,node:zlibandnode:buffer, with subpaths likenode:stream/promises. Bare names such aspathwork too. - Relative imports resolve from
cwdin the workspace, so you can write a helper module with one call and import it in the next. - There is no
node_moduleslookup and no npm. Beyond the modules above, only the ones the host configures are available.
Limits
- No direct network access.
fetchto the internet fails. - Each run has a time limit: one minute by default, three at most.
- Source,
inputand the returned value are capped at 1 MiB each.
Files
cwddefaults to/workspace.- File operations go straight to the durable object's storage. There's nothing to sync, so a write is visible to the next call right away.
/workspace/r2is a read-only copy of an R2 bucket./workspace/.agents/skills(where this file lives) is a read-only copy of files shipped with the Worker. Writing under either one fails withEROFS.
版本历史
- 7415a44 当前 2026-10-18 18:09


