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:
- افهم المهمة → استخدم chat إذا غير واضحة
- خطط → استخدم plan للمهام الكبيرة
- نفذ → اختر الوضع المناسب (interactive, autonomous)
- اختبر → دائماً اختبر النتائج
- راجع → راجع الكود قبل الموافقة
- كرر → حسّن بناءً على النتائج
ابدأ اليوم:
npm install -g @ohmyopencode/cli
opencode init
opencode chat