@executor-js/execution

中文文档
1.6.11发布于 2026/10/23MITTypeScriptES Module构建来源已验证近 30 天下载 39.8万

用于执行器的 Sandboxed JavaScript 执行 。 手一个 tools.<namespace>.<name>(...) 代理到一个代码沙盒中,这样一个代理(或任何呼叫者)就可以运行生成的TypeScript/JavaScript,以引用执行器已注册的工具.

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 自定义工具的发现
  4. 暂停/恢复引出
  5. LLM 工作流程描述
  6. 有效使用
  7. 状态
  8. 许可证

@ executor-js/ 执行

用于执行器的 Sandboxed JavaScript 执行 。 手一个 tools.<namespace>.<name>(...) 代理到一个代码沙盒中,这样一个代理(或任何呼叫者)就可以运行生成的TypeScript/JavaScript,以引用执行器已注册的工具.

支持暂停/ 重置引出驱动的流: 需要用户输入的工具( Outh, 窗体填充, 批准) 暂停沙盒, 表面 a PausedExecution,然后继续 ResumeResponse。 。 。 .

安装

bun add @executor-js/sdk @executor-js/execution @executor-js/runtime-quickjs
# or
npm install @executor-js/sdk @executor-js/execution @executor-js/runtime-quickjs

@executor-js/runtime-quickjs 是沙盒运行时间。 这不是依赖 @executor-js/execution 你带了自己的消费者来 这样不同的运行时间 就不会载运~13 MB的WASM 他们从来没有使用.

使用量

import { createExecutor } from "@executor-js/sdk";
import { createExecutionEngine } from "@executor-js/execution";
import { makeQuickJsExecutor } from "@executor-js/runtime-quickjs";

const executor = await createExecutor({
  onElicitation: "accept-all",
});

const engine = createExecutionEngine({
  executor,
  codeExecutor: makeQuickJsExecutor({
    timeoutMs: 2_000,
    memoryLimitBytes: 32 * 1024 * 1024,
  }),
});

const result = await engine.execute(
  `
    const pets = await tools.petstore.findPetsByStatus({ status: "available" });
    return pets.length;
  `,
  {
    onElicitation: async (ctx) => {
      // A tool asked for user input mid-execution. Your UI decides what to do.
      console.log("tool needs input:", ctx.request);
      return { action: "decline" };
    },
  },
);

console.log(result);
// { result: 12, logs: [...] }

自定义工具的发现

tools.search(...) 默认情况下使用执行器的内置词典工具发现. 主机可以提供自己的执行,例如索引化或语义化的搜索提供者,而不替换沙盒运行时间:

import { createExecutionEngine, type ToolDiscoveryProvider } from "@executor-js/execution";

const toolDiscoveryProvider: ToolDiscoveryProvider = {
  searchTools: ({ query, namespace, limit, offset }) =>
    mySearchIndex.searchTools({ query, namespace, limit, offset }),
};

const engine = createExecutionEngine({
  executor,
  codeExecutor: makeQuickJsExecutor(),
  toolDiscoveryProvider,
});

暂停/恢复引出

当主机不支持内含引出时,使用 executeWithPause 作为暂停点拦截第一个请求:

import type { ExecutionEngine } from "@executor-js/execution";

declare const engine: ExecutionEngine;
declare const code: string;

const started = await engine.executeWithPause(code);

if (started.status === "paused") {
  const { id, elicitationContext } = started.execution;
  // Render the elicitation request in your UI. Later:
  const resumed = await engine.resume(id, {
    action: "accept",
    content: { name: "Ada" },
  });
}

LLM 工作流程描述

import type { ExecutionEngine } from "@executor-js/execution";

declare const engine: ExecutionEngine;

const description = await engine.getDescription();
// Returns the short `execute` tool description: a one-line intro, a pointer to
// the `execute` skill, and the live connection-prefix inventory. Feed this to
// an LLM as the execute tool's description.

完整的“ 使用工具. search (), 然后是工具. description.tool (), 然后调用...) 工作流程 传道活在 execute 而非总是装入的描述,所以 从不运行代码的模型不会为此付出代价。 MCP主机通过 skills 工具;直接读取:

import { EXECUTE_SKILL } from "@executor-js/execution";

const howTo = EXECUTE_SKILL.body;

有效使用

如果你在继续发展 @executor-js/sdk/core (原始效果条目),从 /core 子路径。 返回的引擎为 Effect-native : execute, (中文(简体) ), executeWithPause,以及 resume 都变成 Effect.Effect<...>,以及 onElicitation 是一个 ElicitationHandler 返回时 Effect.Effect<ElicitationResponse>。 。 。 .

import { createExecutionEngine } from "@executor-js/execution/core";

状态

预1.0. API在β释放之间仍然可能改变. 部分 执行器单曲。 。 。 .

许可证

麻省理工学院

版本与发布记录

@executor-js/execution 共发布 78 个版本,首次发布于 2026/04/18;过去 12 个月发布了 78 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.6.11latest2026/10/2322 天前
1.6.102026/09/191 个月前
1.6.92026/09/181 个月前
1.6.82026/09/062 个月前
1.6.72026/08/302 个月前
1.6.62026/08/302 个月前

其他发布通道:beta → 0.0.1-beta.4。

关于 @executor-js/execution 的常见问题

@executor-js/execution 是什么?

用于执行器的 Sandboxed JavaScript 执行 。 手一个 tools.<namespace>.<name>(...) 代理到一个代码沙盒中,这样一个代理(或任何呼叫者)就可以运行生成的TypeScript/JavaScript,以引用执行器已注册的工具.

如何安装 @executor-js/execution?

在项目目录运行 npm install @executor-js/execution,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:effect(4.0.0-beta.59)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@executor-js/execution 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@executor-js/execution 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@executor-js/execution 可以商用吗?

@executor-js/execution 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@executor-js/execution 的下载量有多少?

根据 npm 官方下载统计,@executor-js/execution 在 2026/10/14 – 2026/11/12 这 30 天内被下载 397,794 次,日均约 13,260 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@executor-js/execution 还在维护吗?

最新版本 1.6.11 发布于 2026/10/23(22 天前);至今共发布 78 个版本,其中过去 12 个月发布了 78 个;首次发布于 2026/04/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。