{ "created_at_utc": "2026-10-03T16:56:05.641170+00:00", "base_url": "http://127.0.0.1:8000", "dataset": "evals\\knowledge_retrieval_project.jsonl", "indexing": { "semantic_indexed_documents": 4, "documents": 4, "embedding_models": [ "granite-embedding:278m" ] }, "metrics": { "cases": 9, "hit_at_1": 0.6666666666666666, "hit_at_3": 1.0, "mean_reciprocal_rank": 0.8148148148148148, "evidence_rate": 0.6666666666666666 }, "results": [ { "id": "project-path-confinement", "query": "Does resolving a requested source path guarantee it stays under the selected root?", "expected_document": "fixture_workspace.py", "expected_evidence": "relative_to(root)", "rank": 1, "top_paths": [ "fixture_workspace.py", "fixture_main.py" ], "expected_document_chunks": [ 5, 19, 1 ], "evidence_found": true, "search_mode": "hybrid", "agent_answer": "لم يتم العثور على أي مقتطفات في قاعدة المعرفة تشير إلى ما إذا كان حل مسار مصدر مطلوب يضمن بقاءه تحت الجذر المحدد.", "agent_tool": "search_knowledge", "agent_files": [ "fixture_main.py", "fixture_workspace.py", "fixture_knowledge.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-preview-stale-file", "query": "How does applying an approved preview detect that the original file changed after review?", "expected_document": "fixture_workspace.py", "expected_evidence": "expected_hash", "rank": 2, "top_paths": [ "fixture_main.py", "fixture_workspace.py" ], "expected_document_chunks": [ 11, 13, 12, 14 ], "evidence_found": true, "search_mode": "hybrid", "agent_answer": "للاكتشاف ما إذا كان الملف الأصلي قد تغير بعد المراجعة عند تطبيق المعاينة المعتمدة، يتم التحقق مما إذا كان المسار المستهدف لا يزال دون تغيير.\n\nالمصدر: fixture_workspace.py · المقطع 13:\nيتم تخزين المعاينات في `_pending_changes` مع تضمين `expected_hash` (تجزئة SHA256 للمحتوى الأصلي)، والذي يتم مقارنته ضمنيًا (على الرغم من أن النص لا يوضح عملية المقارنة النهائية) عند تطبيق التغيير أو التحقق منه.\n\nيتم تطبيق التغيير باستخدام الدالة `apply_change_preview`، والتي تتحقق من صلاحية المعاينة بناءً على:\n```python\nif proposal is None or float(proposal[\"expires_at\"]) <= time.time():\n _pending_changes.pop(token, None)\n raise Value\n```\nهذا يضمن أن المعاينة لا تزال سارية المفعول (لم تنتهِ صلاحيتها).\n\nبالإضافة إلى ذلك، يتم تضمين معلومات التغيير مثل `path`، و `operation`، و `content`، و `expected_hash`، و `expires_at` في المعاينة.\n\nالمصدر: fixture_workspace.py · المقطع 13:\n```python\n \"expected_hash\": hashlib.sha256(original).hexdigest(),\n```", "agent_tool": "search_knowledge", "agent_files": [ "fixture_workspace.py", "fixture_main.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-index-stale-source", "query": "Which file hash is compared with the stored content hash before returning a search result?", "expected_document": "fixture_knowledge.py", "expected_evidence": "actual_hash == row[\"content_hash\"]", "rank": 3, "top_paths": [ "fixture_main.py", "fixture_workspace.py", "fixture_knowledge.py" ], "expected_document_chunks": [ 11 ], "evidence_found": false, "search_mode": "hybrid", "agent_answer": "لا توجد معلومات ملموسة في المقاطع المسترجعة حول أي ملف تجري مقارنة لتجزئة (hash) مع تجزئة المحتوى المخزنة قبل إرجاع نتيجة بحث.\n\nالمصدر: fixture_main.py · المقطع 11", "agent_tool": "search_knowledge", "agent_files": [ "fixture_main.py", "fixture_knowledge.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-chunk-overlap", "query": "What are the configured chunk size and overlap for local knowledge indexing?", "expected_document": "fixture_knowledge.py", "expected_evidence": "CHUNK_OVERLAP = 120", "rank": 1, "top_paths": [ "fixture_knowledge.py", "fixture_main.py" ], "expected_document_chunks": [ 3, 0, 16 ], "evidence_found": true, "search_mode": "hybrid", "agent_answer": "المقطع يحدد حجم القطعة والتداخل عبر الدالة `_chunks` في ملف `fixture_knowledge.py`.\n\n* **حجم القطعة (CHUNK\\_SIZE):** 1000\n* **التداخل (CHUNK\\_OVERLAP):** 120\n\nالمصدر: fixture\\_knowledge.py · المقطع 15", "agent_tool": "search_knowledge", "agent_files": [ "fixture_knowledge.py", "fixture_main.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-arabic-audio-variants", "query": "كيف يربط فهرس المعرفة بين تعابير عربية مختلفة عند البحث عن تفريغ التسجيل؟", "expected_document": "fixture_knowledge.py", "expected_evidence": "QUERY_SYNONYMS", "rank": 1, "top_paths": [ "fixture_knowledge.py", "fixture_main.py" ], "expected_document_chunks": [ 1, 0 ], "evidence_found": true, "search_mode": "hybrid", "agent_answer": "لم يتم العثور على أي معلومات تربط بين فهرس المعرفة وتعابير عربية مختلفة عند البحث عن تفريغ التسجيل.\n\nالمقاطع المسترجعة لا تحتوي على إجابة مباشرة لهذا السؤال.", "agent_tool": "search_knowledge", "agent_files": [ "fixture_main.py", "fixture_knowledge.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-pdf-page-bound", "query": "What is the maximum number of PDF pages accepted during local extraction?", "expected_document": "fixture_pdf.py", "expected_evidence": "MAX_PDF_PAGES = 30", "rank": 1, "top_paths": [ "fixture_pdf.py", "fixture_main.py" ], "expected_document_chunks": [ 2, 0, 1 ], "evidence_found": true, "search_mode": "hybrid", "agent_answer": "لم يتم العثور على معلومة محددة حول الحد الأقصى لعدد صفحات PDF المقبولة أثناء الاستخراج المحلي.\n\nالمقاطع المسترجعة تشير إلى وجود حد أقصى للصفحات عند قراءة ملف PDFات:\n* في `fixture_pdf.py` المقطع 2، هناك فحص للحد الأقصى للصفحات: `if len(reader.pages) > max_pages: raise PdfDocumentError(413, f\"الحد الأقصى {max_pages} صفحة لكل PDF: {name}.\")`، مما يعني أن الحد الأقصى للصفحات يعتمد على المتغير `max_pages`، ولم يتم تحديد قيمته.\n* في `fixture_pdf.py` المقطع 1، الدالة `extract_pdf_pages_text` تستخدم المعامل `max_pages`، ولكن لا يوجد تعريف لقيمة افتراضية له في هذا المقطع.\n\nبالإضافة إلى ذلك، تشير مقاطع أخرى إلى حدود أخرى مثل \"الحد الأقصى 8 ميغابايت لكل PDF\" و \"حد الفهرسة 2 ميغابايت لكل طلب\" في `fixture_main.py` المقطع 43.\n\nبناءً على ما تم استرجاعه، لا يمكنني تحديد العدد الأقصى لصفحات PDF المقبولة بشكل قاطع.", "agent_tool": "search_knowledge", "agent_files": [ "fixture_pdf.py", "fixture_main.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-pdf-empty-scan", "query": "ما الذي يحدث إذا رفع المستخدم ملف PDF ممسوحًا ولا يحتوي نصًا قابلًا للاستخراج؟", "expected_document": "fixture_pdf.py", "expected_evidence": "لا يحتوي PDF على نص قابل للاستخراج", "rank": 2, "top_paths": [ "fixture_main.py", "fixture_pdf.py" ], "expected_document_chunks": [ 9 ], "evidence_found": false, "search_mode": "hybrid", "agent_answer": "لم يتم توفير معلومات مباشرة في المقاطع المسترجعة حول ما يحدث إذا تم رفع ملف PDF ممسوحًا ولا يحتوي على نص قابل للاستخراج. ومع ذلك، يُشير المقطع من `fixture_pdf.py` إلى سيناريو يتعلق بعدم وجود نص قابل للاستخراج:\n\n\"لا يحتوي PDF على نص قابل للاستخراج؛ قد تكون صفحاته صورًا ممسوحة: {name}.\" (المقطع 1 من `fixture_pdf.py`)\n\nهذا يشير إلى أن النظام قد يواجه مشكلة إذا لم يتمكن من استخراج نص من ملف PDF (قد يكون ممسوحًا)، حيث يتم رفع استثناء `PdfDocumentError` برمز الخطأ 415.\n\n**مسار المصدر:** `fixture_pdf.py`، المقطع 1.", "agent_tool": "search_knowledge", "agent_files": [ "fixture_main.py", "fixture_pdf.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-skill-tool-filter", "query": "How is a tool call blocked when it is outside the selected skill permissions?", "expected_document": "fixture_main.py", "expected_evidence": "tool_name not in selected_skill.allowed_tools", "rank": 1, "top_paths": [ "fixture_main.py", "fixture_workspace.py", "fixture_knowledge.py" ], "expected_document_chunks": [ 102, 11, 99 ], "evidence_found": false, "search_mode": "hybrid", "agent_answer": "لم يتم توفير معلومات حول كيفية حظر استدعاء الأداة عندما يكون خارج أذونات المهارة المحددة.", "agent_tool": "search_knowledge", "agent_files": [ "fixture_main.py", "fixture_knowledge.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null }, { "id": "project-agent-index-limits", "query": "What file count and total size limits apply when indexing local knowledge?", "expected_document": "fixture_knowledge.py", "expected_evidence": "MAX_TOTAL_CHARS = 2_000_000", "rank": 1, "top_paths": [ "fixture_knowledge.py", "fixture_main.py", "fixture_workspace.py" ], "expected_document_chunks": [ 0 ], "evidence_found": true, "search_mode": "hybrid", "agent_answer": "لقد تم تحديد حدود للفهرسة بناءً على الأدوات المتاحة:\n\n* **حدود تحليل الملفات:**\n * الأداة `analyze_uploaded_code` تسمح بـ `max_files` قدره **3** و `max_total_bytes` قدره **524288** بايت (من `fixture_main.py · المقطع 28`).\n * الأداة `analyze_image` تسمح بـ `max_files` قدره **3** و `max_total_bytes` قدره **16777216** بايت (من `fixture_main.py · المقطع 26`).\n\n* **حدود قراءة الملفات (في سياق مساحة العمل):**\n * يتم رفض قراءة الملفات إذا كان حجمها أكبر من الحد المسموح به للقراءة (256 كيلوبايت) (من `fixture_workspace.py · المقطع 7`).\n\n* **حدود الفهرسة العامة:**\n * المعلومات حول الحد الأقصى لعدد الملفات الإجمالي وحجمه المحجوز عند فهرسة المعرفة المحلي غير محددة بشكل مباشر في المقاطع المسترجعة.\n\nالمصدر: fixture_main.py · المقطع 28، fixture_main.py · المقطع 26، fixture_workspace.py · المقطع 7", "agent_tool": "search_knowledge", "agent_files": [ "fixture_main.py", "fixture_workspace.py" ], "agent_steps": [ { "tool": "search_knowledge", "status": "completed" } ], "human_rating": null } ], "note": "Small deterministic fixture set. Retrieval metrics cover source ranking and evidence presence, not general RAG quality. Optional agent answers are retained for human review and are not auto-scored." }