ملاحظة الكاتب: يشرح هذا المقال ثلاث حالات تُطلق ضغط سياق الوكيل تلقائيًا، واستراتيجيات تحديد ما يُحتفظ به في الملخص، مع كود قابل للتشغيل يساعدك على التحكم في استهلاك التوكنات خلال المحادثات الطويلة دون فقدان المعلومات الأساسية للمهمة.
بعد العمل لعدة ساعات متواصلة مع وكيل برمجة مثل Codex، يتساءل كثير من المطورين: لا يظهر قرب مربع الإدخال سوى وضع الأذونات والنموذج الحالي، ولا توجد إشارة إلى حجم السياق المستخدم، فمتى ينبغي فتح نافذة جديدة؟ كلما طالت المحادثة، اضطر كل طلب جديد إلى تضمين مزيد من السجل، مما يستهلك الحصة المتاحة بسرعة أكبر. يتناول هذا المقال متى يُفعّل ضغط سياق الوكيل تلقائيًا (Context Compaction) واستراتيجيات التلخيص، ليساعدك على فهم الآليات وراء أدوات مثل Codex وتطبيق القدرة نفسها في وكيلك الخاص.
هذه ليست مجرد نصيحة عامة أخرى تقول «تذكّر تنظيف سجل المحادثة»، بل حلول عملية تستند إلى آليات الضغط المنشورة في الوثائق الرسمية لـ OpenAI وAnthropic، وإلى الخبرة الهندسية العملية.
الفائدة الأساسية: بعد قراءة المقال، ستعرف متى يُفعّل ضغط سياق الوكيل تلقائيًا، وما الذي ينبغي الاحتفاظ به أو استبعاده من الملخص، وستحصل على تطبيق بلغة Python يمكنك تعديله واستخدامه مباشرةً.

أبرز نقاط الضغط التلقائي لسياق الوكيل
الخلاصة: يبدأ الضغط التلقائي لسياق الوكيل عادةً عندما يصل السياق إلى حد محدد من الرموز (Tokens). ويحوّل المحادثات السابقة وسجلات استدعاء الأدوات إلى وصف للحالة يتيح للوكيل مواصلة العمل. والهدف ليس مجرد تقصير سجل المحادثة، بل الحفاظ على تقدم المهمة والحقائق المهمة والإجراءات المنجزة والقرارات الرئيسية والخطوات التالية، مع إزالة التفاصيل الزائدة.
| النقطة | التوضيح | الفائدة |
|---|---|---|
| التفعيل عند بلوغ حد الرموز | يُضغط السياق تلقائيًا عند وصوله إلى عدد محدد مسبقًا من الرموز | يمنع تجاوز نافذة السياق دون تدخل يدوي |
| الضغط الاستباقي | يستدعي التطبيق الضغط في وقت محدد، مثل اكتمال مرحلة من المهمة | يضغط المحتوى عند حدود منطقية، مما يقلل فقدان المعلومات |
| الإدارة التلقائية عبر إطار العمل | تقرر حزمة تطوير البرمجيات (SDK) أو بيئة تشغيل الوكيل متى يلزم الضغط بناءً على حجم السياق | جاهز للاستخدام ومناسب للبدء سريعًا |
| التلخيص بدلًا من الاقتطاع | يحتفظ بالتقدم والحقائق والقرارات والخطوات التالية | يتيح للوكيل مواصلة التنفيذ بعد الضغط |
| الضغط حسب المرحلة | لا يُنصح بالضغط بعد كل جولة | يوازن بين الاستفادة من ذاكرة التخزين المؤقت واكتمال المعلومات |
لماذا يحتاج الوكيل إلى الضغط التلقائي للسياق؟
واجهة API لنموذج اللغة الكبير لا تحتفظ بحالة المحادثة. وما نسميه «محادثة متعددة الجولات» يعني عمليًا إعادة إرسال سجل messages كاملًا إلى النموذج في كل جولة. لذلك، يتضمن طلب الجولة الخمسين محتوى الجولات التسع والأربعين السابقة كلها، ويزداد عدد رموز الإدخال بمعدل خطي أو أسرع. ويكون الأمر أكثر حدة مع الوكيل، لأن نتائج استدعاء الأدوات، مثل محتويات الملفات ومخرجات الطرفية ونتائج البحث، غالبًا ما تكون طويلة جدًا، وقد تملأ بضع جولات منها معظم نافذة السياق.
ينتج عن ذلك مشكلتان مباشرتان: الأولى هي التكلفة، فكلما زاد عدد رموز الإدخال في كل جولة، استُهلكت الحصة أسرع؛ والثانية هي الجودة، إذ قد يضعف انتباه النموذج إلى المعلومات المهمة في بداية السياق عندما يصبح طويلًا جدًا، أو قد يتجاوز السياق حجم النافذة ويؤدي إلى خطأ. ويهدف الضغط التلقائي لسياق الوكيل إلى الموازنة بين هاتين المشكلتين: فقبل امتلاء النافذة، وبينما لا تزال المعلومات كاملة، يُختصر السجل في ملخص موجز للحالة، لتتمكن الطلبات اللاحقة من العمل بسياق أخف.
لماذا لم يعد Codex يعرض استخدام السياق؟
لا نعرف سبب توقف العميل عن عرض حجم نافذة السياق، ولم نجد تفسيرًا رسميًا واضحًا، لذا لن نخمن. لكن المؤكد أن Codex يتضمن آلية مدمجة لضغط السياق، فلا تتراكم كل تفاصيل المحادثات الطويلة الأصلية بلا حدود. وإذا أردت متابعة الاستهلاك بدقة في كل جولة، فإن الطريقة الأكثر موثوقية هي الاطلاع على سجلات الاستدعاءات على مستوى API. وسنشرح الطريقة لاحقًا.

3 أوقات يمكن فيها تفعيل الضغط التلقائي لسياق الوكيل
يفترض كثيرون أن «السياق يُضغط عند استهلاك 80% منه»، لكن هذه ليست قاعدة رسمية. تحدد وثائق API الرسمية شروط التفعيل أساسًا باستخدام حد لعدد رموز Token، وليس نسبة ثابتة من نافذة السياق. كذلك، لا يلزم انتظار الاقتراب من الحد الأقصى للضغط؛ فكل من OpenAI وAnthropic تدعم الضغط الاستباقي.
مقارنة قواعد التفعيل في التطبيقات الرسمية
| طريقة التنفيذ | قاعدة التفعيل التلقائي | التوضيح الرسمي |
|---|---|---|
| OpenAI Responses API | بلوغ عدد الرموز بعد العرض قيمة compact_threshold |
يمكن تخصيص العتبة، ويتولى الخادم المعالجة تلقائيًا |
| OpenAI Agents SDK | ضغط السياق أو سياسة عتبة صريحة | يدعم الضغط التلقائي، والضغط عند عتبة ثابتة، والضغط الإجباري |
| Anthropic Messages API | بلوغ عدد رموز الإدخال قيمة trigger.value |
القيمة الافتراضية 150,000، والحد الأدنى 50,000 |
| Anthropic Tool Runner | بلوغ قيمة context_token_threshold |
القيمة الافتراضية 100,000 |
| الضغط عند الطلب من Anthropic | يبدأه التطبيق بنفسه | يمكن استدعاؤه بعد انتهاء دور محادثة كامل |
تُظهر هذه المقارنة قاسمًا مشتركًا: تعتمد قواعد التفعيل التلقائي في معظمها على «عدد رموز الإدخال»، مع إمكانية ضبط العتبة. كما تتيح جميعها للتطبيق أن يقرر بنفسه متى يُجري الضغط.
التوقيت الأول: التفعيل عند بلوغ عتبة الرموز
هذه أبسط آلية للحماية. بعد انتهاء كل استدعاء، اقرأ عدد رموز الإدخال الذي تُرجعه الواجهة، ونفّذ الضغط فور تجاوزه العتبة التي حددتها. لا يُنصح بضبط العتبة قرب الحد الأقصى للنافذة، لأن الضغط نفسه يتطلب إعادة إرسال السجل السابق إلى نموذج التلخيص، كما يجب ترك مساحة لمخرجات الأدوات في الجولة التالية.
عمليًا، يمكنك الاسترشاد بالقيمة الافتراضية لدى Anthropic: اضبط العتبة في النماذج ذات نافذة السياق الطويلة عند نحو مئة ألف رمز، مع التأكد من بقاء مساحة كافية بعدها لاستيعاب استجابة كاملة لاستدعاء أداة.
التوقيت الثاني: الضغط الاستباقي عند حدود مراحل المهمة
هذه الطريقة هي الأقل فقدانًا للمعلومات. توصي OpenAI بالضغط بعد إكمال مرحلة عمل ذات معنى، بدلًا من الضغط بعد كل جولة. مثلًا، عندما ينتهي الوكيل من مرحلة «تحديد الخطأ → تعديل الشفرة → اجتياز الاختبارات»، لا تعود محاولات التجربة والخطأ الوسيطة مهمة؛ يكفي تذكّر الملف الذي عُدّل، وسبب تعديله، وأن الاختبارات اجتازته بنجاح.
يسهل أيضًا كتابة ملخص دقيق عند الضغط بين المراحل، لأن المهمة تكون في حالة «نظيفة»، من دون استدعاءات أدوات معلّقة أو غير مكتملة.
التوقيت الثالث: ترك إطار العمل يدير الضغط حسب امتلاء السياق
إذا كنت تستخدم إطار عمل مثل Agents SDK أو Tool Runner، فيمكنك تفعيل استراتيجية الضغط المدمجة وترك بيئة التشغيل تقرر تلقائيًا متى تضغط السياق بناءً على مدى امتلائه. هذه الطريقة مريحة، لكنها تمنحك تحكمًا أقل في محتوى الملخص، لذا تناسب مرحلة بناء النماذج الأولية أو السيناريوهات العامة.
🎯 نصيحة تقنية: لا تتعارض التوقيتات الثلاثة مع بعضها. يُنصح بالاعتماد أساسًا على «الضغط الاستباقي عند حدود المراحل، مع استخدام عتبة الرموز كإجراء احتياطي». وإذا أردت التحقق من ملاءمة إعدادات العتبة مع نماذج مختلفة، يمكنك استخدام مفتاح API واحد عبر APIYI على apiyi.com للتبديل بين نماذج OpenAI وClaude وGemini وغيرها وإجراء اختبارات مقارنة.
استراتيجية التلخيص للضغط التلقائي لسياق الوكيل
يحدد توقيت التشغيل «متى نضغط السياق»، بينما تحدد استراتيجية التلخيص «ما الشكل الذي يصبح عليه». ومن أكثر علامات فشل الضغط شيوعًا أن ينسى الوكيل قيود المستخدم الأصلية أو يكرر عمليات سبق تنفيذها. والسبب الجذري هو أن الملخص يسجل «ما دار في المحادثة» بدلًا من «حالة المهمة».
ما الذي يجب الاحتفاظ به أو استبعاده من الملخص؟
| الفئة | ما يجب الاحتفاظ به | ما يمكن استبعاده |
|---|---|---|
| هدف المهمة | طلب المستخدم الأصلي، والقيود الإلزامية، ومعايير القبول | المجاملات والتأكيدات المتكررة |
| تقدم المهمة | الخطوات المكتملة والمرحلة الحالية | تفاصيل الاستدلال في كل خطوة |
| الحقائق المهمة | مسارات الملفات، وأسماء الدوال، وقيم الإعدادات، والأسطر المهمة من رسائل الخطأ | محتويات الملفات كاملة والسجلات المطولة |
| القرارات الأساسية | الحل المختار وأسباب اختياره | المناقشات المطولة للحلول المستبعدة |
| الخطوات التالية | قائمة المهام والمسائل التي لم تُحل | التفاصيل المكتملة التي لا تأثير لها لاحقًا |
تطبيق استراتيجية التلخيص في 5 خطوات
- الاحتفاظ بموجه النظام دائمًا: لا يخضع موجه النظام للضغط، ويظل دائمًا في بداية قائمة messages.
- الاحتفاظ بآخر N جولات كما هي: غالبًا ما ترتبط الجولات الأخيرة ارتباطًا وثيقًا بالعملية الحالية، لذا تُحفظ بنصها الأصلي ويُضغط الجزء الأقدم فقط.
- استخدام قالب ملخص منظم: يُطلب من نموذج التلخيص إخراج الملخص ضمن خمسة أقسام: «الهدف / التقدم / الحقائق / القرارات / الخطوة التالية»، لتجنب الإغفال الناتج عن التلخيص الحر.
- اختصار نتائج الأدوات أولًا: عند إرجاع أداة لنتائج طويلة جدًا، يُحتفظ بالمقاطع الأساسية فقط، مثل الأسطر الأولى والأخيرة من رسالة الخطأ، أو عناوين نتائج البحث وخلاصاتها.
- حفظ نص المستخدم الأصلي بشكل منفصل: يُنصح بالاحتفاظ بالقيود الصريحة التي يضعها المستخدم حرفيًا، مثل «لا تعدّل الواجهة العامة»، بدلًا من ترك النموذج يعيد صياغتها.
يُعد القالب المنظم أهم هذه الخطوات. فعند إجراء «تلخيص حر»، يميل النموذج إلى تلخيص طابع المحادثة العام، بينما تدفعه الأقسام المنظمة إلى مراجعة كل جانب على حدة، والحفاظ على معلومات الحالة اللازمة لمتابعة العمل.

البدء السريع بضغط سياق الوكيل تلقائيًا
فيما يلي طريقة عامة تعتمد على إدارة messages يدويًا من جهة العميل، وتعمل مع أي واجهة متوافقة مع OpenAI. الفكرة هي قراءة عدد رموز الإدخال من usage.prompt_tokens بعد كل استدعاء، وإذا تجاوز العدد الحد المحدد، تُرسل المحادثات القديمة إلى نموذج تلخيص لضغطها.
مثال مبسط
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # APIYI OpenAI 兼容接口
)
messages = [{"role": "system", "content": "你是一个编码助手。"}]
messages.append({"role": "user", "content": "帮我检查这个函数的边界条件"})
resp = client.chat.completions.create(model="gpt-4o-mini", messages=messages)
messages.append({"role": "assistant", "content": resp.choices[0].message.content})
# 每轮记录输入 Token,作为是否压缩的判断依据
print("本轮输入 Token:", resp.usage.prompt_tokens)
عرض الشفرة الكاملة لتنفيذ الضغط التلقائي لسياق الوكيل
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
MAIN_MODEL = "gpt-4o-mini" # 主任务模型,可按需替换
SUMMARY_MODEL = "gpt-4o-mini" # 摘要模型,可用更便宜的模型
TOKEN_THRESHOLD = 100_000 # 输入 Token 阈值,兜底触发
KEEP_RECENT = 6 # 保留最近 N 条消息原文
SUMMARY_PROMPT = """请把以下 Agent 对话历史压缩为任务状态摘要,严格按五个栏目输出:
【任务目标】用户原始需求与硬性约束(约束请逐字保留)
【当前进度】已完成的步骤与当前阶段
【关键事实】文件路径、函数名、配置值、关键报错
【已做决策】采用的方案及原因
【下一步行动】待办事项与未解决问题
不要记录寒暄和推理过程,不要编造历史中没有的信息。"""
def compact(messages: list) -> list:
"""把早期历史压缩为一条摘要消息,保留系统提示与最近对话。"""
system_msg = messages[0]
old = messages[1:-KEEP_RECENT]
recent = messages[-KEEP_RECENT:]
if not old:
return messages
history_text = "\n".join(f"[{m['role']}] {m['content']}" for m in old)
resp = client.chat.completions.create(
model=SUMMARY_MODEL,
messages=[
{"role": "system", "content": SUMMARY_PROMPT},
{"role": "user", "content": history_text},
],
)
summary = resp.choices[0].message.content
summary_msg = {"role": "user", "content": f"(以下为之前对话的压缩摘要)\n{summary}"}
return [system_msg, summary_msg] + recent
class CompactingAgent:
def __init__(self, system_prompt: str):
self.messages = [{"role": "system", "content": system_prompt}]
self.last_prompt_tokens = 0
def chat(self, user_input: str) -> str:
# 时机一:上一轮输入 Token 超过阈值时先压缩
if self.last_prompt_tokens > TOKEN_THRESHOLD:
self.messages = compact(self.messages)
self.messages.append({"role": "user", "content": user_input})
resp = client.chat.completions.create(model=MAIN_MODEL, messages=self.messages)
reply = resp.choices[0].message.content
self.messages.append({"role": "assistant", "content": reply})
self.last_prompt_tokens = resp.usage.prompt_tokens
return reply
def finish_stage(self):
# 时机二:完成一个任务阶段后主动压缩
self.messages = compact(self.messages)
self.last_prompt_tokens = 0
agent = CompactingAgent("你是一个严谨的编码助手。")
print(agent.chat("帮我定位登录接口偶发 500 的原因"))
agent.finish_stage() # 修复完成后,在阶段边界主动压缩
🚀 البدء السريع: سجّل عبر APIYI على apiyi.com للحصول على رصيد تجريبي مجاني. يكفي استبدال مفتاح API لتشغيل الشفرة أعلاه. توفر المنصة واجهة متوافقة مع OpenAI، ويمكن اختيار النموذج الرئيسي ونموذج التلخيص من مزوّدين مختلفين لتسهيل التحكم في التكلفة.
مقارنة طرق الضغط التلقائي لسياق الوكيل
| الطريقة | الميزة الأساسية | حالات الاستخدام | المنصات المتاحة |
|---|---|---|---|
| الضغط اليدوي على جهة العميل | تجميع messages يدويًا، مع تحكم كامل في آلية التلخيص |
الوكلاء المطوّرون داخليًا، والحاجة إلى قوالب تلخيص مخصصة | APIYI apiyi.com وواجهات API الرسمية المختلفة |
| الضغط على جهة الخادم عند بلوغ حد معين | مثل compact_threshold في Responses API |
تقليل الحاجة إلى إدارة الحالة على جهة العميل | المنصات التي تدعم هذه الواجهة |
| الضغط المدمج في إطار العمل | إدارة تلقائية عبر Agents SDK وTool Runner | بناء النماذج الأولية والمهام العامة | يتطلب حزمة SDK المناسبة |
| بدء جلسة جديدة | تلخيص المحادثة يدويًا ثم فتح نافذة جديدة | الاستخدام اليومي لتطبيقات مثل Codex | أي تطبيق عميل |
يوفر الضغط اليدوي على جهة العميل أكبر قدر من التحكم، لكنه يتطلب متابعة عدد الرموز وجودة الملخصات بنفسك. أما الضغط على جهة الخادم فيغنيك عن تجميع سجل المحادثة، لكن تفاصيل التلخيص لا تكون واضحة للمطور. وبالنسبة إلى الوكلاء المطوّرين داخليًا، غالبًا ما يكون الجمع بين «ملخص منظّم على جهة العميل وحدّ احتياطي للضغط» خيارًا أكثر موثوقية.

العلاقة بين الضغط التلقائي لسياق الوكيل وتكلفة التخزين المؤقت
قد يبدو أن الضغط يوفر المال دائمًا، لكن من المهم أيضًا مراعاة التخزين المؤقت للموجهات (Prompt Caching). وفقًا لتوضيحات APIYI بشأن تسعير التخزين المؤقت لدى OpenAI، تُحتسب تكلفة الجزء المسترجع من ذاكرة التخزين المؤقت بنسبة 10% من سعر الإدخال. وفي المحادثات الطويلة، يسهل الاستفادة من التخزين المؤقت عندما تظل بداية سجل المحادثة دون تغيير، فلا يكون عدد الرموز الجديدة المحاسبة بالسعر الكامل في كل جولة كبيرًا.
لكن عند ضغط السياق، تُستبدل بداية سجل الرسائل بملخص جديد، فلا يمكن الاستفادة من ذاكرة التخزين المؤقت في الطلب التالي، ويجب احتساب الإدخال مجددًا بالسعر الكامل. ولهذا لا توصي الإرشادات الرسمية «بالضغط في كل جولة»: فالضغط المتكرر يمنع الاستفادة من التخزين المؤقت مرارًا، وقد يجعل التكلفة أعلى من عدم الضغط. والنهج الأنسب هو ترك السجل ينمو بثبات خلال مرحلة معينة للاستفادة من التخزين المؤقت، ثم ضغطه مرة واحدة عند انتهاء المرحلة أو الاقتراب من الحد الأقصى.
الأسئلة الشائعة FAQ
Q1: ما الضغط التلقائي لسياق الوكيل (Agent)؟
هو اختصار المحادثات السابقة وسجلات استدعاء الأدوات في ملخص لحالة المهمة، يحل محل السجل الأصلي. يحدث ذلك عندما يصل السياق إلى عدد معين من الرموز (Tokens) أو تنتهي إحدى مراحل المهمة. والهدف هو تقليل رموز الإدخال في كل جولة، مع الحفاظ على التقدم والحقائق والقرارات والخطوات التالية، حتى يتمكن الوكيل من مواصلة العمل.
Q2: ما الفرق بين ضغط السياق وحذف جزء من السجل مباشرةً؟
الحذف يعني ببساطة إزالة أقدم الرسائل. وهو سهل التنفيذ، لكنه قد يؤدي إلى فقدان متطلبات المستخدم وقيوده الأصلية. أما الضغط فيستخدم نموذجًا لاستخلاص السجل في ملخص منظم، ما يحافظ على قدر أكبر بكثير من المعلومات. وفي المقابل، يتطلب استدعاءً إضافيًا للتلخيص وإعادة بناء ذاكرة التخزين المؤقت بعد الضغط.
Q3: هل توجد قاعدة موحدة تنص على الضغط عند استخدام 80% من السياق؟
لا. تحدد الوثائق الرسمية شروط تفعيل الضغط بناءً على عتبات لعدد الرموز. على سبيل المثال، العتبة الافتراضية في Anthropic Messages API هي 150,000 رمز، والحد الأدنى 50,000، بينما تبلغ العتبة الافتراضية في Tool Runner 100,000 رمز. وينبغي ضبط العتبة بحسب حجم نافذة سياق النموذج وحجم مخرجات كل استدعاء للأداة.
Q4: متى يُنصح بفتح نافذة جديدة في Codex؟
يُنصح بفتح نافذة جديدة بعد انتهاء مرحلة كاملة من المهمة، مثل اكتمال تطوير ميزة واجتياز اختباراتها. قبل ذلك، يمكنك أن تطلب من الوكيل ملخصًا يتضمن «الهدف / التقدم / الحقائق / القرارات / الخطوات التالية»، ثم تلصقه في بداية الجلسة الجديدة. وإذا أردت الانتقال إلى موضوع لا علاقة له بالمهمة الحالية، فافتح نافذة جديدة مباشرةً حتى لا يستمر السجل غير المرتبط في استهلاك حصتك.
Q5: كيف أراقب استهلاك الرموز إذا كان التطبيق لا يعرض استخدام السياق؟
يمكنك الاطلاع عليه على مستوى API. وفقًا لوثائق سيناريو استخدام OpenAI Codex، عند إعداد واجهة Codex لاستخدام APIYI، تُسجَّل تفاصيل كل استدعاء وإحصاءات استخدامه في لوحة تحكم APIYI على apiyi.com. يتيح لك ذلك رؤية زيادة رموز الإدخال في كل جولة من المحادثات الطويلة، وتحديد الوقت المناسب لضغط السياق أو بدء جلسة جديدة.
Q6: كيف أتحقق سريعًا من فعالية استراتيجية الضغط الخاصة بي؟
استخدم الشفرة الكاملة الواردة في هذا المقال لتشغيل المهمة متعددة الخطوات نفسها بثلاثة أوضاع: «دون ضغط»، و«الضغط عند بلوغ العتبة»، و«الضغط عند انتهاء المرحلة». ثم قارن إجمالي استهلاك الرموز بجودة إنجاز المهمة. ومن خلال APIYI على apiyi.com، يمكنك استخدام مفتاح API واحد لتشغيل النموذج الرئيسي ونموذج التلخيص من مزودين مختلفين، ما يساعدك على إيجاد التوازن المناسب بين التكلفة والجودة.
Q7: ما القيود المعروفة لضغط السياق؟
أولًا، قد يُغفل الملخص بعض التفاصيل، ولا سيما قيمة إعداد غير لافتة في الشفرة. ثانيًا، يؤدي كل ضغط إلى إبطال ذاكرة التخزين المؤقت، ما يرفع التكلفة عند تكراره. ثالثًا، قد «يستكمل» نموذج التلخيص أحيانًا معلومات غير موجودة. للتعامل مع ذلك، استخدم قالبًا منظّمًا، واحتفظ بقيود المستخدم حرفيًا، واكتب الحقائق المهمة، مثل مسارات الملفات، في ملف ملاحظات خارجي للمهمة بدلًا من الاعتماد على الملخص وحده.
أهم النقاط حول الضغط التلقائي لسياق الوكيل
- جوهر الضغط: تحويل السجل الطويل إلى حالة مهمة يمكن متابعة العمل منها، لا مجرد حذف أجزاء من السجل.
- ثلاثة توقيتات للضغط: عند بلوغ حدّ للرموز كإجراء احتياطي، أو استباقيًا بين مراحل العمل، أو عندما يديره إطار العمل بحسب ضغط السياق.
- لا توجد قاعدة 80%: يعتمد الحد الرسمي على عدد الرموز، وينبغي ضبطه وفق حجم نافذة السياق وحجم مخرجات الأدوات.
- ملخص منظّم: قسّم الملخص إلى خمسة أقسام: الهدف، والتقدم، والحقائق، والقرارات، والخطوات التالية، مع الاحتفاظ بقيود المستخدم حرفيًا.
- لا تضغط في كل جولة: يضعف الضغط المتكرر الاستفادة من ذاكرة التخزين المؤقت، لذا فإن تجميع عمليات الضغط عند نهاية المراحل أقل تكلفة.
- استخدم السجلات لسد الثغرات: إذا كان العميل لا يعرض بيانات الاستخدام، يمكنك متابعة نمو عدد الرموز في كل جولة عبر سجلات الاستدعاءات في APIYI على apiyi.com.
الخلاصة
أهم النقاط حول الضغط التلقائي لسياق الوكيل (Agent):
- متى يُفعّل الضغط: يُفضّل الضغط الاستباقي عند الانتقال بين مراحل العمل، مع استخدام عتبة الرموز كخيار احتياطي. أما الاستراتيجيات المدمجة في أطر العمل فتناسب البدء السريع.
- استراتيجية التلخيص: الاحتفاظ بموجه النظام وآخر بضع جولات بنصها الأصلي، وضغط سجل المحادثة الأقدم في ملخص منظّم من خمسة أقسام.
- التوازن في التكلفة: يؤدي الضغط إلى إبطال ذاكرة التخزين المؤقت؛ لذا يُفضّل أن ينمو السياق تدريجيًا خلال المرحلة، ثم يُضغط دفعة واحدة في نهايتها.
إذا كنت تستخدم Codex يوميًا، يمكنك اعتماد أسلوب يدوي للضغط: «لخّص ما أُنجز عند اكتمال كل مرحلة وافتح نافذة جديدة». وإذا كنت تطوّر وكيلًا بنفسك، يمكنك تعديل الشفرة الواردة في هذا المقال مباشرة. نوصي باستخدام APIYI عبر apiyi.com لاختبار النتائج بسرعة؛ إذ توفر المنصة رصيدًا مجانيًا للتجربة وواجهة موحدة لعدة نماذج، كما تتيح لك سجلات الاستدعاء رؤية التغير في عدد الرموز قبل الضغط وبعده بوضوح.
📚 المراجع
- توثيق OpenAI Responses API: شرح ضغط السياق وإعداد
compact_threshold - الرابط:
platform.openai.com/docs/api-reference/responses -
الوصف: التوثيق الرسمي للضغط التلقائي على جانب الخادم وإدارة الحالة
-
توثيق OpenAI Agents SDK: استراتيجيات إدارة السياق أثناء تشغيل الوكيل
- الرابط:
openai.github.io/openai-agents-python -
الوصف: كيفية إعداد استراتيجيات الضغط التلقائي والضغط عند عتبة ثابتة والضغط الإجباري
-
توثيق Anthropic لضغط السياق: إعدادات تفعيل الضغط في Messages API وTool Runner
- الرابط:
docs.anthropic.com - الوصف: القيم الافتراضية لكل من
trigger.valueوcontext_token_thresholdوكيفية الضغط عند الطلب
الكاتب: الفريق التقني في APIYI
التواصل التقني: يسعدنا تواصلكم معنا عبر الصفحة الرئيسية لموقع APIYI. ولمزيد من المعلومات حول إعداد Codex والمحادثات متعددة الجولات وفوترة التخزين المؤقت، يمكنكم زيارة مركز التوثيق على docs.apiyi.com.
