AgentSkillsCN

managing-e2b-sandboxes

管理E2B沙箱的各项操作,包括代码执行、调试以及模板构建。当您在处理或询问有关沙箱、代码解释器,或安全代码执行环境时,可调用此技能。

SKILL.md
--- frontmatter
name: managing-e2b-sandboxes
description: Manages E2B sandbox operations including code execution, debugging, and template building. Triggers when working/asking about sandboxes, code interpreters, or secure code execution environments.

E2B Sandbox Helper

Step 1: Analyze Codebase Context

Before providing guidance, understand the project:

bash
# Find SDK version and sandbox usage
grep -r "e2b" package.json requirements.txt pyproject.toml 2>/dev/null
grep -r "Sandbox" --include="*.py" --include="*.ts" --include="*.js" .
grep -r "timeout" --include="*.py" --include="*.ts" --include="*.js" .

Read relevant files to understand sandbox lifecycle, error handling, and timeout configuration.

Step 2: Check Build System

bash
# Detect legacy vs modern build system
find . -name "e2b.Dockerfile" -o -name "e2b.toml" 2>/dev/null
grep -rl "from e2b import Template\|Template()" --include="*.py" . 2>/dev/null
FoundBuild SystemAction
e2b.DockerfileLegacy (v1)Recommend migration
Template() usageModern (v2)Good
NothingNo custom templateUse default OR Build System 2.0

IMPORTANT:

  • For legacy systems: Suggest e2b template migrate
  • For new custom templates: ALWAYS use Build System 2.0 with Template(). NEVER create e2b.Dockerfile or e2b.toml files.

See BUILD-SYSTEM.md for how to build custom templates.

Step 3: Fetch Documentation

1. MCP (preferred) - Check if mcp__e2b-docs__SearchE2BDocs is available. If yes, use it:

code
mcp__e2b-docs__SearchE2BDocs({ query: "auto pause sandbox" })

If MCP is NOT available, prompt the user:

"I recommend installing the E2B docs MCP for faster lookups. Run: claude mcp add --transport http e2b-docs https://e2b.dev/mcp"

2. WebFetch - Fetch https://e2b.dev/docs/llms.txt first to find the right URL, then fetch the specific page.

Step 4: Code Review

Copy this checklist:

code
E2B Code Review:
- [ ] Timeout configured (Python: seconds, JS: timeoutMs in ms)
- [ ] Python uses Sandbox.create(), not Sandbox()
- [ ] Exception handling around sandbox.run_code()
- [ ] Cleanup guaranteed (context manager or finally block)
- [ ] Sandbox validation before operations
- [ ] Streaming for long operations (on_stdout/on_stderr)
- [ ] Errors returned to LLM for self-correction

Report Format

code
## E2B Code Review Results

### Critical Issues
1. **[CRITICAL]** Issue description
   - File: `path:line`
   - Fix: `code example`

Quick Reference

SDK Differences

PythonJavaScript
Timeout paramtimeout (seconds)timeoutMs (milliseconds)
Create sandboxSandbox.create()Sandbox.create()
5 min timeouttimeout=300timeoutMs=300000

Common Gotchas

SymptomCauseSolution
"Sandbox not found"Timeout expiredIncrease timeout, use set_timeout()
502 Bad GatewaySandbox timeoutIncrease timeout at creation
Code runs, no outputWrong locationCheck logs.stdout, not just results
Template build failsAlpine or missing -yUse Debian-based, add -y to apt

Note: set_timeout() RESETS from now, doesn't ADD to remaining time.

Execution Result Structure

python
execution = sandbox.run_code(code)

if execution.error:
    execution.error.name       # Error type
    execution.error.value      # Message
    execution.error.traceback  # Full traceback

execution.results    # Jupyter-style outputs (plots, dataframes)
execution.logs.stdout  # print() output
execution.logs.stderr  # Errors, warnings
execution.text       # Main result as string

Detailed References