Skip to content

plugin-tool-code-runner — 代码执行工具

包名: @aalis/plugin-tool-code-runner
源码: packages/plugin-tool-code-runner/src/index.ts

概述

执行 Python / JavaScript 代码的工具,带超时与输出大小限制。默认在 OS 沙箱内运行 (经 code-sandbox 服务,由 plugin-code-sandbox-os 提供)—— 把代码限制在「工作区 + 本次临时目录」、默认断网、只放行白名单环境变量。无可用沙箱后端时 fail-closed(拒绝执行,给出可操作提示),绝不静默裸跑。

插件声明

typescript
meta.name = '@aalis/plugin-tool-code-runner'
meta.inject = {}

配置

字段类型默认值说明
defaultTimeoutnumber60000默认超时(ms)
maxTimeoutnumber300000最大超时(5 分钟)
maxOutputSizenumber131072输出大小限制(128KB)
sandbox.modeselectautoauto=有沙箱后端则强制隔离、无则拒绝运行(fail-closed);none=无隔离裸跑(危险,仅信任环境,每次告警)
sandbox.networkselectdeny仅 auto 生效。deny=子进程断网(脚本内 fetch 会失败);allow=放开(粗粒度,无法按域名过滤)

沙箱(隔离执行)

auto 模式下取 code-sandbox 服务执行:每次运行按本次工作目录+临时目录构造策略 (写白名单 + 网络 + env 白名单),交由 OS 沙箱后端强制。需安装一个 code-sandbox 实现 (默认 plugin-code-sandbox-os:macOS sandbox-exec / Linux bubblewrap); npm create aalis 选了本插件会自动带上它。边界:v1 防「写出工作区 / 联网外泄 / 篡改系统」, 不防读取本机其它文件(读放开,因解释器需系统库);要防读取需更强的 WASM/microVM 实现。

注册工具

工具说明
run_python执行 Python 代码
run_javascript执行 JavaScript 代码

工作目录解析

workingDirectory 必须是 storage URI(workspace:/projectpluginData:/... 等)或相对 workspace:/ 的路径。不接受宿主机绝对路径

解析使用共享工具 resolveAgainstCwd,与 plugin-tools 的 shell/file/http 工具保持一致行为。