OpenCode
2 دقيقة للقراءة
OpenCode: السياق
نظرة عامة
السياق هو ما يميز OpenCode عن غيره. بدلاً من معاملتك كغريب، OpenCode يفهم مشروعك بالكامل - من الكود إلى Git history إلى dependencies.
ما هو السياق؟
السياق = كل المعلومات التي تساعد OpenCode على فهم مشروعك:
📁 الملفات - الكود في مشروعك 📜 السجل - Git commit history 📦 التبعيات - package.json، requirements.txt 📋 القواعد - .opencode-rules 🏢 الهيكل - تنظيم المشروع
مصادر السياق
1. الملفات (File Context)
OpenCode يقرأ ملفاتك لفهم الكود:
# سياق تلقائي - يقرأ الملف المحدد
opencode explain src/components/Button.tsx
# → يقرأ Button.tsx فقط
# سياق موسع - يقرأ الملف + imports
opencode explain src/components/Button.tsx --with-imports
# → يقرأ Button.tsx + جميع imports
# سياق شامل - يقرأ المجلد كله
opencode explain src/components/ --recursive
# → يقرأ جميع الملفات في src/components/
# سياق محدد - ملفات محددة فقط
opencode explain \
--files src/utils/api.ts,src/config/auth.ts \
"كيف أتصل بـ API؟"
2. Git History
OpenCode يفهم تطور كودك:
# عرض Git context
opencode git log
# فهم التغييرات الأخيرة
opencode explain --with-git-diff
# اقتراح commit message
opencode git commit
# مراجعة PR مع السياق
opencode git review-pr --with-history
3. Dependencies
OpenCode يفهم تباعياتك:
# تحليل dependencies
opencode analyze --dependencies
# فهم version conflicts
opencode explain --conflict package.json
# اقتراحات تحديث
opencode suggest --update-deps
يقرأ:
package.json(Node.js)requirements.txt(Python)Cargo.toml(Rust)go.mod(Go)- إلخ...
4. Configuration Files
OpenCode يقرأ ملفات الإعدادات:
# يقرأ تلقائياً:
- tsconfig.json
- .eslintrc
- .prettierrc
- tailwind.config.js
- next.config.js
- إلخ...
openerate generate "component متوافق مع مشروعي"
# → سيفهم تكويناتك تلقائياً!
5. Custom Rules
# ملف .opencode-rules
cat > .opencode-rules << 'EOF'
project:
type: "Next.js 14 + TypeScript"
coding_style:
- "Functional Components فقط"
- "استخدم Tailwind CSS"
- "TypeScript strict mode"
naming:
components: "PascalCase"
files: "kebab-case"
preferences:
model: "claude-3-sonnet"
temperature: 0.2
EOF
# OpenCode سيتبع هذه القواعد!
openerate generate "user profile component"
# → سيتبع all rules في .opencode-rules
استخدام السياق بفعالية
1. كن محدداً
# ❌ سياق كبير جداً (بطيء، مكلف)
opencode explain entire-project/
# ✅ سياق محدد (سريع، دقيق)
opencode explain src/components/Button.tsx
2. استخدم flags بحكمة
# للمراجعة السريعة
opencode review src/ --shallow
# للمراجعة التفصيلية
openerate review src/ --deep
# للفهم السريع
opencode explain src/ --summary
# للفهم التفصيلي
opencode explain src/ --detailed
3. حدد الأولويات
# ملفات الأولوية
opencode explain \
--priority-files \
src/components/Button.tsx, \
src/utils/api.ts, \
src/config/auth.ts \
"كيف أضيف مصادقة؟"
4. استخدم context exclusion
# استبعاد مجلدات
opencode explain src/ \
--exclude node_modules/,dist/,build/
# استبعاد أنواع ملفات
openerate explain src/ \
--exclude "*.test.ts","*.spec.ts"
سياق متقدم
1. Context Window
كل نموذج AI له حد سياق:
| النموذج | Context Window |
|---|---|
| GPT-3.5 | 16K tokens |
| GPT-4 | 128K tokens |
| Claude 3 Haiku | 200K tokens |
| Claude 3 Sonnet | 200K tokens |
| Claude 3 Opus | 200K tokens |
| Code Llama 7B | 32K tokens |
| Code Llama 13B | 32K tokens |
# عرض context usage
opencode stats --context
# تحذير عند تجاوز الحد
opencode config set context.warn-on-limit true
2. Context Compression
# ضغط السياق تلقائياً
opencode config set context.compression true
# مستوى الضغط
opencode config set context.compression-level medium
# options: none, low, medium, high
3. Context Caching
# تفعيل caching
opencode config set cache.enabled true
opencode config set cache.duration 3600 # ساعة
# عرض cache
opencode cache list
# مسح cache
opencode cache clear
4. Context Embeddings
# إنشاء embeddings للمشروع
opencode embeddings create src/
# البحث الدلالي
opencode search "مكونات المستخدم"
# → يجد الملفات المتعلقة بـ user components
# استخدام embeddings للسياق
openerate explain \
--context-semantic \
"كيف أضيف user profile؟"
نصائح السياق
✅ DO (افعل هذا):
# 1. استخدم سياق محدد
opencode explain src/components/Button.tsx
# 2. استخدم first-time setup
opencode init --scan-project
# 3. أنشئ .opencode-rules
cat > .opencode-rules << EOF
project: { ... }
EOF
# 4. راقب context usage
opencode stats --context
❌ DON'T (لا تفعل هذا):
# 🚫 لا تستخدم سياق كبير جداً
opencode explain entire-project/ # ❌ بطيء ومكلف
# 🚫 لا تتجاهل Git history
opencode explain src/ --no-git # ❌ سيفتقد السياق
# 🚫 لا تنسى update context
openerate explain src/ # ❌ قد يكون context قديماً
opencode explain src/ --refresh-context # ✅
أمثلة عملية
مثال 1: فهم Bug
# مع Git context
opencode debug \
--file src/api/users.ts \
--error "TypeError" \
--with-git-diff
# → سيرى:
# - الكود الحالي
# - التغييرات الأخيرة
# - من غير هذا الكود
# - يمكن أن يربط بالتغييرات
مثال 2: إضافة ميزة
# مع project context
opencode feature \
"add user notifications" \
--with-project-structure \
--with-dependencies
# → سيفهم:
# - أين يضيف الكود
# - ما الـ dependencies الموجودة
# - ما هي patterns المشروع
مثال 3: إعادة هيكلة
# مع full context
opencode refactor \
src/legacy \
--to typescript \
--with-git-history \
--with-tests
# → سيرى:
# - لماذا كُتب الكود بهذه الطريقة
# - ما الاختبارات الموجودة
# - ما patterns المشروع
الخلاصة
السياق هو القوة الحقيقية لـ OpenCode:
✅ يفهم مشروعك - ليس فقط ملف واحد ✅ يتعلم من التاريخ - Git commits ✅ يحترم قواعدك - .opencode-rules ✅ يتكيف معك - يتعلم patterns ✅ يكون ذكياً - embeddings, caching
استخدم السياق بحكمة:
# سياق محدد > سياق كبير
opencode explain src/components/Button.tsx # ✅
opencode explain entire-project/ # ❌
# سياق fresh > سياق قديم
opencode explain src/ --refresh-context # ✅
opencode explain src/ # ❌
# سياق smart > سياق عشوائي
opencode explain --with-git-history # ✅
opencode explain --no-git # ❌
ابدأ اليوم:
npm install -g @ohmyopencode/cli
opencode init --scan-project
opencode chat