السكريبتات 📜

دليل سكريبتات المساعدة والأتمتة المتوفرة في OpenClaw.

📋 موقع السكريبتات

  • ./scripts/ — سكريبتات المستودع
  • package.json — npm scripts
  • ~/.openclaw/scripts/ — سكريبتات مخصصة

سكريبتات npm

سكريبتات التطوير

# تثبيت التبعيات
pnpm install

# بناء المشروع
pnpm build

# تشغيل Gateway في وضع التطوير
pnpm gateway:watch

# تنظيف build artifacts
pnpm clean

سكريبتات الاختبار

# تشغيل الاختبارات
pnpm test

# مع التغطية
pnpm test:coverage

# وضع المراقبة
pnpm test:watch

# اختبارات E2E
pnpm test:e2e

سكريبتات الجودة

# فحص Linting
pnpm lint

# إصلاح تلقائي
pnpm lint:fix

# فحص الأنواع
pnpm typecheck

# تنسيق الكود
pnpm format

سكريبتات المستودع

إعداد البيئة

# إعداد بيئة تطوير جديدة
./scripts/setup-dev.sh

# تكوين pre-commit hooks
./scripts/setup-hooks.sh

# تهيئة workspace
./scripts/init-workspace.sh

النشر والإصدار

# بناء للإنتاج
./scripts/build-prod.sh

# إصدار جديد
./scripts/release.sh

# نشر إلى npm
./scripts/publish.sh

الصيانة

# تحديث التبعيات
./scripts/update-deps.sh

# تنظيف شامل
./scripts/clean-all.sh

# فحص الأمان
./scripts/security-audit.sh

سكريبتات macOS

بناء التطبيق

# بناء تطبيق macOS
./scripts/build-mac.sh

# إعادة تشغيل التطبيق
./scripts/restart-mac.sh

# توقيع التطبيق
./scripts/sign-mac.sh

سكريبتات مخصصة

إنشاء سكريبت مخصص

# إنشاء مجلد السكريبتات
mkdir -p ~/.openclaw/scripts

# إنشاء سكريبت جديد
cat > ~/.openclaw/scripts/backup.sh << 'EOF'
#!/bin/bash
# نسخ احتياطي لـ workspace

BACKUP_DIR=~/openclaw-backups
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/workspace_$TIMESTAMP.tar.gz \
  ~/.openclaw/workspace

echo "Backup created: $BACKUP_DIR/workspace_$TIMESTAMP.tar.gz"
EOF

# جعل السكريبت قابل للتنفيذ
chmod +x ~/.openclaw/scripts/backup.sh

# تشغيل السكريبت
~/.openclaw/scripts/backup.sh

سكريبت Node.js

// ~/.openclaw/scripts/clean-sessions.js
import fs from 'fs/promises';
import path from 'path';

async function cleanOldSessions() {
  const sessionsDir = path.join(
    process.env.HOME,
    '.openclaw/agents/main/sessions'
  );

  const sessions = await fs.readdir(sessionsDir);
  const now = Date.now();
  const thirtyDaysAgo = now - (30 * 24 * 60 * 60 * 1000);

  for (const session of sessions) {
    const sessionPath = path.join(sessionsDir, session);
    const stat = await fs.stat(sessionPath);
    
    if (stat.mtimeMs < thirtyDaysAgo) {
      await fs.rm(sessionPath, { recursive: true });
      console.log(`Deleted old session: ${session}`);
    }
  }
}

cleanOldSessions().catch(console.error);

💡 تشغيل سكريبت Node.js

node ~/.openclaw/scripts/clean-sessions.js

أتمتة السكريبتات

استخدام Cron (Linux/macOS)

# تحرير crontab
crontab -e

# إضافة مهمة (كل يوم الساعة 2 صباحاً)
0 2 * * * ~/.openclaw/scripts/backup.sh

# كل ساعة
0 * * * * node ~/.openclaw/scripts/clean-sessions.js

# كل يوم الاثنين
0 0 * * 1 ~/.openclaw/scripts/update-deps.sh

استخدام OpenClaw Cron

# إضافة cron job
openclaw cron add "backup-daily" "0 2 * * *" \
  "~/.openclaw/scripts/backup.sh"

# قائمة المهام
openclaw cron list

# حذف مهمة
openclaw cron remove backup-daily

سكريبتات مفيدة

مراقبة السجلات

#!/bin/bash
# ~/.openclaw/scripts/monitor-logs.sh

# متابعة السجلات وإرسال تنبيهات
tail -f /tmp/openclaw/gateway.log | while read line; do
  if echo "$line" | grep -q "ERROR"; then
    # إرسال تنبيه
    openclaw message send \
      --target "@me" \
      --message "⚠️ خطأ في Gateway: $line"
  fi
done

فحص صحة النظام

#!/bin/bash
# ~/.openclaw/scripts/health-check.sh

# فحص صحة Gateway
if ! openclaw health > /dev/null 2>&1; then
  echo "Gateway is down! Restarting..."
  openclaw gateway restart
  
  # إرسال تنبيه
  openclaw message send \
    --target "@me" \
    --message "🔄 Gateway تم إعادة تشغيله"
fi

تحديث تلقائي

#!/bin/bash
# ~/.openclaw/scripts/auto-update.sh

cd ~/openclaw

# جلب آخر التغييرات
git fetch origin

# التحقق من وجود تحديثات
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/main)

if [ "$LOCAL" != "$REMOTE" ]; then
  echo "Updates available. Updating..."
  
  # نسخ احتياطي
  ./scripts/backup.sh
  
  # تحديث
  git pull origin main
  pnpm install
  pnpm build
  
  # إعادة تشغيل Gateway
  openclaw gateway restart
  
  echo "Update complete!"
fi

أفضل الممارسات

✅ افعل

  • استخدم shebang (#!/bin/bash)
  • اجعل السكريبتات قابلة للتنفيذ (chmod +x)
  • أضف تعليقات توضيحية
  • تعامل مع الأخطاء (set -e)
  • سجّل المخرجات
  • اختبر السكريبتات قبل الأتمتة

❌ لا تفعل

  • لا تضع كلمات مرور في السكريبتات
  • لا تشغّل سكريبتات غير موثوقة
  • لا تحذف بيانات بدون نسخ احتياطي
  • لا تستخدم rm -rf / 🚫

معالجة الأخطاء

#!/bin/bash
# سكريبت مع معالجة أخطاء جيدة

set -euo pipefail  # خروج عند الخطأ

# دالة معالجة الأخطاء
error_handler() {
  echo "Error on line $1"
  # تنظيف
  # إرسال تنبيه
  exit 1
}

trap 'error_handler $LINENO' ERR

# السكريبت الخاص بك هنا
echo "Running script..."

# التحقق من الشروط
if [ ! -d ~/.openclaw ]; then
  echo "OpenClaw not installed"
  exit 1
fi

echo "Script completed successfully"

⚠️ أمان السكريبتات

  • لا تشغّل سكريبتات من مصادر غير موثوقة
  • راجع السكريبتات قبل التشغيل
  • استخدم أذونات ملفات محدودة
  • لا تخزن أسراراً في السكريبتات

موارد ذات صلة