التثبيت
قم بتنزيل ملف wheel من GitHub Releases باستخدامAGENTEYE_TOKEN الخاص بك. إذا لم تكن لديك رمز حتى الآن، راجع إعداد رمز GitHub لخطوات الإعداد والأذونات المطلوبة.
باستخدام gh CLI + pip:
gh CLI + uv:
gh CLI):
البدء السريع
configure()
event.*. من الآمن حذفه؛ الإعدادات الافتراضية تعمل بشكل جيد. جميع الوسائط حسب الكلمات الرئيسية فقط؛ مررها بالاسم كما هو موضح أعلاه.
عندما يكون base_dir هو None (الافتراضي)، يقرأ SDK $AGENTEYE_HOME إذا تم تعيينه،
وإلا يعود إلى ~/.agenteye. هذا يتطابق مع دقة الجامع الخاصة به،
لذا فإن متغير بيئة واحد AGENTEYE_HOME يقوم بتكوين مجمع الأحداث المشترك لكل من
SDK والجامع، مطلوب للنشر الجانبي / النشر في حاوية واحدة حيث
يجب أن توافق كلا العمليتين على مسار مجمع الأحداث.
البيئة
قم بتسمية كل حدث ببيئة نشر (production أو staging أو qa أو canary وما إلى ذلك). قم بتعيينه مرة واحدة؛ SDK يرفقه بكل حدث تلقائياً.
الخيار 1: عبر configure():
configure(environment=...) يفوز على متغير البيئة. إذا لم يتم تعيين أي منهما، يتم استخدام القيمة الافتراضية "dev".
تظهر قيمة البيئة كعامل تصفية من الدرجة الأولى في لوحة المراقبة وتُخزن كعمود مفهرس على الخادم للاستعلامات السريعة.
قيد: قيم البيئة يجب ألا تحتوي على فاصلة حرفية ,. تصفية لوحة المراقبة تستخدم تحديد متعدد مفصول بفواصل على السلك (?environment=prod,staging)، لذا فإن بيئة باسم prod,blue سيتم تقسيمها إلى قيمتين. يتم رفض الأحداث التي تحتوي على بيئات بها فواصل وقت الاستقبال.
مرجع الحدث
جميع طرق الحدث تتطلب هذين الحقلين:| الحقل | النوع | الوصف |
|---|---|---|
session_id | str | يحدد تشغيل الوكيل من المستوى الأعلى |
agent_id | str | يحدد أي وكيل داخل الجلسة أصدر الحدث |
**kwargs عشوائية لبيانات وصفية مخصصة (انظر الحقول المخصصة).
event.agent_start()
تُصدر عندما يبدأ الوكيل العمل.
event.agent_end()
تُصدر عندما ينتهي الوكيل من العمل.
event.tool_use()
تُصدر عندما يستدعي الوكيل أداة. اربطها مع tool_result؛ SDK يحسب duration_ms تلقائياً.
event.tool_result()
تُصدر عندما تعود أداة. ترتبط مع tool_use عبر tool_call_id.
event.model_request()
تُصدر قبل إرسال موجز إلى نموذج لغة كبير.
messages إما محتوى نصي عادي content أو قائمة كتل محتوى بأسلوب Anthropic. يمكن تمرير معاملات أخذ العينات (temperature وmax_tokens وما إلى ذلك) كـ kwargs إضافية.
event.model_response()
تُصدر عندما يعود نموذج اللغة برد.
content إما نص عادي (موفري عام) أو قائمة كتل محتوى بأسلوب Anthropic. استدعاءات الأدوات تعيش داخل content كأكتال {"type": "tool_use", ...}، بدون حقل tool_calls منفصل.
event.hook_triggered()
تُصدر عندما ينطلق خطاف. اربطه مع hook_completed؛ SDK يحسب duration_ms تلقائياً.
event.hook_completed()
تُصدر عندما ينتهي الخطاف. ترتبط مع hook_triggered عبر hook_id.
event.error()
تُصدر عندما يحدث خطأ غير معالج.
أحداث التدخل البشري
أحداث التدخل البشري تمنحك إشرافاً على اللحظات التي يتدخل فيها شخص في تنفيذ الوكيل (في انتظار الموافقة، أو توفير المدخلات، أو إيقاف مؤقت، أو إيقاف الوكيل). تسمح لك بقياس المدة التي يستغرقها البشر للرد (SDK يحسبduration_ms تلقائياً على الأحداث المزاوجة)، وتدقيق من أوقف أو قاطع وكيل، وبناء سير عمل الموافقة والإشراف التي تظهر في لوحة المراقبة.
event.human_wait()
تُصدر عندما يوقف الوكيل التنفيذ في انتظار شخص لتوفير مدخل. اربطها مع human_input؛ SDK يحسب duration_ms تلقائياً (المدة التي استغرقها البشر للرد).
event.human_input()
تُصدر عندما يوفر شخص مدخل ويستأنف الوكيل. ترتبط مع human_wait عبر input_id. يتم حساب duration_ms تلقائياً ولا يجب تمريره بواسطة المستدعي.
event.human_pause()
تُصدر عندما يوقف شخص الوكيل مؤقتاً بنشاط (مثلاً عبر تحكم لوحة المراقبة). يتم تعليق الوكيل لكن لا يتم إنهاؤه.
event.human_interrupt()
تُصدر عندما يوقف شخص الوكيل بنشاط أثناء التنفيذ. بخلاف human_pause، يتم إنهاء عمل الوكيل بدلاً من تعليقه.
الحقول المخصصة
أي وسائط كلمات رئيسية إضافية يتم إلحاقها بالحدث بعد الحقول القياسية:timestamp وtype وenvironment محجوزة وتثير ValueError (Reserved field names cannot be used as custom fields: [...]) إذا تم تمريرها كحقول مخصصة. session_id وagent_id معاملات مطلوبة على كل طريقة حدث ولا يمكن توفيرها مرة ثانية؛ Python يثير TypeError إذا فعلت ذلك. قم بتعيين البيئة باستخدام configure(environment=...) (أو متغير AGENTEYE_ENVIRONMENT) بدلاً من ذلك.
كيفية كتابة الأحداث
يتم حفظ الأحداث في الذاكرة المؤقتة وتفريغها إلى القرص كلflush_interval ثانية (500 مللي ثانية افتراضياً). كل عملية تفريغ تكتب ملف JSONL واحد:

