#!/bin/bash # Capability Evolver 定期运行脚本 # 策略:使用 repair-only 模式,仅修复问题不做大改动 EVOLVER_DIR="$HOME/.openclaw/skills/capability-evolver" OUTPUT_FILE="$HOME/.openclaw/scripts/evolver-output.txt" OPENCLAW_DIR="$HOME/.openclaw" echo "=== Capability Evolver 运行开始 ===" > "$OUTPUT_FILE" echo "时间: $(date)" >> "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" # 切换到 openclaw 目录 cd "$OPENCLAW_DIR" # 推送到远端(如果有远端) if git remote get-url origin &>/dev/null; then echo "=== 推送到远端 ===" >> "$OUTPUT_FILE" git push origin main >> "$OUTPUT_FILE" 2>&1 echo "推送完成" >> "$OUTPUT_FILE" else echo "无远端配置,跳过推送" >> "$OUTPUT_FILE" fi echo "" >> "$OUTPUT_FILE" # 检查是否有未提交的更改 if [[ -n $(git status --porcelain) ]]; then echo "发现有未提交的更改,先提交..." >> "$OUTPUT_FILE" git add -A git commit -m "Auto backup before evolver run - $(date)" 2>/dev/null fi # 创建备份分支 BACKUP_BRANCH="backup/evolver-$(date +%Y%m%d-%H%M%S)" echo "创建备份分支: $BACKUP_BRANCH" >> "$OUTPUT_FILE" git branch -D "$BACKUP_BRANCH" 2>/dev/null || true git branch "$BACKUP_BRANCH" 2>/dev/null # 推送备份分支 if git remote get-url origin &>/dev/null; then git push origin "$BACKUP_BRANCH" >> "$OUTPUT_FILE" 2>&1 || echo "备份分支推送失败" >> "$OUTPUT_FILE" fi echo "" >> "$OUTPUT_FILE" echo "=== Git 备份完成 ===" >> "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" # 运行 evolver - 使用 repair-only 策略确保安全 cd "$EVOLVER_DIR" export EVOLVE_STRATEGY="repair-only" echo "=== 运行 Capability Evolver (repair-only 模式) ===" >> "$OUTPUT_FILE" node index.js >> "$OUTPUT_FILE" 2>&1 EXIT_CODE=$? echo "" >> "$OUTPUT_FILE" echo "=== Evolver 运行完成 (exit code: $EXIT_CODE) ===" >> "$OUTPUT_FILE" # 检查变更 cd "$OPENCLAW_DIR" echo "" >> "$OUTPUT_FILE" echo "=== 本次变更 ===" >> "$OUTPUT_FILE" git status --short >> "$OUTPUT_FILE" # 如果有变更,推送 if [[ -n $(git status --porcelain) ]]; then echo "" >> "$OUTPUT_FILE" echo "=== 推送变更到远端 ===" >> "$OUTPUT_FILE" git add -A git commit -m "Evolver auto evolution - $(date)" 2>/dev/null || true git push origin main >> "$OUTPUT_FILE" 2>&1 || echo "推送失败" >> "$OUTPUT_FILE" fi echo "" >> "$OUTPUT_FILE" echo "=== 输出完成 ===" >> "$OUTPUT_FILE"