Add web research and source file reading

This commit is contained in:
Hamza Ayed
2026-10-01 14:06:36 +03:00
parent 2d3778a92e
commit dc4d5bad0f
9 changed files with 310 additions and 23 deletions
+13 -12
View File
@@ -6,8 +6,8 @@
- الأساس المحلي يعمل: Flutter Windows Debug ↔ FastAPI ↔ Ollama/Gemma، مع سجل SQLite للمحادثات ونسخ الإجابات.
- اكتملت وظائف المحادثة الأساسية وطبقة مزوّد Ollama؛ المرحلة 1 ما زال ينقصها تحسين Markdown/الروابط/نسخ كتل الكود.
- الوكيل الآن نموذج أولي للقراءة فقط: آلة حاسبة وبحث نصي في ملفات مساحة عمل يحددها إعداد الخادم. لم يُنجز بعد اختيار مساحة العمل من الواجهة، أو استعراض/قراءة ملف بطلب محدد، أو عقد أدوات موحّد وسجل تدقيق.
- لا توجد بعد مصادقة متعددة المستخدمين أو نشر شبكي آمن؛ الصوت يعتمد على Groq خارجي، ولا توجد معالجة صور محلية أو بحث إنترنت عام.
- الوكيل الآن نموذج أولي للقراءة فقط: آلة حاسبة وبحث نصي في ملفات مساحة عمل يحددها إعداد الخادم؛ ذكر مسار ملف برمجي يمرر مقتطفًا أكبر. لم يُنجز بعد اختيار الملف/مساحة العمل من نافذة الواجهة أو سجل تدقيق الأدوات.
- أضيف بحث ويب متعدد المصادر تجريبي مع جلب صفحات وتلخيص محلي وروابط مصادر. لا توجد بعد مصادقة متعددة المستخدمين أو نشر شبكي آمن؛ الصوت يعتمد على Groq خارجي، ولا توجد بعد واجهة رفع ومعالجة صور أو PDF.
- التدريب والضبط الدقيق وتوزيع Windows مراحل لاحقة، وليست مما يفعّله التطبيق حاليًا.
## المرحلة 1 — تجربة المحادثة
@@ -53,10 +53,11 @@
### سلم الأدوات والصلاحيات
1. [x] قراءة فقط أولية: الحاسبة والبحث النصي واسترجاع مقتطفات من ملفات مساحة العمل المضبوطة عند تشغيل الخادم. لا يوجد حتى الآن اختيار للمجلد من التطبيق.
2. [ ] مساحة عمل يحددها المستخدم من التطبيق: استعراض الملفات وقراءتها بطلب صريح والبحث داخلها؛ يلزم عرض مصادر واضح والتحقق من المسارات.
3. كتابة: إنشاء وتعديل ملفات داخل مساحة العمل فقط، مع معاينة diff وتأكيد المستخدم قبل التطبيق.
4. أوامر تطوير: تشغيل أوامر محددة في بيئة معزولة وبمهلة وحدود موارد، ومع موافقة لكل أمر في البداية.
5. لا وصول عام إلى القرص، ولا أوامر مدمرة أو نشر خارجي دون موافقة صريحة. كل أداة لها مخطط مدخلات ومخرجات واختبارات وسجل تدقيق.
2. [x] قراءة ملف كود محدد: عند ذكر مساره النسبي مثل `app/model_provider.py` في وضع الملفات، يقرأ الوكيل مقتطفًا أكبر (حتى 12,000 حرف) ويعيد اسم الملف. (2026-10-01: تجربة API حية أعادت جوابًا عن الملف المحدد وأعادت مساره وحده كمصدر.)
3. [ ] اختيار مساحة العمل/الملف من نافذة التطبيق واستعراض قائمة الملفات قبل سؤال الوكيل.
4. كتابة: إنشاء وتعديل ملفات داخل مساحة العمل فقط، مع معاينة diff وتأكيد المستخدم قبل التطبيق.
5. أوامر تطوير: تشغيل أوامر محددة في بيئة معزولة وبمهلة وحدود موارد، ومع موافقة لكل أمر في البداية.
6. لا وصول عام إلى القرص، ولا أوامر مدمرة أو نشر خارجي دون موافقة صريحة. كل أداة لها مخطط مدخلات ومخرجات واختبارات وسجل تدقيق.
### كودكس للبرمجة
@@ -71,14 +72,14 @@
- بناء RAG للمستندات المحلية: استخراج النص، تقطيع، فهرسة محلية، استرجاع مع مصادر وإشارات للمقاطع.
- تعريف المهارات كتعليمات وإجراءات موثقة ومحددة النطاق، مع صلاحية اختيار الأدوات المطلوبة فقط.
- [x] قراءة رابط عام محدد عبر `POST /v1/web/read`: استخراج نص HTML الثابت وتمريره إلى Gemma المحلية للإجابة مع إرجاع الرابط والعنوان.
- إضافة بحث ويب كمزوّد اختياري مستقل لاحقًا، مع إظهار المصادر ووقت جلبها؛ لا يُخلط بمحتوى المستخدم المحلي.
- [x] بحث ويب متعدد المصادر تجريبي عبر DuckDuckGo بلا مفتاح API: اختيار نطاقات مختلفة، محاولة جلب الصفحات العامة، تلخيص بالنموذج المحلي مع روابط المصادر، ووسم المقتطفات عند تعذر فتح الصفحة. (2026-10-01: استجابة حية أعادت ملخصًا ومصدرين مختلفين عبر FastAPI/Gemma.) بقي تسجيل وقت الجلب واختبار الحجب ومزوّد رسمي اختياري لاحقًا.
- اختبار كل مهارة على أمثلة ناجحة وفاشلة قبل إتاحتها افتراضيًا.
## المرحلة 6 — الوسائط
- الصوت: فصل واجهة مزوّد النسخ، مع إبقاء Groq خيارًا خارجيًا حاليًا وإضافة Whisper محلي عندما تسمح الموارد؛ المفاتيح تبقى في الخادم.
- الصور: استقبال وتحجيم آمن، ثم نموذج رؤية محلي ملائم للذاكرة؛ OCR محلي للنصوص داخل الصور كأداة تكميلية.
- دعم ملفات PDF والمستندات عبر استخراج نص موثوق مع الصفحات والمصادر.
- الصوت: حاليًا Groq خارجي للتفريغ. Gemma 4 E2B تدعم الصوت بحسب [بطاقة النموذج](https://ai.google.dev/gemma/docs/core/model_card_4)، لكن مسار إرسال الصوت إليها/نسخ محلي لم يُنفّذ؛ Whisper محلي لاحقًا.
- الصور: Gemma 4 E2B تدعم إدخال الصور وقراءة المستندات وOCR بحسب [بطاقة النموذج](https://ai.google.dev/gemma/docs/core/model_card_4)، لكن التطبيق لا يمرر الصور حاليًا؛ المطلوب إضافة اختيار/رفع صورة وتحجيم آمن ثم تمريرها عبر Ollama.
- دعم ملفات PDF والمستندات: قدرات النموذج تشمل فهم صفحات المستندات، لكننا نحتاج تنفيذ خط رفع واستخراج النص أو تحويل صفحات PDF إلى صور مع أرقام الصفحات والمصادر.
- تصميم الواجهة لتوضيح ما إذا عولج الملف محليًا أم أرسل إلى مزوّد خارجي.
## المرحلة 7 — تقييم النماذج والتدريب
@@ -112,10 +113,10 @@
2. [x] حفظ نسخ الإجابات وترحيل SQLite (2026-10-01): ترحيل قاعدة قديمة مع الحفاظ على الرسائل، وحفظ النسخ واسترجاع النسخة المختارة عبر PUT/GET؛ اجتاز اختبارا Python واختبار API حي على قاعدة التطبيق ثم حذف سجل الاختبار. اختبارا Flutter نجحا، و`flutter analyze` بلا ملاحظات. شُغّلت نسخة Windows Debug باسم Mithqal AI واتصلت الخدمة بـGemma؛ اختبار API للمحادثة أعاد ردًا عربيًا.
3. [x] حالة النموذج والمدة والخطأ وإيقاف التوليد (2026-10-01): اختبار إلغاء الرد الجزئي وإلغاء إعادة التوليد قبل أول رمز مع الحفاظ على الإجابة السابقة، واختبار زر الإيقاف بالواجهة؛ `flutter analyze` و5 اختبارات Flutter ناجحة، وWindows Debug يعمل بعد hot restart.
4. [x] إضافة طبقة مزود النموذج واكتشاف النماذج (2026-10-01): عقد موحد للطلب الكامل والبث والقائمة، واستخدامه في المحادثة والوكيل وقراءة مساحة العمل والويب؛ Ollama هو المزوّد المنفذ حاليًا. تحقق حي من `/health` و`/v1/models` وطلب محادثة باستخدام Gemma.
5. عقد الأدوات وسجل التدقيق، واختيار مجلد العمل من الواجهة، ثم استعراض/قراءة ملف محدد مع عرض مصادره.
5. عقد الأدوات وسجل التدقيق، واختيار ملف/مجلد العمل من الواجهة واستعراضه، ثم إظهار مراجع الملفات المقروءة بصورة أوضح.
6. تعديل الملفات داخل مساحة العمل عبر diff وموافقة صريحة؛ ثم أوامر محددة ومعزولة فقط بعد بناء الحدود اللازمة.
7. مصادقة وهوية متعددة المستخدمين قبل أي نشر شبكي، ثم PostgreSQL عند الحاجة إلى خدمة متعددة الأجهزة.
8. بحث ويب مستقل، وRAG للمستندات، وتوسعة الصور/PDF وبدائل Whisper محليًا حسب الموارد.
8. توسيع بحث الويب التجريبي بمصادر/وقت جلب وموفّر رسمي اختياري، ثم RAG للمستندات والصور/PDF وبدائل Whisper محليًا حسب الموارد.
9. مجموعة تقييم للنماذج، ثم دراسة LoRA/QLoRA عند توفر بيانات وGPU ملائمين.
10. تجهيز توزيع Windows وإدارة الخدمة والنموذج، ثم مراجعة الأمان والتراخيص قبل أي استخدام تجاري.