mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-10-07 02:57:50 +00:00
122 lines
No EOL
3.5 KiB
Markdown
122 lines
No EOL
3.5 KiB
Markdown
---
|
|
name: fallback-script-execution
|
|
description: Two-step script execution workflow for debugging when shell_agent and execute_code_sandbox consistently fail
|
|
---
|
|
|
|
# Fallback Script Execution with write_file + run_shell
|
|
|
|
## When to Use This Skill
|
|
|
|
Use this pattern when:
|
|
- `shell_agent` fails repeatedly with unclear error messages
|
|
- `execute_code_sandbox` consistently errors or times out
|
|
- You need better visibility into what's happening during execution
|
|
- Debugging inline code or delegated agents proves difficult
|
|
|
|
## Core Pattern
|
|
|
|
Instead of delegating execution to an agent or running inline code, use this two-step approach:
|
|
|
|
1. **Write script to file** using `write_file`
|
|
2. **Execute script** using `run_shell` with `python script.py`
|
|
|
|
This provides:
|
|
- Clearer error messages (full stack traces visible in run_shell output)
|
|
- Easier debugging (script persists for inspection)
|
|
- Better control over execution environment
|
|
- Ability to modify and re-run without rewriting code
|
|
|
|
## Step-by-Step Instructions
|
|
|
|
### Step 1: Write the Script File
|
|
|
|
Use `write_file` to create a self-contained Python script:
|
|
|
|
```
|
|
write_file with:
|
|
path: "path/to/script_name.py"
|
|
content: |
|
|
#!/usr/bin/env python3
|
|
# Your complete script here
|
|
# Include imports, logic, and error handling
|
|
```
|
|
|
|
**Best Practices:**
|
|
- Include descriptive comments
|
|
- Add try/except blocks for error handling
|
|
- Print intermediate results for debugging
|
|
- Use absolute or clear relative paths
|
|
|
|
### Step 2: Execute the Script
|
|
|
|
Use `run_shell` to execute the script:
|
|
|
|
```
|
|
run_shell with:
|
|
command: "python path/to/script_name.py"
|
|
```
|
|
|
|
**Best Practices:**
|
|
- Capture and examine full output
|
|
- If errors occur, the script file is still available for inspection
|
|
- You can re-run with modifications without starting over
|
|
|
|
## Example: Data Processing Task
|
|
|
|
### ❌ Problematic Approach (shell_agent fails repeatedly)
|
|
|
|
```
|
|
shell_agent with:
|
|
task: "Load Excel file, calculate correlations, save results"
|
|
```
|
|
|
|
*Result: Agent struggles with path handling, unclear errors*
|
|
|
|
### ✅ Recommended Approach (write_file + run_shell)
|
|
|
|
```
|
|
# Step 1: Write script
|
|
write_file with:
|
|
path: "correlation_analysis.py"
|
|
content: |
|
|
import pandas as pd
|
|
import sys
|
|
|
|
try:
|
|
# Load data
|
|
df = pd.read_excel('data.xlsx', sheet_name='Returns')
|
|
print(f"Loaded {len(df)} rows")
|
|
|
|
# Calculate correlation
|
|
corr = df.corr()
|
|
print(f"Correlation matrix shape: {corr.shape}")
|
|
|
|
# Save results
|
|
with pd.ExcelWriter('output.xlsx') as writer:
|
|
df.to_excel(writer, sheet_name='Returns')
|
|
corr.to_excel(writer, sheet_name='Correlation')
|
|
|
|
print("SUCCESS: output.xlsx created")
|
|
except Exception as e:
|
|
print(f"ERROR: {type(e).__name__}: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
# Step 2: Execute script
|
|
run_shell with:
|
|
command: "python correlation_analysis.py"
|
|
```
|
|
|
|
## Debugging Tips
|
|
|
|
1. **Add print statements** at key points to trace execution
|
|
2. **Check file paths** - use `run_shell` with `ls -la path/` to verify files exist
|
|
3. **Inspect errors** - run_shell output shows full Python stack traces
|
|
4. **Modify and re-run** - edit the script file and execute again without rewriting
|
|
|
|
## When to Escalate
|
|
|
|
If this pattern also fails:
|
|
- Verify Python is available: `run_shell` with `which python` or `python --version`
|
|
- Check file permissions: `run_shell` with `ls -la script.py`
|
|
- Try explicit Python path: `run_shell` with `/usr/bin/python script.py`
|
|
- Consider task complexity - may need to break into smaller scripts |