English | Français | Español | Deutsch | Italiano | Português | Nederlands | Polski | Русский | 日本語 | 中文 | العربية | 한국어
ذاكرة دائمة لعملاء الذكاء الاصطناعي. ملف تنفيذي واحد، بدون تبعيات، دعم MCP أصلي.
يمنح ICM عميلَ الذكاء الاصطناعي الخاص بك ذاكرةً حقيقية — ليست أداة تدوين ملاحظات، ولا مدير سياق، بل ذاكرة فعلية.
ICM (Infinite Context Memory)
┌──────────────────────┬─────────────────────────┐
│ MEMORIES (Topics) │ MEMOIRS (Knowledge) │
│ │ │
│ Episodic, temporal │ Permanent, structured │
│ │ │
│ ┌───┐ ┌───┐ ┌───┐ │ ┌───┐ │
│ │ m │ │ m │ │ m │ │ │ C │──depends_on──┐ │
│ └─┬─┘ └─┬─┘ └─┬─┘ │ └───┘ │ │
│ │decay │ │ │ │ refines ┌─▼─┐│
│ ▼ ▼ ▼ │ ┌─▼─┐ │ C ││
│ weight decreases │ │ C │──part_of──>└───┘│
│ over time unless │ └───┘ │
│ accessed/critical │ Concepts + Relations │
├──────────────────────┴─────────────────────────┤
│ SQLite + FTS5 + sqlite-vec │
│ Hybrid search: BM25 (30%) + cosine (70%) │
└─────────────────────────────────────────────────┘
نموذجان للذاكرة:
- Memories (الذكريات) — تخزين واسترجاع مع تلاشٍ زمني حسب الأهمية. الذكريات الحرجة لا تتلاشى أبدًا، أما ذات الأهمية المنخفضة فتتلاشى تلقائيًا. يمكن التصفية بحسب الموضوع أو الكلمة المفتاحية.
- Memoirs (المذكرات) — رسوم بيانية دائمة للمعرفة. مفاهيم مرتبطة بعلاقات مكتوبة (
depends_on،contradicts،superseded_by، ...). يمكن التصفية بحسب التصنيف. - Feedback (التغذية الراجعة) — تسجيل التصحيحات عند خطأ توقعات الذكاء الاصطناعي. البحث في الأخطاء السابقة قبل إجراء تنبؤات جديدة. تعلم في حلقة مغلقة.
# Homebrew (macOS / Linux)
brew tap rtk-ai/tap && brew install icm
# تثبيت سريع
curl -fsSL https://raw.githubusercontent.com/rtk-ai/icm/main/install.sh | sh
# من المصدر
cargo install --path crates/icm-cli# الكشف التلقائي وضبط جميع الأدوات المدعومة
icm initيضبط 17 أداة بأمر واحد (دليل التكامل الكامل):
| الأداة | MCP | الخطافات | CLI | المهارات |
|---|---|---|---|---|
| Claude Code | ~/.claude.json |
5 خطافات | CLAUDE.md |
/recall /remember |
| Claude Desktop | JSON | — | — | — |
| Gemini CLI | ~/.gemini/settings.json |
5 خطافات | GEMINI.md |
— |
| Codex CLI | ~/.codex/config.toml |
4 خطافات | AGENTS.md |
— |
| Copilot CLI | ~/.copilot/mcp-config.json |
4 خطافات | .github/copilot-instructions.md |
— |
| Cursor | ~/.cursor/mcp.json |
— | — | قاعدة .mdc |
| Windsurf | JSON | — | .windsurfrules |
— |
| VS Code | ~/Library/.../Code/User/mcp.json |
— | — | — |
| Amp | JSON | — | — | /icm-recall /icm-remember |
| Amazon Q | JSON | — | — | — |
| Cline | VS Code globalStorage | — | — | — |
| Roo Code | VS Code globalStorage | — | — | قاعدة .md |
| Kilo Code | VS Code globalStorage | — | — | — |
| Zed | ~/.zed/settings.json |
— | — | — |
| OpenCode | JSON | إضافة TS | — | — |
| Continue.dev | ~/.continue/config.yaml |
— | — | — |
| Aider | — | — | .aider.conventions.md |
— |
أو يدويًا:
# Claude Code
claude mcp add icm -- icm serve
# الوضع المضغوط (ردود أقصر، توفير رموز)
claude mcp add icm -- icm serve --compact
# أي عميل MCP: command = "icm", args = ["serve"]icm init --mode skillيثبّت أوامر الشريطة المائلة والقواعد لـ Claude Code (/recall، /remember)، وCursor (قاعدة .mdc)، وRoo Code (قاعدة .md)، وAmp (/icm-recall، /icm-remember).
icm init --mode hookيثبّت خطافات الاستخراج والاسترجاع التلقائي لجميع الأدوات المدعومة:
| الأداة | SessionStart | PreTool | PostTool | Compact | PromptRecall | الضبط |
|---|---|---|---|---|---|---|
| Claude Code | icm hook start |
icm hook pre |
icm hook post |
icm hook compact |
icm hook prompt |
~/.claude/settings.json |
| Gemini CLI | icm hook start |
icm hook pre |
icm hook post |
icm hook compact |
icm hook prompt |
~/.gemini/settings.json |
| Codex CLI | icm hook start |
icm hook pre |
icm hook post |
— | icm hook prompt |
~/.codex/hooks.json |
| Copilot CLI | icm hook start |
icm hook pre |
icm hook post |
— | icm hook prompt |
.github/hooks/icm.json |
| OpenCode | session start | — | tool extract | compaction | — | ~/.config/opencode/plugins/icm.ts |
ما يفعله كل خطاف:
| الخطاف | ما يفعله |
|---|---|
icm hook start |
حقن حزمة إيقاظ من الذكريات الحرجة/عالية الأهمية عند بدء الجلسة (حوالي 500 رمز) |
icm hook pre |
السماح تلقائيًا لأوامر icm CLI (بدون طلب إذن) |
icm hook post |
استخراج الحقائق من مخرجات الأداة كل N استدعاء (استخراج تلقائي) |
icm hook compact |
استخراج الذكريات من النص قبل ضغط السياق |
icm hook prompt |
حقن السياق المستعاد في بداية كل موجه مستخدم |
يمكن استخدام ICM عبر CLI (أوامر icm) أو خادم MCP (icm serve). كلاهما يصلان إلى نفس قاعدة البيانات.
| CLI | MCP | |
|---|---|---|
| زمن الاستجابة | ~30ms (ملف ثنائي مباشر) | ~50ms (JSON-RPC stdio) |
| تكلفة الرموز | 0 (قائم على الخطافات، غير مرئي) | ~20-50 رمز/استدعاء (مخطط الأداة) |
| الإعداد | icm init --mode hook |
icm init --mode mcp |
| يعمل مع | Claude Code، Gemini، Codex، Copilot، OpenCode (عبر الخطافات) | جميع الأدوات الـ17 المتوافقة مع MCP |
| الاستخراج التلقائي | نعم (الخطافات تشغّل icm extract) |
نعم (أدوات MCP تستدعي store) |
| الأفضل لـ | المستخدمين المتقدمين، توفير الرموز | التوافق الشامل |
# تخزين
icm store -t "my-project" -c "Use PostgreSQL for the main DB" -i high -k "db,postgres"
# استرجاع
icm recall "database choice"
icm recall "auth setup" --topic "my-project" --limit 10
icm recall "architecture" --keyword "postgres"
# إدارة
icm forget <memory-id>
icm consolidate --topic "my-project"
icm topics
icm stats
# استخراج حقائق من النص (قائم على القواعد، بدون تكلفة LLM)
echo "The parser uses Pratt algorithm" | icm extract -p my-project# إنشاء مذكرة
icm memoir create -n "system-architecture" -d "System design decisions"
# إضافة مفاهيم مع تصنيفات
icm memoir add-concept -m "system-architecture" -n "auth-service" \
-d "Handles JWT tokens and OAuth2 flows" -l "domain:auth,type:service"
# ربط المفاهيم
icm memoir link -m "system-architecture" --from "api-gateway" --to "auth-service" -r depends-on
# البحث مع تصفية التصنيف
icm memoir search -m "system-architecture" "authentication"
icm memoir search -m "system-architecture" "service" --label "domain:auth"
# فحص الجوار
icm memoir inspect -m "system-architecture" "auth-service" -D 2
# تصدير الرسم البياني (الصيغ: json, dot, ascii, ai)
icm memoir export -m "system-architecture" -f ascii # رسم بالأحرف مع أشرطة الثقة
icm memoir export -m "system-architecture" -f dot # Graphviz DOT (اللون = مستوى الثقة)
icm memoir export -m "system-architecture" -f ai # Markdown محسّن لسياق LLM
icm memoir export -m "system-architecture" -f json # JSON منظم مع جميع البيانات الوصفية
# توليد تصور SVG
icm memoir export -m "system-architecture" -f dot | dot -Tsvg > graph.svg| الأداة | الوصف |
|---|---|
icm_memory_store |
التخزين مع إزالة التكرار التلقائي (تشابه >85% → تحديث بدلًا من تكرار) |
icm_memory_recall |
البحث بالاستعلام، التصفية بحسب الموضوع و/أو الكلمة المفتاحية |
icm_memory_update |
تعديل ذاكرة في مكانها (المحتوى، الأهمية، الكلمات المفتاحية) |
icm_memory_forget |
حذف ذاكرة بالمعرّف |
icm_memory_consolidate |
دمج جميع ذكريات موضوع واحد في ملخص |
icm_memory_list_topics |
سرد جميع المواضيع مع الأعداد |
icm_memory_stats |
إحصاءات الذاكرة الإجمالية |
icm_memory_health |
تدقيق نظافة المواضيع (القِدَم، الحاجة للدمج) |
icm_memory_embed_all |
ملء التضمينات للبحث الشعاعي بأثر رجعي |
| الأداة | الوصف |
|---|---|
icm_memoir_create |
إنشاء مذكرة جديدة (حاوية المعرفة) |
icm_memoir_list |
سرد جميع المذكرات |
icm_memoir_show |
عرض تفاصيل المذكرة وجميع المفاهيم |
icm_memoir_add_concept |
إضافة مفهوم مع تصنيفات |
icm_memoir_refine |
تحديث تعريف مفهوم |
icm_memoir_search |
بحث نصي كامل، مع تصفية اختيارية بحسب التصنيف |
icm_memoir_search_all |
البحث عبر جميع المذكرات |
icm_memoir_link |
إنشاء علاقة مكتوبة بين مفهومين |
icm_memoir_inspect |
فحص المفهوم والجوار في الرسم البياني (BFS) |
icm_memoir_export |
تصدير الرسم البياني (json, dot, ascii, ai) مع مستويات الثقة |
| الأداة | الوصف |
|---|---|
icm_feedback_record |
تسجيل تصحيح عند خطأ توقع الذكاء الاصطناعي |
icm_feedback_search |
البحث في التصحيحات السابقة لتوجيه التنبؤات المستقبلية |
icm_feedback_stats |
إحصاءات التغذية الراجعة: العدد الإجمالي، التوزيع بحسب الموضوع، الأكثر تطبيقًا |
part_of · depends_on · related_to · contradicts · refines · alternative_to · caused_by · instance_of · superseded_by
الذاكرة الحلقية (المواضيع) تلتقط القرارات والأخطاء والتفضيلات. لكل ذكرى وزن يتلاشى مع الوقت بناءً على الأهمية:
| الأهمية | التلاشي | الحذف | السلوك |
|---|---|---|---|
critical |
لا يوجد | أبدًا | لا تُنسى أبدًا، ولا تُحذف |
high |
بطيء (0.5× المعدل) | أبدًا | تتلاشى ببطء، ولا تُحذف تلقائيًا |
medium |
عادي | نعم | تلاشٍ قياسي، تُحذف عند انخفاض الوزن عن الحد |
low |
سريع (2× المعدل) | نعم | تُنسى بسرعة |
التلاشي واعٍ بالوصول: الذكريات المُستعادة بكثرة تتلاشى بشكل أبطأ (decay / (1 + access_count × 0.1)). يُطبَّق تلقائيًا عند الاسترجاع (إذا مضى >24 ساعة منذ آخر تلاشٍ).
نظافة الذاكرة مدمجة:
- إزالة التكرار التلقائي: تخزين محتوى بتشابه >85% مع ذكرى موجودة في نفس الموضوع يُحدّثها بدلًا من إنشاء نسخة مكررة
- تلميحات الدمج: عندما يتجاوز موضوعٌ ما 7 مدخلات، يُنبّه
icm_memory_storeالمستدعي بالدمج - تدقيق الصحة: يُقدّم
icm_memory_healthتقريرًا بعدد المدخلات في كل موضوع، ومتوسط الوزن، والمدخلات القديمة، والحاجة للدمج - لا فقدان صامت للبيانات: الذكريات الحرجة وعالية الأهمية لا تُحذف تلقائيًا أبدًا
الذاكرة الدلالية (المذكرات) تلتقط المعرفة المنظمة كرسم بياني. المفاهيم دائمة — تُحسَّن ولا تتلاشى. استخدم superseded_by للإشارة إلى الحقائق المتقادمة بدلًا من حذفها.
عند تفعيل التضمينات، يستخدم ICM البحث الهجين:
- FTS5 BM25 (30%) — مطابقة كلمات مفتاحية نصية كاملة
- تشابه جيب التمام (70%) — بحث شعاعي دلالي عبر sqlite-vec
النموذج الافتراضي: intfloat/multilingual-e5-base (768d، أكثر من 100 لغة). قابل للضبط في ملف الضبط:
[embeddings]
# enabled = false # تعطيل كليًا (بدون تنزيل نموذج)
model = "intfloat/multilingual-e5-base" # 768d، متعدد اللغات (الافتراضي)
# model = "intfloat/multilingual-e5-small" # 384d، متعدد اللغات (أخف)
# model = "intfloat/multilingual-e5-large" # 1024d، متعدد اللغات (أعلى دقة)
# model = "Xenova/bge-small-en-v1.5" # 384d، إنجليزي فقط (الأسرع)
# model = "jinaai/jina-embeddings-v2-base-code" # 768d، محسّن للكودلتخطي تنزيل نموذج التضمين كليًا، استخدم أيًا مما يلي:
icm --no-embeddings serve # علامة CLI
ICM_NO_EMBEDDINGS=1 icm serve # متغير بيئةأو اضبط enabled = false في ملف الضبط. سيعود ICM إلى البحث بكلمات مفتاحية FTS5 (يعمل مع ذلك، لكن بدون مطابقة دلالية).
تغيير النموذج يُعيد إنشاء فهرس الشعاعيات تلقائيًا (تُمسح التضمينات الموجودة ويمكن إعادة توليدها بـ icm_memory_embed_all).
ملف SQLite واحد. بدون خدمات خارجية، بدون تبعية على الشبكة.
~/Library/Application Support/dev.icm.icm/memories.db # macOS
~/.local/share/dev.icm.icm/memories.db # Linux
C:\Users\<user>\AppData\Local\icm\icm\data\memories.db # Windows
icm config # عرض الضبط النشطموقع ملف الضبط (خاص بكل منصة، أو $ICM_CONFIG):
~/Library/Application Support/dev.icm.icm/config.toml # macOS
~/.config/icm/config.toml # Linux
C:\Users\<user>\AppData\Roaming\icm\icm\config\config.toml # Windows
راجع config/default.toml لجميع الخيارات.
يستخرج ICM الذكريات تلقائيًا عبر ثلاث طبقات:
Layer 0: Pattern hooks Layer 1: PreCompact Layer 2: UserPromptSubmit
(zero LLM cost) (zero LLM cost) (zero LLM cost)
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ PostToolUse hook │ │ PreCompact hook │ │ UserPromptSubmit │
│ │ │ │ │ │
│ • Bash errors │ │ Context about to │ │ User sends prompt │
│ • git commits │ │ be compressed → │ │ → icm recall │
│ • config changes │ │ extract memories │ │ → inject context │
│ • decisions │ │ from transcript │ │ │
│ • preferences │ │ before they're │ │ Agent starts with │
│ • learnings │ │ lost forever │ │ relevant memories │
│ • constraints │ │ │ │ already loaded │
│ │ │ Same patterns + │ │ │
│ Rule-based, no LLM│ │ --store-raw fallbk│ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
| الطبقة | الحالة | تكلفة LLM | أمر الخطاف | الوصف |
|---|---|---|---|---|
| الطبقة 0 | مُنفَّذة | 0 | icm hook post |
استخراج كلمات مفتاحية قائم على القواعد من مخرجات الأداة |
| الطبقة 1 | مُنفَّذة | 0 | icm hook compact |
استخراج من النص قبل ضغط السياق |
| الطبقة 2 | مُنفَّذة | 0 | icm hook prompt |
حقن الذكريات المُستعادة عند كل موجه مستخدم |
تُثبَّت الطبقات الثلاث تلقائيًا بـ icm init --mode hook.
| النظام | الطريقة | تكلفة LLM | زمن الاستجابة | يلتقط الضغط؟ |
|---|---|---|---|---|
| ICM | استخراج بـ3 طبقات | 0 إلى ~500 رمز/جلسة | 0ms | نعم (PreCompact) |
| Mem0 | استدعاءان LLM/رسالة | ~2k رمز/رسالة | 200-2000ms | لا |
| claude-mem | PostToolUse + غير متزامن | ~1-5k رمز/جلسة | 8ms خطاف | لا |
| MemGPT/Letta | العميل يدير نفسه | 0 هامشية | 0ms | لا |
| DiffMem | فروق Git | 0 | 0ms | لا |
ICM Benchmark (1000 memories, 384d embeddings)
──────────────────────────────────────────────────────────
Store (no embeddings) 1000 ops 34.2 ms 34.2 µs/op
Store (with embeddings) 1000 ops 51.6 ms 51.6 µs/op
FTS5 search 100 ops 4.7 ms 46.6 µs/op
Vector search (KNN) 100 ops 59.0 ms 590.0 µs/op
Hybrid search 100 ops 95.1 ms 951.1 µs/op
Decay (batch) 1 ops 5.8 ms 5.8 ms/op
──────────────────────────────────────────────────────────
Apple M1 Pro، SQLite في الذاكرة، خيط واحد. icm bench --count 1000
سير عمل متعدد الجلسات مع مشروع Rust حقيقي (12 ملفًا، ~550 سطرًا). الجلسات الثانية وما بعدها تُظهر أكبر المكاسب حيث يستعيد ICM بدلًا من إعادة قراءة الملفات.
ICM Agent Benchmark (10 sessions, model: haiku, 3 runs averaged)
══════════════════════════════════════════════════════════════════
Without ICM With ICM Delta
Session 2 (recall)
Turns 5.7 4.0 -29%
Context (input) 99.9k 67.5k -32%
Cost $0.0298 $0.0249 -17%
Session 3 (recall)
Turns 3.3 2.0 -40%
Context (input) 74.7k 41.6k -44%
Cost $0.0249 $0.0194 -22%
══════════════════════════════════════════════════════════════════
icm bench-agent --sessions 10 --model haiku
يستعيد العميل حقائق محددة من وثيقة تقنية مكثفة عبر الجلسات. الجلسة 1 تقرأ وتحفظ؛ الجلسات الثانية وما بعدها تجيب على 10 أسئلة واقعية بدون النص المصدر.
ICM Recall Benchmark (10 questions, model: haiku, 5 runs averaged)
══════════════════════════════════════════════════════════════════════
No ICM With ICM
──────────────────────────────────────────────────────────────────────
Average score 5% 68%
Questions passed 0/10 5/10
══════════════════════════════════════════════════════════════════════
icm bench-recall --model haiku
نفس الاختبار مع النماذج المحلية — حقن السياق البحت، بدون حاجة لاستخدام الأدوات.
Model Params No ICM With ICM Delta
─────────────────────────────────────────────────────────
qwen2.5:14b 14B 4% 97% +93%
mistral:7b 7B 4% 93% +89%
llama3.1:8b 8B 4% 93% +89%
qwen2.5:7b 7B 4% 90% +86%
phi4:14b 14B 6% 79% +73%
llama3.2:3b 3B 0% 76% +76%
gemma2:9b 9B 4% 76% +72%
qwen2.5:3b 3B 2% 58% +56%
─────────────────────────────────────────────────────────
scripts/bench-ollama.sh qwen2.5:14b
جميع المعايير تستخدم استدعاءات API حقيقية — بدون محاكاة، بدون ردود وهمية، بدون إجابات مخزنة مؤقتًا.
- معيار العميل: يُنشئ مشروع Rust حقيقيًا في مجلد مؤقت. يُشغّل N جلسات مع
claude -p --output-format json. بدون ICM: ضبط MCP فارغ. مع ICM: خادم MCP حقيقي + استخراج تلقائي + حقن السياق. - احتفاظ المعرفة: يستخدم وثيقة تقنية خيالية ("بروتوكول ميريديان"). يُسجّل الإجابات بمطابقة الكلمات المفتاحية مع الحقائق المتوقعة. مهلة 120 ثانية لكل استدعاء.
- العزل: كل تشغيل يستخدم مجلده المؤقت الخاص وقاعدة بيانات SQLite جديدة. لا استمرارية للجلسة.
تتشارك جميع الأدوات الـ17 نفس قاعدة بيانات SQLite. الذاكرة المُخزَّنة بواسطة Claude تصبح متاحة فورًا لـ Gemini وCodex وCopilot وCursor وجميع الأدوات الأخرى.
ICM Multi-Agent Efficiency Benchmark (10 seeded facts, 5 CLI agents)
╔══════════════╦═══════╦══════════╦════════╦═══════════╦═══════╗
║ Agent ║ Facts ║ Accuracy ║ Detail ║ Latency ║ Score ║
╠══════════════╬═══════╬══════════╬════════╬═══════════╬═══════╣
║ Claude Code ║ 10/10 ║ 100% ║ 5/5 ║ ~15s ║ 99 ║
║ Gemini CLI ║ 10/10 ║ 100% ║ 5/5 ║ ~33s ║ 94 ║
║ Copilot CLI ║ 10/10 ║ 100% ║ 5/5 ║ ~10s ║ 100 ║
║ Cursor Agent ║ 10/10 ║ 100% ║ 5/5 ║ ~16s ║ 99 ║
║ Aider ║ 10/10 ║ 100% ║ 5/5 ║ ~5s ║ 100 ║
╠══════════════╬═══════╬══════════╬════════╬═══════════╬═══════╣
║ AVERAGE ║ ║ ║ ║ ║ 98 ║
╚══════════════╩═══════╩══════════╩════════╩═══════════╩═══════╝
النتيجة = 60% دقة الاسترجاع + 30% تفاصيل الحقائق + 10% السرعة. 98% كفاءة متعددة العملاء.
| القدرة | ICM | Mem0 | Engram | AgentMemory |
|---|---|---|---|---|
| دعم الأدوات | 17 | SDK فقط | ~6-8 | ~10 |
| إعداد بأمر واحد | icm init |
SDK يدوي | يدوي | يدوي |
| الخطافات (استرجاع تلقائي عند البدء) | 5 أدوات | لا يوجد | عبر MCP | أداة واحدة |
| بحث هجين (FTS5 + شعاعي) | 30/70 موزون | شعاعي فقط | FTS5 فقط | FTS5+شعاعي |
| تضمينات متعددة اللغات | 100+ لغة (768d) | حسب الحالة | لا يوجد | إنجليزي 384d |
| رسم بياني للمعرفة | نظام Memoir | لا يوجد | لا يوجد | لا يوجد |
| تلاشٍ زمني + دمج | واعٍ بالوصول | لا يوجد | أساسي | أساسي |
| لوحة تحكم TUI | icm dashboard |
لا يوجد | نعم | عارض ويب |
| استخراج تلقائي من مخرجات الأداة | 3 طبقات، صفر LLM | لا يوجد | لا يوجد | لا يوجد |
| حلقة تغذية راجعة/تصحيح | icm_feedback_* |
لا يوجد | لا يوجد | لا يوجد |
| بيئة التشغيل | Rust ملف تنفيذي واحد | Python | Go | Node.js |
| محلي أولًا، صفر تبعيات | ملف SQLite | سحابي أولًا | SQLite | SQLite |
| دقة استرجاع متعددة العملاء | 98% | غ/م | غ/م | 95.2% |
| الوثيقة | الوصف |
|---|---|
| دليل التكامل | إعداد جميع الأدوات الـ17: Claude Code، Copilot، Cursor، Windsurf، Zed، Amp، إلخ |
| البنية التقنية | هيكل الحزم، مسار البحث، نموذج التلاشي، تكامل sqlite-vec، الاختبار |
| دليل المستخدم | التثبيت، تنظيم المواضيع، الدمج، الاستخراج، استكشاف الأخطاء |
| نظرة عامة على المنتج | حالات الاستخدام، المعايير، المقارنة مع البدائل |
المصدر المتاح — مجاني للأفراد والفرق التي لا يتجاوز عددها 20 شخصًا. يُشترط ترخيص المؤسسات للمنظمات الأكبر. التواصل: contact@rtk-ai.app
