fix: show knowledge excerpts when Gemma abstains

This commit is contained in:
Hamza Ayed
2026-10-04 11:07:46 +03:00
parent 76567d4b47
commit 2e06ae3cc7
7 changed files with 140 additions and 0 deletions
+2
View File
@@ -4,6 +4,8 @@
## الحالة الحالية — 2026-10-04
- 2026-10-04 — تدقيق حالة «العمل على مشروع»: تأكد وجود إنشاء مجلد جديد أو تسجيل مجلد قائم من Flutter، وربطه بحساب المستخدم في SQLite، وفتح الملفات والبحث فيها واقتراح إنشاء/تعديل ملف عبر diff وموافقة صريحة. التطبيق وFastAPI/Gemma 4/SQLite يعملون محليًا الآن. الوكيل لا يشغّل بعد أوامر البناء أو الاختبارات؛ prototype AppContainer غير مدمج، وحد التخزين الصلب لم يثبت، لذا التنفيذ الآلي للمشروع ليس مدعومًا. في اختبار الحالتين على API التطبيق وجد الاسترجاع الدليل 2/2 لكن Gemma امتنعت مرة بصياغة عربية جديدة؛ أضيفت الصياغة لاختبار fallback، واختبارات مهارات الوكيل 21/21. أُعيد تشغيل API التطبيق على 8000 من الشفرة الحالية مع قاعدة SQLite نفسها؛ `/health` أكد Gemma 4 وSQLite وبقاء ملف قاعدة المحادثات. تحقق الاختبار الحي من السؤالين: الأول عرض مقتطف `migration.md` مع مصدره، والثاني ذكر الحقول الثلاثة؛ ثم أزال فهرس الاختبار وتسجيل المشروع والجلسة (`evals/results/retrieval_live_api_fix_2026-10-04.json`). التفاصيل في `evals/MODEL_REVIEW_2026-10.md`.
- 2026-10-04 — تسجيل المشاريع في الواجهة والـAPI: عند اختيار مجلد من Flutter يُسجّل API المحلي المسار في SQLite تحت هوية الحساب (`user_workspace_roots`) ثم يسرد الملفات المدعومة؛ عند إزالة المشروع يُلغى التسجيل ولا تُحذف الملفات. أضيف POST/DELETE لـ`/v1/agent/projects` ويُسمح بهما عبر loopback فقط. اختبارات API تثبت التسجيل والقراءة لصاحب المشروع، رفض الحساب الآخر، منع تسجيل مجلد متداخل بين حسابين أو مع جذر خصصه مسؤول لحساب آخر (409)، وإلغاء الوصول بعد الحذف أو بعد حذف المجلد الأصلي. اختبار حي على مجلد خارج جذر المنتج قرأ `README.md`، وسأل Gemma عبر الوكيل فأجاب من المحتوى باسم `Cedar`، ثم تحقق رفض الوصول بعد الإلغاء. اختبارات Python ذات الصلة 10/10 وFlutter 17/17، و`flutter analyze` بلا ملاحظات و`compileall` ناجح. أُعيد تشغيل API وفحص `/health` (`ok`, Gemma 4)، وتأكد وجود مساري POST/DELETE في OpenAPI، وبُني وشُغّل Windows Debug الحالي (PID 1328). تشغيل أوامر البناء/الاختبار من الوكيل لم يُدمج بعد؛ عزل نظام التشغيل لهذا التشغيل ما زال مفتوحًا.
- 2026-10-04 — إرشاد تسجيل المشروع من شاشة البداية: عند عدم فتح مساحة عمل تعرض الواجهة بطاقة تشرح أن المطلوب اختيار مجلد موجود وتوفّر زرًا مباشرًا؛ بعد فتحه تعرض اسم المشروع وقدرات الوكيل وحدوده، ومنها أن تشغيل أوامر البناء والاختبار غير متاح بعد. تسمية زر الشريط العلوي صارت «تسجيل مجلد مشروع موجود». اختبارات `widget_test.dart` نجحت 7/7 و`flutter analyze --no-pub` بلا ملاحظات. بُني Windows Debug من نسخة مستقلة في `%TEMP%` دون إغلاق النوافذ الموجودة؛ سجل MSBuild تحذيرًا أن Temp لا يُفضّل للبناء التزايدي، لكن البناء نجح خلال 359.7 ثانية. شُغلت النسخة (PID 44280، مقبض نافذة غير صفري ومستجيبة)، وأعاد API المحلي `/health` الحالة `ok` مع `gemma4:e2b` وSQLite والوكيل. هذه معاينة Debug وليست إصدارًا موزعًا.
- 2026-10-04 — إنشاء مجلد مشروع جديد على سطح المكتب: يختار المستخدم مجلدًا أبًا واسمًا، فيُنشأ مجلد فارغ ثم يُسجّل للوكيل؛ يمكن بعدها طلب إنشاء ملفات مع مراجعة diff وموافقة قبل الحفظ. قُيدت الأسماء لمنع المسارات والمجلدات المخفية والمستثناة وأسماء Windows المحجوزة، ورفض التصادم دون استبدال الموجود. الميزة متاحة على Windows/macOS/Linux الأصلي فقط؛ لا يظهر الزر على الويب وAndroid وiOS. اختبارات خدمة المجلد 3/3، مجموعة Flutter كاملة 22/22، واختبار الواجهة 7/7، و`flutter analyze --no-pub` بلا ملاحظات. بُني Windows Debug بنجاح خلال 352.1 ثانية إلى نسخة مستقلة في `%TEMP%`؛ لم تُشغّل النسخة لتجنب إضافة نافذة خامسة فوق نوافذ Debug المفتوحة. تشغيل أوامر البناء والاختبار داخل المشروع ما زال غير متاح لحين اكتمال العزل.