OpenCode
2 دقيقة للقراءة

OpenCode: سير العمل

نظرة عامة

OpenCode CLI يوفر سير عمل مرن وقوي يناسب مختلف احتياجات التطوير - من التعديلات البسيطة على ملف واحد إلى المشاريع المعقدة متعددة الملفات.


حالات سير العمل

1. الوضع التفاعلي (Interactive Mode)

الأفضل لـ:

  • التعلم والاستكشاف
  • المهام غير الواضحة
  • التكرار السريع
# بدء المحادثة التفاعلية
opencode chat

# داخل المحادثة
أنت: كيف أضيف dark mode لتطبيقي؟
OpenCode: [يشرح الخطوات]

أنت: أضف الكود
OpenCode: [ينشئ الملفات]

أنت: شغل الاختبارات
OpenCode: [ينفذ الاختبارات]

المزايا:

  • 💬 محادثة طبيعية
  • 🔄 تكرار سريع
  • 📚 تعليمي

2. الوضع المباشر (Direct Mode)

الأفضل لـ:

  • المهام الواضحة
  • الأتمتة (automation)
  • scripts
# أمر مباشر
opencode ask "ما هي أفضل طريقة لتخزين tokens في React؟"

# توليد كود مباشرة
opencode generate "React component for user login"

# مراجعة مباشرة
opencode review src/components/UserLogin.tsx

المزايا:

  • ⚡ سريع
  • 🤖 أتمتة سهلة
  • 📝 scripts بسيطة

3. الوضع المستقل (Autonomous Mode)

الأفضل لـ:

  • المهام الكبيرة
  • المشاريع الجديدة
  • إعادة هيكلة شاملة
# وضع مستقل - يعمل حتى يكتمل
opencode agent --autonomous "أنشئ REST API كامل"

# مع timeout
opencode agent --autonomous --timeout 600 "أضف نظام إشعارات"

المزايا:

  • 🚀 لا تدخل بشري
  • 🎯 يكمل المهمة بالكامل
  • ⏰ يوفر الوقت

العيوب:

  • ⚠️ قد يرتكب أخطاء
  • ⚠️ يحتاج مراجعة

4. الوضع الخاضع للإشراف (Supervised Mode)

الأفضل لـ:

  • المهام الحرجة
  • السيطرة الكاملة
  • التعلم
# وضع خاضع للإشراف - يطلب الموافقة في كل خطوة
opencode agent --interactive "إعادة هيكلة هذا الملف"

# يطلب:
# 1. الموافقة على الخطة
# 2. الموافقة على كل ملف
# 3. الموافقة على التغييرات

المزايا:

  • 👁️ سيطرة كاملة
  • 🎓 تعليمي
  • ✅ أقل أخطاء

سير العمل حسب نوع المهمة

سير عمل: إنشاء ميزة جديدة

# 1. التخطيط
opencode plan "أضف نظام إشعارات"

# 2. التوليد
opencode feature "notifications"

# 3. الاختبار
opencode test src/features/notifications

# 4. المراجعة
opencode review src/features/notifications

# 5. التكامل
opencode integrate --feature notifications

سير عمل: إصلاح Bug

# 1. التحليل
opencode debug --file src/api/users.ts --error "TypeError: Cannot read property 'id'"

# 2. الإصلاح
opencode fix --file src/api/users.ts --line 42

# 3. الاختبار
opencode test --related src/api/users.ts

# 4. التحقق
opencode verify --bug "TypeError"

سير عمل: إعادة هيكلة

# 1. التحليل
opencode analyze src/legacy

# 2. الخطة
opencode refactor --plan src/legacy --to typescript

# 3. التنفيذ
opencode refactor src/legacy --to typescript

# 4. الاختبار
opencode test src/legacy

# 5. المقارنة
opencode diff --before src/legacy.old --after src/legacy

سير عمل: مراجعة كود

# 1. المراجعة السريعة
opencode review src/components

# 2. المراجعة التفصيلية
opencode audit --security src/components

# 3. اقتراحات التحسين
opencode suggest --optimize src/components

# 4: تطبيق التحسينات
opencode improve src/components

عمليات متعددة الملفات

إضافة ميزة عبر ملفات متعددة

opencode feature "أضف نظام مصادقة"

ينشئ OpenCode تلقائياً:

src/
├── features/
│   └── auth/
│       ├── components/
│       │   ├── LoginForm.tsx
│       │   ├── RegisterForm.tsx
│       │   └── ForgotPassword.tsx
│       ├── services/
│       │   ├── authService.ts
│       │   └── tokenService.ts
│       ├── hooks/
│       │   ├── useAuth.ts
│       │   └── useToken.ts
│       ├── types/
│       │   └── auth.types.ts
│       └── utils/
│           └── validation.ts

إعادة هيكلة شاملة

# تحويل جميع Class Components إلى Functional Components
opencode refactor src/components \
  --from class-components \
  --to functional-components \
  --recursive

يعالج OpenCode:

  • ✅ جميع الملفات في src/components
  • ✅ التبعيات بين الملفات
  • ✅ تحديث imports
  • ✅ تحديث tests

تحديث المتغيرات الشاملة

# إعادة تسمية متغير مستخدم في عدة ملفات
opencode rename src \
  --from userId \
  --to user_id \
  --global

يبحث ويستبدل في:

  • جميع ملفات .ts
  • جميع ملفات .tsx
  • جميع ملفات .test.ts
  • ملفات الإعدادات

سير العمل المتقدم

1. Pipeline متعدد المراحل

# سكربت bash متعدد المراحل
#!/bin/bash

# المرحلة 1: التحليل
echo "🔍 تحليل المشروع..."
opencode analyze src

# المرحلة 2: التخطيط
echo "📋 التخطيط..."
opencode plan "إضافة ميزة X"

# المرحلة 3: التوليد
echo "💻 التوليد..."
opencode feature "ميزة X"

# المرحلة 4: الاختبار
echo "🧪 الاختبار..."
opencode test src/features/x

# المرحلة 5: المراجعة
echo "🔍 المراجعة..."
opencode review src/features/x

echo "✅ اكتمل!"

2. Conditional Workflow

# سير عمل شرطي
opencode build "ميزة X" && \
  (opencode test src/features/x && \
    (opencode review src/features/x && \
      echo "✅ جاهز للإنتاج!" || \
      echo "⚠️ المراجعة فشلت") || \
    echo "❌ الاختبارات فشلت") || \
  echo "❌ البناء فشل"

3. Parallel Workflow

# تشغيل مهام متوازية
openerate test src/features/auth &
PID1=$!

openerate test src/features/users &
PID2=$!

openerate test src/features/products &
PID3=$!

# انتظر جميع المهام
wait $PID1
wait $PID2
wait $PID3

echo "✅ جميع الاختبارات اكتملت!"

نصائح سير العمل

✅ DO (افعل هذا):

# 1. ابدأ بخطة واضحة
opencode plan "ما أريد فعله"

# 2. استخدم الوضع المناسب
opencode chat         # للمهام غير الواضحة
opencode generate     # للمهام الواضحة
opencode agent        # للمهام الكبيرة

# 3. اختبر دائماً
opencode test src/modified

# 4. راجع قبل الموافقة
opencode review src/modified --interactive

❌ DON'T (لا تفعل هذا):

# 🚫 لا تبدأ بدون فهم
opencode agent "كود معقد" → [يتوقع نتائج فورية] ❌

# 🚫 لا تتخطى الاختبارات
opencode build "ميزة" → [لا يختبر] ❌

# 🚫 لا تستخدم autonomous للمهام الحرجة
opencode agent --autonomous "production code"# 🚫 لا تنسخ كوداً بدون فهمه
opencode explain src/api.ts → [يفهم] ✅
openerate explain src/api.ts → [ينسخ فقط] ❌

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

1. ابدأ صغيراً

# ❌ سيء
opencode agent --autonomous "بناء نظام كامل"

# ✅ جيد
openerate plan "بناء نظام كامل"
opencode feature "الجزء الأول"
opencode test src/part1
opencode feature "الجزء الثاني"

2. كن محدداً

# ❌ غامض
opencode generate "كود"

# ✅ محدد
opencode generate "React component لـ user profile مع props: name, email, avatar"

3. استخدم caching

# تفعيل caching
opencode config set cache.enabled true
opencode config set cache.duration 3600

4. راقب الأداء

# عرض الإحصائيات
opencode stats

# عرض السجل
opencode logs --last 10

الخلاصة

سير العمل الفعال في OpenCode:

  1. افهم المهمة → استخدم chat إذا غير واضحة
  2. خطط → استخدم plan للمهام الكبيرة
  3. نفذ → اختر الوضع المناسب (interactive, autonomous)
  4. اختبر → دائماً اختبر النتائج
  5. راجع → راجع الكود قبل الموافقة
  6. كرر → حسّن بناءً على النتائج

ابدأ اليوم:

npm install -g @ohmyopencode/cli
opencode init
opencode chat