وكيل برمجة بالذكاء الاصطناعي مفتوح المصدر.
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt
باختصار — وكيل البرمجة مفتوح المصدر الوحيد الذي يقدّم منسِّق تنفيذ مبني على DAG، وواجهة REST لإدارة المهام، ونطاق MCP لكل وكيل، وآلة حالات جلسة بـ 9 حالات، وماسح ثغرات مدمجًا، إضافةً إلى تطبيق Android من الدرجة الأولى مع استدلال LLM على الجهاز. لا يجمع أيّ CLI آخر — مملوك أو مفتوح — كل هذه الميزات.
See the English README.md for the full positioning prose (vs. vendor-locked CLIs, vs. BYOM peers, vs. specialized CLIs) and architecture diagram.
Legend: ✅ shipped · ❌ absent · partial limited/incomplete · plugin via community add-on · paid behind a subscription tier.
| Capability | This fork | Claude Code | Codex CLI | Gemini CLI | opencode (upstream) | Aider | Goose | Cline | Roo Code | Cursor | Continue | Crush | Qwen Code |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Open source | ✅ | ❌ | partial | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| BYOM (bring your own model) | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | partial | ✅ | ✅ | partial |
| Local models (llama.cpp / Ollama) | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Parallel agents in isolated worktrees | ✅ native | ✅ (Teams) | partial | ❌ | via plugin | ❌ | partial | ✅ (v3.58) | partial | ❌ | ❌ | ❌ | ❌ |
| Explicit DAG orchestration | ✅ unique | ad-hoc | ❌ | ❌ | ❌ | ❌ | recipes (linear) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| REST task API (programmable) | ✅ unique | partial (SDK) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TUI task dashboard | ✅ | ❌ | ❌ | ❌ | partial | ❌ | ❌ | ❌ | ❌ | n/a | n/a | ❌ | partial |
| MCP support | ✅ + per-agent scoping | ✅ | ✅ | ✅ | ✅ | via plugins | ✅ | ✅ | ✅ | partial | ✅ | ❌ | ✅ |
| 9-state session FSM | ✅ unique (6/9 persisted) | ❌ | ❌ | ❌ | basic | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Built-in vulnerability scanner | ✅ unique | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| DLP / secret redaction before LLM call | ✅ | partial | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Per-agent tool allow/deny | ✅ | partial | ❌ | ❌ | basic | ❌ | ❌ | ❌ | partial | ❌ | ❌ | ❌ | ❌ |
| Docker sandboxing (bash only) | ✅ bash-only | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Git auto-commits / rollback | ✅ | ✅ | ✅ | ✅ | ✅ (signed) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Capability | This fork | Claude Code | Codex CLI | Gemini CLI | opencode (upstream) | Aider | Goose | Cline | Roo Code | Cursor | Continue | Crush | Qwen Code |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LSP integration (go-to-def, diagnostics) | ✅ | partial | partial | partial | ✅ | partial | partial | ✅ | ✅ | ✅ | ✅ | partial | partial |
Plugin SDK (@opencode/plugin) |
✅ | partial | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Prompt caching (cloud + local KV) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RAG: BM25 or vector (selectable) + exponential decay | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | vector only | ❌ | vector only | vector only | ❌ | ❌ |
Auto-learn (requires learner agent configured) |
opt-in | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Auto-compact (AI summarization) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | partial | ✅ |
| Unified-diff edit engine | ✅ | ✅ | ✅ | partial | ✅ | ✅ | partial | partial | ✅ | partial | partial | partial | partial |
| ACP (Agent Client Protocol) layer | ✅ | ❌ | ❌ | ❌ | basic | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Capability | This fork | Claude Code | Codex CLI | Gemini CLI | opencode (upstream) | Aider | Goose | Cline | Roo Code | Cursor | Continue | Crush | Qwen Code |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| First-class Android app | ✅ unique | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| iOS (remote mode) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Adaptive runtime (VRAM/CPU, thermal Android-only) | ✅ partial | ❌ | ❌ | ❌ | hardcoded | hardcoded | hardcoded | hardcoded | hardcoded | n/a | hardcoded | hardcoded | hardcoded |
| STT (voice-to-text, Parakeet) | ✅ desktop + mobile | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | partial | ❌ | ❌ | ❌ | ❌ | ❌ |
| TTS (Kokoro desktop + mobile; Pocket desktop only + voice clone) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| OAuth deep-link callback (Tauri) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
mDNS service discovery (CLI flag --mdns) |
opt-in | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Upstream branch watcher (vcs.branch.behind) |
✅ unique | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Collaborative mode (JWT + presence + file-lock) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | partial | ❌ | ❌ | ❌ |
| AnythingLLM bridge | ✅ unique | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| GDPR export/erasure route | ✅ unique | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Price | free + BYOM | $20/mo sub | $20/mo sub | 1000/day free | free + BYOM | free + BYOM | free + BYOM | free + BYOM | free + BYOM | $20/mo sub | free + BYOM | free + BYOM | free + BYOM |
⚡ لمحة سريعة
OpenCode (الفورك) — وكيل برمجة مدعوم بالذكاء الاصطناعي يعمل على الحاسوب المكتبي والخادم والهاتف، بنماذج محلية من البداية إلى النهاية، دون أي اعتماد على السحابة، مع بدائل حوكمة بمستوى المؤسسات مدمجة. فورك لـ anomalyco/opencode يحافظ عليه Rwanbt.
# CLI (macOS / Linux / Windows)
curl -fsSL https://opencode.ai/install | bash
# Desktop app + Android APK
# → https://github.com/Rwanbt/opencode/releases/latest| 🤖 DAG orchestration | Wave-based parallel agents, up to 5 concurrent |
| 🧠 Local LLM end-to-end | llama.cpp + runtime that auto-tunes to your VRAM / CPU |
| 📱 Android app | On-device inference, terminal, PTY — single APK |
| 🎙️ Voice STT / TTS | Parakeet (25 languages) + Kokoro desktop+mobile / Pocket TTS desktop |
| 🔒 9-state session FSM | 6 of 9 states persist to SQLite, audit log survives restart |
| 🔌 REST task API | 8 endpoints — drive the agent from cron, Temporal, Airflow |
| 🛡️ Vulnerability scanner | Auto-scans every edit / write for secrets & injection sinks |
| 🔍 RAG: BM25 or vector | Selectable at index time + exponential confidence decay |
opencode # TUI
opencode run "fix the failing test in src/" # one-shot💡 تحتاج المزيد من التفاصيل؟ كل قسم أدناه مطويّ — انقر لفتح ما يهمّك فقط.
ميزات الفورك
هذا فورك من anomalyco/opencode يديره Rwanbt. يتم الحفاظ على المزامنة مع المستودع الأصلي. راجع فرع dev لآخر التغييرات.
يشغّل OpenCode نماذج AI محلياً على أجهزة المستهلك (8 جيجابايت VRAM / 16 جيجابايت RAM)، دون أي اعتماد على السحابة لنماذج 4B–7B.
تحسين الأوامر (تخفيض 94%)
- ~1K رمز للأمر النظامي للنماذج المحلية (مقابل ~16K للسحابية)
- مخططات أدوات هيكلية (توقيعات من سطر واحد بدلاً من أوصاف بالكيلوبايت)
- قائمة بيضاء من 7 أدوات (bash, read, edit, write, glob, grep, question)
- بدون قسم skills، معلومات بيئة محدودة
محرك الاستدلال (llama.cpp b8731)
- واجهة GPU خلفية Vulkan، تُحمَّل تلقائياً عند أول تحميل نموذج
- تكوين تكيُّفي أثناء التشغيل (
packages/opencode/src/local-llm-server/auto-config.ts):n_gpu_layers، الخيوط، حجم batch/ubatch، تكميم ذاكرة KV المؤقتة وحجم السياق، كلها مُستنبطة من VRAM المكتشفة وRAM الحرة وتقسيم CPU big.LITTLE وواجهة GPU الخلفية (CUDA/ROCm/Vulkan/Metal/OpenCL) والحالة الحرارية. يحلّ محل--n-gpu-layers 99المُرمَّز سابقاً — جهاز Android بسعة 4 جيجابايت يعمل الآن بوضع CPU الاحتياطي بدلاً من قتله بسبب OOM، وأجهزة سطح المكتب الرائدة تحصل على batch مضبوط بدلاً من الافتراضي 512. --flash-attn on— Flash Attention لكفاءة الذاكرة--cache-type-k/v— ذاكرة KV المؤقتة مع دوران ؛ مستوى تكيُّفي (f16 / q8_0 / q4_0) حسب هامش VRAM--fit on— تعديل VRAM ثانوي خاص بالـfork (اختياري عبرOPENCODE_LLAMA_ENABLE_FIT=1)- فك الترميز التخميني (
--model-draft) مع حماية VRAM (تعطيل تلقائي عند < 1.5 جيجابايت حرة) - فتحة واحدة (
-np 1) لتقليل استهلاك الذاكرة - إطار قياس الأداء (
bun run bench:llm): قياس قابل للتكرار لـFTL / TPS / ذروة RSS / زمن الجدار لكل نموذج ولكل تشغيل، مع إخراج JSONL للأرشفة في CI
تحويل الكلام إلى نص (Parakeet TDT 0.6B v3 INT8)
- NVIDIA Parakeet عبر ONNX Runtime — ~300 مللي ثانية لـ 5 ثوانٍ من الصوت (18x الوقت الفعلي)
- 25 لغة أوروبية (الإنجليزية، الفرنسية، الألمانية، الإسبانية، إلخ)
- صفر VRAM: معالج فقط (~700 ميجابايت RAM)
- تحميل تلقائي للنموذج (~460 ميجابايت) عند أول ضغطة ميكروفون
- رسم متحرك لشكل الموجة أثناء التسجيل
تحويل النص إلى كلام (Kyutai Pocket TTS)
- TTS فرنسي الأصل من Kyutai (باريس)، 100 مليون معامل
- 8 أصوات مدمجة: Alba, Fantine, Cosette, Eponine, Azelma, Marius, Javert, Jean
- استنساخ صوت بدون تدريب: ارفع ملف WAV أو سجّل من الميكروفون
- معالج فقط، ~6x الوقت الفعلي، خادم HTTP على المنفذ 14100
- بديل: محرك Kokoro TTS ONNX (54 صوتاً، 9 لغات، CMUDict G2P)
إدارة النماذج
- بحث HuggingFace مع شارات توافق VRAM/RAM لكل نموذج
- تحميل وتشغيل وإيقاف وحذف نماذج GGUF من الواجهة
- كتالوج مُنتقى مسبقاً: Gemma 3 4B, Qwen3 4B/1.7B/0.6B
- عدد رموز إخراج ديناميكي حسب حجم النموذج
- كشف تلقائي لنموذج المسودة (0.5B–0.8B) لفك الترميز التخميني
التكوين
- إعدادات مسبقة: Fast / Quality / Eco / Long Context (تحسين بنقرة واحدة)
- أداة مراقبة VRAM مع شريط استخدام مرمّز بالألوان (أخضر / أصفر / أحمر)
- نوع ذاكرة KV المؤقتة: auto / q8_0 / q4_0 / f16
- تفريغ GPU: auto / gpu-max / balanced
- تعيين الذاكرة: auto / on / off
- مفتاح البحث على الويب (أيقونة الكرة الأرضية في شريط الأوامر)
موثوقية الوكيل (النماذج المحلية)
- فحوصات ما قبل التنفيذ (على مستوى الكود، 0 رمز): فحص وجود الملف قبل التحرير، التحقق من محتوى old_string، فرض القراءة قبل التحرير، منع الكتابة على ملف موجود
- كسر تلقائي لحلقة الدوران: استدعاءان متطابقان لأداة → حقن خطأ (حماية على مستوى الكود، وليس الأمر)
- قياس أداء الأدوات: معدل نجاح/خطأ لكل جلسة مع تفصيل لكل أداة، تسجيل تلقائي
متعدد المنصات: Windows (Vulkan)، Linux، macOS، Android
فوّض العمل إلى وكلاء فرعيين يعملون بشكل غير متزامن. اضبط mode: "background" على أداة task وستُرجع task_id فوراً بينما يعمل الوكيل في الخلفية. يتم نشر أحداث الناقل (TaskCreated، TaskCompleted، TaskFailed) لتتبع دورة الحياة.
نسّق وكلاء متعددين بالتوازي باستخدام أداة team. حدد المهام الفرعية مع حواف التبعية؛ تبني computeWaves() رسم DAG وتنفذ المهام المستقلة بشكل متزامن (حتى 5 وكلاء متوازيين). التحكم في الميزانية عبر max_cost (بالدولار) وmax_agents. يتم تمرير السياق من المهام المكتملة تلقائياً إلى المهام التابعة.
تحصل كل مهمة خلفية تلقائياً على git worktree خاص بها. يرتبط مساحة العمل بالجلسة في قاعدة البيانات. إذا لم تُنتج المهمة أي تغييرات في الملفات، يتم تنظيف worktree تلقائياً. يوفر هذا عزلاً على مستوى git دون الحاجة إلى حاويات.
REST API كامل لإدارة دورة حياة المهام:
| Method | Path | Description |
|---|---|---|
| GET | /task/ |
List tasks (filter by parent, status) |
| GET | /task/:id |
Get task details + status + worktree info |
| GET | /task/:id/messages |
Retrieve task session messages |
| POST | /task/:id/cancel |
Cancel a running or queued task |
| POST | /task/:id/resume |
Resume completed/failed/blocked task |
| POST | /task/:id/followup |
Send follow-up message to idle task |
| POST | /task/:id/promote |
Promote background task to foreground |
| GET | /task/:id/team |
Aggregated team view (costs, diffs per member) |
إضافة شريط جانبي تعرض المهام الخلفية النشطة مع أيقونات الحالة في الوقت الفعلي:
| Icon | Status |
|---|---|
~ |
Running / Retrying |
? |
Queued / Awaiting input |
! |
Blocked |
x |
Failed |
* |
Completed |
- |
Cancelled |
نافذة حوار مع إجراءات: فتح جلسة المهمة، إلغاء، استئناف، إرسال متابعة، التحقق من الحالة.
قوائم سماح/منع لخوادم MCP لكل وكيل. يتم الإعداد في opencode.json تحت حقل mcp لكل وكيل. تقوم دالة toolsForAgent() بتصفية أدوات MCP المتاحة بناءً على نطاق الوكيل المستدعي.
{
"agents": {
"explore": {
"mcp": { "deny": ["dangerous-server"] }
}
}
}تتبع الجلسات إحدى 9 حالات، محفوظة في قاعدة البيانات:
idle · busy · retry · queued · blocked · awaiting_input · completed · failed · cancelled
الحالات الدائمة (queued، blocked، awaiting_input، completed، failed، cancelled) تبقى بعد إعادة تشغيل قاعدة البيانات. الحالات المؤقتة في الذاكرة (idle، busy، retry) تُعاد تهيئتها عند إعادة التشغيل.
وكيل تنسيق للقراءة فقط (50 خطوة كحد أقصى). لديه صلاحية الوصول إلى أدوات task وteam لكن جميع أدوات التحرير محظورة. يفوّض التنفيذ إلى وكلاء البناء/العامين ويجمّع النتائج.
البنية التقنية
أكثر من 25 مزوداً جاهزاً: Anthropic، OpenAI، Google Gemini، Azure، AWS Bedrock، Vertex AI، OpenRouter، GitHub Copilot، XAI، Mistral، Groq، DeepInfra، Cerebras، Cohere، TogetherAI، Perplexity، Vercel، Venice، GitLab، Gateway، Ollama Cloud، بالإضافة إلى أي endpoint متوافق مع OpenAI (Ollama، LM Studio، vLLM، LocalAI). الأسعار مأخوذة من models.dev.
| Agent | Mode | Access | Description |
|---|---|---|---|
| build | primary | full | وكيل التطوير الافتراضي |
| plan | primary | read-only | التحليل واستكشاف الكود |
| general | subagent | full (no todowrite) | مهام معقدة متعددة الخطوات |
| explore | subagent | read-only | بحث سريع في قاعدة الكود |
| orchestrator | subagent | read-only + task/team | منسق متعدد الوكلاء (50 خطوة) |
| critic | subagent | read-only + bash + LSP | مراجعة الكود: أخطاء، أمان، أداء |
| tester | subagent | full (no todowrite) | كتابة وتشغيل الاختبارات، التحقق من التغطية |
| documenter | subagent | full (no todowrite) | JSDoc، README، توثيق مضمّن |
| compaction | hidden | none | تلخيص السياق بالذكاء الاصطناعي |
| title | hidden | none | توليد عنوان الجلسة |
| summary | hidden | none | تلخيص الجلسة |
دعم كامل لبروتوكول خادم اللغة مع فهرسة الرموز والتشخيصات ودعم لغات متعددة (TypeScript، Deno، Vue، وقابل للتوسيع). يتنقل الوكيل في الكود عبر رموز LSP بدلاً من البحث النصي، مما يتيح go-to-definition دقيق وfind-references واكتشاف أخطاء الأنواع في الوقت الفعلي.
عميل وخادم Model Context Protocol. يدعم نقل stdio وHTTP/SSE وStreamableHTTP. تدفق مصادقة OAuth للخوادم البعيدة. إمكانيات الأدوات والمطالبات والموارد. تحديد النطاق لكل وكيل عبر قوائم السماح/المنع.
REST API مبني على Hono مع مسارات مُنَمَّطة وتوليد مواصفات OpenAPI. دعم WebSocket لـ PTY (الطرفية الزائفة). SSE لبث الأحداث في الوقت الفعلي. مصادقة أساسية، CORS، ضغط gzip. واجهة TUI هي واحدة من الواجهات الأمامية؛ يمكن التحكم بالخادم من أي عميل HTTP أو واجهة الويب أو تطبيق الجوال.
ضغط تلقائي مع تلخيص مدفوع بالذكاء الاصطناعي عندما يقترب استخدام الرموز من حد سياق النموذج. تقليم واعٍ بالرموز مع عتبات قابلة للتكوين (PRUNE_MINIMUM 20KB، PRUNE_PROTECT 40KB). مخرجات أداة Skill محمية من التقليم.
ترقيع unified diff مع التحقق من الأجزاء. يطبق أجزاء مستهدفة على مناطق محددة من الملف بدلاً من إعادة كتابة الملف بالكامل. أداة multi-edit للعمليات المجمعة عبر الملفات.
صلاحيات من 3 حالات (allow / deny / ask) مع مطابقة أنماط wildcard. أكثر من 100 تعريف لعدد معاملات أوامر bash للتحكم الدقيق. فرض حدود المشروع يمنع الوصول إلى الملفات خارج مساحة العمل.
نظام لقطات يسجل حالة الملف قبل كل تنفيذ أداة. يدعم revert وunrevert مع حساب الفروقات. يمكن التراجع عن التغييرات لكل رسالة أو لكل جلسة.
تكلفة لكل رسالة مع تفصيل كامل للرموز (input، output، reasoning، cache read، cache write). حدود ميزانية لكل فريق (max_cost). أمر stats مع تجميع لكل نموذج ولكل يوم. تكلفة الجلسة في الوقت الفعلي معروضة في TUI. بيانات الأسعار مأخوذة من models.dev.
SDK كامل (@opencode/plugin) مع بنية hooks. تحميل ديناميكي من حزم npm أو نظام الملفات. إضافات مدمجة لمصادقة Codex وGitHub Copilot وGitLab وPoe.
المفاهيم الخاطئة الشائعة
لمنع الالتباس من الملخصات المولّدة بالذكاء الاصطناعي لهذا المشروع:
- واجهة TUI مكتوبة بـ TypeScript (SolidJS + @opentui لعرض الطرفية)، وليس Rust.
- Tree-sitter يُستخدم فقط لتلوين بناء الجملة في TUI وتحليل أوامر bash، وليس لتحليل الكود على مستوى الوكيل.
- Docker sandboxing اختياري (
experimental.sandbox.type: "docker")؛ العزل الافتراضي يتم عبر git worktrees. - RAG اختياري (
experimental.rag.enabled: true)؛ إدارة السياق الافتراضية عبر فهرسة رموز LSP + الضغط التلقائي. - لا يوجد "وضع مراقبة" يقترح إصلاحات تلقائية -- مراقب الملفات موجود لأغراض البنية التحتية فقط.
- التصحيح الذاتي يستخدم حلقة الوكيل القياسية (يرى LLM الأخطاء في نتائج الأدوات ويعيد المحاولة)، وليس آلية إصلاح تلقائي متخصصة.
مصفوفة القدرات
| Capability | Status | Notes |
|---|---|---|
| Background tasks | Implemented | mode: "background" on task tool |
| Agent teams (DAG) | Implemented | Wave-based parallel execution, budget control |
| Git worktree isolation | Implemented | Auto-created per background task |
| Task REST API | Implemented | 8 endpoints for full lifecycle |
| TUI task dashboard | Implemented | Sidebar + dialog actions |
| MCP agent scoping | Implemented | Per-agent allow/deny config |
| 9-state lifecycle | Implemented | Persistent to SQLite |
| Orchestrator agent | Implemented | Read-only coordinator |
| Multi-provider (25+) | Implemented | Including local models via OpenAI-compatible API |
| LSP integration | Implemented | Symbols, diagnostics, multi-language |
| MCP protocol | Implemented | Client + server, 3 transports |
| Plugin system | Implemented | SDK + hook architecture |
| Cost tracking | Implemented | Per-message, per-team, per-model |
| Context auto-compact | Implemented | AI summarization + pruning |
| Git rollback/snapshots | Implemented | Revert/unrevert per message |
| Specialized agents | Implemented | critic, tester, documenter subagents |
| Dry run / command preview | Implemented | dry_run param on bash/edit/write tools |
| Auto-learn | Implemented | Post-session lesson extraction to .opencode/learnings/ |
| Web search | Implemented | Globe toggle in prompt toolbar |
| Capability | Status | Notes |
|---|---|---|
| Local LLM (llama.cpp b8731) | Implemented | Vulkan GPU, auto-download runtime, --fit auto-VRAM |
| تكوين تكيُّفي أثناء التشغيل | Implemented | auto-config.ts: n_gpu_layers / الخيوط / batch / تكميم KV مستنبطة من VRAM المكتشفة وRAM وbig.LITTLE وواجهة GPU الخلفية والحالة الحرارية |
| إطار قياس الأداء | Implemented | bun run bench:llm يقيس FTL وTPS وذروة RSS وزمن الجدار لكل نموذج؛ إخراج JSONL |
| Flash Attention | Implemented | --flash-attn on on desktop and mobile |
| KV cache quantization | Implemented | q4_0 / q8_0 / f16 adaptive with standard llama.cpp quantization (~50% KV memory savings at q4_0) |
| Exact tokenizer (OpenAI) | Implemented | js-tiktoken لـ gpt-*/o1/o3/o4؛ تقدير تجريبي 3.5 حرف/رمز لـLlama/Qwen/Gemma |
| Speculative decoding | Implemented | VRAM Guard (desktop) / RAM Guard (mobile), draft model auto-detection |
| VRAM / RAM monitoring | Implemented | Desktop: nvidia-smi, Mobile: /proc/meminfo |
| Configuration presets | Implemented | Fast / Quality / Eco / Long Context |
| HuggingFace model search | Implemented | استجابة مُتحقَّق منها عبر Zod، شارات VRAM، مدير التنزيل، 9 نماذج مُنتقاة مسبقاً |
| تنزيلات GGUF قابلة للاستئناف | Implemented | رأس HTTP Range — انقطاع 4G لا يُعيد تشغيل نقل 4 جيجابايت من الصفر |
| STT (Parakeet TDT 0.6B) | Implemented | ONNX Runtime، ~300ms/5s، 25 لغة، سطح المكتب + الجوال (مستمع الميكروفون موصول من الجانبين) |
| TTS (Pocket TTS) | Implemented | 8 أصوات، استنساخ صوت zero-shot، أصلي فرنسي (سطح المكتب فقط — لا يوجد Python sidecar على Android) |
| TTS (Kokoro) | Implemented | 54 صوتاً، 9 لغات، ONNX على سطح المكتب + Android (6 أوامر Tauri موصولة في speech.rs للجوال، CPUExecutionProvider) |
| Prompt reduction (94%) | Implemented | ~1K tokens vs ~16K for cloud, skeleton tool schemas |
| Pre-flight guards | Implemented | File-exists, old_string verification, read-before-edit, write-on-existing (code-level, 0 tokens) |
| Doom loop auto-break | Implemented | Auto-injects error on 2x identical calls (code-level, not prompt) |
| Tool telemetry | Implemented | Per-session success/error rate logging with per-tool breakdown |
| إعادة تشغيل قاطع التيار | Implemented | ensureCorrectModel يتوقف بعد 3 إعادات تشغيل خلال 120 ثانية لتفادي حلقات الاحتراق |
| Capability | Status | Notes |
|---|---|---|
| Docker sandboxing | Implemented | Optional via experimental.sandbox.type: "docker" |
| Vulnerability scanner | Implemented | Auto-scan on edit/write for secrets, injections, unsafe patterns |
| DLP / AgentShield | Implemented | experimental.dlp.enabled: true, redacts secrets before LLM calls |
| Policy engine | Implemented | experimental.policy.enabled: true, conditional rules + custom policies |
| CSP صارمة (سطح المكتب + الجوال) | Implemented | connect-src مقصورة على loopback + HuggingFace + مزوّدات HTTPS؛ بدون unsafe-eval، object-src 'none'، frame-ancestors 'none' |
| تقوية إصدار Android | Implemented | isDebuggable=false، allowBackup=false، isShrinkResources=true، FOREGROUND_SERVICE_TYPE_SPECIAL_USE |
| تقوية إصدار سطح المكتب | Implemented | لم تعد أدوات المطور مفعّلة بالقوة — تمّت استعادة افتراضي Tauri 2 (وضع تصحيح فقط) حتى لا تتمكن ثغرة XSS من الارتباط بـ __TAURI__ في الإنتاج |
| التحقق من مدخلات أوامر Tauri | Implemented | حُرّاس download_model / load_llm_model / delete_model: charset اسم الملف، قائمة سماح HTTPS لـ huggingface.co / hf.co |
| سلسلة تسجيل Rust | Implemented | log + android_logger على الجوال؛ لا eprintln! في الإصدار → لا تسرّب مسار/URL إلى logcat |
| متتبّع تدقيق الأمان | Implemented | SECURITY_AUDIT.md — جميع النتائج مصنّفة S1/S2/S3 مع path:line، الحالة، وتعليل التأجيل للإصلاح |
| Capability | Status | Notes |
|---|---|---|
| Vector DB / RAG | Implemented | experimental.rag.enabled: true, SQLite + cosine similarity |
| Confidence/decay | Implemented | Time-based scoring for RAG embeddings, exponential decay |
| Memory conflict resolution | Dead code | rag/conflict.ts is unit-tested but not invoked in production; treat as unimplemented |
| Capability | Status | Notes |
|---|---|---|
| Mobile app (Tauri) | Implemented | Android: وقت تشغيل مدمج، LLM على الجهاز، STT + TTS (Kokoro). iOS: وضع عن بُعد |
| رابط عميق لعودة OAuth | Implemented | opencode://oauth/callback?providerID=…&code=…&state=… يُنهي تبادل الرمز تلقائياً؛ لا حاجة لنسخ/لصق رمز المصادقة |
| مراقب فرع upstream | Implemented | git fetch دوري (إحماء 30 ثانية، فاصل 5 دقائق) يُطلق vcs.branch.behind عندما يتباعد HEAD المحلي عن upstream المتتبع؛ يُعرض عبر platform.notify() على سطح المكتب والجوال |
| إطلاق PTY بحجم viewport | Implemented | Pty.create({cols, rows}) يستخدم مُقدِّراً من window.innerWidth/innerHeight — تبدأ الصَّدفات بأبعادها النهائية بدلاً من 80×24→36×11، يُصلح خطأ عدم ظهور أول موجه أوامر على Android لـ mksh/bash |
| Collaborative mode | Experimental | JWT auth, presence, file locking, WebSocket broadcast |
| AnythingLLM bridge | Experimental | MCP adapter, context injection, vector store bridge |
| Per-message token display | Partial | Stored in DB, shown as session aggregate |
البنية المعمارية
graph TB
subgraph Clients
TUI[TUI - SolidJS + opentui]
Web[Web UI - SolidJS + Vite]
Desktop[Desktop - Tauri 2.0]
Mobile[Mobile - Tauri iOS/Android]
end
subgraph Server
Hono[Hono HTTP Server<br/>REST + SSE + WebSocket]
Auth[Auth - JWT + Basic]
Broadcast[WebSocket Broadcast]
end
subgraph "Agent Engine"
Session[Session + Agent Loop]
Router[Provider Router]
Tools[Tool Engine<br/>bash, read, write, edit, glob,<br/>grep, list, webfetch, task...]
Context[Context Manager<br/>Auto-compact + Token Pruning]
end
subgraph Intelligence
Cloud[25+ Cloud APIs<br/>Anthropic, OpenAI, Google,<br/>Azure, Bedrock, Vertex...]
Local[Local LLM<br/>llama.cpp b8731 Vulkan<br/>port 14097]
MCP[MCP Servers<br/>stdio, HTTP/SSE, StreamableHTTP]
LSP[15+ LSP Servers<br/>Auto-download + Symbol Index]
end
subgraph "Speech (ONNX Runtime)"
STT[Parakeet TDT 0.6B<br/>25 languages, ~300ms/5s]
TTS[Pocket TTS + Kokoro<br/>Voice Cloning, port 14100]
end
subgraph Storage
DB[(SQLite - Drizzle ORM<br/>Sessions, Messages, Snapshots)]
RAG[RAG - SQLite Vectors]
ALLM[AnythingLLM Bridge]
end
TUI & Web & Desktop & Mobile --> Hono
Hono --> Session
Session --> Router
Router --> Cloud & Local
Session --> Tools
Tools --> LSP & MCP
Session --> Context
Context --> RAG & ALLM
Hono --> DB
Desktop & Mobile --> STT & TTS
| Service | Port | Protocol |
|---|---|---|
| OpenCode Server | 4096 | HTTP (REST + SSE + WebSocket) |
| LLM (llama-server) | 14097 | HTTP (OpenAI-compatible) |
| TTS (pocket-tts) | 14100 | HTTP (FastAPI) |
الأمان والحوكمة
| Feature | Description |
|---|---|
| Sandbox | تنفيذ Docker اختياري (experimental.sandbox.type: "docker") أو وضع المضيف مع فرض حدود المشروع |
| Permissions | نظام من 3 حالات (allow / deny / ask) مع مطابقة أنماط wildcard. أكثر من 100 تعريف لأوامر bash للتحكم الدقيق |
| DLP | منع فقدان البيانات (experimental.dlp) — إخفاء المفاتيح السرية ومفاتيح API وبيانات الاعتماد قبل إرسالها لمزودي LLM |
| Policy Engine | قواعد شرطية (experimental.policy) مع إجراءات block أو warn. حماية المسارات، تحديد حجم التحرير، أنماط regex مخصصة |
| Privacy | المحلي أولاً: جميع البيانات في SQLite على القرص. لا قياس عن بُعد افتراضياً. المفاتيح السرية لا تُسجَّل أبداً. لا تُرسل بيانات لأطراف ثالثة باستثناء مزود LLM المُعدّ |
واجهة الذكاء
| Feature | Description |
|---|---|
| MCP Compliant | دعم كامل لـ Model Context Protocol — أوضاع العميل والخادم، تحديد نطاق الأدوات لكل وكيل عبر قوائم allow/deny |
| Context Files | مجلد .opencode/ مع إعداد opencode.jsonc. الوكلاء مُعرَّفون كـ markdown مع YAML frontmatter. تعليمات مخصصة عبر إعداد instructions |
| Provider Router | أكثر من 25 مزوداً عبر Provider.parseModel("provider/model"). انتقال تلقائي، تتبع التكاليف، توجيه واعٍ بالرموز |
| RAG System | بحث متجهي محلي اختياري (experimental.rag) مع نماذج تضمين قابلة للتكوين (OpenAI/Google). فهرسة تلقائية للملفات المعدَّلة |
| AnythingLLM Bridge | تكامل اختياري (experimental.anythingllm) — حقن السياق، محول خادم MCP، جسر مخزن المتجهات، Agent Skills HTTP API |
فروع الميزات (مُنفَّذة على dev)
تم تنفيذ ثلاث ميزات رئيسية في فروع مخصصة ودمجها في dev. كل منها مُدارة بأعلام الميزات ومتوافقة مع الإصدارات السابقة.
تعاون متعدد المستخدمين في الوقت الفعلي. تم التنفيذ:
- مصادقة JWT — رموز HMAC-SHA256 مع تدوير التحديث، متوافقة مع basic auth
- إدارة المستخدمين — تسجيل، أدوار (admin/member/viewer)، تطبيق RBAC
- WebSocket broadcast — بث أحداث في الوقت الفعلي عبر GlobalBus → Broadcast
- نظام الحضور — حالة online/idle/away مع heartbeat كل 30 ثانية
- قفل الملفات — أقفال متفائلة على أدوات edit/write مع كشف التعارضات
- الواجهة الأمامية — نموذج تسجيل الدخول، مؤشر الحضور، شارة المراقب، WebSocket hooks
الإعداد: experimental.collaborative.enabled: true
تطبيق Android/iOS أصلي عبر Tauri 2.0 مع بيئة تشغيل مدمجة — APK واحد، صفر تبعيات خارجية. تم التنفيذ:
الطبقة 1 — بيئة التشغيل المدمجة (Android، أداء أصلي 100%):
- ملفات ثنائية ثابتة في APK — Bun، Git، Bash، Ripgrep (aarch64-linux-musl) تُستخرج عند أول تشغيل (~15 ثانية)
- CLI مُجمَّع — OpenCode CLI كحزمة JS يشغّلها Bun المدمج، لا حاجة للشبكة للنواة
- إطلاق عمليات مباشر — بدون Termux، بدون intents —
std::process::Commandمن Rust مباشرة - تشغيل تلقائي للخادم —
bun opencode-cli.js serveعلى localhost مع مصادقة UUID، مثل sidecar سطح المكتب
الطبقة 2 — استدلال LLM على الجهاز:
- llama.cpp عبر JNI — Kotlin LlamaEngine يحمّل مكتبات .so الأصلية عبر جسر JNI
- IPC عبر الملفات — Rust يكتب الأوامر في
llm_ipc/request، خدمة Kotlin تستطلع وتُرجع النتائج - llama-server — HTTP API متوافق مع OpenAI على المنفذ 14097 لتكامل المزود
- إدارة النماذج — تحميل نماذج GGUF من HuggingFace، تشغيل/إيقاف/حذف، 9 نماذج مُنتقاة مسبقاً
- تسجيل المزود — النموذج المحلي يظهر كمزود "Local AI" في محدد النموذج
- Flash Attention —
--flash-attn onلاستدلال فعال الذاكرة - تكميم ذاكرة KV المؤقتة —
--cache-type-k/v q4_0مع دوران (توفير 72% من الذاكرة) - فك الترميز التخميني — كشف تلقائي لنموذج المسودة (0.5B–0.8B) مع RAM Guard عبر
/proc/meminfo - مراقبة RAM — أداة ذاكرة الجهاز (إجمالي/مستخدم/حر) عبر
/proc/meminfo - إعدادات التكوين المسبقة — نفس إعدادات Fast/Quality/Eco/Long Context كسطح المكتب
- اختيار GPU ذكي — Vulkan لـ Adreno 730+ (SD 8 Gen 1+)، OpenCL لـ SoC الأقدم، CPU احتياطي
- تثبيت الأنوية الكبيرة — يكتشف طوبولوجيا ARM big.LITTLE، يثبّت الاستدلال على أنوية الأداء فقط
الطبقة 3 — البيئة الموسعة (تحميل اختياري، ~150 ميجابايت):
- proot + Alpine rootfs — Linux كامل مع
apt installللحزم الإضافية - Bind-mounted الطبقة 1 — Bun/Git/rg لا تزال تعمل بسرعة أصلية داخل proot
- عند الطلب — تُحمَّل فقط عندما يُمكّن المستخدم "Extended Environment" في الإعدادات
الطبقة 4 — الكلام والوسائط:
- STT (Parakeet TDT 0.6B) — نفس محرك ONNX Runtime كسطح المكتب، ~300 مللي ثانية/5 ثوانٍ صوت، 25 لغة
- رسم متحرك لشكل الموجة — تغذية بصرية راجعة أثناء التسجيل
- منتقي ملفات أصلي —
tauri-plugin-dialogلاختيار الملفات/المجلدات والمرفقات
مشترك (Android + iOS):
- تجريد المنصة — نوع
Platformموسّع مع"mobile"+ كشف نظام التشغيل"ios"/"android" - اتصال عن بُعد — الاتصال بخادم OpenCode على سطح المكتب عبر الشبكة (iOS فقط أو Android احتياطي)
- طرفية تفاعلية — PTY كامل عبر musl مخصص
librust_pty.so(غلاف forkpty)، Ghostty WASM renderer مع canvas احتياطي - تخزين خارجي — روابط رمزية من HOME الخادم إلى مجلدات
/sdcard/(Documents، Downloads، projects) - واجهة جوال — شريط جانبي متجاوب، إدخال رسائل محسّن للمس، عرض diff للجوال، أهداف لمس 44px، دعم safe area
- إشعارات فورية — جسر SSE→إشعارات أصلية لإكمال المهام الخلفية
- محدد الوضع — اختيار Local (Android) أو Remote (iOS + Android) عند أول تشغيل
- قائمة إجراءات الجوال — وصول سريع للطرفية، fork، البحث والإعدادات من رأس الجلسة
جسر بين OpenCode ومنصة AnythingLLM لـ RAG الوثائقي. تم التنفيذ:
- عميل REST — غلاف API كامل لمساحات عمل AnythingLLM، الوثائق، البحث، المحادثة
- محول خادم MCP — 4 أدوات:
anythingllm_search،anythingllm_list_workspaces،anythingllm_get_document،anythingllm_chat - حقن السياق عبر الإضافة — خطاف
experimental.chat.system.transformيحقن الوثائق ذات الصلة في الأمر النظامي - Agent Skills HTTP API —
GET /agent-skills+POST /agent-skills/:toolId/executeلتوفير أدوات OpenCode في AnythingLLM - جسر مخزن المتجهات — بحث مركّب يدمج SQLite RAG المحلي مع نتائج قاعدة بيانات المتجهات في AnythingLLM
- Docker Compose —
docker-compose.anythingllm.ymlجاهز للاستخدام مع شبكة مشتركة
الإعداد: experimental.anythingllm.enabled: true
# YOLO
curl -fsSL https://opencode.ai/install | bash
# مديري الحزم
npm i -g opencode-ai@latest # او bun/pnpm/yarn
scoop install opencode # Windows
choco install opencode # Windows
brew install anomalyco/tap/opencode # macOS و Linux (موصى به، دائما محدث)
brew install opencode # macOS و Linux (صيغة brew الرسمية، تحديث اقل)
sudo pacman -S opencode # Arch Linux (Stable)
paru -S opencode-bin # Arch Linux (Latest from AUR)
mise use -g opencode # اي نظام
nix run nixpkgs#opencode # او github:anomalyco/opencode لاحدث فرع dev[!TIP] احذف الاصدارات الاقدم من 0.1.x قبل التثبيت.
يتوفر OpenCode ايضا كتطبيق سطح مكتب. قم بالتنزيل مباشرة من صفحة الاصدارات او من opencode.ai/download.
| المنصة | التنزيل |
|---|---|
| macOS (Apple Silicon) | opencode-desktop-darwin-aarch64.dmg |
| macOS (Intel) | opencode-desktop-darwin-x64.dmg |
| Windows | opencode-desktop-windows-x64.exe |
| Linux | .deb او .rpm او AppImage |
# macOS (Homebrew)
brew install --cask opencode-desktop
# Windows (Scoop)
scoop bucket add extras; scoop install extras/opencode-desktopيحترم سكربت التثبيت ترتيب الاولوية التالي لمسار التثبيت:
$OPENCODE_INSTALL_DIR- مجلد تثبيت مخصص$XDG_BIN_DIR- مسار متوافق مع مواصفات XDG Base Directory$HOME/bin- مجلد الثنائيات القياسي للمستخدم (ان وجد او امكن انشاؤه)$HOME/.opencode/bin- المسار الافتراضي الاحتياطي
# امثلة
OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash
XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bashيتضمن OpenCode وكيليْن (Agents) مدمجين يمكنك التبديل بينهما باستخدام زر Tab.
- build - الافتراضي، وكيل بصلاحيات كاملة لاعمال التطوير
- plan - وكيل للقراءة فقط للتحليل واستكشاف الكود
- يرفض تعديل الملفات افتراضيا
- يطلب الاذن قبل تشغيل اوامر bash
- مثالي لاستكشاف قواعد كود غير مألوفة او لتخطيط التغييرات
بالاضافة الى ذلك يوجد وكيل فرعي general للبحث المعقد والمهام متعددة الخطوات.
يستخدم داخليا ويمكن استدعاؤه بكتابة @general في الرسائل.
تعرف على المزيد حول agents.
لمزيد من المعلومات حول كيفية ضبط OpenCode، راجع التوثيق.
اذا كنت مهتما بالمساهمة في OpenCode، يرجى قراءة contributing docs قبل ارسال pull request.
اذا كنت تعمل على مشروع مرتبط بـ OpenCode ويستخدم "opencode" كجزء من اسمه (مثل "opencode-dashboard" او "opencode-mobile")، يرجى اضافة ملاحظة في README توضح انه ليس مبنيا بواسطة فريق OpenCode ولا يرتبط بنا بأي شكل.
هو مشابه جدا لـ Claude Code من حيث القدرات. هذه هي الفروقات الاساسية:
- 100% مفتوح المصدر
- غير مقترن بمزود معين. نوصي بالنماذج التي نوفرها عبر OpenCode Zen؛ لكن يمكن استخدام OpenCode مع Claude او OpenAI او Google او حتى نماذج محلية. مع تطور النماذج ستتقلص الفجوات وستنخفض الاسعار، لذا من المهم ان يكون مستقلا عن المزود.
- دعم LSP جاهز للاستخدام
- تركيز على TUI. تم بناء OpenCode بواسطة مستخدمي neovim ومنشئي terminal.shop؛ وسندفع حدود ما هو ممكن داخل الطرفية.
- معمارية عميل/خادم. على سبيل المثال، يمكن تشغيل OpenCode على جهازك بينما تقوده عن بعد من تطبيق جوال. هذا يعني ان واجهة TUI هي واحدة فقط من العملاء الممكنين.
