Claude Code وOpenCode: دورة مكثفة في البرمجة الوكيلة
15 مفهوماً · 80% من الاستخدام الحقيقي
تخيّل أنك تستطيع أن تقول لحاسوبك: "انظر إلى مسودة مقالتي، أصلح الأخطاء النحوية، أعد ترتيب الفقرات حتى تتدفق الحجة بشكل أفضل، واحفظ النسخة الجديدة." وأنه ينفّذ ذلك فعلاً. لا أن يقترح عليك تغييرات تجريها بنفسك، بل أن يفتح ملفاتك، ويُجري التعديلات، ويحفظ النتيجة وأنت تراقب.
هذا ما تفعله Claude Code وOpenCode. هما أداتا ذكاء اصطناعي تعملان مباشرة على حاسوبك. تصف ما تريد، فتنجزان العمل، ثم تراجع أنت النتيجة.
تعلّمك هذه الدورة المكثفة 15 مفهوماً تغطي نحو 80% مما ستستخدمه يومياً. في نهايتها ستعرف ما تستطيع كل أداة فعله، ومتى تستخدم أي ميزة، وكيف تتجنب الأخطاء الشائعة.
فكرة واحدة تجعل كل شيء أسهل فهماً: تكاد كل "التقنيات المتقدمة" في هاتين الأداتين ترجع إلى شيء واحد: إعطاء النموذج المعلومات الصحيحة في الوقت الصحيح، وإبقاء المعلومات غير المهمة خارجه. كل قسم في هذه الدورة يعود إلى هذه الفكرة.
المتطلب السابق: صياغة تعليمات الذكاء الاصطناعي في 2026. علّمتك تلك الدورة كيف تتحدث إلى الذكاء الاصطناعي: إعطاء السياق، والسؤال بوضوح، ومراجعة عمل الذكاء الاصطناعي. وتعلّمك هذه الدورة ما يحدث عندما يستطيع الذكاء الاصطناعي لمس ملفاتك فعلاً وتشغيل أوامر على حاسوبك.
أداتان، ومجموعة مهارات واحدة
تغطي هذه الدورة أداتين جنباً إلى جنب: Claude Code (من Anthropic) وOpenCode (مفتوحة المصدر، تعمل مع أي نموذج ذكاء اصطناعي). نعلّم الاثنتين لسبب عملي: إذا نجحت تقنية في الأداتين، فهي مهارة حقيقية، لا حيلة تخص أداة بعينها. المهارات التي تتعلمها تنتقل بينهما.
| Claude Code | OpenCode | |
|---|---|---|
| من صنعها | Anthropic | مجتمع مفتوح المصدر |
| نماذج الذكاء الاصطناعي | Claude فقط | Claude، GPT، Gemini، DeepSeek، نماذج محلية |
| الأفضل في | أفضل أداء ل Claude من البداية | المرونة، وضبط التكلفة، والنماذج المجانية |
| السعر | اشتراك أو API | نماذج مجانية متاحة، أو استخدم مفتاح API الخاص بك |
اختر ما يناسب وضعك. كل ما في هذه الدورة يعمل في الأداتين.
محدّث حتى مايو 2026. تتحدّث الأداتان كثيراً. قبل أن تبدأ أي جلسة، شغّل
claude updateأوopencode upgradeلتتأكد من أنك تستخدم أحدث إصدار. وإذا لم تكن أيّ من الأداتين مثبتة لديك بعد، فالتثبيت مشروح في القسم 1 أدناه.
في هذه الصفحة، الأقسام التي تختلف بين Claude Code وOpenCode تحمل مبدّلاً. اختر أداة واحدة، وكل مبدّل في الصفحة يتبع اختيارك.
هذه دورة مكثفة: 80% من الاستخدام الحقيقي في قراءة واحدة. للمعالجة الكاملة لكل موضوع أدناه، انظر الفصل 14: العمل مع الوكلاء العامين ووكلاء البرمجة والفصل 17: Claude Code للفرق وCI/CD والإعدادات المتقدمة.
ماذا تغطي هذه الدورة
| الجزء | الموضوع | ماذا تتعلم |
|---|---|---|
| 1 | الأساسيات | ما هاتان الأداتان، ونمط التخطيط، والأذونات، واختيار نموذجك |
| 2 | إدارة السياق | لماذا تسوء المحادثات مع مرور الوقت وكيف تصلح ذلك |
| 3 | ملف القواعد | إعداد تعليمات دائمة لمشروعك |
| 4 | تخصيص أداتك | الأوامر والمهارات، وhooks/الإضافات، والوكلاء الفرعيون |
| 5 | الاتصال بالعالم | ربط الذكاء الاصطناعي بالخدمات الخارجية (MCP) |
| 6 | مثال عملي كامل | مهمة كاملة واحدة، من البداية إلى النهاية، في الأداتين |
| 7 | أين تشغّلها | الطرفية، وبيئة التطوير، والويب، وسطح المكتب |
| 8 | الأداتان معاً | استخدام الأداتين على المشروع نفسه |
تتعلّم بالممارسة؟ اقفز إلى الجزء 6 للمثال العملي الكامل أولاً، ثم عُد.
📚 وسيلة تعليمية
شاهد العرض التقديمي الكامل: البرمجة الوكيلة، دورة مكثفة
الجزء 1: الأساسيات
هذه المفاهيم الأربعة هي الأساس الذي يُبنى عليه كل ما عداه.
1. ما هذه الأدوات فعلاً
يظن معظم الناس أن هذه روبوتات محادثة تعرف الكود. وهي ليست كذلك. روبوت المحادثة يجيب عن أسئلة. أما Claude Code وOpenCode فتتخذان أفعالاً. تقرأ ملفاتك، وتعدّلها، وتشغّل أوامر على حاسوبك، وتستمر حتى تكتمل المهمة. تصف ما تريد، فتنجزان العمل، ثم تراجع أنت النتيجة.
أكبر تحوّل ذهني هو: توقّف عن طرح الأسئلة، وابدأ في إعطاء التعليمات.
| طرح سؤال (ضعيف) | إعطاء تعليمة (قوي) |
|---|---|
| "كيف أنظّم ملاحظاتي؟" | "اقرأ كل ملف في مجلد notes/. أنشئ ملف ملخص واحداً باسم weekly-summary.md يسرد كل بند عمل، مجموعاً حسب الشخص. تجاوز أي شيء موسوم ب [private]." |
التعليمة الأولى تمنحك شرحاً عليك أن تتصرف بناءً عليه بنفسك. أما الثانية فتُنجز العمل نيابةً عنك. هذا هو الفرق. (هذه هي الفكرة نفسها في المفهوم 1 من صياغة تعليمات الذكاء الاصطناعي، لكن مع مخاطر أعلى لأن الذكاء الاصطناعي يغيّر ملفاتك فعلاً.)
لم تثبّت أيّاً من الأداتين بعد؟ ثبّت إحداهما الآن قبل أن تتابع القراءة. كل ما يلي يفترض أنك تستطيع فتح طرفية وتجربة الأشياء.
# macOS / Linux / WSL — recommended (auto-updates)
curl -fsSL https://claude.ai/install.sh | bash
# Windows PowerShell
irm https://claude.ai/install.ps1 | iex
# macOS Homebrew (no auto-update — run `brew upgrade claude-code` periodically)
brew install --cask claude-code
# npm fallback
npm install -g @anthropic-ai/claude-code
المرجع الكامل: code.claude.com/docs.
# All platforms — recommended
curl -fsSL https://opencode.ai/install | bash
# macOS Homebrew
brew install opencode
# npm / bun / pnpm / yarn
npm install -g opencode-ai
المرجع الكامل: opencode.ai/docs.
بمجرد التثبيت، افتح طرفية في أي مجلد تريد العمل فيه واكتب claude (أو opencode). يُدخلك ذلك إلى جلستك الأولى.
تحقّق سريع: أيّ نموذج تستخدم؟ قبل أن تتعمّق، تأكّد من النموذج الذي تتحدث إليه فعلاً، حتى لا تستهلك بهدوء نموذجاً باهظاً في عمل بسيط، أو تتساءل لماذا يكافح نموذج رخيص.
اكتب /status لرؤية نموذجك الحالي، مع خطتك ومجلد العمل واستهلاك السياق. ولرؤية القائمة الكاملة والتبديل، اكتب /model واختر من القائمة، ويسري التغيير فوراً بلا إعادة تشغيل.
اكتب /models لرؤية كل نموذج عبر المزوّدين المتصلين والتبديل بينها؛ ويظهر النموذج النشط أيضاً في واجهة TUI. (من سطر الأوامر، يطبع opencode models أسماء provider/model المتاحة، وهو مفيد عند ضبط نموذج افتراضي في إعداداتك.)
عند تشغيل /models، تكون بضعة من الخيارات المجانية نماذج خفيّة، صادرة باسم رمزي مع إخفاء صانعها (مثل Big Pickle من OpenCode Zen وقت كتابة هذا النص). تستحق المعرفة بها، مع تحفّظين:
- هي مؤقتة وغير مُعلنة. النموذج الخفي هو مزوّد يختبر شيئاً بهدوء قبل الكشف عنه. قد يغيّر سلوكه، أو يُعاد تسميته، أو يختفي دون إشعار، فلا تبنِ عليه عادات أو افتراضات أو إعدادات دورة/مشروع.
- "مجاني" قد يعني أنك أنت المنتج. خلال نافذة الاختبار المجاني للنموذج، قد تُستخدم تعليماتك وكودك لتدريبه وتحسينه. لا توجّه نموذجاً خفياً أبداً نحو أي شيء سرّي: عمل عملاء، أو مستودعات خاصة، أو أي شيء تحت اتفاقية سرّية.
هي جيدة للتجارب العابرة وتجربة سير العمل. ولأي شيء تعتمد عليه، فضّل نموذجاً مستقراً مدفوعاً بشكل خاص (انظر تنبيه DeepSeek V4 أدناه) حيث يكون المزوّد والسعر وسياسة البيانات كلها معروفة ولن تتغير تحتك.
من هنا فصاعداً، كل مفهوم في هذه الصفحة شيء يمكنك تجربته في تلك الجلسة، لا مجرد القراءة عنه. أبقِ طرفية مفتوحة بجانب هذه الصفحة وشغّل كل فكرة فور وصولك إليها.
محدّث حتى 2026. تتحدّث الأداتان كثيراً. قبل أن تبدأ أي جلسة، شغّل
claude updateأوopencode upgradeلتتأكد من أنك تستخدم أحدث إصدار.
لأن OpenCode محايد تجاه النماذج، يمكنك توجيهه نحو ما يمنح أفضل نسبة تكلفة إلى جودة. وبين النماذج المستضافة، أقوى قيمة حتى منتصف 2026 هي DeepSeek V4، التي تأتي بمستويين:
deepseek-v4-flash: الخيار الاقتصادي الافتراضي. نحو 0.14 دولار لكل مليون رمز إدخال (تنخفض إلى 0.0028 دولار عند إصابة الذاكرة المؤقتة) و0.28 دولار لكل مليون رمز إخراج، مع نافذة سياق بمليون رمز ودعم لاستدعاء الأدوات. اعتمد هذا المستوى للطلاب والعمل عالي الحجم.deepseek-v4-pro: المستوى الأعلى عندما تحتاج إلى استدلال أقوى. أكثر قدرة، وما زال جزءاً يسيراً من أسعار النماذج المتقدمة.
إعداده (≈ دقيقة واحدة): شغّل opencode ← اكتب /connect ← أدخل deepseek ← الصق مفتاح API (أنشئ المفتاح هناك، وأضف رصيداً مسبقاً صغيراً، ف DeepSeek بنظام الدفع حسب الاستخدام، ولن يعمل المفتاح حتى يكون في الحساب رصيد) ← اختر النموذج. يختار دليل DeepSeek نفسه V4-Pro افتراضياً، فاختر deepseek-v4-flash بدلاً منه إن أردت الخيار الأرخص.
تتغير الأسعار والمستويات كثيراً، فراجع الصفحة الحيّة قبل أن تضع ميزانيتك.
📘 دليل تكامل DeepSeek مع OpenCode · 💰 نماذج DeepSeek وأسعارها
يقترن هذا طبيعياً مع فصل التخطيط/التنفيذ: خطّط بنموذج متقدم، ثم دع جلسة OpenCode رخيصة مدعومة ب DeepSeek تتولى التنفيذ.
يتحدث Claude Code إلى نماذج Anthropic افتراضياً، لكن يمكنك توجيهه نحو DeepSeek V4 بدلاً منها. طريقان:
- الطريق الأصلي البسيط. يكشف DeepSeek نقطة نهاية متوافقة مع Anthropic، فيمكنك تشغيل Claude Code مباشرةً عليها بضبط
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropicومفتاح DeepSeek الخاص بك كرمز مصادقة قبل تشغيلclaude. بلا أدوات إضافية. - طريق الموجّه عبر claude-code-router. وكيل مجتمعي يقف أمام Claude Code ويتيح لك توجيه الطلبات إلى DeepSeek (ومزوّدين آخرين)، بما في ذلك نماذج مختلفة لكل مهمة، مثل نموذج متقدم للتخطيط و
deepseek-v4-flashللتنفيذ. تشغّله بccr codeبدلاً منclaude. انظر المستودع للإعداد والضبط.
تحفّظان صادقان: كلاهما إعداد طرف ثالث / غير رسمي، فقد ينكسر عند تحديث Claude Code، وتخسر "أفضل أداء ل Claude من البداية" الذي ضُبط له Claude Code. إن كان هدفك الأساسي برمجة رخيصة مدعومة ب DeepSeek، ف OpenCode هو المسار الأسلس (فهو محايد تجاه النماذج بالتصميم)، وهذان الطريقان مخصصان لمن يريد تحديداً واجهة Claude Code مع أسعار DeepSeek.
2. نمط التخطيط (الميزة الأقل استخداماً)
عادةً، عندما تعطي هذه الأدوات تعليمة، تبدأ العمل فوراً: تقرأ الملفات، وتعدّل الكود، وتشغّل الأوامر. يغيّر نمط التخطيط ذلك. يضع النموذج في حالة "انظر ولا تلمس". يستطيع النموذج قراءة ملفاتك والتفكير في المهمة، لكنه لا يستطيع تغيير أي شيء. وبدلاً من تنفيذ العمل، يكتب خطة خطوة بخطوة لما سيفعله. تقرأ أنت الخطة، وتقترح تعديلات، وعندها فقط تتركه يبدأ العمل الفعلي.
تدعم الأداتان هذا. وطريقة تشغيله تختلف قليلاً، لكن الفكرة واحدة.
اضغط Shift+Tab للتنقّل بين أنماط الأذونات. الضغطة الأولى تضعك في القبول التلقائي؛ والثانية تضعك في نمط التخطيط. في نمط التخطيط، يستطيع النموذج القراءة لكن لا يستطيع الكتابة: لا تعديلات على الملفات، ولا أوامر طرفية.
اضغط Tab للتبديل بين نمط Build (يستطيع الذكاء الاصطناعي فعل كل شيء) ونمط Plan (يستطيع القراءة فقط، لا تغيير أي شيء). في نمط Plan، إن طلبت منه كتابة شيء أو تعديله، سيخبرك أنه لا يستطيع وينتظر منك العودة إلى Build. الفكرة نفسها كما في Claude Code: انظر أولاً، ثم تصرّف.
كيف يبدو ذلك عملياً. تدخل نمط التخطيط، ثم تكتب تعليمة عادية:
اكتب قصيدة عن أمي واحفظها باسم
for-mom.md.
بدلاً من كتابتها، يعود الذكاء الاصطناعي بخطة أولاً:
الخطة
- كتابة قصيدة من 5 مقاطع بأسلوب السوناتة الكلاسيكية.
- استخدام لغة رسمية قديمة الطراز.
- البناء نحو خاتمة كبيرة ودرامية.
- الحفظ باسم
for-mom.md.لم يُكتب شيء بعد. وافق للمتابعة، أو أخبرني بما أعدّله.
هذا ليس ما دار في ذهنك، فأنت أردت شيئاً قصيراً ودافئاً وبسيطاً، لا سوناتة رسمية. فتعترض:
اجعلها قصيرة ودافئة، أربعة أسطر، بلغة يومية، بلا فخامة. شيء يمكنني كتابته في بطاقة عيد ميلاد.
يحدّث الذكاء الاصطناعي الخطة. الآن توافق، فيكتب القصيدة التي قصدتها فعلاً، بدلاً من أن يسلّمك سوناتة رسمية عليك أن تبرّر تخلّصك منها.
لماذا تتكبّد عناء خطة؟ لسببين:
- تلتقط الأخطاء قبل وقوعها. هذا بالضبط ما حدث أعلاه: الافتراض الخاطئ طفا في الخطة، لا في مسودة نهائية كان عليك أن تجادل للخروج منها. على قصيدة من أربعة أسطر هذا توفير بسيط؛ أما حين يكون الذكاء الاصطناعي على وشك تعديل 10 ملفات، فهو الفرق بين تصحيح سريع وعملية تنظيف طويلة.
- يُنتج الذكاء الاصطناعي عملاً أفضل عندما يخطّط أولاً. كتابة خطة تجبر الذكاء الاصطناعي على التفكير في المهمة قبل أن يبدأ. ومن دون خطة، يحاول أن يفكّر ويكتب في الوقت نفسه، فتكون النتيجة أسوأ عادةً.
قاعدة عامة: إذا كانت المهمة ستستغرق أكثر من 10 دقائق، فاستخدم نمط التخطيط أولاً. وللمهام الأكبر، اطلب من الذكاء الاصطناعي حفظ الخطة في ملف (مثل docs/plans/my-plan.md) لتعود إليها لاحقاً أو تشاركها مع جلسة جديدة.
فكّر فيها كأنك تكتب مخططاً قبل المقالة. لن تبدأ كتابة ورقة من 10 صفحات دون معرفة بنيتها. الفكرة نفسها هنا: خطّط أولاً، ثم ابنِ.
3. الانضباط في الأذونات
في كل مرة تريد هذه الأدوات فعل شيء (تعديل ملف، تشغيل أمر)، تطلب إذنك أولاً. يمكنك تخطّي ذلك وتركها تفعل كل شيء دون سؤال، لكن لا تفعل ذلك وأنت في البداية. تريد أن ترى ما يفعله الذكاء الاصطناعي قبل أن يفعله.
بعد بضع جلسات، ستلاحظ أن بعض الأفعال آمنة دائماً (مثل قراءة الملفات أو تشغيل الاختبارات). يمكنك أن تطلب من الأداة التوقف عن السؤال عن تلك الأفعال تحديداً والموافقة عليها تلقائياً. وإليك كيف:
لست بحاجة إلى فهم كل سطر. الشرح بعد كل كتلة كود يخبرك بما تفعله. وكلما استخدمت الأداة، ستبدأ هذه الإعدادات في الوضوح طبيعياً.
.claude/settings.json:
{
"permissions": {
"allow": [
"Read",
"Edit",
"Write",
"Bash(npm test)",
"Bash(npm run lint)",
"Bash(npm run build)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)"
],
"deny": ["Bash(rm -rf *)", "Bash(npm publish *)", "Bash(git push *)"]
}
}
opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"read": "allow",
"edit": "allow",
"bash": {
"*": "ask",
"npm test": "allow",
"npm run lint": "allow",
"npm run build": "allow",
"git status*": "allow",
"git diff*": "allow",
"git log*": "allow",
"rm -rf*": "deny",
"npm publish*": "deny",
"git push*": "deny"
}
}
}
يمنحك OpenCode تحكّماً أكبر في الأذونات. يمكنك ضبط قواعد لكل نوع من الأفعال على حدة (القراءة، التعديل، تشغيل الأوامر). وفيه أيضاً ميزة أمان مدمجة: إن حاول الذكاء الاصطناعي الفعل نفسه ثلاث مرات متتالية بلا تقدّم، يتوقف تلقائياً.
نصيحة: اضبط الإشعارات. تستطيع هذه الأدوات العمل على مهام أطول بينما تفعل أنت أشياء أخرى. والحيلة التي تجعل هذا مفيداً هي تلقّي إشعار عندما ينتهي الذكاء الاصطناعي أو يحتاج إلى مدخلاتك. بذلك تبدأ مهمة، وتنتقل إلى عمل آخر، وتعود عندما تكون مطلوباً.
- Claude Code: أدوات مجتمعية مثل
cc-notifyيمكنها إرسال إشعارات سطح المكتب إليك. - OpenCode: يرسل تطبيق سطح المكتب الإشعارات تلقائياً. أما لنسخة الطرفية، فيمكنك إضافة إضافة تُشعرك.
4. طابِق النموذج مع المهمة
تتيح لك الأداتان اختيار أيّ نموذج ذكاء اصطناعي يؤدي العمل، والتبديل يتطلب أمراً واحداً. لا يلمس معظم المبتدئين هذا الإعداد أبداً، وهذا خطأ في الاتجاهين: فإمّا يستهلكون نموذجاً باهظاً في مهام تافهة، أو يصارعون نموذجاً ضعيفاً في مشكلة صعبة ويلومون أنفسهم على النتائج السيئة.
خلف الاختيار مقايضة بسيطة. أقدر النماذج هي أفضلها تفكيراً، فهي تخطّط، وتستدل في الكود الصعب، وتتعامل مع الغموض، لكنها تكلّف الأكثر وتستنفد حدودك بأسرع وتيرة. أما النماذج الأرخص (والمجانية) فجيدة تماماً في اتّباع خطة واضحة: تعديل الملفات، وتشغيل الاختبارات، وإعادة التنسيق، والتغييرات المتكررة. والمهارة هي إرسال كل نوع من العمل إلى النموذج المناسب له.
| العمل | استخدم |
|---|---|
| التخطيط، والبنية، و"اكتشف كيف تفعل هذا"، وتنقيح شيء محيّر | أقدر نموذج لديك |
| اتّباع خطة وافقت عليها مسبقاً: تعديلات روتينية، وتنسيق، وتشغيل اختبارات، وكود تكراري | نموذج أرخص أو مجاني |
| سؤال سريع أو إصلاح من سطر واحد | ما هو محمّل بالفعل، لا تبالغ في التفكير |
تعلّمت أصلاً كيف ترى نموذجك وتبدّله في المفهوم 1. اختياره عن قصد هو العادة:
اكتب /model للتبديل بين نموذج Claude أقدر (للتفكير الصعب) ونموذج أسرع وأرخص (للعمل الروتيني)؛ ويسري التغيير فوراً بلا إعادة تشغيل. إعداد شائع هو ترك النموذج القوي يتولى نمط التخطيط ونموذج أسرع يتولى التنفيذ، حتى يحدث التفكير الباهظ مرة واحدة، مقدّماً.
لأن OpenCode محايد تجاه النماذج، فاختيارك أوسع: اكتب /models للتبديل عبر كل مزوّد وصلته، نموذج متقدم للتخطيط، ونموذج مستضاف رخيص مثل deepseek-v4-flash (انظر تنبيه DeepSeek V4 في المفهوم 1) أو حتى نموذج مجاني/محلي للتنفيذ. يمكنك أيضاً ضبط نموذج افتراضي في opencode.json، وإعطاء الوكلاء الفرعيين نموذجهم الأرخص الخاص.
يقترن هذا مباشرة بنمط التخطيط (المفهوم 2). الجزء الباهظ من أي مهمة هو التفكير: قراءة المشروع، وتحديد المقاربة، ورصد ما قد يسوء. وبمجرد أن يصير ذلك خطة مكتوبة، يصبح الباقي "فقط اتّبع هذه الخطوات"، وهو ما يفعله نموذج رخيص جيداً. إذن: خطّط بنموذج قوي، ونفّذ بنموذج رخيص. هذه الحركة وحدها مصدر معظم توفير التكلفة، بلا خسارة في الجودة، وهي العمود الفقري لفصل التخطيط/التنفيذ في الجزء 8.
تحفّظان صادقان. أولاً، تحتاج النماذج الأرخص إلى تعليمات أوضح، فهي تتّبع خطة جيدة جيداً لكنها تُرتجل بسوء، فكلما ضعف النموذج، وجب أن توضّح الخطة أكثر. ثانياً، لا تبالغ في التحسين: تبديل النماذج كل بضع دقائق يكلّفك انتباهاً لتوفّر قروشاً. اجعل الافتراضي نموذجاً قوياً، وانزل إلى رخيص للمهام الواضحة، واتركه عند ذلك.
قاعدة عامة: نموذج قوي ليقرر ماذا يفعل، ونموذج رخيص ليفعله. وعندما يبدأ نموذج رخيص في الدوران في حلقة، فتلك إشارتك إلى أن المهمة احتاجت إلى الأقوى، فاصعد، لا تظل تعيد المحاولة.
الجزء 2: إدارة السياق
إليك أهم فكرة في هذه الدورة: في أي لحظة، لا يستطيع النموذج التصرف إلا بناءً على ما هو أمامه الآن، أي سياقه. وهذا السياق ليس دلواً واحداً كبيراً تلقي فيه الأشياء. إنه كومة من الطبقات، وتدفع ثمن كل طبقة في كل دور.

الخلاصة ليست التسميات الخمس، بل الانقسام على الجانب الأيسر. الطبقات العليا ثابتة: تعليمة النظام وملف قواعدك يُحمّلان شئت أم أبيت. وكل ما تحتها ملكك تديره: المحادثة تكبر حتى تستخدم /compact أو /clear، والملفات تُحمّل فقط حين تشير إليها، والمهارات تُحمّل فقط حين تُستدعى، والوكيل الفرعي يقرأ قراءته الثقيلة في نافذة منفصلة ويعيد ملخصاً فقط.
هذه هي اللعبة كلها. إدارة السياق الجيدة ليست حيلة؛ إنها عادة إبقاء تلك الكومة رشيقة: تحميل ما تحتاجه المهمة، ومسح ما لا تحتاجه. الكومة المتضخمة تكلّف رموزاً أكثر، لكن الأسوأ أنها تدفن الجزء المهم: كلما زادت الفوضى في النافذة، صعب على النموذج أن يجد الإشارة، وزاد انحراف إجاباته.
في دورة صياغة تعليمات الذكاء الاصطناعي تعلّمت أن ما تعطيه للذكاء الاصطناعي أهم من كيفية سؤالك. وهنا المخاطر أعلى: في محادثة، السياق السيئ يمنحك إجابة سيئة؛ ومع هذه الأدوات، السياق السيئ يعني أن الذكاء الاصطناعي يكتب كوداً سيئاً مباشرةً في مشروعك. لهذا كل ما تبقّى من الجزء 2 ليس إلا طريقة محددة للتحكم في إحدى هذه الطبقات، ولهذا، إن تذكّرت قسماً واحداً من هذه الدورة المكثفة، فليكن هذا. وهو يعمل في الأداتين بالطريقة نفسها.
5. تآكل السياق حقيقي
لا يستطيع الذكاء الاصطناعي الاحتفاظ إلا بقدر محدود من المعلومات في وقت واحد. يُسمى هذا نافذة السياق. فكّر فيها كمحادثة جماعية: لا يرى الذكاء الاصطناعي إلا الرسائل في هذه المحادثة. إن ذكرت شيئاً سابقاً في المحادثة، يستطيع الذكاء الاصطناعي التمرير للأعلى ورؤيته. وإن لم تقله قط، فهو لا يعرفه. يستطيع الذكاء الاصطناعي الحديث التعامل مع محادثة طويلة جداً (مئات الآلاف من الكلمات)، لكن له حدوداً.
إليك لماذا يهم هذا:
المشكلة 1: المحادثة تطول أسرع مما تظن.
كل رسالة ترسلها، وكل ملف تطلب من الذكاء الاصطناعي قراءته، وكل رد يقدّمه، كلها تُضاف إلى سجل المحادثة. بعد 20 إلى 30 رسالة ذهاباً وإياباً، إضافةً إلى بضعة ملفات طلبت منه النظر فيها، تكون المحادثة قد طالت كثيراً.
والجزء الصعب: لا يوجد تحذير يخبرك بأن "هذه المحادثة تطول أكثر من اللازم". إنها تظل تكبر بهدوء في الخلفية.
المشكلة 2: يضعف الذكاء الاصطناعي في تذكّر الأشياء مع نمو المحادثة.
إليك الجزء المفاجئ. حتى قبل بلوغ الحد، يبدأ الذكاء الاصطناعي في التعثّر. عندما تكون المحادثة طويلة جداً، يصعب على الذكاء الاصطناعي إيجاد الأجزاء المهمة. قد تلاحظ:
- يتجاهل الذكاء الاصطناعي شيئاً قلته له قبل 20 رسالة (قلته، لكنه بعيد لدرجة أنه فقد أثره)
- يعيد الذكاء الاصطناعي عملاً أنجزه بالفعل (نسي أنه فعله)
- يلتبس على الذكاء الاصطناعي أسماء أو تفاصيل كانت صحيحة لديه قبل قليل
يُسمى هذا تآكل السياق. ما زالت المحادثة مستمرة، لكن جودة عمل الذكاء الاصطناعي تسوء ببطء لأن هناك معلومات قديمة كثيرة تتراكم.
المشكلة 3: المحادثات الأطول تكلّف مالاً أكثر.
في كل مرة ترسل رسالة، لا يقرأ الذكاء الاصطناعي رسالتك الجديدة فقط. بل يعيد قراءة كامل المحادثة من الرسالة الأولى. فإن كان لديك 30 رسالة ذهاباً وإياباً، يقرأ الذكاء الاصطناعي الرسائل الثلاثين كلها مجدداً في كل مرة ترسل فيها الرسالة رقم 31.
إن كنت تدفع حسب الاستخدام (كأغلب إعدادات OpenCode)، فهذا يعني أن المحادثات الأطول تكلّف مالاً أكثر بكثير. وإن كنت على خطة اشتراك (ك Claude Code Pro)، فتبلغ حدود استخدامك اليومية أسرع. وفي الحالتين، تستنزف المحادثة الطويلة الفوضوية ميزانيتك.
الخلاصة: أبقِ محادثاتك قصيرة ومركّزة. أعطِ الذكاء الاصطناعي فقط المعلومات التي يحتاجها للمهمة الحالية، لا كل ما لديك. المحادثة النظيفة المركّزة تعمل أفضل بكثير من الطويلة المزدحمة.
تحقّق من امتلاء سياقك. لا يمكنك إبقاء الكومة رشيقة إن لم تستطع رؤيتها. تتيح لك الأداتان قراءة استهلاكك الحالي، لكنهما تعرضانه بشكل مختلف.
اكتب /context لتفصيل كامل: إجمالي الرموز المستخدمة من النافذة (مثل 25.6k/1m tokens (3%))، مقسّماً حسب الفئة: تعليمة النظام، والأدوات، وملف الذاكرة/القواعد، والمهارات، ومحادثتك. بل يشير إلى ما يستحق التقليم. وتحصل أيضاً على نسبة مئوية متحركة قرب الإدخال وأنت تعمل، فلا تحتاج إلى السؤال باستمرار.
يعرض OpenCode استهلاكك مباشرةً في واجهته (عرض الطرفية بملء الشاشة): النموذج النشط، والرموز المستخدمة، ونسبة النافذة. وموضعه على الشاشة بالضبط يختلف حسب الإصدار وعرض الطرفية، فابحث عن قراءة الرموز/النسبة المتحركة. ولا يوجد بعد أمر تفصيل بنمط /context مدمج، فتقرأ ذلك المؤشّر من الواجهة بدلاً من استدعائه. (يمكن لإضافات المجتمع أن تضيف أمر /context بتفصيل كامل إن أردت واحداً.)
أيّاً كانت الأداة التي تستخدمها، فالحركة واحدة: ألقِ نظرة على المؤشّر، لا تنتظر امتلاءه. تميل الجودة إلى الانزلاق قبل امتلاء النافذة تقنياً بكثير، فبمجرد تجاوز الجلسة نحو نصف نافذتها، فتلك إشارتك إلى /compact أو /clear (التالي)، لا حين تبلغ 100%.
6. /clear و/compact
عندما تطول المحادثة أكثر من اللازم، أمامك خياران. تأكّد من اختيار الصحيح:
الخيار 1: ابدأ محادثة جديدة تماماً. استخدم هذا عندما تنتهي من مهمة وتريد بدء شيء مختلف تماماً. تُمحى المحادثة القديمة.
- Claude Code: اكتب
/clear - OpenCode: اكتب
/new(أو/clear)
الخيار 2: قلّص المحادثة الحالية. استخدم هذا عندما تظل تعمل على المهمة نفسها لكن المحادثة طالت أكثر من اللازم. يقرأ الذكاء الاصطناعي المحادثة كاملةً، ويكتب ملخصاً قصيراً، ويتخلّص من كل ما عداه. وتواصل العمل من الملخص.
- في الأداتين: اكتب
/compact
يمكنك أن تخبره بما يحتفظ به: /compact keep the file names and the decisions we made.
لا تخلط بين الاثنين. /clear يحذف كل شيء ويبدأ من جديد. أما /compact فيحتفظ بالأجزاء المهمة ويزيل الباقي. إن استخدمت /clear في منتصف مهمة، تفقد كل تقدّمك. وإن استخدمت /compact حين كان عليك البدء من جديد، تحمل فوضى قديمة إلى مهمة جديدة.
7. استئناف الجلسات
كل محادثة تجريها تُحفظ تلقائياً. يمكنك إغلاق الأداة، وإطفاء حاسوبك، والعودة لاحقاً لتواصل من حيث توقفت بالضبط.
- Claude Code: شغّل
claude --resumeفي طرفيتك. سترى قائمة بمحادثاتك السابقة. اختر واحدة وتابع. - OpenCode: اكتب
/sessions(أو/resume) داخل الأداة لرؤية محادثاتك المحفوظة.
لماذا هذا مفيد:
- تابع غداً. غالباً ما تستغرق المهام الكبيرة أكثر من جلسة واحدة. وبدلاً من البدء من جديد، استأنف من حيث توقفت.
- اعمل على أشياء متعددة. يمكنك أن تجعل محادثة تعمل على مهمة وأخرى تعمل على مهمة مختلفة. بدّل بينهما متى شئت.
نصيحة: إن حفظت ملف خطة سابقاً (مثل docs/plans/my-plan.md)، فيمكنك أيضاً بدء محادثة جديدة وإخبارها: "اقرأ docs/plans/my-plan.md وتابع من الخطوة 4." يعمل ملف الخطة كنسخة احتياطية في حال لم تستطع استئناف المحادثة القديمة. (لمزيد من التفاصيل، انظر الفصل 17 § إدارة الجلسات.)
ماذا لو أخطأ الذكاء الاصطناعي؟ يمكنك التراجع.
أحياناً يعدّل الذكاء الاصطناعي الملف الخطأ، أو يكتب كوداً سيئاً، أو يسيء فهم ما طلبته. لا تذعر، فالأداتان تتيحان لك التراجع، بطرق مختلفة قليلاً:
- Claude Code: اضغط
Escمرتين (وصندوق الإدخال فارغ)، أو اكتب/rewind. تحصل على قائمة بكل تعليمة من الجلسة؛ اختر واحدة وحدّد ما تستعيده: الكود، أو المحادثة، أو كليهما. لاحظ أن هذا يتراجع عن تعديلات الذكاء الاصطناعي للملفات نفسها، لا عن أشياء فعلها بتشغيل أوامر طرفية (الملف المحذوف أو المنقول لن يعود بهذه الطريقة). ولا يوجد "إعادة"، فالترجيع ينقلك إلى نقطة مختارة بدلاً من التقدّم والتراجع خطوة خطوة، فرجّع عن قصد. - OpenCode: اكتب
/undoلعكس آخر تغيير للذكاء الاصطناعي، و/redoإن غيّرت رأيك. يعمل هذا باستخدام git في الخلفية، فيجب أن يكون مشروعك مستودع git.
في الحالتين، عامِل هذا كشبكة أمان للتجارب، لا بديلاً عن git. وأي شيء تريد الاحتفاظ به، أودِعه؛ فنقاط التحقق والتراجع وسائل راحة على مستوى الجلسة، لا سجلّ دائم.
تراجع Claude Code يغطي تعديلات الملفات لا الأوامر الطرفية. مثلاً، إن شغّل الذكاء الاصطناعي أمراً حذف ملفاً، فلن يعيده التراجع. أما تراجع OpenCode فيغطي كل شيء (تعديلات الملفات والأوامر الطرفية) لأنه يستخدم git لتتبّع كل التغييرات.
قاعدة قرار سريعة للأوامر الثلاثة:
تشخيص: متى يفسد السياق
كيف تعرف أن المحادثة طالت أكثر من اللازم؟ راقب هذه العلامات:
- يظل الذكاء الاصطناعي يعتذر لكنه لا يصلح شيئاً فعلاً.
- يغيّر الذكاء الاصطناعي القطعة نفسها من الكود مراراً دون تحسينها.
- يذكر الذكاء الاصطناعي ملفات أو أسماء لا توجد في مشروعك.
- ينسى الذكاء الاصطناعي قاعدة أخبرته بها سابقاً في المحادثة نفسها.
- تصبح ردود الذكاء الاصطناعي أطول وأكثر غموضاً بدلاً من أن تكون أكثر فائدة.
عندما ترى أيّاً من هذه، توقّف عن إرسال الرسائل. سيكون أول دافع لديك أن تشرح المشكلة مرة أخرى. لا تفعل ذلك. إرسال رسائل أكثر إلى محادثة مثقلة أصلاً يزيدها سوءاً فقط.
بدلاً من ذلك، أعد الضبط:
- استخدم
/compactإن أردت مواصلة العمل على المهمة نفسها (فهو يحفظ الأجزاء المهمة ويمسح الباقي). - استخدم
/clear(أو/newفي OpenCode) إن أردت البدء من جديد تماماً.
خمس دقائق من إعادة الضبط أفضل من ساعة من مصارعة ذكاء اصطناعي لم يعد يستطيع تتبّع المحادثة.
تشخيص: متى تقفز تكاليف السياق
تذكّر: المحادثة الطويلة الفوضوية لا تجعل الذكاء الاصطناعي أسوأ في عمله فحسب، بل تكلّفك مالاً أكثر أيضاً. ومع نمو المحادثة، يصبح أمام الذكاء الاصطناعي نص أكثر ليعالجه في كل رسالة.
فارق مهم واحد: التخزين المؤقت. قد تفترض أنك تدفع السعر الكامل لإعادة قراءة المحادثة كلها في كل رسالة. عادةً لا تفعل، لكن الخصم يأتي من مزوّد النموذج، لا من الأداة. تدعم معظم واجهات النماذج الكبرى (Anthropic وDeepSeek وغيرها) التخزين المؤقت للتعليمات: تخزّن المقدّمة الثابتة من سياقك (تعليمة النظام، وملف قواعدك، والأدوار السابقة) وتعيد استخدامها بخصم كبير (غالباً نحو عُشر السعر العادي، وأحياناً أقل بكثير)، فتدفع السعر الكامل فقط لما هو جديد منذ رسالتك الأخيرة. وقد بُنيت Claude Code وOpenCode لإبقاء تلك المقدّمة ثابتة حتى يظل التخزين المؤقت يعمل، لكن التخزين نفسه ميزة المزوّد، والنموذج الذي يفتقر إليه لا يحصل على خصم. والمصيدة: يصمد الخصم فقط ما دامت مقدّمة السياق دون تغيير. عدّل ملف قواعدك، أو تنقّل في سجلّك، فتُعاد تهيئة الذاكرة المؤقتة من تلك النقطة وتدفع السعر الكامل مجدداً. (وتنتهي صلاحية الذواكر المؤقتة أيضاً بعد جلوس الجلسة خاملة فترة.) لهذا تحدث القفزات أدناه بالطريقة التي تحدث بها.
| ما تلاحظه | لماذا يحدث | كيف تصلحه |
|---|---|---|
| قفز استهلاكك فجأة في منتصف المحادثة | غيّرت ملف إعداداتك (CLAUDE.md أو AGENTS.md)، ما يُعيد تهيئة خصم الذاكرة المؤقتة ويجبر الذكاء الاصطناعي على إعادة معالجة كل شيء من الصفر | أعد ملف الإعدادات كما كان، أو اقبل القفزة لمرة واحدة |
| تكلّف كل رسالة أكثر من السابقة | تظل المحادثة تكبر. يقرأ الذكاء الاصطناعي ملفات أكثر فأكثر دون مسح القديم | استخدم /compact لتقليص المحادثة. أخبره بما يحتفظ به: /compact keep the file names and decisions |
| يكتب الذكاء الاصطناعي ردوداً طويلة جداً | سألت سؤالاً بسيطاً لكن الذكاء الاصطناعي يبالغ في الشرح. أو ضُبط نمط تفكيره مرتفعاً أكثر من اللازم للمهمة | اطلب "كود فقط، بلا شرح." أو اخفض جهد الاستدلال في الإعدادات |
| فاتورتك الشهرية أعلى بكثير من المتوقع | تستخدم النموذج الأقوى (والأغلى) لكل مهمة، حتى البسيطة | استخدم النموذج الغالي للتخطيط والمشكلات الصعبة. واستخدم نموذجاً أرخص للمهام البسيطة كالتنسيق أو تشغيل الاختبارات (المفهوم 4) |
النمط خلف كل هذه واحد: المحادثات الأقصر، المركّزة، الثابتة تكلّف أقل وتعمل أفضل من الطويلة الفوضوية.
الجزء 3: ملف القواعد
8. ملف CLAUDE.md / AGENTS.md، مكتوباً جيداً
تتيح لك الأداتان إنشاء ملف خاص يقرأه الذكاء الاصطناعي في بداية كل محادثة. فكّر فيه كمجموعة تعليمات دائمة لمشروعك. في كل مرة تبدأ جلسة جديدة، يقرأ الذكاء الاصطناعي هذا الملف أولاً ليعرف القواعد.
- Claude Code يسمّي هذا الملف
CLAUDE.md - OpenCode يسمّيه
AGENTS.md
لست بحاجة إلى كتابة هذا الملف بنفسك. شغّل /init في أي من الأداتين، وسيمسح الذكاء الاصطناعي مجلد مشروعك وينشئ الملف لك. وبعد ذلك، مهمتك أن تحذف الأجزاء التي لا تحتاجها. يميل الذكاء الاصطناعي إلى توليد ملف طويل جداً. معظمه غير ضروري.
(للشرح الكامل، انظر الفصل 14 § ملفا CLAUDE.md وAGENTS.md. ولإعدادات الفرق المتقدمة، انظر الفصل 17 § هرمية إعداد CLAUDE.md.)
إن كان لديك بالفعل CLAUDE.md وانتقلت إلى OpenCode، فلست بحاجة إلى إعادة كتابته. يقرأ OpenCode ملف CLAUDE.md تلقائياً عند عدم وجود AGENTS.md. وإن وُجد الملفان، يستخدم OpenCode ملف AGENTS.md ويتجاهل CLAUDE.md.
أكبر خطأ يرتكبه الناس: يعاملون هذا الملف كدليل كامل، فيضعون فيه كل شيء عن المشروع: البنية، وقواعد الكتابة، واصطلاحات التسمية، وتفضيلات الفريق. المشكلة؟ يقرأ الذكاء الاصطناعي هذا الملف في كل رسالة. ملف قواعد ضخم يبطّئ الذكاء الاصطناعي ويستهلك مساحة محادثتك، حتى عندما تكون معظم المعلومات غير ذات صلة بالمهمة الحالية.
أبقِه قصيراً. اكتب فقط ما لا يستطيع الذكاء الاصطناعي اكتشافه بالنظر إلى ملفاتك. فكّر فيه كجدول محتويات، لا موسوعة. أشِر إلى ملفات أخرى للتفاصيل، ودعه يحمّلها فقط حين يحتاجها:
CLAUDE.md. صيغة @filename تحمّل الملفات المشار إليها تلقائياً عند الصلة:
# Project: my-app
## Stack
Next.js 14, TypeScript, Postgres, Drizzle ORM.
## Commands
- `npm run dev`: start local server
- `npm test`: run vitest
- `npm run db:migrate`: apply migrations
## Critical rules
- Never edit files in `src/generated/`. They're rebuilt by codegen.
- All API routes use the auth middleware in `src/lib/auth.ts`.
- See @docs/conventions.md for naming and folder rules.
- See @docs/db-schema.md for table structure.
AGENTS.md. البنية نفسها. فرق واحد: في Claude Code، كتابة @docs/conventions.md تحمّل ذلك الملف تلقائياً عند الحاجة. أما في OpenCode، فهذا لا يعمل تلقائياً. أمامك خياران: إمّا أن تكتب في AGENTS.md "حمّل docs/conventions.md عند الصلة"، أو تسرد الملفات في opencode.json:
# Project: my-app
## Stack
Next.js 14, TypeScript, Postgres, Drizzle ORM.
## Commands
- `npm run dev`: start local server
- `npm test`: run vitest
- `npm run db:migrate`: apply migrations
## Critical rules
- Never edit files in `src/generated/`. They're rebuilt by codegen.
- All API routes use the auth middleware in `src/lib/auth.ts`.
## External references
When you encounter @docs/conventions.md or @docs/db-schema.md, load them
on a need-to-know basis with the read tool. Do not preemptively load all
references; only load what's relevant to the current task.
أو، بشكل أنظف، اسردها في opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/conventions.md", "docs/db-schema.md"]
}
هذا ليس لمشاريع الكود فقط. يمكنك استخدام ملف القواعد نفسه لأي نوع من العمل: كتابة المقالات، وتنظيم البحث، وإدارة مدونة، والتخطيط للفعاليات. إليك مثالاً لمشروع كتابة:
# Project: blog-and-newsletter
## What this is
A folder of drafts, research, and published posts. I write a weekly newsletter and occasional long-form posts.
## Where things live
- `drafts/`: in-progress posts, one per file
- `research/`: source notes and clippings, organized by topic
- `published/`: shipped posts (do not edit)
## Critical rules
- Never edit anything in `published/`. Fixes go in a new draft with a correction note.
- Footnotes go in `[brackets]` inline; we resolve them to numbered footnotes only at publish time.
- Tone: conversational, no bullet lists in body copy.
الفكرة نفسها كمثال الكود أعلاه: أبقِه قصيراً، ولا تُضمّن إلا ما لا يستطيع الذكاء الاصطناعي اكتشافه بنفسه.
اختبار بسيط لكل سطر تضيفه: اسأل نفسك: "إن أزلت هذا السطر، هل سيخطئ الذكاء الاصطناعي؟" إن كانت الإجابة لا، فاحذفه. مثلاً، لست بحاجة إلى إخبار الذكاء الاصطناعي بأن مشروعك يستخدم Python إن كانت كل الملفات تنتهي ب .py. يرى الذكاء الاصطناعي ذلك. لكن عليك أن تخبره "لا تعدّل أبداً الملفات في مجلد published/"، لأنه لا سبيل للذكاء الاصطناعي إلى معرفة ذلك بمجرد النظر.
أضف القواعد عندما يحدث خطأ، لا قبله. إن ارتكب الذكاء الاصطناعي خطأً كان ملف قواعدك ليمنعه، فأضف تلك القاعدة. لا تحاول تخمين كل خطأ ممكن مقدّماً. ومع الوقت، سينمو ملف قواعدك طبيعياً ليصبح شيئاً مفيداً.
الجزء 4: تخصيص أداتك
تتيح لك الأداتان إضافة بضعة أنواع من الميزات المخصصة. كل نوع يحلّ مشكلة مختلفة:
| النوع | ماذا يفعل | متى تستخدمه |
|---|---|---|
| أمر / مهارة | تعليمة محفوظة قابلة لإعادة الاستخدام في ملف. تستدعيها بكتابة /name، أو يستدعيها النموذج تلقائياً عند مطابقة المهمة لوصفها. | تجد نفسك تكتب التعليمات نفسها مراراً، أو تريد أن يطبّق النموذج التعليمات الصحيحة دون أن تتذكر طلبها. |
| hook / إضافة | قاعدة تعمل تلقائياً في كل مرة، مهما كان | يجب أن يحدث شيء دائماً (مثل "لا تحذف أبداً هذا المجلد") |
| وكيل فرعي | مساعد ذكاء اصطناعي منفصل يعمل بمفرده ويعيد الإجابة فقط | تحتاج إلى أن يؤدي الذكاء الاصطناعي بحثاً كبيراً أو مهمة بحثية دون إزدحام محادثتك الرئيسية |
كلها طرق لإبقاء محادثاتك نظيفة وذكائك الاصطناعي مركّزاً. الأقسام التالية تشرح كلاً منها.
9. الأوامر والمهارات
هما اسمان للفكرة نفسها: تعليمة محفوظة قابلة لإعادة الاستخدام تعيش في ملف حتى لا تعيد كتابتها. الشيء الوحيد الذي يتغير هو كيفية استدعائها.
- أنت تستدعيها. اكتب
/reviewفتعمل، أنت تقرر متى. - النموذج يستدعيها. أعطِ الملف
description، فيشغّله النموذج بنفسه عند مطابقة مهمتك، فلا تحتاج إلى تذكّر وجوده.
ملف كهذا يمكنه أيضاً حمل مواد داعمة، مجلد من القوالب أو أدلة الأسلوب أو مستندات مرجعية، تُحمّل فقط حين تعمل التعليمة فعلاً، إضافةً إلى بضعة أسطر من frontmatter تحدد اسمه ومتى يُفعّل وأي أدوات يجوز له استخدامها.
"إن كان النموذج يعرف بالفعل كيف يفعل هذا، فلماذا أكتب مهارة؟" إنه السؤال الذي يمنع معظم الناس من العناء، وله إجابة واضحة. يحمل النموذج قدراً هائلاً من المعرفة العامة من تدريبه، لكن المعرفة العامة فيها ثلاث فجوات تسدّها المهارة:
- لا يعرف تفاصيلك أنت. يعرف النموذج كيف تعمل رسائل الإيداع عموماً؛ لكنه لا يعرف صيغة فريقك، ولا خصوصيات مشروعك، ولا الأعلام الدقيقة لأداتك الداخلية، ولا أي شيء ظهر بعد حدّ تدريبه. المهارة تزوّده بالجزء الذي لم يكن قط في تدريبه.
- المعرفة ليست كأن تفعله بالطريقة نفسها مرتين. اطلب من النموذج "تنظيف هذا النص" خمس مرات وستحصل على خمسة إجراءات مختلفة قليلاً. المهارة تثبّت الخطوات بالضبط، فتحصل على الإجراء نفسه كل مرة، بدلاً من ارتجال جديد.
- لن يلجأ إلى المقاربة الصحيحة من تلقاء نفسه. معرفة التدريب لا تطفو إلا إذا صادفت تعليمتك ما يثيرها. وصف المهارة
descriptionهو ذلك المثير، فهو يضع الإجراء الصحيح أمام النموذج لحظة مطابقة المهمة، فلا تحتاج إلى تذكّر الطلب.
وتفعل كل هذا دون أن تنفخ محادثتك: يجلس الوصف القصير فقط في السياق مقدّماً؛ أما التعليمات الكاملة وأي ملفات مرجعية فتُحمّل فقط حين تُطلق المهارة فعلاً، وهو انضباط السياق نفسه من الجزء 2. في سطر واحد: النموذج يجلب المعرفة العامة؛ والمهارة تجلب تفاصيلك أنت، ومقاربة متّسقة، والتعليمات الصحيحة في اللحظة الصحيحة. (فكّر في موظف جديد بارع يعرف المجال كله لكنه ما زال يحتاج إلى دليلك، وقائمة تحقق، والصفحة الصحيحة مسلّمة إليه في الوقت الصحيح.)
النماذج اللغوية احتمالية: يأخذ النموذج عيّنة لكل كلمة تالية من مدى من الخيارات، فقد تعود التعليمة نفسها مصاغة بشكل مختلف، وكذلك المهارة نفسها. المهارة لا توقف ذلك. ما تفعله هو تضييق المدى المحتمل من المخرجات، فهي تزيل تنوّع "اخترع النموذج مقاربة مختلفة هذه المرة"، لا تنوّع الكلمات. تنتقل من خمسة إجراءات مختلفة إلى الإجراء نفسه، مصاغاً بشكل مختلف قليلاً كل تشغيل. هذا اتّساق في المقاربة، لا مخرجات متطابقة.
عندما يجب ضمان خطوة، النتيجة نفسها كل مرة بلا استثناء، فلا تطلب من النموذج فعلها من ذاكرته. ادفعها إلى الكود: اجعل المهارة تشغّل سكربتاً أو منسّقاً أو اختباراً، أو افرضها ب hook/إضافة (القسم التالي)، وهو كود عادي وبالتالي حتمي. قاعدة عامة: المهارات تجعل المقاربة موثوقة؛ والسكربتات وhooks تجعل النتيجة مضمونة.
في Claude Code، الأمر والمهارة شيء واحد. ضع ملفات تعليماتك في .claude/skills/: مجلد بداخله SKILL.md. يصبح اسم المجلد اسم الأمر، ف .claude/skills/review/SKILL.md يمنحك /review.
أبسط حالة، تعليمة تستدعيها بنفسك. بلا description، لن يشغّلها النموذج تلقائياً؛ تطلقها ب /review:
Review the current diff for:
1. Bugs and edge cases
2. Test coverage gaps
3. Naming and readability
4. Adherence to @docs/conventions.md
Be specific. Quote the lines you're commenting on.
أضف description فيستطيع النموذج أيضاً اللجوء إليها بنفسه عند مطابقة مهمة:
---
name: extract-transcript
description: Extract a clean transcript from a YouTube video URL. Use when the user provides a YouTube link and asks for the transcript, captions, or text of the video.
---
# Extract YouTube transcript
1. Take the URL from the user's message.
2. Run `yt-dlp --skip-download --write-auto-sub --sub-format vtt "$URL"`.
3. Convert the VTT to plain text: strip timestamps, deduplicate overlapping captions.
4. Save to `transcripts/{video-id}.txt`.
For formatting conventions (paragraph breaks, speaker labels), see `references/style.md`.
ذلك references/style.md هو جزء "احمل أكثر": يقرأه النموذج فقط حين تعمل هذه المهارة، فلا يكلّفك شيئاً بقية الوقت. لاحظ المسار النسبي العادي، فداخل مهارة لا تستخدم صيغة الاستيراد التلقائي @ من ملف قواعدك (الجزء 3). صيغة @ تفرض تحميل ملف في السياق لحظة تحميل ملف القواعد؛ أما مرجع المهارة فالمقصود أن يبقى غير محمّل حتى يحتاجه النموذج فعلاً فيقرأه بنفسه. المسار العادي (أو رابط markdown نسبي مثل [style](references/style.md)) هو بالضبط ما يبقي ذلك التحميل الكسول يعمل.
يبقي OpenCode الأوامر والمهارات شيئين منفصلين، فهو لم يدمجهما كما فعل Claude Code:
- المهارة مجلد
SKILL.mdمن التعليمات يحمّلها الوكيل بنفسه عند مطابقة مهمة لوصفها. الصيغة مطابقة ل Claude Code، ويبحث OpenCode في.opencode/skills/و~/.config/opencode/skills/و.claude/skills/الخاص ب Claude Code، فالمهارة المكتوبة لأي من الأداتين تعمل في كلتيهما دون تغيير. - الأمر تعليمة محفوظة تطلقها بنفسك بكتابة
/name، مخزّنة كملف markdown في.opencode/commands/(مشروع) أو~/.config/opencode/commands/(شخصي).
يسرد OpenCode أيضاً كل مهارة في قائمة الأوامر المائلة كأمر قابل للاستدعاء (تظهر بلاحقة :skill)، فيمكنك إطلاق مهارة يدوياً، لكن الاثنين يبقيان متمايزين تحت السطح: الأمر تعليمة ترسلها، والمهارة معرفة يسحبها الوكيل عند الصلة.
تعليمة تستدعيها بنفسك، .opencode/commands/review.md (ال frontmatter اختياري؛ يدعم description وagent وmodel وsubtask):
---
description: Review the current diff
agent: plan
subtask: true
---
Review the current diff for:
1. Bugs and edge cases
2. Test coverage gaps
3. Naming and readability
4. Adherence to docs/conventions.md
Be specific. Quote the lines you're commenting on.
مهارة يستطيع الوكيل استدعاءها تلقائياً، .opencode/skills/extract-transcript/SKILL.md (مطابقة لمهارة Claude Code أعلاه؛ تظهر أيضاً في قائمة الأوامر المائلة ك /extract-transcript:skill):
---
name: extract-transcript
description: Extract a clean transcript from a YouTube video URL. Use when the user provides a YouTube link and asks for the transcript, captions, or text of the video.
---
# Extract YouTube transcript
1. Take the URL from the user's message.
2. Run `yt-dlp --skip-download --write-auto-sub --sub-format vtt "$URL"`.
3. Convert the VTT to plain text: strip timestamps, deduplicate overlapping captions.
4. Save to `transcripts/{video-id}.txt`.
For formatting conventions (paragraph breaks, speaker labels), see `references/style.md`.
الأمر أو المهارة التي تضيفها أو تعدّلها داخل مجلد موجود (.claude/skills/ أو ~/.claude/skills/ أو ما يعادلها في OpenCode) تسري فوراً، بلا إعادة تشغيل. الحالة الوحيدة التي ما زالت تحتاج إلى إعادة تشغيل هي إنشاء مجلد مهارات جديد على المستوى الأعلى لم يكن موجوداً عند بدء الجلسة، لأن الأداة لا تستطيع مراقبة إلا المجلدات التي عرفتها عند الإطلاق.
لماذا تحفظها بدلاً من كتابتها كل مرة. تعليمة مراجعة ضعيفة، "راجع عملي"، تحصل دائماً تقريباً على "يبدو رائعاً!"، لأن النموذج يميل إلى الموافقة عليك (التملّق، من دورة صياغة التعليمات). ما ينجح هو قائمة تحقق تجبره على فحص أشياء محددة واحداً واحداً، حتى لا يختبئ خلف "يبدو جيداً". لكن قائمة التحقق مملّة في إعادة الكتابة، ففي يوم مزدحم لن تفعل، وستعود إلى النسخة الكسولة بالضبط حين تكون في أمسّ الحاجة إلى الصرامة. حفظها ك /review يزيل ذلك الاحتكاك: تكتب التعليمة الصارمة مرة، ومن ثَمّ ضغطة مفتاح واحدة تشغّل قائمة التحقق الكاملة كل مرة. هذه هي الميزة الحقيقية للحفظ، لا تعليمة أفضل (تستطيع كتابتها يدوياً)، بل تعليمة أفضل تصبح الافتراضي السهل بدلاً من الشيء الذي تتخطّاه.
هذا يعمل للمهام غير البرمجية أيضاً. أمر /standup يكتب ملخصاً يومياً من ملاحظاتك، احفظه كمهارة (Claude Code) أو أمر (OpenCode) بهذا المتن:
Read yesterday's note in `journal/`. Produce a 4-line standup:
1. What I shipped yesterday (1 line)
2. What I'm working on today (1 line)
3. Blockers (1 line, "none" if clear)
4. One thing I learned (1 line)
Tone: telegraphic. No filler.
الشكل نفسه ك /review، مجال مختلف. والحيلة نفسها تعمل ل /digest (تحويل مجلد رسائل إلى بنود عمل)، و/draft-reply (كتابة رد مهذّب على الرسالة في هذا المسار)، أو أي مهمة روتينية تظل تعيد كتابتها. الاختبار: إن كتبت التعليمات نفسها أكثر من مرتين، فاحفظها. تريد إطلاقها بنفسك؟ استدعِها ب /name. تريد أن يلجأ النموذج إليها بنفسه؟ أعطِها description.
بضع قواعد تجعل هذه موثوقة:
- الوصف أهم سطر. يقرأه النموذج ليقرر هل يطلق المهارة. الغامض ("يساعد في الفيديوهات") يُفعّل كثيراً جداً؛ والمحدد ("استخدمها حين يقدّم المستخدم رابط YouTube ويطلب النص") يُفعّل فقط حين ينبغي.
- أبقِ
SKILL.mdقصيراً. ضع التعليمات الرئيسية فيSKILL.mdوانقل التفاصيل الإضافية (أدلة الأسلوب، والقوالب، والمواد المرجعية) إلى ملفات منفصلة في المجلد نفسه. تُحمّل فقط عند الحاجة. - اصنع مهارات صغيرة، لا كبيرة. للبحث والصياغة والتنسيق والمراجعة، لا تبنِ مهارة عملاقة واحدة، بل ابنِ أربعاً (
researchوdraftوformatوreview) تؤدي كل منها شيئاً واحداً وتتسلّم عبر الملفات. كل واحدة تحتاج فقط إلى سياق خطوتها، ما يبقي المحادثة نظيفة.
لست مضطراً إلى كتابتها من الصفر. يأتي Claude Code مع مولّد مهارات يبني مهارات جديدة خطوة بخطوة؛ ول OpenCode تدفّق مشابه لإنشاء الوكلاء. (راجع توثيق أداتك الحالي للأمر الدقيق، فهذه يُعاد تسميتها كثيراً.) نسخة العمق (تخطيط المجلد، وال frontmatter، وتمرير الوسائط، وبناء مهارة متعددة الخطوات) في الفصل 14 § علّم Claude طريقتك في العمل والفصل 14 § بناء مهاراتك الخاصة.
10. hooks (Claude Code) / الإضافات (OpenCode)
تعتمد الأوامر والمهارات على اختيار النموذج لاستخدامها. لكن أحياناً تحتاج إلى قاعدة تعمل في كل مرة، مهما كان، دون الاعتماد على تذكّر النموذج لها. لهذا وُجدت hooks (في Claude Code) والإضافات (في OpenCode).
مثلاً: "لا تدع الذكاء الاصطناعي يشغّل أبداً أمراً يحذف كل الملفات." لا تريد أن يقرر الذكاء الاصطناعي هل يتّبع تلك القاعدة. تريدها مفروضة تلقائياً، في كل مرة، بلا استثناء.
تدعم الأداتان هذا، لكن طريقة الإعداد مختلفة في كل منهما. هذا هو القسم الذي تختلف فيه الأداتان أكثر ما تختلفان.
يستخدم Claude Code كلمة "hook" لهذه القواعد التلقائية. ويستخدم OpenCode كلمة "إضافة" (plugin). تؤديان العمل نفسه، باسمين مختلفين فقط. (لدى Claude Code أيضاً ميزة منفصلة اسمها "plugins" تعني شيئاً مختلفاً تماماً. تجاهلها الآن.)
hooks قواعد تلقائية تضيفها إلى .claude/settings.json. تعمل في لحظات محددة: عند بدء جلسة، أو عند إرسالك رسالة، أو قبل أن يشغّل الذكاء الاصطناعي أمراً مباشرةً، وهذه الثلاث مجرد أمثلة؛ يستطيع Claude Code إطلاق hooks عند نحو 30 حدثاً في دورة الحياة، من بدء الجلسة وتقديم التعليمة مروراً بقبل/بعد استخدام الأدوات والضغط ونهاية الجلسة. لل hook جزآن: matcher يختار أي أداة يراقب (بالاسم، مثل "Bash" أو "Edit|Write")، وcommand (أمر طرفي أو سكربت) يقرر هل يسمح بالفعل. إن خرج ذلك الأمر بالكود 2، يُمنع الذكاء الاصطناعي من الفعل.
إليك مثالاً يمنع الذكاء الاصطناعي من تشغيل rm -rf أبداً (أمر خطير يحذف كل شيء):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.command' | grep -q 'rm -rf' && { echo 'Blocked dangerous command' >&2; exit 2; } || exit 0"
}
]
}
]
}
}
كيف يعمل هذا: ال matcher ("Bash") يعني أن هذا ال hook يعمل فقط قبل أوامر Bash. عندما يكون الذكاء الاصطناعي على وشك تشغيل واحد، يسلّم Claude Code تفاصيل الأمر إلى سكربتك ك JSON على المدخل القياسي. يستخرج السكربت نص الأمر الفعلي ب jq، ويفحصه بحثاً عن rm -rf ب grep، وإن تطابق، يطبع رسالة إلى stderr ويخرج بالكود 2. الكود 2 هو الإشارة المحددة التي تقول ل Claude Code "امنع هذا الفعل"؛ وأي كود آخر يتركه يمرّ، ولهذا تنتهي الحالة الآمنة ب exit 0. الفكرة الأساسية: ال matcher يختار الأداة، والسكربت يقرر هل يمنع. هذا كل ما تحتاج معرفته الآن. وهناك مثال أكثر تفصيلاً في الجزء 6 أدناه.
أمران صغيران يجعلان hooks أيسر في التعايش. أولاً، تضيف إصدارات Claude Code الحديثة حقل if يُرشّح ال hook مسبقاً حسب الأداة والوسائط بالصيغة نفسها لقواعد الأذونات، ف "if": "Bash(rm -rf *)" يجعل ال hook يُطلق فقط على الأوامر المطابقة، ويمكنك تخطّي grep داخل السكربت. (الإصدارات الأقدم تتجاهل if وتشغّل ال hook كل مرة، ولهذا نسخة grep أعلاه ما زالت تعمل في كل مكان.) ثانياً، يمكن ل hooks أن تعيش في ~/.claude/settings.json لتُطبّق عبر كل مشاريعك، لا .claude/settings.json لمشروع واحد فقط؛ اكتب /hooks لتأكيد تسجيل hook إن لم يكن يُطلق.
الإضافات ملفات JavaScript (أو TypeScript) صغيرة تضعها في مجلد إضافات OpenCode، .opencode/plugins/ لمشروع واحد، أو ~/.config/opencode/plugins/ للتطبيق في كل مكان. تؤدي ما تؤديه hooks في Claude Code (منع الأفعال أو تعديلها تلقائياً)، لكنك تكتبها بكود بدلاً من JSON. إليك مثال "منع rm -rf" نفسه:
// .opencode/plugins/block-dangerous.js
export const BlockDangerousPlugin = async () => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "bash" && output.args.command?.includes("rm -rf")) {
throw new Error("Blocked dangerous command");
}
},
};
};
تستطيع إضافات OpenCode أكثر من مجرد منع الأفعال. يمكنها التفاعل مع أحداث مختلفة كثيرة: عند بدء جلسة، وعند انتهاء الذكاء الاصطناعي من العمل، وعند تعديل ملف، وأكثر. ويمكنها أيضاً إرسال إشعارات إليك، وإضافة أدوات مخصصة، وإعادة تشكيل كيفية تلخيص المحادثة عند ضغطها. لست بحاجة إلى تعلّم كل هذا فوراً. فقط اعلم أن الإضافات هي الخيار الأقوى إن احتجته لاحقاً.
لاحظ أن المجلد بصيغة الجمع،
plugins/، لاplugin/. الإضافة التي لا تُطلق أبداً بصمت غالباً ما تكون في المجلد الخطأ؛ فالمحمّل لا يراقب إلا.opencode/plugins/(مشروع) و~/.config/opencode/plugins/(عام). يتحرك OpenCode بسرعة، فألقِ نظرة على التوثيق الحالي إن تصرّف شيء بشكل غير متوقع.
مثال عملي: لنفترض أنك تترك أحياناً علامات [TODO] في مسوداتك وتنسى إزالتها قبل النشر. يمكنك إعداد hook (Claude Code) أو إضافة (OpenCode) تمنع الذكاء الاصطناعي تلقائياً من حفظ أي ملف في مجلد published/ إن كان ما زال يحوي علامة [TODO]. لا تحتاج أبداً إلى تذكّر الفحص؛ الأداة تفعله نيابةً عنك.
أيّهما تستخدم؟
| hooks في Claude Code | إضافات OpenCode | |
|---|---|---|
| كيف تكتبها | بضعة أسطر JSON في ملف إعدادات، تشير إلى أمر طرفي أو سكربت | ملف JavaScript صغير |
| أيسر في | قواعد بسيطة مثل "امنع هذا الأمر" | قواعد معقدة تحتاج إلى فحص أشياء متعددة |
| تحتاج إلى معرفة | أوامر طرفية أساسية (وقليلاً من jq/grep لفحوص المحتوى) | JavaScript أساسي |
عادة جيدة واحدة: افحص عند الإيداع، لا عند كل تعديل. من المغري جعل hook يُطلق عند كل تغيير ملف، لكن مقاطعة الذكاء الاصطناعي في منتصف مهمة تميل إلى إرباكه، فهو متوقف في منتصف فكرة. بدلاً من ذلك، دعه ينهي العمل، وضع فحصك على الإيداع (لحظة محاولته حفظ نقطة تحقق ب git commit). عند تلك النقطة، شغّل اختباراتك ومنسّقك. إن نجحا، يمرّ الإيداع. وإن فشلا، يمنع ال hook الإيداع ويعيد الخطأ إلى الذكاء الاصطناعي، فيقرأه ويصلح المشكلة بنفسه قبل المحاولة مجدداً. أنت لا تفعل شيئاً؛ الفحص الفاشل هو التعليمة. (الجزء 6، الخطوة 6 يبيّن هذا بالضبط عملياً.)
استخدم hooks/الإضافات للأشياء التي تحتاج إلى أن تكون صحيحة 100% من الوقت. واستخدم المهارات للأشياء التي تودّ أن يتذكّرها النموذج معظم الوقت.
11. الوكلاء الفرعيون
الوكيل الفرعي نسخة وكيل معزولة بنافذة سياقها الخاصة. تفوّض إليه مهمة؛ فيعمل في الخفاء؛ ويعيد ملخصاً. عمليات بحثه في الملفات، وتفريغ سجلّاته، وقراءاته الاستكشافية لا تلمس أبداً خيطك الرئيسي.
لماذا يهم هذا، بلغة إدارة السياق: أكثر شيء يسمّم السياق هو "استكشف قاعدة الكود لإيجاد مكان حدوث X". هذا النوع من المهام يسحب عشرات الملفات إلى السياق، معظمها لا تحتاجه. فعله في وكيل فرعي يعني أن جلستك الرئيسية لا ترى إلا الخلاصة ("يحدث X في src/services/billing.ts:142")، لا البحث.
هناك نوعان، ويفيد إبقاؤهما متمايزين: الوكلاء الفرعيون الذين تأتي معهم أداتك (لا تكتب هؤلاء، هم موجودون فقط ويُطلقون تلقائياً)، والمخصصون الذين تكتبهم بنفسك.
الوكلاء الفرعيون المدمجون، لديك هؤلاء بالفعل. بلا إعداد؛ تلجأ إليهم الأداة عند ملاءمة مهمة.
- Claude Code يأتي ب
Explore(بحث في قاعدة الكود للقراءة فقط، يعمل على نموذج سريع رخيص)، وPlan(بحث للقراءة فقط يُستخدم خلال نمط التخطيط)، ووكيل عام الغرض للعمل متعدد الخطوات الذي يحتاج أيضاً إلى إجراء تغييرات. - OpenCode يأتي ب
Explore(بحث للقراءة فقط)، وGeneral(عمل مفوّض أوسع)، وScout(بحث للقراءة فقط في المستندات الخارجية والاعتماديات).
في Claude Code، يسلّم نمط التخطيط تلقائياً بحثه في قاعدة الكود إلى وكيل فرعي للقراءة فقط، فستستخدم هؤلاء غالباً دون التفكير فيهم، بل يستطيع النموذج الدخول إلى نمط التخطيط بنفسه عند الطلب. في OpenCode، وكيل Plan (وكيل أساسي تنتقل إليه ب Tab) يستدعي الوكلاء الفرعيين تلقائياً بالطريقة نفسها، أو تستدعي واحداً صراحةً ب @explore.
الوكلاء الفرعيون المخصصون، تكتب هؤلاء حين تظل تُطلق النوع نفسه من العامل بالتعليمات نفسها. الوكيل الفرعي المخصص ملف markdown بقليل من frontmatter (اسمه، ومتى يُستخدم، وأي أدوات يجوز له لمسها) إضافةً إلى تعليمة نظام. (تنبيه: Scout المدمج في OpenCode يؤدي بالفعل بحثاً في المستندات الخارجية، ف doc-fetcher أدناه مثال تعليمي هناك أكثر من كونه شيئاً تحتاج إلى بنائه.)
.claude/agents/doc-fetcher.md:
---
name: doc-fetcher
description: Fetches and summarizes external library documentation. Use when the user references a library and we need to understand its current API.
tools: WebFetch, Read, Write
---
You are a documentation researcher. Given a library name and a topic, fetch the official docs, extract only the API surface relevant to the topic, and write a focused summary to `tmp/docs-{library}.md`. Don't paste full pages: extract the patterns and signatures we need.
.opencode/agents/doc-fetcher.md:
---
description: Fetches and summarizes external library documentation. Use when the user references a library and we need to understand its current API.
mode: subagent
permission:
edit: ask
bash: deny
webfetch: allow
---
You are a documentation researcher. Given a library name and a topic, fetch the official docs, extract only the API surface relevant to the topic, and write a focused summary to `tmp/docs-{library}.md`. Don't paste full pages: extract the patterns and signatures we need.
أين تضعهم، وطريقة أسهل لصنع واحد. احفظ الملف في مجلد مشروعك ليحصل عليه الفريق كله، أو في مجلدك الشخصي لاستخدامه عبر كل مشروع:
- Claude Code:
.claude/agents/(مشروع) أو~/.claude/agents/(شخصي). بدلاً من كتابة الملف يدوياً، شغّل/agentsلتوليد واحد عبر تعليمة موجَّهة. مصيدة واحدة: الملف الذي تضيفه أو تعدّله على القرص لا يُحمّل إلا عند بدء الجلسة التالية، بينما الوكلاء المصنوعون عبر/agentsيعملون فوراً. - OpenCode:
.opencode/agents/(مشروع) أو~/.config/opencode/agents/(شخصي)، ويصبح اسم الملف اسم الوكيل. أو شغّلopencode agent createلتوليد واحد. (يمكنك أيضاً تعريف الوكلاء مباشرةً فيopencode.jsonإن فضّلت الإعداد على ملف منفصل.)
أمران يستحقان المعرفة. يمكنك إعطاء الوكيل الفرعي نموذجه الأرخص الأسرع الخاص، فكرة مطابقة النموذج نفسها كالمفهوم 4، والسبب في أن Explore في Claude Code يعمل على نموذج اقتصادي سريع افتراضياً. وفي Claude Code، الوكيل الفرعي لا يستطيع إطلاق وكلاء فرعيين آخرين (لا تعشيش لانهائي)؛ وللتفويض متعدد المراحل، سلسلهم من جلستك الرئيسية أو الجأ إلى تدفقات العمل الديناميكية (أدناه).
الوكلاء الفرعيون المخصصون يعملون للمهام غير البرمجية أيضاً. مثلاً، تخيّل أن لديك ملف PDF طويلاً (فصل كتاب، أو ورقة بحثية، أو عقداً) وتريد ملخصاً. بدلاً من لصق المستند كله في محادثتك (ما يملأ محادثتك بسرعة)، يمكنك إرسال وكيل فرعي لقراءته وإعادة الملخص فقط:
---
name: pdf-summarizer
description: Reads a long PDF and writes a focused summary. Use when the user references a PDF and wants the key points without dumping the whole document into the conversation.
tools: Read, Write
---
You are a research summarizer. Given a PDF path and a question, read the document, extract only the passages relevant to the question, and write a focused summary to `tmp/summary-{pdf-name}.md`. Do not paste full pages: pull out the patterns, claims, and quotes the user actually needs.
يقرأ الوكيل الفرعي ملف PDF كاملاً بنفسه. محادثتك الرئيسية لا ترى ال 200 صفحة أبداً. لا تحصل إلا على الملخص القصير في النهاية. هذا هو المغزى كله: أبقِ القراءة الثقيلة منفصلة حتى تبقى محادثتك الرئيسية نظيفة.
كيف يُستخدم الوكلاء الفرعيون؟ طريقتان، متطابقتان للمدمج والمخصص، في الأداتين:
- تلقائياً. إن كتبت وصفاً جيداً لوكيلك الفرعي، سيستخدمه الذكاء الاصطناعي بنفسه عند مطابقة المهمة. هذه هي الطريقة التي ستستخدم بها الوكلاء الفرعيين معظم الوقت.
- يدوياً. اكتب
@subagent-nameفي رسالتك لتخبر الذكاء الاصطناعي بالضبط أي وكيل فرعي يستخدم. افعل هذا حين تريد التأكد من تشغيل واحد بعينه.
قاعدة بسيطة: إن كانت مهمة تتطلب قراءة كثير من المعلومات التي لا تحتاجها محادثتك الرئيسية، فأرسل وكيلاً فرعياً ليفعلها. (الفصل 14 § الوكلاء الفرعيون والتنسيق فيه الدليل الكامل.)
مهارة أم وكيل فرعي؟ من السهل الخلط بينهما. كلاهما قابل لإعادة الاستخدام، وكلاهما يمكن أن يُطلق تلقائياً من description، وكلاهما ظهر في الجزء 4. الفرق يعود إلى أين يعمل العمل:
| المهارة (المفهوم 9) | الوكيل الفرعي | |
|---|---|---|
| يعمل في | محادثتك الحالية، النافذة نفسها، النموذج نفسه، الأدوات نفسها | نافذته المعزولة الخاصة |
| ما هو | إجراء أو خبرة يتّبعها وكيلك | عامل منفصل يؤدي جزءاً من العمل لك |
| ما الذي يعود | مخرجات ضمن السياق، كجزء من المحادثة الجارية | ملخص فقط؛ الوسط المطوّل (عمليات بحث، تفريغ ملفات، طرق مسدودة) لا يدخل سياقك أبداً |
| النموذج والأدوات | ما تستخدمه الجلسة | يمكنه تشغيل نموذج أرخص/أسرع ومجموعة أدوات مقيّدة معزولة |
| التكلفة والكمون | رخيص وفوري، فهو يحمّل نصاً فقط | عبء بدء (يبدأ أعمى ويجمع سياقه الخاص)، لكنه يبقي نافذتك نظيفة |
| الأفضل ل | تطبيق مقاربة متّسقة ضمن السياق، مع مجال للأخذ والرد | عزل العمل عالي الحجم (الاستكشاف، المستندات الطويلة، فرز السجلّات) أو عزل الأدوات |
في سطر واحد: المهارة تغيّر كيفية عمل وكيلك الحالي؛ والوكيل الفرعي يسلّم المهمة إلى واحد منفصل يقدّم تقريراً. المهارة هي دليل اللعب؛ والوكيل الفرعي زميل تفوّض إليه.
وهما يتركّبان بدلاً من أن يتنافسا: الوكيل الفرعي يستطيع استخدام المهارات. في Claude Code إمّا أن تحمّلها مسبقاً، تسرد skills: [api-conventions, error-handling] في frontmatter الوكيل الفرعي فيكون ذلك المحتوى في سياقه من الدور الأول، أو تتركه يلجأ إلى المهارات بنفسه وقت التشغيل (أسقط Skill من tools فقط إن أردت منع ذلك). OpenCode مثله: الوكيل الفرعي يستخدم المهارات ما لم يُمنع إذن skill. فالاختيار ليس أبداً مهارة أو وكيل فرعي؛ بل غالباً وكيل فرعي يحمل المهارة الصحيحة.
التوسّع أكثر (Claude Code فقط): للمهام الكبيرة جداً، يستطيع Claude Code تشغيل عشرات إلى مئات الوكلاء الفرعيين بالتوازي وفحص عملهم، ويُسمى تدفقات العمل الديناميكية. وهو حصري ل Claude Code ويستهلك رموزاً أكثر بكثير، فيقع خارج الكومة الافتراضية الميسّرة التكلفة.
الجزء 5: الاتصال بالعالم
12. MCP، مستخدماً بأمانة
MCP اختصار ل Model Context Protocol (بروتوكول سياق النماذج). إنه طريقة لربط الذكاء الاصطناعي بتطبيقات وخدمات أخرى تستخدمها بالفعل: Slack، وGoogle Docs، وNotion، وGitHub، وقواعد البيانات، وأكثر. وبمجرد الاتصال، يستطيع الذكاء الاصطناعي القراءة من تلك الخدمات والكتابة إليها مباشرةً.
"أليس هذا مجرد API؟" تقريباً، ويستحق الوضوح قبل أن توصّل أي شيء. MCP غلاف قياسي حول واجهات API والأدوات الأخرى، لا بديل عنها. ال API الخام يحتاج إلى من يكتب الوصلة كل مرة (يتولّى المصادقة، ويشكّل الطلبات، ويخبر النموذج كيف يستدعيها)؛ أما خادم MCP فقد فعل ذلك بالفعل ويعلن عن أدواته، فيستطيع الوكيل اكتشافها واستخدامها بلا كود تكامل. فالسؤال الحقيقي ليس أبداً "MCP أم API"، بل "هل يستحق هذا اتصالاً قائماً، أم يستطيع الوكيل استدعاء الشيء مباشرةً؟" قواعد الاستخدام/التخطّي أدناه تجيب عن ذلك بالضبط.
تدعم Claude Code وOpenCode كلتاهما MCP. ولأن MCP معيار مفتوح، فال خادم نفسه يعمل مع أي من الأداتين، لكن الإعداد لا ينتقل، فتضيفه في كل واحدة على حدة (تحفظان اتصالاتهما في ملفات مختلفة).
إليك كيف تضيف اتصال MCP في كل أداة:
أضف الخوادم بسطر الأوامر، claude mcp add --transport http <name> <url>، وهو يكتب افتراضياً إلى ~/.claude.json (شخصي). أضف --scope project لكتابة ملف .mcp.json قابل للمشاركة في جذر مشروعك بدلاً من ذلك. ثم شغّل /mcp داخل Claude Code للتحقق من الحالة وتسجيل الدخول إلى أي خادم يحتاج إلى OAuth. (ملاحظة: هذا ليس .claude/settings.json، المخصص للأذونات وhooks.)
يُعلَن في opencode.json. استخدم "type": "remote" لخادم مستضاف (مع url) أو "type": "local" لخادم يعمل كعملية محلية (مع command مثل ["npx", "-y", "some-mcp"]):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
},
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
للخوادم التي تحتاج إلى تسجيل دخول، شغّل opencode mcp auth <name> لإجراء تدفّق OAuth؛ ويعرض opencode mcp list حالة كل خادم.
لماذا هذا مفيد: بلا MCP، لا يستطيع الذكاء الاصطناعي العمل إلا مع الملفات على حاسوبك. ومع MCP، يستطيع الوصول خارج حاسوبك والتفاعل مع الخدمات على الإنترنت. مثلاً: يمكنك أن تطلب من الذكاء الاصطناعي "تحقّق من Slack الخاص بي بحثاً عن أي رسائل من فريقي اليوم" أو "أنشئ مسألة جديدة على GitHub لهذا الخطأ"، وسينفّذها الذكاء الاصطناعي فعلاً بدلاً من مجرد إخبارك كيف تفعلها بنفسك.
الاستخدام الأكثر جدية: ربط نظام السجلّ لديك. نظام السجلّ هو الموطن الموثوق لنوع معيّن من البيانات، النسخة الوحيدة التي يعاملها الجميع كالحقيقة: قاعدة بياناتك، أو CRM، أو نظام تذاكرك، أو قاعدة معرفة الشركة. MCP هو كيف توجّه الوكيل نحو واحد ليجيب من بيانات حيّة موثوقة بدلاً من نسخة قديمة لصقتها أو حقيقة نصف متذكَّرة من التدريب. اسأل "ما الحالة الحالية للطلب 4471؟" فيستعلم الوكيل من قاعدة البيانات الحقيقية عبر MCP بدلاً من التخمين. وهذا أيضاً كيف يصير جسم معرفي، كتاب أو مجموعة توثيق أو ويكي داخلي، قابلاً للاستعلام: انصب خادم MCP أمامه، فتستطيع أي أداة سؤاله والحصول على إجابات مؤسَّسة على المصدر. وكل عامل ذكاء اصطناعي يعمل أيضاً مقابل نظام سجلّ باستخدام MCP.
لكن انتبه: لا توصّل كل شيء. كل اتصال MCP يمكن أن يأخذ مساحة في محادثتك، حتى عندما لا تستخدمه. يحذّر توثيق OpenCode نفسه: "بعض خوادم MCP، مثل خادم GitHub MCP، تميل إلى إضافة كثير من الرموز ويمكنها بسهولة تجاوز حد السياق." فرق يستحق المعرفة: يؤجّل Claude Code الآن تعريفات أدوات MCP افتراضياً (يحمّل الوصف الكامل لأداة فقط حين يكون على وشك استخدامها)، فالخوادم الإضافية تكلّف سياقاً قليلاً هناك. أما OpenCode فيحمّلها مقدّماً، فكن انتقائياً بشدة في ذلك الجانب. وفي الحالتين، العادة واحدة: وصّل فقط ما تحتاجه فعلاً. وهذا أيضاً الإجابة الحقيقية للقلق من أن MCP ينفخ السياق، فالحل هو التطبيق على طبقات (حمّل الأدوات كسولاً، واعتمد على سطر الأوامر للمهام البسيطة، وادفع عمل MCP الثقيل إلى وكيل فرعي من المفهوم 11)، لا التخلّي عن MCP.
متى تستخدم MCP ومتى تتخطّاه:
- استخدم MCP عندما تحتاج الخدمة إلى أن يسجّل الذكاء الاصطناعي الدخول أو يبقى متصلاً. مثلاً: قراءة تقويم Google، أو تصفّح موقع، أو الاستعلام من قاعدة بيانات تتطلب كلمة مرور.
- تخطَّ MCP عندما يستطيع الذكاء الاصطناعي الحصول على النتيجة نفسها بتشغيل أمر طرفي بسيط. مثلاً: بدلاً من الاتصال ب GitHub عبر MCP، يستطيع الذكاء الاصطناعي ببساطة تشغيل
gh issue listفي الطرفية لرؤية مسائلك. بلا تسجيل دخول، بلا اتصال، بلا إعداد إضافي.
ابدأ باتصال أو اثنين تحتاجهما فعلاً. لا تثبّت عشرة لمجرد أنها متاحة.
الجزء 6: مثال عملي كامل، مرتين
هنا يجتمع كل شيء. ستؤدي مهمة كاملة واحدة من البداية إلى النهاية، مستخدماً المفاهيم التي تعلّمتها أعلاه. تُنفَّذ المهمة مرتين: مرة في Claude Code ومرة في OpenCode، حتى ترى أن الخطوات متطابقة تقريباً.
لا حاجة إلى برمجة. يستخدم هذا المثال ملاحظات اجتماعات، لكنك لست بحاجة إلى أن تكون مبرمجاً لتتابع. إن سبق أن دوّنت ملاحظات في اجتماع، أو حصة، أو مشروع جماعي، فأنت تفهم المهمة بالفعل.
مهمتك
لديك مجلد اسمه notes/ فيه خمسة ملفات ملاحظات اجتماعات. المشكلة: إنها فوضوية. كتب كل اجتماع بنود مهامه بطريقة مختلفة. بعضها يستخدم العنوان "Action Items". بعضها "Todos". وواحد يستخدم "todo" بأحرف صغيرة. وبعض بنود المهام مدفونة داخل أقسام أخرى حيث لا يخطر لك أن تنظر. وبعض البنود موسوم ب [private] أو [HR]، أي أنه يجب ألّا يُشارك علناً أبداً.
هدفك: إنشاء ملف نظيف واحد اسمه weekly-actions.md:
- يسرد كل بند مهمة من الاجتماعات الخمسة
- يجمّعها حسب المسؤول
- يبيّن من أي اجتماع جاء كل بند
- يترك أي شيء موسوم ب
[private]أو[HR] - لا يفوّت بنداً واحداً
- يحذّرك إن وقع أي موعد نهائي في عطلة رسمية
📁 احصل على الملفات الخمسة الأولية أولاً (انقر للتوسيع)
انسخ هذه إلى مجلد notes/ قبل أن تبدأ. المثال مصمَّم حولها: كل ملف يؤدي دوراً محدداً، فإن تخطّيت واحداً، توقفت إحدى الخطوات أدناه عن العمل. (تفضّل تخطّي إعداد المجلد؟ الصق الملفات الخمسة مباشرةً في محادثة أداتك واطلب منها معاملتها كمحتويات notes/.)
notes/2026-12-07-monday-team-meeting.md
# Monday Team Meeting - 2026-12-07
Attendees: @sara, @diego, @priya, @marcus
## Discussion
Reviewed last month's customer satisfaction scores. Renewals are down slightly in the small-business segment.
## Action Items
- @sara: draft a revised welcome email by Dec 18
- @diego: check spam-folder reports with our email vendor by Dec 16
- @marcus: pull renewal numbers for the last two quarters and share with the team
- @sara: finalize offer terms for the new account manager [HR]
notes/2026-12-08-customer-feedback.md
# Customer Feedback Review - 2026-12-08
Attendees: @sara, @amara, @marcus
## Summary
Read through the top twenty customer comments from last week. Three themes came up: pricing page is confusing, the call-back service is slow, and the FAQ on the website is out of date.
## Todos
- rewrite the pricing page in plain language
- @marcus: log a complaint with the call center vendor about response times
- look into why the FAQ has not been updated in six months
- @amara: draft a customer note explaining the upcoming changes
- review all printed brochures for outdated photos and pricing
notes/2026-12-08-q1-planning.md
# Q1 2027 Planning - 2026-12-08
Attendees: @sara, @diego, @amara, @lukas
## Initiatives
We walked through the four candidate initiatives for Q1.
### Year-end promotional campaign
Time-bound: wraps before the holiday break.
#### Action Items
- @amara: finalize the year-end promotional brochure by Dec 25
- @lukas: confirm placement with paid media partners by Dec 20
### Onboarding overhaul
Top priority next quarter.
## todo
- @diego: write the project brief by Jan 15
- @sara: own messaging and visual direction
notes/2026-12-09-all-hands-prep.md
# All-Hands Prep - 2026-12-09
Attendees: @sara, @marcus
## Agenda
Walked through the December all-hands agenda. Most slides are in good shape; a couple still need owners.
## Next Steps
- @marcus: set up the video call and record a practice run
- @sara: finalize the Q4 numbers slide
- @sara: prepare the bonus and compensation talking points [private]
- @marcus: book the venue for the team holiday dinner
notes/2026-12-11-vendor-review.md
# Vendor Review - 2026-12-11
Attendees: @sara, @amara, external partner
## Summary
Confidential contract negotiation with our printing and fulfillment vendor. Details under NDA.
## Action Items
- @sara: circulate the revised contract to the vendor [private]
- @amara: draft the internal announcement once terms are agreed [private]
- @sara: review the legal redlines on the new pricing schedule [private]
كيف نظّمنا هذا الشرح
أدناه ثماني خطوات. كل خطوة تتبع النمط نفسه:
- ماذا تفعل في Claude Code (التعليمات بالضبط)
- لماذا تهم هذه الخطوة (شرح قصير)
- ما المختلف في OpenCode (إن تغيّر شيء، يُذكر هنا. وإن قال "متطابق"، فالأداتان تعملان بالطريقة نفسها لتلك الخطوة)
الخطوة 1: أعدّ ملف قواعدك
في Claude Code: افتح Claude Code في مجلد مشروعك. شغّل /init. سيمسح الذكاء الاصطناعي مجلدك وينشئ ملفاً اسمه CLAUDE.md. سيكون طويلاً أكثر من اللازم. احذف معظمه وأبقِ هذا فقط:
# weekly-rollup
## Layout
- `notes/`: meeting notes, one file per meeting
- `weekly-actions.md`: the rollup we are creating
- `plans/weekly-rollup-plan.md`: the plan we will save and reuse
## Critical rules
- Action items can appear under `## Action Items`, `## Todos`, `## Next Steps`, or `## todo` (one meeting uses lowercase). Look at all heading levels, not just the top.
- Owners are written as `@name`. Items with no owner go to an "Unassigned" section.
- Never include any bullet tagged `[private]` or `[HR]`.
لماذا تهم هذه الخطوة: يقرأ الذكاء الاصطناعي هذا الملف في بداية كل رسالة. الملف الطويل يبطّئ الأمور ويهدر مساحة. فتبقي فقط ما لا يستطيع الذكاء الاصطناعي اكتشافه بالنظر إلى المجلد نفسه. قاعدة الخصوصية مهمة بشكل خاص لأنه لا سبيل للذكاء الاصطناعي إلى معرفة أن بنود [private] يجب إخفاؤها.
في OpenCode: الشيء نفسه، لكن الملف اسمه AGENTS.md بدلاً من CLAUDE.md. إن كان لديك بالفعل CLAUDE.md، فسيقرأه OpenCode أيضاً.
بعض الخطوات اللاحقة تحفظ عملك ب git commit (وتراجع OpenCode يعتمد على git أيضاً). إن لم يكن هذا المجلد مستودعاً بعد، فشغّل git init مرة الآن حتى تعمل تلك الخطوات. وبينما أنت في ذلك، يستخدم فحص الأمان في الخطوة 6 على Claude Code أداة صغيرة اسمها jq، معظم الأنظمة فيها، لكن إن أخفقت الخطوة 6 ب "jq: command not found"، فثبّتها (brew install jq، أو apt install jq على Linux).
الخطوة 2: ضع خطة قبل فعل أي شيء
في Claude Code: اضغط Shift+Tab مرتين لتشغيل نمط التخطيط (يستطيع الذكاء الاصطناعي القراءة لكن لا تغيير أي شيء). ثم اكتب:
Read every file in notes/. Produce weekly-actions.md grouped by
owner. For each item include the action, the source filename, and
the meeting date. Skip anything tagged [private] or [HR]. Do not
lose any action items.
يفكّر الذكاء الاصطناعي لدقيقة ويعود بخطة مكتوبة لما سيفعله.
لماذا تهم هذه الخطوة: قراءة خطة تستغرق 30 ثانية. التراجع عن خطأ يستغرق أطول بكثير. خطّط أولاً دائماً.
في OpenCode: اضغط Tab للانتقال إلى نمط Plan. كل ما عداه متطابق.
الخطوة 3: تحقّق من الخطة وأصلح الأخطاء
في Claude Code: اقرأ الخطة بعناية. على الأرجح سيكون فيها أمران خاطئان.
الأول: ستذكر فقط العناوين ذات المستوى الأعلى (## Action Items، ## Todos). لكن أحد ملفات اجتماعاتك (ملاحظات تخطيط Q1) يخفي بنود مهام داخل ### Year-end promotional campaign، مع #### Action Items تحتها. الخطة ستفوّت تلك.
الثاني: لن تقول ماذا تفعل ببنود المهام التي لا مالك لها (لا @name بجانبها، مثل "rewrite the pricing page in plain language" في ملف ملاحظات العملاء). تلك ستختفي بصمت.
تعترض:
Two changes. (1) Look at all heading levels, not just the top.
Some action items live under sub-headings. (2) Items without an
owner go to an "Unassigned" section at the bottom; never drop
them.
يحدّث الذكاء الاصطناعي الخطة. اطلب منه حفظ الخطة النهائية في plans/weekly-rollup-plan.md لتعيد استخدامها الأسبوع المقبل.
لماذا تهم هذه الخطوة: إصلاح خطة أسهل بكثير من إصلاح عمل منتهٍ. التقط المشكلات الآن، حين لا تكلّف شيئاً.
في OpenCode: الخطوات نفسها، لا شيء مختلف.
الخطوة 4: دع الذكاء الاصطناعي ينجز العمل
في Claude Code: اضغط Shift+Tab لمغادرة نمط التخطيط. أخبر الذكاء الاصطناعي بالمضي قدماً.
يقرأ الذكاء الاصطناعي ملفات الاجتماعات الخمسة، وينشئ weekly-actions.md، ويجمّع البنود حسب المالك، ويزيل بنود [private] و[HR]، ويضع البنود التي لا مالك لها في قسم "Unassigned". وتراقب أنت ما يحدث.
لماذا تهم هذه الخطوة: لأنك خطّطت أولاً، تكون النتيجة صحيحة في معظمها من المحاولة الأولى.
يجب أن يكون weekly-actions.md في مجلد مشروعك الرئيسي، بجانب مجلد notes/، لا داخله. إن وضعه الذكاء الاصطناعي في المكان الخطأ، فقد يكون ملف قواعدك من الخطوة 1 يفتقر إلى قسم Layout.
في OpenCode: سيطلب الذكاء الاصطناعي موافقتك قبل كتابة كل ملف. يمكنك قول نعم، أو إعداد موافقة تلقائية في opencode.json للتشغيلات المقبلة.
الخطوة 5: نظّف المحادثة
في Claude Code: المحادثة الآن طويلة. قرأ الذكاء الاصطناعي كل ملاحظة اجتماع، وكل ذلك النص ما زال يأخذ مساحة، بما في ذلك البنود الخاصة التي تخطّاها. لم تعد بحاجة إلى أي من ذلك. اكتب:
/compact keep the heading rules, the owner list, and the
private/HR exclusion rule
يلخّص الذكاء الاصطناعي المحادثة ويتخلّص من كل ما عداه. لا يبقى إلا الأجزاء التي طلبت منه الاحتفاظ بها.
لماذا تهم هذه الخطوة: المحادثة الطويلة المزدحمة تجعل الذكاء الاصطناعي أسوأ، لا أفضل. وتكلّف أكثر أيضاً. امسح ما لم تعد تحتاجه، خاصةً المحتوى الخاص الذي يجب ألّا يبقى في الذاكرة.
في OpenCode: الأمر نفسه، النتيجة نفسها.
الخطوة 6: أضف فحص أمان تلقائياً
في Claude Code: قبل أن تحفظ عملك، تريد التأكد من أن أي اجتماع لم يُترك عرضاً. ستضيف hook: فحصاً تلقائياً يعمل في كل مرة يحاول فيها الذكاء الاصطناعي حفظ (إيداع) عملك. ("الحفظ" هنا يعني نقطة تحقق git commit، لحظة تسجيل لقطة في git، لا مجرد كتابة ملف weekly-actions.md.)
وعدت المقدمة بلا برمجة، وهذا ما زال قائماً: ستلصق كتلة هنا، لا تكتبها، ولا تحتاج إلى فهم الكود. الشرح بالإنجليزية المبسطة بعده مباشرةً هو كل ما تحتاجه. (يعتمد أيضاً على كون هذا المجلد مستودع git، انظر نصيحة الإعداد في الخطوة 1.)
هذا هو المكان الوحيد في الفصل الذي تلصق فيه كتلة إعداد بنفسك بدلاً من ترك النموذج يكتبها. لسببين، تعلّمناهما بالطريقة الصعبة.
(1) "hook" كلمة غامضة. إن قلت للنموذج "أنشئ hook"، فقد يلجأ Claude Code إلى git hook (ملف في .git/hooks/) بدلاً من Claude Code hook (مدخل في .claude/settings.json). هذان شيئان مختلفان؛ أنت تريد الثاني.
(2) سيكسر الذكاء الاصطناعي فحص الأمان عرضاً. يقول ملف قواعدك بتخطّي بنود [private]. إن طلبت من الذكاء الاصطناعي كتابة ال hook، فسيقرأ تلك القاعدة و"يضيف بإحسان" منطق التخطّي نفسه إلى ال hook. هذا يعني أن اجتماع مراجعة المورّد (حيث كل بند [private]) يُتجاهل بصمت من ال hook، ولا يُرفع أي تحذير أبداً. لكن المغزى كله من ال hook هو التقاط تلك الحالة بالضبط: اجتماع يبدو أنه تُخطّي. لا يمكنك أن تطلب من الذكاء الاصطناعي بناء فحص أمان ضد قواعده الخاصة. سيجد دائماً طريقة ليكون "محسناً" ويهزم الفحص.
الحركة الآمنة هي ببساطة لصق الإعداد.
افتح .claude/settings.json (أنشئ الملف إن لم يكن موجوداً) والصق هذا بالضبط:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.command' | grep -q '^git commit' || exit 0; for f in notes/*.md; do grep -q \"$(basename $f)\" weekly-actions.md || { echo \"Missing: $f\" >&2; exit 2; }; done"
}
]
}
]
}
}
ماذا يفعل هذا بالإنجليزية المبسطة: في كل مرة يحاول الذكاء الاصطناعي حفظ (إيداع) عملك، يفحص هذا ال hook شيئاً بسيطاً واحداً: هل كل ملف اجتماع من notes/ مذكور في مكان ما داخل weekly-actions.md؟ إن كان أي اسم ملف مفقوداً، يمنع الحفظ. لا يفحص المحتوى، ولا ينظر إلى وسوم [private]، ولا يصنع استثناءات. يفحص أسماء الملفات فقط. هذا هو المغزى كله.
راقب ما يحدث. أخبر الذكاء الاصطناعي بالإيداع. يُطلق فحص الأمان: Missing: notes/2026-12-11-vendor-review.md. لماذا؟ لأن كل بند مهمة في ذلك الاجتماع كان موسوماً ب [private]، وقواعدك من الخطوة 1 تقول بتخطّي البنود الخاصة. فعندما بنى الذكاء الاصطناعي الملخص، لم يكن لديه ما يكتبه من ذلك الملف، ولم يظهر اسم الملف قط. ال hook لا يعرف أيّاً من ذلك. يرى فقط اسم ملف مفقوداً ويمنع الحفظ.
يقرأ النموذج الخطأ ويرقّع التجميع بمدخل نائب يسمّي الملف صراحةً، مثل:
## From 2026-12-11-vendor-review.md
- All items confidential — see meeting owner.
اسم الملف الآن موجود في weekly-actions.md، ويجده grep الخاص بال hook، فيمرّ الإيداع. لم يتسرّب شيء خاص إلى التجميع؛ ومسار التدقيق سليم.
لم تفعل شيئاً خلال هذه الحلقة. شبكة الأمان التقطت الخطأ والنموذج أصلح نفسه.
لماذا. الأشياء التي تريدها صحيحة في كل مرة يجب ألّا تعتمد على تذكّر النموذج. يجب أن تُفحص تلقائياً. والفحص يجب أن يعيش في مكان لا يستطيع النموذج إعادة كتابته بهدوء ليُرضي نفسه: لهذا هذا لصق، لا تعليمة.
ما يتغير في OpenCode. يسمّي OpenCode هذه إضافات بدلاً من hooks، وتُكتب كملف JavaScript صغير. الفكرة نفسها، النتيجة نفسها، منطق "الصق-لا-تطلب" نفسه. أنشئ .opencode/plugins/check-rollup-complete.js (قد لا يوجد المجلد بعد) والصق هذا:
// .opencode/plugins/check-rollup-complete.js
import { readdirSync, readFileSync } from "fs";
export const CheckRollupCompletePlugin = async ({ $ }) => {
return {
"tool.execute.before": async (input, output) => {
if (
input.tool === "bash" &&
output.args.command?.startsWith("git commit")
) {
const rollup = readFileSync("weekly-actions.md", "utf8");
const missing = readdirSync("notes")
.filter((f) => f.endsWith(".md"))
.filter((f) => !rollup.includes(f));
if (missing.length) {
throw new Error(`Missing from rollup: ${missing.join(", ")}`);
}
}
},
};
};
الشكل نفسه: اسرد كل ملف في notes/، وافحص أن كل اسم أساسي موجود في التجميع، وارمِ خطأً إن كان أي منها مفقوداً. بلا مرشّح [private] بداخله. السلوك مطابق لنسخة Claude Code: ملف مفقود، إيداع ممنوع، النموذج يصلح نفسه.
مادة hook/الإضافة بعمق (أكواد الخروج، وصيغة matcher، وقائمة الأحداث الكاملة) في الفصل 14 § hooks وقابلية التوسعة (والإضافات: جمع كل شيء معاً لجانب OpenCode).
الخطوة 7: أرسل مهمة جانبية إلى مساعد
في Claude Code: بعض بنود المهام لها مواعيد نهائية مثل "by Dec 25" أو "before year-end". تريد التحقق هل يقع أي من تلك التواريخ في عطلة رسمية. اكتب:
Use a research helper to look up the 2026 international public
holidays list and write the dates to tmp/holidays-2026.md.
يذهب مساعد (وكيل فرعي) إلى الويب، ويجد تواريخ العطلات، ويحفظها في ملف صغير. محادثتك الرئيسية لا ترى صفحة الويب الكاملة أبداً. لا ترى إلا الملف الصغير بالتواريخ.
هذا هو النمط نفسه كالوكيل الفرعي في المفهوم 11، مساعد قادر على الويب يعيد ملخصاً فقط. كان ذلك هناك اسمه doc-fetcher وموصوفاً بضيق ل مستندات المكتبات، فلبحث عام كهذا، إمّا أن تعطي ذلك المساعد وصفاً أوسع (مثل "اجلب ولخّص المراجع والبحوث الخارجية") أو تصنع وكيل researcher صغيراً بأدوات WebFetch وWrite. مغزى الخطوة هو التفويض، لا الوكيل بالضبط.
ثم يقارن الذكاء الاصطناعي المواعيد النهائية في ملخصك بتواريخ العطلات ويضيف تحذيراً مثل ⚠ falls on Christmas Day بجانب أي موعد نهائي يقع في عطلة.
لماذا تهم هذه الخطوة: لو جلب الذكاء الاصطناعي صفحة الويب مباشرةً، لأغرق محادثتك بكمّ هائل من النص. إرسال مساعد يبقي محادثتك نظيفة.
في OpenCode: استدعِ مساعد بحثك مباشرةً بالاسم، مثل @researcher. النتيجة نفسها.
الخطوة 8: احفظ هذا كمهارة للمرة المقبلة
في Claude Code: ستؤدي هذه المهمة كل أسبوع. بدلاً من تذكّر كل هذه الخطوات الجمعة المقبلة، اطلب من الذكاء الاصطناعي حفظ كل شيء كمهارة:
Create a skill at ~/.claude/skills/weekly-meeting-rollup/SKILL.md
based on what we just did. Include: the four heading variants,
the all-headings rule, the private/HR exclusion, the Unassigned
section, the missing-file check, and the holiday cross-reference.
الجمعة المقبلة، اكتب فقط "do the weekly rollup" وسيستخدم الذكاء الاصطناعي هذه المهارة تلقائياً. كل القواعد التي أعددتها اليوم (تنويعات العناوين، ومرشّح الخصوصية، وقسم Unassigned، وفحص العطلات) تُطبَّق كل مرة دون أن تضطر إلى تذكّر أي شيء.
لماذا تهم هذه الخطوة: العمل الذي أنجزته اليوم لم يكن لليوم فقط. علّمت الذكاء الاصطناعي كيف يؤدي هذه المهمة من الآن فصاعداً.
في OpenCode: تُحفظ المهارة في مجلد مختلف قليلاً، لكن الملف نفسه متطابق. يمكنك نسخه بين الأداتين ويعمل في كلتيهما.
ماذا حدث للتو
انظر إلى الخطوات الثماني. لم تتطلب أي منها كتابة كود. لم تتطلب أي منها معرفة ما هو API. ما فعلته فعلاً كان ثماني حركات صغيرة من إدارة انتباه النموذج: إخباره بما ينظر إليه، ومتى يخطّط، ومتى ينسى، ومتى يفوّض، ومتى يتوقف عن الثقة بنفسه، ومتى يتذكّر.
هذا هو الفصل كله.
وانظر كم قلّ ما اختلف بين الأداتين:
- اسم ملف مختلف لملف القواعد (
CLAUDE.mdمقابلAGENTS.md) - ضغطة مفتاح مختلفة للدخول إلى نمط التخطيط (
Shift+TabمقابلTab) - لغة مختلفة لملف شبكة الأمان (JSON مقابل JavaScript)
- مجلد مختلف للمهارة في النهاية (لكن الملف نفسه)
هذا كل شيء.
التفكير هو الأداة. الإعدادات زينة. تعلّم التفكير بهذه الطريقة وستنجو مهاراتك أيّاً كانت الأداة الفائزة.
13. الطرفية، أم بيئة التطوير، أم سطح المكتب؟
تعمل الأداتان في أماكن عدة.
Claude Code: الطرفية (CLI)، وإضافات VS Code / JetBrains، وتطبيق سطح مكتب (مساحة عمل Code على macOS وWindows، لا Linux، مبنية لتشغيل عدة جلسات بالتوازي، كلٌّ في شجرة عمل git خاصة بها)، والويب (claude.com)، وتطبيق للهاتف، وجلسات مستضافة في السحابة للعمل غير المتزامن الذي تستطيع متابعته من أيٍّ منها.
OpenCode: الطرفية (واجهة TUI هي الأبرز)، وتطبيق سطح مكتب (إصدار تجريبي، على macOS / Windows / Linux)، وإضافة VS Code إضافةً إلى محررات أخرى مثل Zed عبر خادم ACP الخاص بها، وواجهة ويب عبر ال SDK، وتكاملات مثل وكيل GitHub وروبوت Slack.
اختر ما يناسب ما تفعله. إذا كنت تكتب كوداً، فإضافة VS Code أو JetBrains رائعة لأنك تستطيع مراقبة الذكاء الاصطناعي وهو يعدّل ملفاتك مباشرةً. وإذا كنت تشغّل مهام أطول وتريد القيام بأشياء أخرى أثناء انتظارك، فالطرفية تعمل جيداً. أما للعمل غير البرمجي، فأسهل الخيارات هي تطبيقات الويب، أو، من جهة Claude، تبويب Cowork في تطبيق سطح المكتب، وهو نمط العمل المعرفي الذي يقع إلى جانب تبويب Code (وهو Claude Code) في التطبيق نفسه.
التوصية القوية، في أيٍّ من الأداتين: ابدأ في الطرفية أو في إضافة بيئة التطوير. ما إن تفهم ما يجري في الأسفل (أيّ الملفات يقرؤها النموذج، وأيّ الأوامر يشغّلها، وأيّ القرارات يتخذها)، تصير كل واجهة أخرى مجرد غلاف رقيق تستطيع القراءة من خلاله. أما إذا بدأت بواجهة شديدة التجريد، فستجد صعوبة في تصحيح الأخطاء حين تسوء الأمور، لأنك لن تعرف ما الذي يمكن أن يسوء.
14. ابنِ مكتبة سياق شخصية، على مهل
ما إن يصير لديك بضعة مشاريع تستخدم أيّاً من الأداتين، ستلاحظ أنك تكتب أشياء متشابهة في كل ملف قواعد: أسلوب الكود لديك، وأعراف الإيداع، وفلسفتك في الاختبار. توقّف عن النسخ واللصق.
ضع الأجزاء المشتركة في إعدادك المنزلي وأشِر إليها من ملف قواعد كل مشروع:
~/.claude/CLAUDE.md (يُحمَّل في كل مشروع):
# CLAUDE.md
@~/.claude/style/typescript.md
@~/.claude/style/commits.md
ثم احتفظ بملف CLAUDE.md الخاص بكل مشروع لما هو فريد لذلك المشروع، فالملف العام أعلاه (والأساليب التي يستوردها) يُسحب في كل مكان تلقائياً.
~/.config/opencode/:
// ~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["style/typescript.md", "style/commits.md"]
}
إضافةً إلى ملف AGENTS.md خاص بالمشروع لما هو فريد لذلك المشروع.
الفكرة نفسها تنطبق على المهارات. مهارة commit-message أو مهارة code-review في ~/.claude/skills/ (الذي يقرؤه OpenCode أيضاً) أو في ~/.config/opencode/skills/ متاحة في كل مكان تلقائياً.
لا تحاول بناء هذا كله دفعةً واحدة. من المغري أن تقضي عطلة نهاية أسبوع في إعداد المكتبة الشخصية المثالية. لا تفعل ذلك. بل أضِف الأشياء واحداً تلو الآخر، فقط حين تحتاج إليها فعلاً. أضِف دليل أسلوب بعد أن يكتب الذكاء الاصطناعي كوداً بالأسلوب الخطأ. أضِف مهارة إيداع بعد أن تكتب تعليمات الإيداع نفسها للمرة الثالثة. المكتبة المبنية من مشكلات حقيقية تبقى صغيرة ومفيدة. أما المكتبة المصممة سلفاً فتنتهي كبيرةً ومُهملة.
15. الذاكرة بعد الأساسيات
بالنسبة لمعظم الناس، يكفي استئناف المحادثات القديمة والاحتفاظ بملف قواعد جيد. لكن إذا أردت أن يتذكر الذكاء الاصطناعي أشياء حتى بعد أن تبدأ محادثة جديدة، فهذه خياراتك:
- مجلد
notes/في مشروعك. بعد إنهاء مهمة، اطلب من الذكاء الاصطناعي أن يكتب ملخصاً قصيراً لما فعله وللقرارات التي اتُّخذت. احفظه في مجلدnotes/. في المرة التالية، يستطيع الذكاء الاصطناعي قراءة تلك الملاحظات ليلحق بالركب. بسيط، بلا أي إعداد، ويعمل في الأداتين. - خادم ذاكرة MCP. يمنح هذا الذكاءَ الاصطناعي طريقةً لحفظ المعلومات واستعادتها عبر المحادثات. توجد عدة خوادم مجانية تعمل في الأداتين.
- البحث عبر المحادثات القديمة. تتيح لك بعض الإعدادات البحث في محادثاتك السابقة لتعرف "هل حللت هذا من قبل؟" راجع مستندات أداتك لترى ما هو متاح.
بدأت الأدوات تنجز النسخة البسيطة نيابةً عنك. صار لدى Claude Code الآن ذاكرة تلقائية مدمجة: أثناء عملك، يكتب ملاحظاته القصيرة الخاصة عن تصحيحاتك وتفضيلاتك ويعيد تحميلها في بداية كل جلسة، وهي فكرة مجلد notes/ مؤتمتةً. (تعمل على خطتي Claude Pro وMax ولا تزال في طور الإطلاق التدريجي، فلا تعتمد عليها في كل مكان بعد؛ ومجلد notes/ اليدوي هو الأسلوب الذي يعمل في أي أداة، وعلى أي نموذج.) وفي كل الأحوال، هذا لا يفعل سوى ترسيخ القاعدة أدناه.
اختر بناءً على ما تحتاج إليه فعلاً. إذا أردت فقط تذكّر القرارات في مشروع واحد، فمجلد notes/ يكفي. وإذا أردت أن يتذكر الذكاء الاصطناعي كل شيء عبر كل مشاريعك، فأنت بحاجة إلى شيء أكثر تقدّماً. لا تُعدّ أدوات معقدة قبل أن تكون لديك مشكلة حقيقية تحلّها.
الجزء 8: الجمع بين Claude Code وOpenCode
حتى الآن، عاملت هذه الدورة Claude Code وOpenCode كخيارين: اختر واحداً وتعلّمه. لكن ما إن ترتاح للأساسيات، تستطيع فعلاً استخدام الأداتين معاً على المشروع نفسه. هذه ليست مجرد خطة احتياطية. لكل أداة نقاط قوة تفتقر إليها الأخرى، والجمع بينهما قد يكون أكثر فعاليةً من استخدام أيٍّ منهما وحدها.
الحفاظ على الأمان: أشجار عمل git
قبل أن ننظر في الأنماط، هناك مشكلة أمان واحدة يجب حلّها أولاً.
إذا شغّلت جلستي ذكاء اصطناعي على المشروع نفسه في الوقت نفسه، وحاولت كلتاهما تعديل الملف نفسه، فستطمس إحداهما تغييرات الأخرى. وتلك فوضى.
الحل يُسمى أشجار عمل git (git worktrees). تخيّلها كأنك تصنع نسخةً من مجلد مشروعك، لكن بذكاء. كل نسخة (تُسمى "شجرة عمل") هي مساحة عملها الخاصة حيث يستطيع الذكاء الاصطناعي العمل باستقلالية. التغييرات في إحدى أشجار العمل لا تؤثر في الأخرى. وحين تنتهيان معاً، تدمج النتائج باستخدام git.
إليك كيفية الإعداد:
كيف يعمل خطوةً بخطوة:
# Step 1: Go to your project folder
cd myproject
# Step 2: Create two worktrees (two separate copies, each on a NEW branch)
# The -b flag creates the branch; without it, git expects the branch to already exist.
git worktree add -b my-branch-1 ../myproject-copy1
git worktree add -b my-branch-2 ../myproject-copy2
الآن صار لديك مجلدان منفصلان (myproject-copy1 وmyproject-copy2)، كلٌّ منهما يحمل نسخته الخاصة من مشروعك على فرع مختلف.
# Step 3: Open Claude Code in one copy
cd ../myproject-copy1
claude
# Step 4: Open OpenCode in the other copy (in a separate terminal window)
cd ../myproject-copy2
opencode
أداتا الذكاء الاصطناعي تعملان الآن في الوقت نفسه على نسختين مختلفتين. ولا تستطيعان طمس ملفات بعضهما بعضاً.
# Step 5: When you're happy with the work, go back to the main folder and
# merge each branch into your main branch (it may be called main or master).
# Because the two sessions worked in different files (see the rule below),
# these merges should apply cleanly.
cd ../myproject
git merge my-branch-1
git merge my-branch-2
# Step 6: Clean up the copies (this removes the worktrees; your merged
# commits are safe in the main branch)
git worktree remove ../myproject-copy1
git worktree remove ../myproject-copy2
قاعدة تعديل الملفات، في ثلاث مراتب:
| النمط | الحكم |
|---|---|
| جلستان تعدّلان الملف نفسه في الوقت نفسه | سيّئ: آخر كتابة تفوز، وتُفقد تعديلات الجلسة الأخرى |
| جلستان تعدّلان مجلدين مختلفين | جيّد: لا تنازع، والتسارع المتوازي حقيقي |
| جلسة تعدّل وتُودِع وتسلّم للأخرى | مقبول: الإيداع هو أداة التسليم |
قاعدة عامة: ابدأ بجلسة واحدة لكل مهمة. أضِف ثانيةً فقط حين تستطيع أن تشير بوضوح إلى أيّ الملفات تملكها كل جلسة. الكلفة الذهنية للتنقّل بين جلستي ذكاء اصطناعي حقيقية؛ ولا تكون مكسباً إلا حين ينقسم العمل انقساماً حقيقياً.
الطبقة المشتركة التي تجعل أيّاً من هذا ممكناً هي قواعد المشروع ومهاراته. تقرأ الأداتان CLAUDE.md نفسه ومجلد .claude/skills/ نفسه (يغطي ذلك المفهومان 8 و9). مصدر حقيقة واحد لأعراف المشروع؛ وأداتان تستهلكانه.
النمط 1: فصل التخطيط عن التنفيذ
الجزء الصعب في أي مهمة هو معرفة ماذا تفعل: قراءة المشروع، واختيار نهج، والتفكير فيما قد يسوء. أما الجزء السهل فهو التنفيذ الفعلي ما إن يصير لديك خطة واضحة. ونماذج الذكاء الاصطناعي تعكس ذلك: أقوى النماذج (وأغلاها) هي الأفضل في جزء التفكير والتخطيط. والنماذج الأرخص تتولى جزء "اتبع هذه التعليمات فحسب" المباشر تماماً بلا مشكلة.
كيف تفعل ذلك عملياً:
- افتح Claude Code في نمط التخطيط. صِف ما تريد. دعه يضع خطة مفصّلة.
- احفظ الخطة في ملف (مثل
docs/plans/my-feature.md). - افتح OpenCode في شجرة عمل منفصلة، مستخدماً نموذج ذكاء اصطناعي أرخص. قل له:
read docs/plans/my-feature.md and implement it. - يتبع OpenCode الخطة: يعدّل الملفات، ويشغّل الاختبارات، ويصلح التنسيق.
- (اختياري) عُد إلى Claude Code لمراجعة التغييرات قبل أن تدمجها.
ملف الخطة هو العقد. يبقى رغم فقدان الجلسة، ويرمّز القرارات المعمارية، ويتيح للجلسة الرخيصة أن تعمل دون إعادة التفكير المُكلِف. هذا النمط وحده كثيراً ما يحقق معظم وفورات التكلفة التي تأمل الفرق الحصول عليها من "التحول إلى نموذج أرخص"، دون فقدان جودة التخطيط بنموذج متقدّم.
النمط 2: المراجعة عبر النماذج
في دورة صياغة تعليمات الذكاء الاصطناعي، تعلّمت أن جعل ذكاء اصطناعي ثانٍ يراجع عمل الأول يكشف مزيداً من الأخطاء. وهنا نفعل الشيء نفسه بأدوات البرمجة.
لماذا ينجح هذا: الذكاء الاصطناعي الذي كتب الكود هو أسوأ من يراجعه. لديه نقاط العمى نفسها التي سببت الأخطاء أصلاً. أما نموذج ذكاء اصطناعي مختلف (من شركة مختلفة، مدرَّب على بيانات مختلفة) فسيلاحظ أشياء فاتت الأول.
كيف تفعلها:
- الأداة أ (أي نموذج) تكتب الكود في شجرة عملها الخاصة.
- الأداة ب (نموذج ذكاء اصطناعي مختلف) تقرأ التغييرات وتكتب مراجعةً إلى
docs/reviews/my-feature.md. لا تعدّل أي كود؛ بل تكتب ملاحظاتها فقط. - الأداة أ تقرأ المراجعة وتقرر أيّ الاقتراحات تتبع.
هذا أكثر فائدةً مما يبدو. حتى نموذج ذكاء اصطناعي رخيص يُستخدم مراجِعاً يكشف مشكلات حقيقية: حالات حافة مفقودة، وثغرات أمان، وأسماء مربكة، وكود غير مستخدم. كلفة تشغيل مراجعة صغيرة؛ وكلفة اكتشاف خطأ بعد أن تكون قد أطلقت العمل أكبر بكثير.
أفضل النتائج تأتي من خلط مزوّدي الذكاء الاصطناعي. Claude يراجع كود Claude نفسه سيفوته الشيء نفسه. لكن GPT يراجع كود Claude (أو العكس) يكشف أنواعاً مختلفة من الأخطاء. استخدام الذكاء الاصطناعي نفسه للكتابة والمراجعة معاً لا يزال أفضل من لا مراجعة، لكن استخدام ذكاءين اصطناعيين مختلفين أفضل بكثير.
ما الذي يبقى بأداة واحدة
لا تحتاج دائماً إلى أداتين. استخدام الاثنتين معاً يتطلب إعداداً إضافياً: إعدادان، وقائمتا أذونات، وإعدادا تنبيهات. للمهام الصغيرة (إصلاح خطأ، أو كتابة دالة واحدة، أو تنظيف ملف)، أداة واحدة في جلسة واحدة أسرع وأبسط.
متى تستخدم الأداتين معاً:
- المهمة كبيرة بما يكفي ليكون التخطيط والبناء خطوتين منفصلتين بوضوح
- تريد توفير المال باستخدام نموذج أرخص لجزء البناء
- تريد مراجعةً مستقلة من ذكاء اصطناعي مختلف قبل الدمج
لكل ما عدا ذلك، أداة واحدة تكفي. المهارات التي تعلّمتها في الأجزاء 1 إلى 7 هي ما ستستخدمه معظم الوقت.
كيف تتقن هذا فعلاً
قراءة هذه الدورة المكثفة لا تجعلك بارعاً في هذه الأدوات. استخدامها الفعلي هو ما يفعل. إليك كيف تبدو عملية التعلّم:
ستبدأ بفعل كل شيء يدوياً. وستصطدم بمشكلات. وتلك المشكلات هي كيف تتعلّم. كل مشكلة تعيدك إلى أحد المفاهيم الخمسة عشر في هذه الدورة:
| المشكلة التي تصطدم بها | ما تصلحه |
|---|---|
| "لماذا يظل الذكاء الاصطناعي ينسى قواعد مشروعي؟" | ملف قواعدك مفقود أو طويل جداً (المفهوم 8) |
| "لماذا حذف الذكاء الاصطناعي للتو مجلداً مهماً؟" | أذوناتك ليست صارمة بما يكفي (المفهوم 3) |
| "لماذا يسوء الذكاء الاصطناعي بعد ساعة من الدردشة؟" | المحادثة طويلة جداً؛ استخدم /compact (المفهوم 6) |
| "لماذا تنفجر فاتورتي (أو حدّ استخدامي) في عمل بسيط؟" | تشغّل نموذجاً غالياً على كل شيء؛ طابق النموذج للمهمة (المفهوم 4) |
| "لماذا أكتب التعليمات نفسها كل أسبوع؟" | حوّل تلك التعليمات إلى مهارة (المفهوم 9) |
| "لماذا انهار كل شيء حين حاول الذكاء الاصطناعي الحفظ؟" | تحتاج إلى hook أو إضافة لالتقاط ذلك (المفهوم 10) |
| "لماذا يزدحم البحث في الملفات بمحادثتي؟" | استخدم وكيلاً فرعياً ليقوم بالبحث بشكل منفصل (المفهوم 11) |
أصلح كل مشكلة حين تصطدم بها، لا قبلها. ابدأ بملف قواعد صغير. أضِف سطراً واحداً حين يسوء شيء. أنشئ أول مهارة لك حين تلاحظ أنك تكرر نفسك. أضِف hook حين ينهار شيء كان يجب التقاطه تلقائياً. دع إعدادك ينمو بشكل طبيعي من تجربة حقيقية.
المهارة الحقيقية ليست حفظ خمسة عشر مفهوماً. بل التعرّف على المفهوم الذي تستخدمه حين تظهر مشكلة. وذلك لا يأتي إلا من الممارسة.
مهاراتك تنتقل بين الأدوات. ما إن تتعلّم التفكير بهذه الطريقة في أداة واحدة، يصير التحول إلى الأخرى سهلاً. الأزرار والإعدادات مختلفة، لكن التفكير واحد. اختر أداةً واحدة، وابدأ بمشروع واحد، واستخدم نمط التخطيط، وأبقِ محادثاتك قصيرة. كل ما عدا ذلك يُبنى من هنا.
مرجع سريع
المفاهيم الخمسة عشر في سطر واحد لكل منها
- هذه الأدوات تنجز العمل، لا تجيب عن الأسئلة فحسب. (ما هي) أعطِ تعليمات، لا أسئلة.
- نمط التخطيط. (ميزة) اجعل الذكاء الاصطناعي يريك خطته قبل أن يغيّر أي شيء. (
Shift+Tabفي Claude Code، وTabفي OpenCode.) - الأذونات. (إعدادات) يسأل الذكاء الاصطناعي قبل كل فعل. ابدأ بالموافقة يدوياً. وافِق تلقائياً على الأفعال الآمنة لاحقاً.
- طابق النموذج للمهمة. (اختيار النموذج) نموذج قوي للتخطيط والاستدلال؛ ونموذج رخيص أو مجاني للتنفيذ. بدّل ب
/model(Claude Code) أو/models(OpenCode). - المحادثات تسوء كلما طالت. (السياق) يفقد الذكاء الاصطناعي تتبّع التفاصيل ويكلّف أكثر. أبقِ المحادثات مركّزة.
/clear= ابدأ من جديد./compact= المهمة نفسها، فوضى أقل. (أوامر) لا تخلط بينهما.- استأنف المحادثات القديمة. (أوامر) عُد غداً وتابع من حيث توقفت. احفظ الخطط في ملفات احتياطياً.
- ملف القواعد. (
CLAUDE.md/AGENTS.md) أبقِه قصيراً. اكتب فقط ما لا يستطيع الذكاء الاصطناعي اكتشافه بالنظر إلى ملفاتك. - الأوامر والمهارات. (
.claude/skills/) نظام تعليمة محفوظة واحد: تستدعيه ب/name، أو يستدعيه النموذج تلقائياً من وصفه. - Hooks / الإضافات. (
settings.json/.opencode/plugins/) قواعد تعمل في كل مرة، مهما حدث. لا يستطيع الذكاء الاصطناعي تخطّيها. - الوكلاء الفرعيون. (
.claude/agents/) أرسل مساعداً للقيام بالقراءة الثقيلة كي تبقى محادثتك الرئيسية نظيفة. - MCP. (اتصالات خارجية) يربط الذكاء الاصطناعي بالخدمات الإلكترونية (Slack، وGitHub، وقواعد البيانات). أضِف فقط ما تحتاج إليه فعلاً.
- أين تشغّلها. (الطرفية / بيئة التطوير / الويب) ابدأ في الطرفية أو في إضافة بيئة تطوير كي ترى ما يفعله الذكاء الاصطناعي.
- المكتبة الشخصية. (
~/.claude//~/.config/opencode/) شارِك قواعدك ومهاراتك عبر المشاريع. ابنِها ببطء من مشكلات حقيقية. - الذاكرة. (مجلد
notes/) استئناف المحادثات وملف قواعد جيد يكفيان معظم الناس. أضِف مجلدnotes/إذا احتجت إلى المزيد.
مرجع الأوامر السريع
| تريد أن... | Claude Code | OpenCode |
|---|---|---|
| تُنشئ ملف قواعد المشروع | /init | /init |
| تدخل نمط التخطيط | Shift+Tab (مرتين) | Tab (تنقّل إلى وكيل Plan) |
| تبدّل النموذج | /model | /models |
| تمسح المحادثة وتبدأ من جديد | /clear | /new (أو /clear) |
| تلخّص وتتابع | /compact | /compact (أو /summarize) |
| تستأنف جلسة محفوظة | claude --resume | /sessions (أو /resume) |
| تقفز إلى رسالة سابقة | Esc Esc (أو /rewind) | /undo |
| تتراجع عن تعديلات النموذج للملفات | Esc Esc (نقاط تحقّق) | /undo (يحتاج git) |
| تتراجع عن تغييرات أوامر bash للملفات | (غير متتبَّع) | /undo (فرق الشجرة كاملةً) |
تعيد (تعكس آخر /undo) | (غير مضمَّن) | /redo |
| تصدّر المحادثة أو تشاركها | /export (يحفظ نسخة) | /share (رابط عام) أو /export |
مرجع مواقع الملفات السريع
| ماذا | Claude Code | OpenCode |
|---|---|---|
| قواعد المشروع | CLAUDE.md | AGENTS.md (يقرأ CLAUDE.md أيضاً احتياطياً) |
| أذونات المشروع | .claude/settings.json | opencode.json |
| أوامر المشروع | .claude/commands/*.md | .opencode/commands/*.md |
| مهارات المشروع | .claude/skills/<name>/SKILL.md | .opencode/skills/<name>/SKILL.md (يقرأ .claude/skills/ أيضاً) |
| hooks/إضافات المشروع | .claude/settings.json (كتلة hooks) | .opencode/plugins/*.{js,ts} |
| الوكلاء الفرعيون للمشروع | .claude/agents/*.md | .opencode/agents/*.md |
| القواعد الشخصية/العامة | ~/.claude/CLAUDE.md | ~/.config/opencode/AGENTS.md |
| الأوامر/المهارات/الوكلاء الشخصية | ~/.claude/{commands,skills,agents}/ | ~/.config/opencode/{commands,skills,agents}/ |
| خوادم MCP | .mcp.json (مشروع) / ~/.claude.json (شخصي) | opencode.json (كتلة mcp) |
شجرة قرار نوع التوسعة
Need to do the same thing repeatedly, manually?
→ Slash command (CC) / Custom command (OC)
Want the model to apply expertise automatically when a task matches?
→ Skill
Need something to happen every single time, no model judgment?
→ Hook (CC) / Plugin (OC)
Need a chunk of work done in isolation so it doesn't pollute main context?
→ Subagent
حين يبدو شيء خاطئاً
Model apologizing without progress, rewriting the same code,
hallucinating variables, contradicting earlier constraints?
→ Context is poisoned. Stop typing. Run /compact or /clear.
Don't try to fix it with another prompt.
بطاقات مراجعة للدراسة
اختبار: 52 سؤالاً عن المفاهيم الخمسة عشر
اختبر ما تعلّمته. تعرض كل جلسة مجموعة جديدة من 18 سؤالاً، فتحصل على أسئلة جديدة في كل مرة تعيد فيها الاختبار.