Skip to content

Latest commit

 

History

History
744 lines (563 loc) · 52.4 KB

File metadata and controls

744 lines (563 loc) · 52.4 KB

شعار OpenCode

وكيل برمجة بالذكاء الاصطناعي مفتوح المصدر.

Discord npm Build status

English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt

OpenCode Terminal UI

لماذا هذا الفورك؟

باختصار — وكيل البرمجة مفتوح المصدر الوحيد الذي يقدّم منسِّق تنفيذ مبني على 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.

Capability matrix — this fork vs. the 2026 landscape

Legend: ✅ shipped · ❌ absent · partial limited/incomplete · plugin via community add-on · paid behind a subscription tier.

Orchestration, API surface, governance

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)

Intelligence, context, developer UX

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

Platform reach & multimodal

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.

Install

# 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

تحصل كل مهمة خلفية تلقائياً على git worktree خاص بها. يرتبط مساحة العمل بالجلسة في قاعدة البيانات. إذا لم تُنتج المهمة أي تغييرات في الملفات، يتم تنظيف worktree تلقائياً. يوفر هذا عزلاً على مستوى git دون الحاجة إلى حاويات.

API لإدارة المهام

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)

لوحة مهام TUI

إضافة شريط جانبي تعرض المهام الخلفية النشطة مع أيقونات الحالة في الوقت الفعلي:

Icon Status
~ Running / Retrying
? Queued / Awaiting input
! Blocked
x Failed
* Completed
- Cancelled

نافذة حوار مع إجراءات: فتح جلسة المهمة، إلغاء، استئناف، إرسال متابعة، التحقق من الحالة.

تحديد نطاق وكيل MCP

قوائم سماح/منع لخوادم MCP لكل وكيل. يتم الإعداد في opencode.json تحت حقل mcp لكل وكيل. تقوم دالة toolsForAgent() بتصفية أدوات MCP المتاحة بناءً على نطاق الوكيل المستدعي.

{
  "agents": {
    "explore": {
      "mcp": { "deny": ["dangerous-server"] }
    }
  }
}

دورة حياة الجلسة ذات 9 حالات

تتبع الجلسات إحدى 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 تلخيص الجلسة

تكامل LSP

دعم كامل لبروتوكول خادم اللغة مع فهرسة الرموز والتشخيصات ودعم لغات متعددة (TypeScript، Deno، Vue، وقابل للتوسيع). يتنقل الوكيل في الكود عبر رموز LSP بدلاً من البحث النصي، مما يتيح go-to-definition دقيق وfind-references واكتشاف أخطاء الأنواع في الوقت الفعلي.

دعم MCP

عميل وخادم 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 للتحكم الدقيق. فرض حدود المشروع يمنع الوصول إلى الملفات خارج مساحة العمل.

التراجع المدعوم بـ Git

نظام لقطات يسجل حالة الملف قبل كل تنفيذ أداة. يدعم 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
Loading

منافذ الخدمات

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)

تم تنفيذ ثلاث ميزات رئيسية في فروع مخصصة ودمجها في dev. كل منها مُدارة بأعلام الميزات ومتوافقة مع الإصدارات السابقة.

الوضع التعاوني (dev_collaborative_mode)

تعاون متعدد المستخدمين في الوقت الفعلي. تم التنفيذ:

  • مصادقة 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

النسخة المحمولة (dev_mobile)

تطبيق 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، البحث والإعدادات من رأس الجلسة

دمج AnythingLLM (dev_anything)

جسر بين 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 APIGET /agent-skills + POST /agent-skills/:toolId/execute لتوفير أدوات OpenCode في AnythingLLM
  • جسر مخزن المتجهات — بحث مركّب يدمج SQLite RAG المحلي مع نتائج قاعدة بيانات المتجهات في AnythingLLM
  • Docker Composedocker-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 قبل التثبيت.

تطبيق سطح المكتب (BETA)

يتوفر 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

مجلد التثبيت

يحترم سكربت التثبيت ترتيب الاولوية التالي لمسار التثبيت:

  1. $OPENCODE_INSTALL_DIR - مجلد تثبيت مخصص
  2. $XDG_BIN_DIR - مسار متوافق مع مواصفات XDG Base Directory
  3. $HOME/bin - مجلد الثنائيات القياسي للمستخدم (ان وجد او امكن انشاؤه)
  4. $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

Agents

يتضمن OpenCode وكيليْن (Agents) مدمجين يمكنك التبديل بينهما باستخدام زر Tab.

  • build - الافتراضي، وكيل بصلاحيات كاملة لاعمال التطوير
  • plan - وكيل للقراءة فقط للتحليل واستكشاف الكود
    • يرفض تعديل الملفات افتراضيا
    • يطلب الاذن قبل تشغيل اوامر bash
    • مثالي لاستكشاف قواعد كود غير مألوفة او لتخطيط التغييرات

بالاضافة الى ذلك يوجد وكيل فرعي general للبحث المعقد والمهام متعددة الخطوات. يستخدم داخليا ويمكن استدعاؤه بكتابة @general في الرسائل.

تعرف على المزيد حول agents.

التوثيق

لمزيد من المعلومات حول كيفية ضبط OpenCode، راجع التوثيق.

المساهمة

اذا كنت مهتما بالمساهمة في OpenCode، يرجى قراءة contributing docs قبل ارسال pull request.

البناء فوق OpenCode

اذا كنت تعمل على مشروع مرتبط بـ OpenCode ويستخدم "opencode" كجزء من اسمه (مثل "opencode-dashboard" او "opencode-mobile")، يرجى اضافة ملاحظة في README توضح انه ليس مبنيا بواسطة فريق OpenCode ولا يرتبط بنا بأي شكل.

FAQ

ما الفرق عن Claude Code؟

هو مشابه جدا لـ Claude Code من حيث القدرات. هذه هي الفروقات الاساسية:

  • 100% مفتوح المصدر
  • غير مقترن بمزود معين. نوصي بالنماذج التي نوفرها عبر OpenCode Zen؛ لكن يمكن استخدام OpenCode مع Claude او OpenAI او Google او حتى نماذج محلية. مع تطور النماذج ستتقلص الفجوات وستنخفض الاسعار، لذا من المهم ان يكون مستقلا عن المزود.
  • دعم LSP جاهز للاستخدام
  • تركيز على TUI. تم بناء OpenCode بواسطة مستخدمي neovim ومنشئي terminal.shop؛ وسندفع حدود ما هو ممكن داخل الطرفية.
  • معمارية عميل/خادم. على سبيل المثال، يمكن تشغيل OpenCode على جهازك بينما تقوده عن بعد من تطبيق جوال. هذا يعني ان واجهة TUI هي واحدة فقط من العملاء الممكنين.

انضم الى مجتمعنا Discord | X.com