# Codeg

[![Release](https://img.shields.io/github/v/release/xintaofei/codeg)](https://github.com/xintaofei/codeg/releases)
[![License](https://img.shields.io/github/license/xintaofei/codeg)](../../LICENSE)
[![Tauri](https://img.shields.io/badge/Tauri-2.x-24C8DB)](https://tauri.app/)
[![Next.js](https://img.shields.io/badge/Next.js-16-black)](https://nextjs.org/)
[![Docker](https://img.shields.io/badge/Docker-ready-2496ED)](../../Dockerfile)

<p>
  <a href="../../README.md">English</a> |
  <a href="./README.zh-CN.md">简体中文</a> |
  <a href="./README.zh-TW.md">繁體中文</a> |
  <a href="./README.ja.md">日本語</a> |
  <a href="./README.ko.md">한국어</a> |
  <a href="./README.es.md">Español</a> |
  <a href="./README.de.md">Deutsch</a> |
  <a href="./README.fr.md">Français</a> |
  <a href="./README.pt.md">Português</a> |
  <strong>العربية</strong>
</p>

Codeg (Code Generation) هو مساحة عمل مؤسسية متعددة الوكلاء للبرمجة.
يوحّد وكلاء البرمجة المحليين بالذكاء الاصطناعي (Claude Code، Codex CLI، OpenCode، Gemini CLI،
OpenClaw، Cline، وغيرها) في تطبيق سطح مكتب أو خادم مستقل أو حاوية Docker — مما يتيح التطوير عن بُعد من أي متصفح — مع تجميع المحادثات، والتطوير المتوازي
عبر `git worktree`، وإدارة MCP/Skills، والتفاعل عبر قنوات الدردشة (Telegram وLark وiLink وغيرها)، وسير عمل متكامل لـ Git/الملفات/الطرفية.

![gallery](../images/gallery.svg)

## الواجهة الرئيسية
![Codeg Light](../images/main-light.png#gh-light-mode-only)
![Codeg Dark](../images/main-dark.png#gh-dark-mode-only)

## الإعدادات
| الوكلاء | MCP | Skills | التحكم في الإصدارات | خدمة الويب |
| :---: | :---: | :---: | :---: | :---: |
| ![Agents](../images/1-light.png#gh-light-mode-only) ![Agents](../images/1-dark.png#gh-dark-mode-only) | ![MCP](../images/2-light.png#gh-light-mode-only) ![MCP](../images/2-dark.png#gh-dark-mode-only) | ![Skills](../images/3-light.png#gh-light-mode-only) ![Skills](../images/3-dark.png#gh-dark-mode-only) | ![Version Control](../images/4-light.png#gh-light-mode-only) ![Version Control](../images/4-dark.png#gh-dark-mode-only) | ![Web Service](../images/5-light.png#gh-light-mode-only) ![Web Service](../images/5-dark.png#gh-dark-mode-only) |

## أبرز المزايا

- مساحة عمل موحّدة متعددة الوكلاء في نفس المشروع
- استيعاب محلي للمحادثات مع عرض منظّم
- تطوير متوازي مع تدفقات `git worktree` مدمجة
- **مُنشئ المشروع** — إنشاء مشاريع جديدة بصريًا مع معاينة حية
- **قنوات الدردشة** — ربط Telegram وLark (Feishu) وiLink (Weixin) والمزيد بوكلاء البرمجة لاستقبال الإشعارات الفورية والتفاعل الكامل مع الجلسات والتحكم عن بُعد في المهام
- إدارة MCP (فحص محلي + بحث/تثبيت من السجل)
- إدارة Skills (نطاق عام ونطاق المشروع)
- إدارة حسابات Git البعيدة (GitHub وخوادم Git الأخرى)
- وضع خدمة الويب — الوصول إلى Codeg من أي متصفح للعمل عن بُعد
- **نشر خادم مستقل** — شغّل `codeg-server` على أي خادم Linux/macOS، والوصول عبر المتصفح
- **دعم Docker** — `docker compose up` أو `docker run`، مع رمز مصادقة ومنفذ قابلين للتخصيص، واستمرارية البيانات وتحميل مجلدات المشاريع
- حلقة هندسية متكاملة (شجرة الملفات، الفروقات، تغييرات git، الإيداع، الطرفية)

## مُنشئ المشروع

أنشئ مشاريع جديدة بصريًا من خلال واجهة مقسّمة: التكوين على اليسار، والمعاينة الحية على اليمين.

![Project Boot Light](../images/project-boot-light.png#gh-light-mode-only)
![Project Boot Dark](../images/project-boot-dark.png#gh-dark-mode-only)

### الميزات

- **تكوين بصري** — اختر النمط وسمة الألوان ومكتبة الأيقونات والخط ونصف قطر الحدود والمزيد من القوائم المنسدلة؛ تتحدث المعاينة فورًا
- **معاينة حية** — شاهد المظهر الذي اخترته مُصيَّرًا في الوقت الفعلي قبل إنشاء أي شيء
- **إنشاء بنقرة واحدة** — اضغط "إنشاء مشروع" ويقوم المُشغّل بتنفيذ `shadcn init` مع إعداداتك المسبقة وقالب الإطار (Next.js / Vite / React Router / Astro / Laravel) ومدير الحزم (pnpm / npm / yarn / bun)
- **اكتشاف مدير الحزم** — يتحقق تلقائيًا من مديري الحزم المثبتين ويعرض إصداراتهم
- **تكامل سلس** — يُفتح المشروع المُنشأ حديثًا مباشرة في مساحة عمل Codeg

يدعم حاليًا إنشاء مشاريع **shadcn/ui**، مع تصميم قائم على علامات التبويب جاهز لدعم المزيد من أنواع المشاريع في المستقبل.

## قنوات الدردشة

اربط تطبيقات المراسلة المفضلة لديك — Telegram وLark (Feishu) وiLink (Weixin) والمزيد — بوكلاء البرمجة بالذكاء الاصطناعي. أنشئ مهامًا، وأرسل رسائل متابعة، ووافق على الأذونات، واستأنف الجلسات، وراقب النشاط من تطبيق الدردشة — واستقبل ردود الوكلاء الفورية مع تفاصيل استدعاءات الأدوات وطلبات الأذونات وملخصات الإنجاز دون الحاجة لفتح المتصفح.

### القنوات المدعومة

| القناة | البروتوكول | الحالة |
| --- | --- | --- |
| Telegram | Bot API (HTTP long-polling) | مدمج |
| Lark (Feishu) | WebSocket + REST API | مدمج |
| iLink (Weixin) | WebSocket + REST API | مدمج |

> يُخطَّط لدعم المزيد من القنوات (Discord وSlack وDingTalk وغيرها) في الإصدارات المستقبلية.

### الميزات الرئيسية

- **تفاعل الجلسات** — شغّل جلسات وكيل كاملة: `/folder` لاختيار المشروع، `/agent` لاختيار الوكيل، `/task <الوصف>` لبدء مهمة، وأرسل رسائل المتابعة كنص عادي. `/resume` لاستئناف جلسة سابقة، `/cancel` للإلغاء، `/sessions` لعرض الجلسات النشطة
- **التحكم في الأذونات** — يطلب الوكلاء أذونات تنفيذ الأدوات داخل الدردشة؛ `/approve` (أو `/approve always` للموافقة التلقائية) و`/deny`
- **إشعارات الأحداث** — يتم دفع إتمام أدوار الوكلاء واستدعاءات الأدوات والأخطاء في الوقت الفعلي بتنسيق غني
- **أوامر الاستعلام** — `/search <كلمة مفتاحية>`، `/today`، `/status`، `/help` للبحث السريع؛ بادئة الأمر قابلة للتكوين
- **التقارير اليومية** — ملخص يومي تلقائي في وقت مجدول، يشمل عدد المحادثات وتوزيع أنواع الوكلاء ونشاط المشروع
- **متعدد اللغات** — قوالب رسائل بـ 10 لغات (الإنجليزية، الصينية المبسطة/التقليدية، اليابانية، الكورية، الإسبانية، الألمانية، الفرنسية، البرتغالية، العربية)
- **بيانات اعتماد آمنة** — يتم تخزين الرموز في حلقة مفاتيح نظام التشغيل، ولا تُكشف أبدًا في ملفات التكوين أو السجلات
- **رسائل غنية** — تنسيق Markdown لـ Telegram، تخطيط قائم على البطاقات لـ Lark؛ احتياطي بالنص العادي لجميع المنصات

### الإعداد

1. أنشئ قناة في **الإعدادات → قنوات الدردشة** (اختر Telegram أو Lark أو iLink)
2. أدخل رمز البوت (Telegram)، أو بيانات اعتماد التطبيق (Lark)، أو امسح رمز QR لتسجيل الدخول (iLink) — مخزّنة بأمان في حلقة مفاتيح نظام التشغيل
3. قم بتكوين مرشحات الأحداث وجدول التقرير اليومي الاختياري
4. اتصل — تبدأ الرسائل بالتدفق عندما يصدر الوكلاء أحداثًا

## الوكلاء المدعومون

| الوكيل | مسار متغير البيئة | الافتراضي في macOS / Linux | الافتراضي في Windows |
| --- | --- | --- | --- |
| Claude Code | `$CLAUDE_CONFIG_DIR/projects` | `~/.claude/projects` | `%USERPROFILE%\\.claude\\projects` |
| Codex CLI | `$CODEX_HOME/sessions` | `~/.codex/sessions` | `%USERPROFILE%\\.codex\\sessions` |
| OpenCode | `$XDG_DATA_HOME/opencode/opencode.db` | `~/.local/share/opencode/opencode.db` | `%USERPROFILE%\\.local\\share\\opencode\\opencode.db` |
| Gemini CLI | `$GEMINI_CLI_HOME/.gemini` | `~/.gemini` | `%USERPROFILE%\\.gemini` |
| OpenClaw | — | `~/.openclaw/agents` | `%USERPROFILE%\\.openclaw\\agents` |
| Cline | `$CLINE_DIR` | `~/.cline/data/tasks` | `%USERPROFILE%\\.cline\\data\\tasks` |

> ملاحظة: متغيرات البيئة لها الأولوية على المسارات الافتراضية.

## البدء السريع

### المتطلبات

- Node.js `>=22` (مُوصى به)
- pnpm `>=10`
- Rust stable (2021 edition)
- تبعيات بناء Tauri 2 (وضع سطح المكتب فقط)

مثال على Linux (Debian/Ubuntu):

```bash
sudo apt-get update
sudo apt-get install -y \
  libwebkit2gtk-4.1-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev \
  patchelf
```

### التطوير

```bash
pnpm install

# تصدير ثابت للواجهة الأمامية إلى out/
pnpm build

# تطبيق سطح المكتب الكامل (Tauri + Next.js)
pnpm tauri dev

# الواجهة الأمامية فقط
pnpm dev

# بناء تطبيق سطح المكتب
pnpm tauri build

# خادم مستقل (بدون Tauri/واجهة رسومية)
pnpm server:dev

# بناء الملف التنفيذي للخادم
pnpm server:build

# فحص الأكواد
pnpm eslint .

# فحوصات Rust (تنفيذ في src-tauri/)
cargo check
cargo clippy
cargo build
```

### نشر الخادم

يمكن تشغيل Codeg كخادم ويب مستقل بدون بيئة سطح مكتب.

#### الخيار 1: التثبيت بسطر واحد (Linux / macOS)

```bash
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash
```

تثبيت إصدار محدد أو في دليل مخصص:

```bash
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash -s -- --version v0.5.2 --dir ~/.local/bin
```

ثم التشغيل:

```bash
codeg-server
```

#### الخيار 2: التثبيت بسطر واحد (Windows PowerShell)

```powershell
irm https://raw.githubusercontent.com/xintaofei/codeg/main/install.ps1 | iex
```

أو تثبيت إصدار محدد:

```powershell
.\install.ps1 -Version v0.5.2
```

#### الخيار 3: التنزيل من GitHub Releases

الملفات التنفيذية المُعدّة مسبقًا (مع موارد الويب المضمّنة) متاحة في صفحة [Releases](https://github.com/xintaofei/codeg/releases):

| المنصة | الملف |
| --- | --- |
| Linux x64 | `codeg-server-linux-x64.tar.gz` |
| Linux arm64 | `codeg-server-linux-arm64.tar.gz` |
| macOS x64 | `codeg-server-darwin-x64.tar.gz` |
| macOS arm64 | `codeg-server-darwin-arm64.tar.gz` |
| Windows x64 | `codeg-server-windows-x64.zip` |

```bash
# مثال: التنزيل والاستخراج والتشغيل
tar xzf codeg-server-linux-x64.tar.gz
cd codeg-server-linux-x64
CODEG_STATIC_DIR=./web ./codeg-server
```

#### الخيار 4: Docker

```bash
# باستخدام Docker Compose (مُوصى به)
docker compose up -d

# أو التشغيل مباشرة باستخدام Docker
docker run -d -p 3080:3080 -v codeg-data:/data ghcr.io/xintaofei/codeg:latest

# مع رمز مصادقة مخصص وتحميل مجلد المشروع
docker run -d -p 3080:3080 \
  -v codeg-data:/data \
  -v /path/to/projects:/projects \
  -e CODEG_TOKEN=your-secret-token \
  ghcr.io/xintaofei/codeg:latest
```

تستخدم صورة Docker بناءً متعدد المراحل (Node.js + Rust → بيئة تشغيل Debian خفيفة) وتتضمن `git` و`ssh` لعمليات المستودعات. يتم تخزين البيانات بشكل دائم في وحدة التخزين `/data`. يمكنك اختياريًا تحميل مجلدات المشاريع للوصول إلى المستودعات المحلية من داخل الحاوية.

#### الخيار 5: البناء من المصدر

```bash
pnpm install && pnpm build          # بناء الواجهة الأمامية
cd src-tauri
cargo build --release --bin codeg-server --no-default-features
CODEG_STATIC_DIR=../out ./target/release/codeg-server
```

#### التكوين

متغيرات البيئة:

| المتغير | الافتراضي | الوصف |
| --- | --- | --- |
| `CODEG_PORT` | `3080` | منفذ HTTP |
| `CODEG_HOST` | `0.0.0.0` | عنوان الربط |
| `CODEG_TOKEN` | *(عشوائي)* | رمز المصادقة (يُطبع في stderr عند البدء) |
| `CODEG_DATA_DIR` | `~/.local/share/codeg` | دليل قاعدة بيانات SQLite |
| `CODEG_STATIC_DIR` | `./web` أو `./out` | دليل التصدير الثابت لـ Next.js |

## الهندسة المعمارية

```text
Next.js 16 (Static Export) + React 19
        |
        | invoke() (desktop) / fetch() + WebSocket (web)
        v
  ┌─────────────────────────┐
  │   Transport Abstraction  │
  │  (Tauri IPC or HTTP/WS) │
  └─────────────────────────┘
        |
        v
┌─── Tauri Desktop ───┐    ┌─── codeg-server ───┐
│  Tauri 2 Commands    │    │  Axum HTTP + WS    │
│  (window management) │    │  (standalone mode)  │
└──────────┬───────────┘    └──────────┬──────────┘
           └──────────┬───────────────┘
                      v
            Shared Rust Core
              |- AppState
              |- ACP Manager
              |- Parsers (conversation ingestion)
              |- Chat Channels
              |- Git / File Tree / Terminal
              |- MCP marketplace + config
              |- SeaORM + SQLite
                      |
              ┌───────┼───────┐
              v       v       v
  Local Filesystem  Git   Chat Channels
    / Git Repos    Repos  (Telegram, Lark, iLink)
```

## القيود

- الواجهة الأمامية تستخدم التصدير الثابت (`output: "export"`)
- لا توجد مسارات ديناميكية في Next.js (`[param]`)؛ استخدم معاملات الاستعلام بدلاً من ذلك
- معاملات أوامر Tauri: `camelCase` في الواجهة الأمامية، `snake_case` في Rust
- TypeScript في الوضع الصارم

## الخصوصية والأمان

- محلي أولاً بشكل افتراضي للتحليل والتخزين وعمليات المشروع
- الوصول إلى الشبكة يحدث فقط عند الإجراءات التي يبدأها المستخدم
- دعم بروكسي النظام لبيئات المؤسسات
- وضع خدمة الويب يستخدم مصادقة قائمة على الرموز

## شكر وتقدير

- [LinuxDO](https://linux.do) — المجتمع الذي بدأ منه كل شيء
- [ACP](https://agentclientprotocol.com) — بروتوكول عميل الوكيل (ACP) هو الأساس الذي يمكّن Codeg من الاتصال بوكلاء متعددين

## الترخيص

Apache-2.0. راجع `LICENSE`.
