- Description | الوصف
- Features | المميزات
- Architecture | البنية المعمارية
- Quick Start | البدء السريع
- API Endpoints | نقاط نهاية API
- Development Guide | دليل التطوير
- Plugin System | نظام الإضافات
- License | الترخيص
IntelliFile Manager هو مدير ملفات ذكي يعمل محلياً على سطح المكتب، مصمم للاستخدام الشخصي اليومي. يجمع بين محرك بحث هجين (BM25 + دلالي + RRF)، وتصنيف ذكي للملفات، ووسوم تلقائية، ومساعد ملفات محلي (RAG)، ومعالجة متعددة الوسائط — كل ذلك مع دعم كامل للغة العربية وخصوصية تامة عبر المعالجة المحلية بدون اتصال بالإنترنت.
يعمل النظام كخدمة API عبر FastAPI مع واجهة ويب مبنية بـ Next.js، بالإضافة إلى واجهة سطح مكتب PySide6. جميع معالجات الذكاء الاصطناعي تعمل محلياً عبر Ollama وsentence-transformers لضمان الخصوصية الكاملة.
IntelliFile Manager is a local-first AI file manager designed for personal desktop use. It combines a hybrid search engine (BM25 + Semantic + RRF), smart file classification, auto-tagging, a local RAG-based File Copilot, and multimodal processing — all with full Arabic RTL support and offline-first privacy through local AI processing.
The system runs as a FastAPI service with a Next.js web interface and an optional PySide6 desktop GUI. All AI processing runs locally via Ollama and sentence-transformers for complete privacy.
IntelliFile is a general-purpose local-first desktop file manager for personal use. The supported surfaces are:
- FastAPI service (backend)
- PySide6 desktop GUI (primary user-facing surface)
- Next.js web UI (optional companion)
The mobile/ directory and buildozer.spec are experimental and not
part of the product core — see mobile/README.md.
Android / Kivy is not the product direction for the foreseeable future.
IntelliFile is not a medical tool. Any medical-specific classification logic that may exist in the codebase is unintended scope and is being tracked separately.
محرك بحث هجين يجمع بين خوارزمية BM25 للبحث الكلمي والبحث الدلالي عبر المتجهات (sentence-transformers)، مع دمج النتائج باستخدام خوارزمية Reciprocal Rank Fusion (RRF). يدعم البحث باللغة العربية والإنجليزية مع فهم عميق لسياق الاستعلام.
- BM25 Keyword Search: بحث كلمي سريع ودقيق
- Semantic Vector Search: بحث دلالي يفهم المعنى والسياق (اختياري)
- RRF Fusion: دمج ذكي لنتائج المحركين مع ترجيح متوازن
- Arabic Tokenization: دعم تجزئة النص العربي
تصنيف تلقائي للملفات بناءً على المحتوى والامتداد:
- كشف النوع: تحديد نوع الملف تلقائياً (Magika)
- تصنيف المحتوى: تصنيف حسب محتوى الملف النصي
- دعم العربية: تصنيف الملفات العربية
- تصنيف مجمع: معالجة مجلدات كاملة دفعة واحدة
نظام وسوم ذكي متعدد الطبقات يولد وسوماً تلقائياً بناءً على:
- وسوم المحتوى: استخراج الكلمات المفتاحية والمواضيع
- وسوم النوع: تصنيف حسب نوع الملف وامتداده
- وسوم مخصصة: إضافة وسوم يدوية مع تصنيفات قابلة للتخصيص
- وسوم مجمعة: تطبيق وسوم على مجموعة ملفات دفعة واحدة
- بحث الوسوم: البحث عن الملفات بواسطة الوسوم
مساعد ذكي يعتمد على تقنية RAG (Retrieval-Augmented Generation) للمحادثة مع ملفاتك:
- محادثة ذكية: أسئلة وأجوبة بناءً على محتوى ملفاتك
- تلخيص تلقائي: إنشاء ملخصات شاملة لأي ملف
- فهرسة ذكية: إضافة ملفات إلى قاعدة المعرفة
- بث مباشر: دعم WebSocket للردود المتدفقة
معالجة شاملة لأنواع الملفات المختلفة:
- الصور: استخراج النصوص (OCR)، وصف المحتوى
- الصوت: تحويل الكلام إلى نص (STT)، تحليل المحتوى الصوتي
- الفيديو: استخراج الإطارات، إنشاء ملخصات
- المستندات: استخراج النصوص من PDF وDOCX وXLSX
دعم كامل للغة العربية في جميع مستويات التطبيق:
- واجهة عربية: واجهة مستخدم كاملة من اليمين لليسار
- بحث عربي: معالجة خاصة للنص العربي في البحث والتصنيف
- وسوم عربية: إنشاء وسوم باللغة العربية
جميع عمليات الذكاء الاصطناعي تعمل محلياً بدون حاجة للإنترنت:
- Ollama LLM: نماذج لغوية محلية
- Local Embeddings: تضمينات محلية (sentence-transformers)
- ChromaDB: قاعدة بيانات متجهات محلية
- Magika: كشف نوع الملف محلياً (100+ نوع)
- لا بيانات خارجية: لا يتم إرسال أي بيانات لخوادم خارجية
- معالجة محلية: جميع العمليات تتم على جهازك
- ربط محلي: API يربط على 127.0.0.1 فقط افتراضياً
- مصادقة اختيارية: دعم API Key عبر
INTELLIFILE_API_KEY - حماية المسارات: sandboxing يمنع الوصول لمسارات غير مصرح بها
┌──────────────────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ ┌───────────────────────┐ ┌──────────────────────────────────┐ │
│ │ Desktop GUI (PySide6)│ │ Web UI (Next.js + shadcn) │ │
│ │ src/gui/ │ │ web/src/ │ │
│ └───────────┬───────────┘ └──────────────┬───────────────────┘ │
└──────────────┼───────────────────────────────┼─────────────────────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────────────────────────┐
│ API Layer (FastAPI) │
│ src/api/server.py — Port 8421 │
│ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ ┌────────────┐ │
│ │ Classify│ │ Search │ │ Tags │ │ Copilot │ │ Organize │ │
│ │ /api/ │ │ /api/ │ │ /api/ │ │ /api/ │ │ /api/ │ │
│ │ classify│ │ search │ │ tags │ │ copilot │ │ organize │ │
│ └────┬────┘ └────┬─────┘ └────┬─────┘ └────┬────┘ └─────┬──────┘ │
└───────┼───────────┼────────────┼─────────────┼────────────┼────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────────┐
│ Core Engine Layer (src/core/) │
│ ┌───────────────┐ ┌──────────────┐ ┌─────────────────────────────┐ │
│ │ SmartFile │ │ HybridSearch │ │ SmartTagger │ │
│ │ Classifier │ │ Engine │ │ (auto-tag + manual) │ │
│ └───────────────┘ └──────────────┘ └─────────────────────────────┘ │
│ ┌───────────────┐ ┌──────────────┐ ┌─────────────────────────────┐ │
│ │ FileCopilot │ │ Enhanced │ │ FileHandler │ │
│ │ (RAG Chat) │ │ Multimodal │ │ (CRUD + Undo) │ │
│ └───────────────┘ └──────────────┘ └─────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ AI & Data Layer │
│ ┌──────────┐ ┌──────────────────┐ ┌────────────────────────────┐ │
│ │ Ollama │ │ sentence- │ │ ChromaDB │ │
│ │ (LLM) │ │ transformers │ │ (Vector Store) │ │
│ └──────────┘ └──────────────────┘ └────────────────────────────┘ │
│ ┌──────────┐ ┌──────────────────────────────────────────────────┐ │
│ │ Magika │ │ Plugin System (src/plugins/) │ │
│ │(Type Det)│ │ • IntelliFilePlugin base class │ │
│ └──────────┘ │ • PluginManager + PluginContext │ │
│ │ • Auto-discovery from src/plugins/ │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
- Python 3.10 أو أحدث
- Node.js 18 أو أحدث (لواجهة الويب)
- Ollama (للذكاء الاصطناعي المحلي)
# 1. استنساخ المستودع
git clone https://github.com/DrAbdulmalek/intelli-file-manager.git
cd intelli-file-manager
# 2. إنشاء بيئة افتراضية
python -m venv venv
source venv/bin/activate
# 3. تثبيت متطلبات Python
pip install -r requirements.txt
# 4. تثبيت Ollama وتحميل النماذج (اختياري)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2
ollama pull nomic-embed-text
# 5. تثبيت واجهة الويب (اختياري)
cd web && npm install && cd ..# تشغيل خادم API على المنفذ 8421 (localhost فقط)
uvicorn src.api.server:app --host 127.0.0.1 --port 8421 --reload
# أو باستخدام main.py
python -m src.main --web
# التوثيق التفاعلي
# Swagger UI: http://localhost:8421/api/docs
# ReDoc: http://localhost:8421/api/redoccd web
npm run dev
# افتح http://localhost:3000 في المتصفحجديد (غير مُصدَّر بعد — Unreleased) — واجهة PySide6 محلية بالكامل (Phase C مكتملة على الفرع الرئيسي؛ أحدث إصدار مُصدَّر هو
v2.1.0، وانتظرv2.2.0حتى اكتمالdocs/RELEASE_CHECKLIST_v2.2.0.md)
# تشغيل واجهة سطح المكتب
python -m src.desktop.app --base-dir /path/to/folder
# أو مع ملف قواعد مخصّص
python -m src.desktop.app --base-dir ~/Downloads --ruleset rules/custom.yaml
# عرض الإصدار
python -m src.desktop.app --version| الاختصار | الإجراء | Description |
|---|---|---|
Ctrl+R |
تحديث العرض الحالي | Refresh current panel |
F5 |
فحص المجلد الحالي | Scan current folder |
Ctrl+Z |
تراجع عن آخر إجراء | Undo last action |
Ctrl+F |
تركيز البحث في اللوحة | Focus search in current panel |
Ctrl+, |
فتح لوحة الإعدادات | Open settings panel |
Ctrl+P |
فتح لوحة المعاينة | Open preview panel |
Ctrl+T |
تبديل السمة (داكن/فاتح) | Toggle dark/light theme |
Esc |
إلغاء العملية الجارية | Cancel running operation |
Ctrl+O |
فتح مجلد جديد | Open new folder |
Ctrl+Q |
خروج | Exit application |
- 7 panels: جرد، معاينة، قواعد، سجل إجراءات، سجل تراجع، مراقب، إعدادات
- Live progress + cancellation: شريط تقدّم قابل للإلغاء لكل عملية طويلة
- File preview: معاينة نصية (50+ امتداد) + مصغّرات صور (jpg/png/gif/...)
- Crash recovery: استرداد آخر جلسة (آخر مجلد + لوحة) عند إعادة التشغيل
- Tooltips + Tab navigation: تلميحات على كل مكوّن + ترتيب Tab منطقي
- RTL support: دعم كامل لاتجاهRTL للعربية
الاختلال المعروف: يتطلب توفّر
libEGL.so.1على لينكس — يُحل عبر تثبيتlibgl1أوlibegl1.
# جميع الاختبارات
pytest
# اختبارات الوحدات فقط
pytest tests/unit/ -v
# اختبارات التكامل فقط
pytest tests/integration/ -v
# مع تغطية الكود
pytest --cov=src tests/ --cov-report=html# تصنيف مجلد
python -m src.main classify /path/to/folder
# بحث هجين
python -m src.main search "تقارير المبيعات"
# تنظيم ملفات
python -m src.main organize /path/to/folder --dry-run
# كشف المكررات
python -m src.main duplicates /path/to/folder| # | Method | Endpoint | الوصف | Description |
|---|---|---|---|---|
| 1 | GET |
/api/health |
فحص صحة النظام | Health check |
| 2 | POST |
/api/classify |
تصنيف ملف أو مجلد | Classify file or directory |
| 3 | POST |
/api/search |
بحث هجين | Hybrid search |
| 4 | POST |
/api/search/index |
فهرسة مجلد للبحث | Index directory for search |
| 5 | POST |
/api/tags/auto |
وسوم تلقائية لملف | Auto-tag a file |
| 6 | POST |
/api/tags/add |
إضافة وسم يدوي | Add manual tag |
| 7 | POST |
/api/tags/batch |
وسوم مجمعة | Batch tag files |
| 8 | DELETE |
/api/tags/remove |
حذف وسم | Remove tag |
| 9 | GET |
/api/tags/search |
بحث بوسم | Search by tag |
| 10 | GET |
/api/tags/all |
جميع الوسوم | Get all tags |
| 11 | POST |
/api/copilot/chat |
محادثة مع مساعد | Chat with Copilot |
| 12 | POST |
/api/copilot/index |
فهرسة للمحادثة | Index for Copilot |
| 13 | GET |
/api/copilot/conversations |
قائمة المحادثات | List conversations |
| 14 | POST |
/api/copilot/summarize |
تلخيص ملف | Summarize file |
| 15 | WS |
/api/copilot/ws |
محادثة مباشرة | Streaming chat |
| 16 | POST |
/api/process/image |
معالجة صورة | Process image |
| 17 | POST |
/api/process/audio |
معالجة صوت | Process audio |
| 18 | POST |
/api/process/video |
معالجة فيديو | Process video |
| 19 | POST |
/api/process/document |
معالجة مستند | Process document |
| 20 | POST |
/api/process/upload |
رفع ومعالجة ملف | Upload & process |
| 21 | POST |
/api/ner/extract |
استخراج كيانات مسماة | Extract named entities |
| 22 | POST |
/api/organize |
تنظيم ملفات | Auto-organize files |
| 23 | POST |
/api/embed |
تضمينات متجهية | Generate embeddings |
| 24 | POST |
/api/embed/similarity |
حساب التشابه | Compute similarity |
| 25 | GET |
/api/stats |
إحصائيات | Stats |
المصادقة اختيارية. عند تعيين متغير البيئة INTELLIFILE_API_KEY، يتطلب API إرسال رأس X-API-Key مع كل طلب. بدون تعيينه، يعمل API بدون مصادقة (آمن للاستخدام المحلي على localhost).
# فحص صحة النظام
curl http://localhost:8421/api/health
# تصنيف مجلد
curl -X POST http://localhost:8421/api/classify \
-H "Content-Type: application/json" \
-d '{"path": "/home/user/documents", "recursive": true}'
# بحث هجين
curl -X POST http://localhost:8421/api/search \
-H "Content-Type: application/json" \
-d '{"query": "تقارير المبيعات", "top_k": 10, "engine": "hybrid"}'
# وسوم تلقائية
curl -X POST "http://localhost:8421/api/tags/auto?filepath=/home/user/report.pdf"
# محادثة مع مساعد الملفات
curl -X POST http://localhost:8421/api/copilot/chat \
-H "Content-Type: application/json" \
-d '{"message": "لخص لي تقرير المبيعات"}'
# مع مصادقة API Key
curl -X POST http://localhost:8421/api/classify \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{"path": "/home/user/documents"}'intelli-file-manager/
├── src/
│ ├── api/ # FastAPI server
│ │ └── server.py
│ ├── core/ # Core engines
│ │ ├── config.py # Configuration & categories
│ │ ├── classifier.py # Smart file classifier
│ │ ├── hybrid_search.py # BM25 + Semantic + RRF
│ │ ├── smart_tagger.py # Auto + manual tagging
│ │ ├── file_copilot.py # RAG-based chat assistant
│ │ ├── enhanced_multimodal.py # Multimodal processing
│ │ ├── file_handler.py # CRUD + undo + backup
│ │ ├── ai_engine.py # Ollama integration
│ │ ├── semantic_search.py # Vector search
│ │ ├── rag_engine.py # RAG engine
│ │ ├── medical_ner.py # Named Entity Recognition
│ │ ├── voice_controller.py # Voice control
│ │ └── ... # Other modules
│ ├── ai/ # AI engine layer
│ │ ├── embeddings.py # Embedding engine
│ │ └── ...
│ ├── plugins/ # Plugin system
│ │ ├── __init__.py # IntelliFilePlugin, PluginManager
│ │ └── ...
│ ├── gui/ # PySide6 desktop GUI
│ └── utils/ # Utilities
├── web/ # Next.js web interface
├── tests/ # Test suite
├── docs/ # Documentation
├── README.md
└── requirements.txt
# 1. استنساخ وإنشاء بيئة افتراضية
git clone https://github.com/DrAbdulmalek/intelli-file-manager.git
cd intelli-file-manager
python -m venv venv
source venv/bin/activate
# 2. تثبيت متطلبات التطوير
pip install -r requirements.txt
pip install pytest pytest-cov ruff mypy
# 3. تشغيل الاختبارات
pytest -v
# 4. فحص جودة الكود
ruff check src/
mypy src/ --ignore-missing-imports- Python: اتباع PEP 8 مع حد أقصى 120 حرفاً لكل سطر
- Type Hints: استخدام تعليقات النوع لجميع الدوال العامة
- Docstrings: توثيق جميع الدوال والفئات العامة
- Arabic RTL: ضمان دعم RTL في أي تغييرات على الواجهة
يتضمن IntelliFile Manager نظام إضافات مرن يسمح بتوسيع الوظائف بدون تعديل الكود الأساسي.
from src.plugins import IntelliFilePlugin, PluginContext
class MyPlugin(IntelliFilePlugin):
name = "my_plugin"
version = "1.0.0"
description = "وصف الإضافة"
def initialize(self, context: PluginContext) -> None:
context.register_classifier("my_classifier", self._classify)
context.register_tag_generator("my_tags", self._generate_tags)
def _classify(self, text: str) -> dict:
return {"category": "custom", "confidence": 0.9}
def _generate_tags(self, filepath: str, text: str) -> list[str]:
return ["custom/tag1", "custom/tag2"]الإضافات يتم اكتشافها تلقائياً من:
src/plugins/— إضافات مدمجة (built-in)~/.intellifile/plugins/— إضافات المستخدم- PYTHONPATH — حزم باسم
intellifile_plugin
يمكن ربط IntelliFile Manager مع أنظمة خارجية عبر نظام الإضافات أو REST API. أي تكامل مع أنظمة أخرى (مثل منصات OCR/NLP) اختياري تماماً ولا يؤثر على الوظائف الأساسية.
| التقنية | الغرض |
|---|---|
| Python 3.10+ | لغة البرمجة الرئيسية |
| FastAPI | إطار عمل API |
| Ollama | نماذج اللغة المحلية |
| sentence-transformers | التضمينات الدلالية (اختياري) |
| ChromaDB | قاعدة بيانات المتجهات |
| Magika | كشف نوع الملف |
| PySide6 | واجهة سطح المكتب |
| التقنية | الغرض |
|---|---|
| Next.js | إطار عمل الويب |
| TypeScript | لغة مكتوبة |
| Tailwind CSS | إطار التصميم |
| shadcn/ui | مكونات UI |
هذا المشروع مرخص بموجب رخصة MIT. يمكنك الاطلاع على ملف LICENSE للتفاصيل الكاملة.
صُنع بـ ❤️ لمجتمع لينكس والبرمجيات الحرة Built with ❤️ for the Linux & Free Software communities