mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 01:50:44 +08:00
彻底移除 manager_memory 与 wiki 注入写入分支,收敛网关分发路径和测试用例,同时补齐并中文化 session-bootstrap / wiki-first-autonomy / self-improvement 的 Wiki-first 规范,保证行为与提示词一致。 Made-with: Cursor
55 lines
1.2 KiB
Bash
55 lines
1.2 KiB
Bash
#!/bin/bash
|
||
# 自我改进错误检测 Hook
|
||
# 在 Bash 的 PostToolUse 触发,用于检测命令失败
|
||
# 读取 CLAUDE_TOOL_OUTPUT 环境变量
|
||
|
||
set -e
|
||
|
||
# 检查工具输出是否包含错误信号
|
||
# CLAUDE_TOOL_OUTPUT 为工具执行结果
|
||
OUTPUT="${CLAUDE_TOOL_OUTPUT:-}"
|
||
|
||
# 错误模式(大小写不敏感匹配)
|
||
ERROR_PATTERNS=(
|
||
"error:"
|
||
"Error:"
|
||
"ERROR:"
|
||
"failed"
|
||
"FAILED"
|
||
"command not found"
|
||
"No such file"
|
||
"Permission denied"
|
||
"fatal:"
|
||
"Exception"
|
||
"Traceback"
|
||
"npm ERR!"
|
||
"ModuleNotFoundError"
|
||
"SyntaxError"
|
||
"TypeError"
|
||
"exit code"
|
||
"non-zero"
|
||
)
|
||
|
||
# 检查输出是否匹配任一错误模式
|
||
contains_error=false
|
||
for pattern in "${ERROR_PATTERNS[@]}"; do
|
||
if [[ "$OUTPUT" == *"$pattern"* ]]; then
|
||
contains_error=true
|
||
break
|
||
fi
|
||
done
|
||
|
||
# 仅在检测到错误时输出提醒
|
||
if [ "$contains_error" = true ]; then
|
||
cat << 'EOF'
|
||
<error-detected>
|
||
检测到命令错误。若满足以下任一条件,请记录到 improvement/errors.md:
|
||
- 错误出乎预期或并不直观
|
||
- 需要排查才能解决
|
||
- 可能在相似场景复发
|
||
- 解决方案对后续会话有复用价值
|
||
|
||
记录时请使用 self-improvement 技能格式:[ERR-YYYYMMDD-XXX]
|
||
</error-detected>
|
||
EOF
|
||
fi
|