Systematic workflow for diagnosing and resolving unknown errors from run_shell commands
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-shell-error-debug-workflow-8514de5db19f ,按照其中的说明把「shell-error-debug-workflow」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
When run_shell returns an 'unknown error' or ambiguous failure, apply this systematic troubleshooting workflow to diagnose and resolve the issue.
run_shell returns an 'unknown error' messageRedirect stderr to stdout to capture all error output:
# Instead of:
run_shell command="some-command"
# Use:
run_shell command="some-command 2>&1"
This ensures error messages are captured in the output rather than being lost.
Confirm the current working directory and its contents:
run_shell command="pwd && ls -la"
Check that:
Verify the required command or tool exists and is accessible:
run_shell command="which some-command || command -v some-command || type some-command"
If the tool is not found, check PATH or install the required package.
Replace relative paths with absolute paths to avoid directory-related issues:
# Instead of:
run_shell command="python script.py"
# Use:
run_shell command="$(pwd)/script.py"
# or
run_shell command="/absolute/path/to/script.py"
Isolate the issue by running a minimal version of the command:
# Test basic functionality first
run_shell command="echo 'test'"
# Then gradually add complexity
run_shell command="some-command --version"
run_shell command="some-command --help"
Some commands depend on specific environment variables:
run_shell command="env | grep -i relevant_var"
For persistent unknown errors, run this complete diagnostic:
# 1. Capture full environment
run_shell command="pwd && echo '---' && ls -la && echo '---' && env"
# 2. Test command with full error capture
run_shell command="your-command 2>&1 | head -50"
# 3. Check command availability
run_shell command="which your-command || echo 'Command not found in PATH'"
# 4. Try with absolute path
run_shell command="/full/path/to/your-command 2>&1"
| Symptom | Likely Cause | Solution |
|---|---|---|
| No output, unknown error | stderr not captured | Add 2>&1 to command |
| File not found | Wrong working directory | Use pwd to verify, use absolute paths |
| Permission denied | File/directory permissions | Check with ls -la, adjust permissions |
| Command not found | Tool not installed or not in PATH | Use which to check, install or specify full path |
| Intermittent failures | Race conditions or timing | Add delays, check for file locks |
# Initial failing command
run_shell command="python process.py"
# Returns: unknown error
# Apply diagnostic workflow:
# Step 1: Capture stderr
run_shell command="python process.py 2>&1"
# Step 2: Verify directory
run_shell command="pwd && ls -la"
# Step 3: Check Python availability
run_shell command="which python && python --version"
# Step 4: Use absolute path
run_shell command="$(pwd)/process.py 2>&1"
# or
run_shell command="/usr/bin/python3 $(pwd)/process.py 2>&1"
2>&1If this workflow does not resolve the issue:
shell_agent for complex shell tasks that require autonomous error handling