Fallback to run_shell with Python heredoc when execute_code_sandbox fails
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-sandbox-fallback-python-e5d7ae-aa596c3373c1 ,按照其中的说明把「sandbox-fallback-python-e5d7ae」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Use this pattern when execute_code_sandbox fails with e2b/sandbox initialization errors, especially when running Python code that requires external libraries like reportlab, pandas, numpy, etc.
Detect these error patterns to trigger the fallback:
e2b initialization errorssandbox creation/creation timeout failurescontainer startup errorsFor short scripts, use a Python heredoc directly in run_shell:
run_shell(
command="""python3 << 'EOF'
import sys
print(f"Python version: {sys.version}")
# Your code here
EOF
""",
timeout=60
)
For longer scripts or when you need to preserve state across multiple executions:
# Step 1: Write the script to a temporary file
script_content = '''
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
import os
# Your code here
'''
run_shell(command=f"cat > /tmp/script.py << 'SCRIPT_EOF'\n{script_content}\nSCRIPT_EOF")
# Step 2: Execute the script
result = run_shell(command="python3 /tmp/script.py", timeout=120)
run_shell typically needs longer timeouts than execute_code_sandboxtimeout=60 for simple scriptstimeout=120 or higher for library-heavy operations (PDF generation, data processing)run_shell(command="pip install reportlab", timeout=60)
run_shell output for Python errorsrun_shell are in the current working directory by defaultos.getcwd() to reference files reliably# FALLBACK VERSION (when execute_code_sandbox fails):
pdf_code = """
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
def create_memo(filename):
c = canvas.Canvas(filename, pagesize=letter)
c.drawString(1*inch, 10*inch, "Legal Memorandum")
c.save()
print(f"Created {filename}")
create_memo('/workspace/output.pdf')
"""
# Write script to file
run_shell(command=f"cat > /tmp/create_pdf.py << 'PYEOF'\n{pdf_code}\nPYEOF")
# Execute and verify
run_shell(command="python3 /tmp/create_pdf.py", timeout=120)
# Verify output exists
run_shell(command="ls -la /workspace/output.pdf", timeout=30)
| Aspect | execute_code_sandbox | run_shell (fallback) |
|---|---|---|
| Isolation | High (containerized) | Low (host environment) |
| Reliability | Can fail with e2b errors | More reliable |
| Library Access | Pre-configured sandbox | Depends on host |
| Timeout | Default 30s | Configurable |
| File Access | ARTIFACT_PATH convention | Direct filesystem |
When switching from execute_code_sandbox to run_shell: