Record live agent project workflow

This commit is contained in:
Hamza Ayed
2026-10-04 20:07:40 +03:00
parent 03d65fca22
commit 43e44c9281
+1
View File
@@ -4,6 +4,7 @@
## الحالة الحالية — 2026-10-04
- 2026-10-04 — تجربة حية لدورة عمل الوكيل مع مشروع مؤقت: سجلت مجلدًا تجريبيًا محليًا عبر `/v1/agent/projects`، ثم أرسل Flutter-equivalent request إلى `/v1/agent/run/stream` مع `README.md` محددًا. قرأ Gemma 4 الملف، ثم استدعى `propose_file_change` وأعاد diff لتحديثه خلال 77 ثانية مع heartbeat وHTTP 200؛ بقي الملف دون تطبيق التعديل. أُلغي تسجيل المشروع وحُذف المجلد المؤقت بعد التحقق. هذا يثبت مسار API من تسجيل المشروع حتى معاينة التغيير، ولا يغلق اختبار اختيار المجلد وعرض diff داخل نافذة Windows.
- 2026-10-04 — متابعة انقطاع الوكيل بعد 4–5 دقائق: أُعيد تشغيل API التطبيق على `127.0.0.1:8000` مع قاعدة البيانات الحالية، وأكد `/health` أن Gemma 4 سليمة. طلب بحث حي عبر `/v1/agent/run/stream` اكتمل بـHTTP 200 وحدث `done` بعد 387 ثانية، مع 15 heartbeat؛ لم ينقطع SSE خلال أكثر من 6 دقائق. مهلة عميل Flutter للبث هي 10 دقائق، والـheartbeat يعيد ضبط مهلة خمول تدفق الأسطر، لذا لا تفسر مدة 4–5 دقائق وحدها الانقطاع. اجتازت مجموعة اختبارات الوكيل/البث/المهل 32/32، ونجح `compileall` و`git diff --check`. أُضيف fallback يعرض مقتطفًا لكل هدف بحث صريح إذا توقف Gemma قبل إكمال تنسيق الجواب، مع اختبار انحدار ناجح. بقي التحقق اليدوي في نافذة Windows غير ممكن هذه الجولة: أداة التحكم المرئي انتهت مهلتها بعد محاولات الاستعادة، والنوافذ المكتشفة كانت من مسار بناء قديم؛ لم يُرسل أي نقر إليها. نتيجة البث الحي تثبت صمود API في هذا الطلب، لكنها لا تعزل سبب كل انقطاع سابق قد يكون من العميل/النافذة أو من تغير تشغيل الخدمة.
- 2026-10-04 — متابعة فقد اتصال الوكيل بعد 4–5 دقائق: أُعيد اختبار `/v1/agent/run/stream` بطلب بحث فعلي متعدد الأهداف. على الخدمة الموجودة في 8000 اكتمل طلب خلال 163.6 ثانية مع 12 heartbeat وحدث `done`، ولم ينقطع النقل؛ لكن Gemma أعادت ملخصًا ناقصًا، وهذا قصور جودة منفصل. كشف سجل التدقيق القديم أن مدد البث تُحفظ عند وصول الترويسة قبل انتهاء جسم SSE، فلا تمثل عمر الطلب ولا تكشف قطع العميل. عُدّل middleware لقياس المدة حتى اكتمال البث، وتسجيل `499` داخليًا عند إلغاء/إغلاق العميل و`500` عند استثناء أثناء الإرسال، من دون تسجيل محتوى السؤال أو الإجابة. اختبارات بث الوكيل والإلغاء والمهارات نجحت 31/31. شُغلت نسخة من الشفرة الحالية على 18813 بقاعدة اختبار معزولة؛ طلب Gemma حي استمر 219.6 ثانية، تلقى 12 heartbeat وانتهى بـ`done`، وسجل التدقيق 219,465ms وHTTP 200. بعدها أُعيد تشغيل API على 8000 (PID 41184) مع الاحتفاظ بقاعدة SQLite الحالية، وأعاد `/health` الحالة `ok`. اختبار الوكيل النهائي على 8000 انتهى بـ`done` بعد 23.98 ثانية مع heartbeat؛ سجل التدقيق الجديد طابق المدة 23,975ms وحالة 200. لم يتكرر فقد الاتصال في الاختبارات الحية؛ ما زال اختبار Flutter التفاعلي المطوّل مفتوحًا، وجواب Gemma على المهمة متعددة الأهداف كان ناقصًا وهو خلل جودة منفصل.
- 2026-10-04 — ربط أخطاء بث الوكيل بسجل التدقيق في Flutter: يرفق العميل `X-Agent-Audit-ID` برسالة الخطأ عندما ينتهي SSE قبل `done` أو يصل حدث `error`، ليستطيع المستخدم مطابقة المشكلة مع سجل الخادم دون عرض محتوى خاص. اختبارات Flutter الكاملة 27/27، بينها حالتا انقطاع البث وخطأ SSE، و`flutter analyze --no-pub` بلا ملاحظات. ما زال التحقق المرئي من رسالة الخطأ داخل نافذة Windows مطلوبًا.