Pi Agent: Context Management
آخر تحديث: 2026-08-31
--- title: "إدارة السياق" description: "تعمّق في آلية سياق Pi Agent، بما في ذلك نوافذ السياق واستراتيجيات الاقتطاع وطرق الحقن وتقنيات التحسين." order: 7 lang: ar
السياق هو "الذاكرة قصيرة المدى" للوكيل — أدره جيداً، وإلا سينسى الوكيل "ما كان يتحدث عنه".
1. ما هو السياق
السياق هو جميع المعلومات المتراكمة خلال الجلسة:
- موجه النظام
- سجل المحادثات
- سجلات استدعاء الأدوات
- معلومات إضافية محقونة
TEXT
📖 للعرض فقط
بنية السياق
├── موجه النظام -> تعليمات ثابتة (تعريف الدور، قيود السلوك)
├── سجل المحادثات -> تراكم ديناميكي (رسائل المستخدم + استجابات الوكيل)
├── استدعاءات الأدوات -> عملية استدعاء الأدوات ونتائجها
└── سياق محقون -> حقن إضافي (محتويات ملفات، بيانات API، إلخ)
2. نافذة السياق
تحدد نافذة السياق مقدار ما يمكن للوكيل "تذكره" في وقت واحد:
(1) تعيين حجم النافذة
PYTHON
from pi_agent import Agent
agent = Agent(name="quick", context_window=2048) # صغيرة: توفير الرموز
agent = Agent(name="long", context_window=16384) # كبيرة: تذكر أكثر
agent = Agent(name="full", context_window=65536) # الحد الأقصى: القدرة الكاملة للنموذج
(2) النافذة مقابل التكلفة
| حجم النافذة | الأنسب لـ | تكلفة الرموز |
|---|---|---|
| 2K | أسئلة وأجوبة، تعليمات بسيطة | منخفضة |
| 8K | محادثات متعددة الأدوار، مراجعة كود | متوسطة |
| 32K | تحليل مستندات طويلة | عالية |
| 64K | تحليل مشاريع كبيرة | عالية جداً |
3. استراتيجيات الاقتطاع
عندما تتجاوز المحادثة النافذة، يوفر Pi Agent عدة استراتيجيات:
PYTHON
from pi_agent import Agent
agent = Agent(truncation_strategy="remove_oldest") # إزالة أقدم الرسائل
agent = Agent(truncation_strategy="summarize") # الذكاء الاصطناعي يلخّص الرسائل القديمة
agent = Agent(truncation_strategy="sliding_window", keep_recent=10) # الاحتفاظ بآخر N جولات
| الاستراتيجية | المزايا | العيوب |
|---|---|---|
| remove_oldest | بسيطة وفعالة | تفقد المعلومات المبكرة |
| summarize | تحافظ على النقاط الرئيسية | تكلفة رموز إضافية |
| sliding_window | قابلة للتحكم | قد تفقد سياقاً مهماً |
4. حقن السياق
(1) حقن يدوي
PYTHON
from pi_agent import Agent
agent = Agent(name="coder")
with open("main.py") as f:
agent.inject_context("current_file", f.read())
agent.inject_context("project_info", {
"name": "my_app",
"framework": "FastAPI",
"python_version": "3.11"
})
response = agent.chat("Help me add a health check endpoint")
# الوكيل يعرف أن المشروع يستخدم FastAPI، يُولّد كوداً بأسلوب FastAPI
(2) حقن تلقائي
PYTHON
agent = Agent(name="auto", auto_context=True)
# يحقن تلقائياً بنية دليل العمل ومعلومات git، إلخ.
5. تقنيات التحسين
(1) موجهات نظام موجزة
PYTHON
# مطوّل
agent = Agent(system_prompt="You are a very excellent programming assistant, skilled in Python, respond in detail...")
# موجز
agent = Agent(system_prompt="Python expert. Be concise.")
(2) تنظيف السجل غير الضروري
PYTHON
agent.clear_history() # مسح الكل عند تغيير الموضوع
agent.keep_recent(5) # الاحتفاظ بآخر 5 جولات فقط
(3) التلخيص التلقائي
PYTHON
agent.summarize_context() # تشغيل يدوي
agent = Agent(auto_summarize_threshold=3000) # تلقائي عند الحد
❓ أسئلة شائعة
س نافذة السياق مقابل طول سياق النموذج؟
ج النافذة هي حدك على مستوى الوكيل ولا يمكن أن تتجاوز الحد الأقصى للنموذج. مثلاً، deepseek-chat يدعم 64K؛ تعيين 100K لن يكون له تأثير.
س inject_context مقابل الكتابة في الرسائل؟
ج محتوى inject_context مستمر (لا يُزال بالاقتطاع)، بينما محتوى الرسائل قد يُقتطع. الأفضل للمعلومات المهمة عن المشروع.
س كم عدد الرموز الإضافية التي يكلفها التلخيص التلقائي؟
ج حوالي 10-20% من المحتوى المُلخّص. مثلاً، تلخيص 4000 رمز يكلف ~400-800 إضافية.
📖 ملخص
- السياق = موجه النظام + سجل المحادثات + استدعاءات الأدوات + محتوى محقون
- نافذة السياق تحدد حد الذاكرة؛ الأكبر أقوى لكن أعلى تكلفة
- ثلاث استراتيجيات اقتطاع: remove_oldest، summarize، sliding_window
- inject_context للمعلومات المستمرة التي لن تُقتطع
- ثلاث تقنيات تحسين: موجهات موجزة، تنظيف السجل، تلخيص تلقائي
📝 تمارين
- أساسي (الصعوبة: ⭐): أنشئ وكيلاً بقيم context_window مختلفة، لاحظ متى يبدأ "بالنسيان" في المحادثات متعددة الأدوار.
- متوسط (الصعوبة: ⭐⭐): قارن بين استراتيجيتي الاقتطاع remove_oldest وsummarize.
- متقدم (الصعوبة: ⭐⭐⭐): نفّذ "مدير سياق ذكي" يكتشف تلقائياً متى ينظف السجل ومتى يلخّص.