TuBrief
Subscribed Channels
Videos
Community

قواعد العزل لتوفير 80% من توكنات الجلسة عند إصلاح الكود القديم باستخدام Claude Code

TuBrief Editorial
September 12, 2026
0
Computing/Software

Written with AI assistance from the source video. The video is the authority.

العربية한국어EnglishEspañol中文DeutschFrançaisPortuguêsहिन्दीРусскийBahasa Indonesia日本語

Related Video

امنحني 50 دقيقة، وسأمنحك أكثر من 1000 ساعة من معرفة Claude Code (دليل 2026)51:29

امنحني 50 دقيقة، وسأمنحك أكثر من 1000 ساعة من معرفة Claude Code (دليل 2026)

Chase AI

More from the community

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

September 13, 2026

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

September 13, 2026

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

September 13, 2026

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

September 13, 2026

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

September 12, 2026

Apple Won the AI Race

September 12, 2026

Comments (0)

Log in to leave a comment

No posts yet

© 2026 . All rights reserved.

TuBrief
Subscribed Channels
Videos
Community
Log in

قواعد العزل لتوفير 80% من توكنات الجلسة عند إصلاح الكود القديم باستخدام Claude Code

عندما يقوم مطور في سنته الأولى أو أقل بإنشاء منتج بمفرده ويربط Claude Code بقاعدة أكواد قديمة ضخمة، تنفد ميزانية التوكِنات (Tokens) في أقل من ساعة. مع عدم وجود مطور خبير في الشركة للسؤال، وبعد التعرف فقط على أوامر واجهة سطر الأوامر (CLI) الأساسية، تفتح الطرفية (Terminal) لتستمر في تلقي إشعارات الخصم من بطاقة الائتمان.

لا يحتفظ Claude Code بحالة المحادثة على الخادم. يتم تجميع موجه النظام (System Prompt)، وملف إعدادات المشروع CLAUDE.md، وسجل المحادثات المتراكم، ونتائج استدعاء الأدوات في حمولة (Payload) واحدة في كل دورة وإرسالها مرة أخرى إلى واجهة برمجة تطبيقات Anthropic. في الدورات الأولى 1-2 مباشرة بعد بدء الجلسة، تظل التوكنات في حدود 15,000، ولكن بمجرد أن يبدأ الوكيل (Agent) في الاستكشاف وقراءة مخرجات البناء أو عشرات الآلاف من أسطر السجلات (Logs)، ترتفع الحمولة إلى 80,000 توكن. وبعد تجاوز 6 إلى 10 دورات، يتم تبادل ما بين 120,000 إلى 200,000 توكن في كل دورة. إنها بنية تُحسب فيها التكاليف بفائدة مركبة مع كل دورة.

بالنظر إلى الأسعار الرسمية للتخزين المؤقت للموجهات (Prompt Caching) من Anthropic، يتضح السبب بشكل أكبر. إذا تم الاحتفاظ بسياق البادئة نفسه، فإنك تدفع 10% فقط من تكلفة توكنات الإدخال الأساسية. من ناحية أخرى، إذا قرأ الوكيل عشرات الآلاف من الأسطر من الكود بشكل غير منتظم مما أدى إلى كسر بادئة التخزين المؤقت، فسيتم تطبيق تكلفة إنشاء تخزين مؤقت جديدة بـ 1.25 ضعف بناءً على فترة صلاحية (TTL) تبلغ 5 دقائق. هذا هو السبب في أن بضع عمليات بحث فقط يمكن أن تسجل رسومًا يصعب على الشخص تحملها بمفرده.

.claudeignore لا يعمل

كثير من المطورين يشعرون بالارتياح بعد إنشاء ملف .claudeignore في الدليل الجذر. الخلاصة هي أن محرك واجهة سطر الأوامر الرسمي لـ Claude Code لا يحتوي على ملف الإعدادات هذا. كما أن طريقة كتابة "لا تقرأ مجلد السجلات" في ملف CLAUDE.md يتجاهلها النموذج إذا رأى أنها ضرورية.

لكقطع وصول الوكيل إلى الملفات فعليًا على مستوى المحرك، يجب عليك استخدام إعداد permissions.deny في ملف .claude/settings.json.

قم أولاً بتجميع مخرجات البناء وملفات الأمان في .claude/settings.json بجذر المشروع.

json { "permissions": { "deny": [ "Read(./.env*)", "Read(./secrets/**)", "Read(**/node_modules/**)", "Read(**/dist/**)", "Read(**/build/**)", "Read(**/coverage/**)", "Read(**/target/**)", "Read(**/*.log)", "Read(**/*.map)", "Read(legacy-backups/**)", "Edit(**/dist/**)", "Write(**/dist/**)" ], "ask": [ "Bash(git push *)", "Bash(npm publish)", "Bash(rm -rf *)" ], "allow": [ "Read", "Edit", "Bash(npm test)", "Bash(npm run lint)", "Bash(git status)", "Bash(git diff *)" ] } }

ولمنع سلوك سحب كود الواجهة الأمامية (Frontend) عند تعديل منطق الواجهة الخلفية (Backend)، احتفظ بملف إعدادات مخصص محليًا فقط باسم .claude/settings.local.json بشكل منفصل.

json { "permissions": { "deny": [ "Read(apps/web/**)", "Read(frontend/**)", "Read(public/**)", "Edit(apps/web/**)", "Write(apps/web/**)" ] } }

يجب عليك أيضًا منع الوكيل من تفريغ السجلات الكبيرة بالكامل في الطرفية باستخدام أوامر الصدفة مثل cat أو head. قم بربط خطاف (Hook) من نوع PreToolUse في ملف .claude/settings.json لاعتراض الأوامر مسبقًا.

json { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "bash", "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/block-large-reads.sh"] } ] } ] } }

قم بتنفيذ ملف .claude/hooks/block-large-reads.sh وإعطائه صلاحيات التنفيذ باستخدام chmod +x.

`bash
#!/usr/bin/env bash
PAYLOAD=(cat)COMMAND=(cat) COMMAND=(cat)COMMAND=(echo "$PAYLOAD" | jq -r '.tool_input.command // empty')

if echo "$COMMAND" | grep -Eq '(cat|head|tail|less)\s+.*(.log|.map|.lock|dist/|build/)'; then
echo "تم اكتشاف إخراج مباشر لملف كبير، سيتم إيقاف التنفيذ." >&2
exit 2
fi

exit 0
`

عند إرجاع رمز الخروج (Exit code) 2 على مستوى عملية نظام التشغيل، يتوقف إخراج الملفات للوكيل على الفور. من خلال منع عمليات الفحص غير الضرورية للملفات، يتم تقليل استهلاك التوكنات في الدورات الأولية إلى أقل من النصف.

حظر إعادة كتابة الملفات بالكامل وتمريرها على مستوى الدوال

إذا سمحت بإعادة كتابة الملف بأكمله لمجرد تغيير متغيّر واحد في ملف قديم يضم أكثر من 1,000 سطر، فستحدث أخطاء وتضيع توكنات الإخراج. يوجد داخل Claude Code أداة Write التي تقوم بالكتابة فوق الملفات، وأداة Edit التي تستبدل كتل نصوص محددة فقط.

يجب تثبيت قواعد التعديل في ملف CLAUDE.md بجذر المشروع.

`markdown

Code Modification Constraints

  • عدم إعادة كتابة الملف بأكمله إطلاقاً (Write).
  • استبدال الحد الأدنى فقط من الوحدة التي تتطلب التغيير باستخدام أداة Edit (old_string -> new_string).
  • عدم العبث عشوائيًا بتنسيق الكود المحيط أو المسافات البيضاء عند إصلاح الأخطاء.
  • التحقق من git diff قبل اكتمال العمل للتأكد من إدخال التغييرات المقصودة فقط.
    `

بدلاً من تمرير ملف كبير بأكمله إلى الوكيل، من الأفضل استخراج الدالة المستهدفة فقط. هذا سكريبت شل (extract-func.sh) يستخدم أداة تحليل AST المسمى ast-grep.

`bash
#!/usr/bin/env bash
TARGET_FILE=1FUNCNAME=1 FUNC_NAME=1FUNCN​AME=2

if [ -z "TARGETFILE"]∣∣[−z"TARGET_FILE" ] || [ -z "TARGETF​ILE"]∣∣[−z"FUNC_NAME" ]; then
echo "الاستخدام: ./extract-func.sh <مسار_الملف> <اسم_الدالة>" >&2
exit 1
fi

if command -v sg &> /dev/null; then
sg run --pattern "function FUNCNAME($$$ARGS)$$$BODY""FUNC_NAME(\$\$\$ARGS) { \$\$\$BODY }" "FUNCN​AME($$$ARGS)$$$BODY""TARGET_FILE"
else
LINE_START=(ctags−x−−c−kinds=f"(ctags -x --c-kinds=f "(ctags−x−−c−kinds=f"TARGET_FILE" 2>/dev/null | grep -w "$FUNC_NAME" | awk '{print 3}') if [ -n "LINE_START" ]; then
sed -n "LINESTART,{LINE_START},LINES​TART,((LINE_START + 100))p" "$TARGET_FILE"
else
grep -n -A 60 "function FUNCNAME""FUNC_NAME" "FUNCN​AME""TARGET_FILE"
fi
fi
`

قم بتمرير الدالة المستخرجة أو git diff المُجهّز فقط في الوضع بلا رأس (Headless mode عبر claude -p) لطلب التعديلات.

`bash

حقن دالة محددة فقط لاستخراج كود التعديل

./extract-func.sh src/billing.js processRefund | claude -p "قم بإخراج كتلة الكود البديلة فقط (new_string) لـ Edit والتي تصلح خطأ الحساب في الدالة أعلاه."

التحقق من التغييرات المُجهّزة فقط

git diff --staged src/services/OrderService.js | claude -p "قم بالإشارة فقط إلى عيوب التزامن المحتملة أو إمكانية المراجع الفارغة (null) التي قد تحدث في هذا الـ diff."
`

من خلال إدخال شرائح من 50 إلى 100 سطر فقط بدلاً من كود المصدر بأكمله، يمكنك تقليل استهلاك التوكنات لكل دورة بنسبة تقارب 90%.

حفظ حالة الجلسة وتفريغها باستخدام HANDOFF.md

لا توجد أسباب تطيل أمد العمل في جلسة واحدة. وكلما تراكم سجل المحادثات، زادت الرسوم الأساسية الواجب دفعها في كل دورة. يدعم نموذج Claude خاصية /autocompact التي تلخيص سجل المحادثات تلقائيًا عند الوصول إلى حوالي 967,000 توكن، ولكن أثناء عملية تقليل الكود، غالبًا ما يقوم النظام بحذف المعلمات المهمة أو سياق الحالات الحدية (Edge cases). يجب عليك تفريغ السياق بنفسك.

تحقق من الحالة الحالية في الطرفية باستخدام ثلاثة أوامر مدمجة:

  • /context: لعرض نسبة الذاكرة التي يشغلها موجه النظام وسجل المحادثات.
  • /usage: للتحقق من استخدام توكنات الجلسة ومعدل استنفاد حد الخطة.
  • /cost: للتحقق من التكلفة الفعلية بالدولار المتراكمة حتى الجلسة الحالية.

إذا تجاوز عدد التوكنات 100,000 أو انتهت وحدة عمل معينة، فاطلب من Claude Code كتابة HANDOFF.md قبل إغلاق الجلسة.

text قم بتسجيل حالة العمل الحالية للجلسة في ملف HANDOFF.md بجذر المشروع بالصيغة التالية: Goal: هدف العمل ووحدة العمل المستهدفة Current Progress: الملفات المعدلة والأسطر المحددة What Worked: المنطق الذي تم التحقق من صحته والاختبارات المجتازة What Failed: النهج الفاشل والاحتياطات الواجب اتخاذها ImmediateNext Step: المهمة الفردية التي يجب تنفيذها فور بدء الجلسة التالية

عند اكتمال التسجيل، فرّغ نافذة السياق بالأمر /clear. افتح جلسة جديدة وقم بتمرير ملخص الجلسة السابقة فقط.

text اقرأ ملف HANDOFF.md واستأنف العمل بدءاً من بند Immediate Next Step. لا تحاول استخدام الطريقة التي فشلت من قبل.

إذا بدأت في الدوران في نفس الخطأ لأكثر من 3 مرات، يجب عليك الضغط على مفتاح Escape فوراً للإيقاف. في حالة كان تفريغ الجلسة بالكامل غير مناسب، عد إلى الدورة السابقة التي كانت تعمل بشكل صحيح باستخدام /rewind. يحافظ الأمر /rewind على ذاكرة التخزين المؤقت لموجه بادئة النظام المؤسس، لذا يمكنك العودة إلى الفرع الطبيعي دون دفع تكاليف كتابة إضافية للتخزين المؤقت.

مستوى التحكم حسب طبقة الحماية

طبقة الحماية مكان الإعداد مستوى التحكم تأثير خفض التوكن الفعلي
تصفية ملفات التسخير .claude/settings.json (permissions.deny) فرض محرك CLI حظر 50% إلى 80% من توكنات الفحص الأولي لكل جلسة
جدار حماية أوامر الصدفة PreToolUse Hook (block-large-reads.sh) حظر عملية نظام التشغيل (Exit 2) حظر كامل بنسبة 100% لإخراج السجلات والملفات المجمعة بكميات كبيرة
تقطيع السياق مسار ast-grep و git diff تقييد نطاق الإدخال تقليل توكنات تحليل الملفات وتعديلها بنسبة 90% لكل دورة
إدارة عمر الجلسة /context, /clear, HANDOFF.md ديمومة الحالة يدويًا توفير أكثر من 60% من رسوم التوكنات المركبة المتراكمة في النصف الثاني من الجلسة

من خلال حظر المسارات غير الضرورية عبر .claude/settings.json، والالتزام بقاعدة تمرير الكود المقسم (المشرح) فقط بدلاً من الملفات الضخمة، يمكنك تشغيل Claude Code كأداة تطوير حقيقية في بيئة المطور الفردي.",
"language": "ar