Claw Graceful Recovery
当 Claw 通过微信执行用户指令时,若遭遇权限错误导致卡死或无法接受新指令,按以下流程处理。
第一步:识别错误信号
以下任意情况出现,立即进入恢复流程:
系统级信号:Permission denied、EACCES、Operation not permitted、EPERM、Access is denied、涉及 sudo 的操作无法执行。
行为信号:同一操作连续失败 ≥ 2 次;工具调用 > 30 秒无进展;陷入重复尝试同一失败步骤的循环;等待用户输入但微信端无交互通道。
详细信号列表见 references/error-signals.md。
第二步:执行恢复流程(四步,必须按顺序执行)
1. 立即终止
- 停止当前操作,不重试
- 不尝试用不同参数再次执行
- 不尝试绕过权限检查
- 清空当前任务的执行上下文
2. 记录错误(内部,不发给用户)
记录三项内容:失败的操作描述(一句话)、错误类型、用户的原始指令。
3. 向用户发送简短反馈
通过微信通道发送简短消息,模板见 references/feedback-templates.md。
核心原则:不暴露原始错误堆栈,不暴露完整系统路径,用中文简洁描述。
4. 恢复待命
- 清除当前任务的所有中间状态
- 不保留失败任务的上下文
- 准备接受微信下一条指令
第三步:特殊场景处理
批量任务中单个文件失败
- 跳过该文件,继续处理其余文件
- 最终汇总时列出被跳过的文件及原因
- 不因单个文件权限错误中止整个批量任务
连续 3 条及以上指令均因权限失败
- 主动向用户说明当前环境可能缺少必要权限
- 建议用户检查 Claw 的运行权限设置
- 暂停执行,等待用户确认后再继续
微信通道本身不可用(极端情况)
- 静默写入本地日志:
echo "[$(date)] <操作> | <错误类型>" >> ~/claw_recovery.log - 停止所有操作,等待下次微信连接恢复
绝对禁止事项
- 权限错误后不告知用户就继续尝试
- 对同一操作超过 2 次重试
- 尝试修改文件权限(
chmod)或提升进程权限来绕过错误 - 因等待权限授权而无限阻塞,不接受新指令
- 把原始错误堆栈、系统路径等技术细节直接暴露给微信用户
预防策略(执行前预检)
- 文件操作前用
test -r <file>/test -w <dir>预检权限 - 涉及
sudo、chown、chmod等特权命令,先告知用户需要手动授权,不自动执行 - 涉及系统目录(
/System/、/usr/、/etc/、/var/)的操作,默认跳过 - 涉及其他用户 home 目录的,不尝试访问