# @executor-js/execution 中文文档

规范地址：https://npmcn.com/package/%40executor-js/execution/

版本：1\.6\.11
npm 元数据更新时间：2026-10-22T23:14:56.878Z
中文译文更新时间：2026-11-14T03:24:31.852Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40executor-js/execution
原文对照：https://npmcn.com/package/%40executor-js/execution/?lang=original
项目主页：https://github.com/UsefulSoftwareCo/executor/tree/main/packages/core/execution
源码仓库：https://github.com/UsefulSoftwareCo/executor

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：306 kB，34 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：effect 4\.0\.0-beta\.59
- 首次发布：2026-04-17T20:11:23.352Z
- 最新版本发布：2026-10-22T23:14:56.503Z
- 近 30 天下载量：397794（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：78（近 12 个月 78 个）

## 中文简介

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

## 安装

```sh
npm install @executor-js/execution
```

也可以使用：`pnpm add @executor-js/execution`、`yarn add @executor-js/execution`、`bun add @executor-js/execution`

## README

# @ executor-js/ 执行

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

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

## 安装

```sh
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 他们从来没有使用.

## 使用量

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

```ts
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` 作为暂停点拦截第一个请求:

```ts
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 工作流程描述

```ts
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` 工具;直接读取:

```ts
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>`。 。 。 .

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

## 状态

预`1.0`. API在β释放之间仍然可能改变. 部分 [执行器单曲](https://github.com/UsefulSoftwareCo/executor)。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @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 和提交记录判断。

