السكريبتات 📜
دليل سكريبتات المساعدة والأتمتة المتوفرة في 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"⚠️ أمان السكريبتات
- لا تشغّل سكريبتات من مصادر غير موثوقة
- راجع السكريبتات قبل التشغيل
- استخدم أذونات ملفات محدودة
- لا تخزن أسراراً في السكريبتات