Skip to main content

run-shell-fallback

Use run_shell with inline Python as a reliable fallback when execute_code_sandbox or read_file fail

معلومات المصدر

المستودع
HKUDS/OpenSpace
آخر نشاط في المصدر
١٧ يوليو ٢٠٢٦ في ٠٣:٤٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٧٬٧٧٣
التفرعات
٩٢٣

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
run-shell-fallback
description
Use run_shell with inline Python as a reliable fallback when execute_code_sandbox or read_file fail
# Run Shell Fallback Pattern This skill provides a reliable workaround when `execute_code_sandbox` or `read_file` fail with 'unknown error' by switching to `run_shell` with inline Python code. ## When to Use Apply this pattern when you encounter: - `execute_code_sandbox` fails with "unknown error" or timeout - `read_file` fails to read accessible files with "unknown error" - Sandbox environment is unreliable for your specific task ## How to Implement ### 1. File Reading Fallback When `read_file` fails, use `run_shell` with Python or `cat`: **For text files:** ```bash run_shell(command="cat /path/to/file.txt") ``` **For structured parsing (Python one-liner):** ```bash run_shell(command="python3 -c \"import json; print(json.load(open('/path/to/file.json')))\"") ``` **For multi-line Python processing:** ```bash run_shell(command="python3 << 'EOF' with open('/path/to/file.txt', 'r') as f: content = f.read() # Process content here print(content.upper()) EOF") ``` ### 2. Code Execution Fallback When `execute_code_sandbox` fails, use `run_shell` with inline Python: **Simple one-liners:** ```bash run_shell(command="python3 -c \"print('Hello'); import os; print(os.getcwd())\"") ``` **Multi-line scripts (heredoc):** ```bash run_shell(command="python3 << 'EOF' import os import json def process_data(data): return {k: v.upper() if isinstance(v, str) else v for k, v in data.items()} with open('input.json') as f: data = json.load(f) result = process_data(data) print(json.dumps(result, indent=2)) EOF") ``` **With inline file write:** ```bash run_shell(command="python3 << 'EOF' result = {'status': 'success', 'count': 42} with open('output.json', 'w') as f: json.dump(result, f, indent=2) print('File written successfully') EOF") ``` ### 3. Decision Flow ``` 1. Attempt execute_code_sandbox or read_file 2. If failure with 'unknown error': a. Determine task type (code execution vs file reading) b. Choose inline Python approach (-c for simple, heredoc for complex) c. Execute via run_shell d. Parse output as needed 3. Continue with task using results from run_shell ``` ## Best Practices 1. **Escape quotes properly** in `-c` commands: Use `\"` for double quotes inside the command string 2. **Use heredoc for complex scripts**: When code exceeds 2-3 lines or needs multiple imports, use `<< 'EOF'` syntax 3. **Quote EOF marker**: Use `<< 'EOF'` (with quotes) to prevent variable expansion in the heredoc 4. **Capture stdout**: Design your inline Python to print results to stdout for easy capture 5. **Error handling**: Add try/except blocks in your inline Python to catch and report errors clearly 6. **File paths**: Use absolute paths when possible, or ensure working directory is correct ## Examples ### Example 1: Read and parse JSON after read_file failure ```bash run_shell(command="python3 -c \"import json; data=json.load(open('config.json')); print(data['key'])\"") ``` ### Example 2: Process CSV data after execute_code_sandbox failure ```bash run_shell(command="python3 << 'EOF' import csv with open('data.csv', 'r') as f: reader = csv.DictReader(f) rows = list(reader) print(f\"Total rows: {len(rows)}\") for row in rows[:5]: print(row) EOF") ``` ### Example 3: Transform and write output file ```bash run_shell(command="python3 << 'EOF' import json with open('input.json') as f: data = json.load(f) transformed = [item.upper() if isinstance(item, str) else item for item in data] with open('output.json', 'w') as f: json.dump(transformed, f, indent=2) print('Transformation complete') EOF") ``` ## Limitations - run_shell executes in the shell environment, not the sandbox - ensure paths and dependencies are available - Output is limited to stdout/stderr - use file writes for large data - Complex multi-file projects may require creating temporary script files first
عرض على GitHub