mcpField
M
make-e2b-code-execution

make-e2b-code-execution

github.com/integromat开发155245 次安装1 天前更新
代码仓库

关于 make-e2b-code-execution

用于将代码转化为可持久使用的本地或托管工具的 Skill,托管执行采用 E2B。涵盖代码文件保存、Make 场景配置与执行,并通过 Make API 壳安全访问 SaaS 数据。

主要功能

  1. 01将持久代码保存到指定 Code 文件夹
  2. 02在本地或 E2B 沙箱运行代码
  3. 03配置可复用的 Make E2B 壳
  4. 04传递执行输入与超时设置
  5. 05通过 Make API 壳访问 SaaS 数据

适用场景

  1. 01运行快速的本地代码
  2. 02将代码用作可复用的托管工具
  3. 03让托管代码使用 SaaS 数据且不嵌入凭据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/integromat/make-skills --skill make-e2b-code-execution

安装后在 Claude Code 中输入/make-e2b-code-execution确认已加载。

附带文件references/e2b-code-shell-contract.mdreferences/execution-modes.md

详细介绍

Make E2B 代码执行

当用户希望将代码变为可长期使用的工具时,使用此技能。

已知 E2B 模块 ID:E2B 沙箱模块为 "module": "e2b:RunE2BSandbox",其 "version": 0。

架构如下:

Hermes writes code -> Code folder -> local execution or Make E2B Code Shell -> E2B runtime

如果该代码需要 SaaS 数据,必须调用 make-api-shell-connection-workflow 中的 Make API shell 场景。不要在生成的代码中放入 OAuth 密钥、Make API 令牌、E2B API 密钥、刷新令牌、服务提供商密码或直接的服务提供商 SDK 身份验证信息。

存储规则

将所有需要长期保存的代码工件存储在已配置的 Hermes Code 文件夹下:

  • 本地知识存储:knowledge/hermes/Code/...
  • Google Drive 知识存储:/Hermes/Code/...

使用运行时辅助工具,例如:

import make_api_shell as make

make.write_code_artifact(
    "tools/calc.py",
    "print(17 * 23)\\n",
    language="python",
    confirm=True,
)

除非用户明确要求创建临时本地暂存文件,否则不要使用 shell 重定向、open(...) 或 Path.write_text(...) 直接写入需要长期保存的代码文件。

执行模式

普通代码执行

用于快速运行、非托管的代码:

  1. 在 Code/ 下编写代码工件。
  2. 使用本地 code_execution 工具运行代码。
  3. 仅通过已配置的 Knowledge 辅助工具编写简短的运行说明或输出工件。
托管 E2B Code Shell

用于将代码构建为可重复使用的托管工具:

  1. 在 Code/ 下编写代码工件。
  2. 创建或复用符合 E2B Code Shell 合约的 Make 场景。
  3. 使用 codePath、language、entrypoint、input、mode 和 timeoutMs 运行 shell。
  4. 将 E2B shell 输出视为工具结果。

Make 场景是控制平面 shell。E2B 仅用作运行时。Agent 永远不会收到 E2B 凭据。

在已验证的 e2b Make 应用上构建 shell(已通过实时验证)

当没有可用的基础设施运行器 URL 时,在 Make 已验证的应用 e2b(“e2b.dev”,beta,主版本 0)上,将 E2B Code Shell 构建为应用操作 shell;使用模块 e2b:RunE2BSandbox:

  • 模块映射器字段:execLanguage(python/javascript)、inputFormat (string/base64)、dependencies(数组)、timeoutSeconds(数字, 必填)、code(文本,必填)。将标准 shell 接口中的输入映射为 {{2.qs.<field>}}。
  • 连接来自针对 e2b / RunE2BSandbox 的凭据请求。绑定两次:作为传统的 __IMTCONN__(shell 验证器要求此项),以及作为模块声明的参数 account —— manifest-2/SDK 模块会忽略 __IMTCONN__,否则将无法使用凭据运行。在辅助工具环境中,向 create_app_action_shell_scenario 传入 connection_parameter="account"。
  • 在首次运行前,将场景接口修改为通用 shell 合约,然后激活该场景。
  • 模块的输出字段为 logs,其结构为 {"stdout": ["..."], "stderr": []} — 将 ReturnData 映射为 {"data": "{{<moduleId>.logs}}"}(stdout/result/output 均不存在,会静默返回 null)。在辅助工具环境中使用 return_field="logs"。
  • 在 Make 界面中编辑场景会重新编号模块 ID并重写模块参数(移除 __IMTCONN__)。每次通过界面编辑后,都要重新读取蓝图、以两种方式重新绑定连接,并将 ReturnData 引用修正为新的模块 ID — 旧引用会导致其他运行成功时仍返回 data: null。
  • 模块的 E2B 错误特征:401: authorization header is missing 表示模块未发送密钥(未绑定连接); 401: authorization header is malformed 表示存储的 apiKey 不以 e2b_ 开头 — 常见原因:带有 "Bearer " 前缀、包含引号、误将 sk_e2b_... Access Token 粘贴为 API Key,或界面保存操作未能持久化且未显示错误(通过 POST /connections/{id}/set-data 修复)。e2b 应用会原样发送 X-API-Key: <apiKey>,因此请存储不带修饰的 e2b_... 密钥。

嵌套式 SaaS 访问

对于“inception”工具,生成的代码可以调用 Make API shell 场景:

Hosted code -> Make Gmail API shell -> Gmail API

托管代码只能接收场景 ID、路径、请求负载和非机密输入数据。它绝不能接收原始 Make 或提供商凭据。

参考资料

评论

支持 Markdown