325 lines
16 KiB
Markdown
325 lines
16 KiB
Markdown
# Codeg
|
|
|
|
[](https://github.com/xintaofei/codeg/releases)
|
|
[](../../LICENSE)
|
|
[](https://tauri.app/)
|
|
[](https://nextjs.org/)
|
|
[](../../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، وغيرها) في تطبيق سطح مكتب أو خادم مستقل أو حاوية Docker — مما يتيح التطوير عن بُعد من أي متصفح — مع تجميع المحادثات، والتطوير المتوازي
|
|
عبر `git worktree`، وإدارة MCP/Skills، والتفاعل عبر قنوات الدردشة (Telegram وLark وغيرها)، وسير عمل متكامل لـ Git/الملفات/الطرفية.
|
|
|
|
## الواجهة الرئيسية
|
|

|
|

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

|
|

|
|
|
|
### الميزات
|
|
|
|
- **تكوين بصري** — اختر النمط وسمة الألوان ومكتبة الأيقونات والخط ونصف قطر الحدود والمزيد من القوائم المنسدلة؛ تتحدث المعاينة فورًا
|
|
- **معاينة حية** — شاهد المظهر الذي اخترته مُصيَّرًا في الوقت الفعلي قبل إنشاء أي شيء
|
|
- **إنشاء بنقرة واحدة** — اضغط "إنشاء مشروع" ويقوم المُشغّل بتنفيذ `shadcn init` مع إعداداتك المسبقة وقالب الإطار (Next.js / Vite / React Router / Astro / Laravel) ومدير الحزم (pnpm / npm / yarn / bun)
|
|
- **اكتشاف مدير الحزم** — يتحقق تلقائيًا من مديري الحزم المثبتين ويعرض إصداراتهم
|
|
- **تكامل سلس** — يُفتح المشروع المُنشأ حديثًا مباشرة في مساحة عمل Codeg
|
|
|
|
يدعم حاليًا إنشاء مشاريع **shadcn/ui**، مع تصميم قائم على علامات التبويب جاهز لدعم المزيد من أنواع المشاريع في المستقبل.
|
|
|
|
## قنوات الدردشة
|
|
|
|
اربط تطبيقات المراسلة المفضلة لديك — Telegram وLark (Feishu) والمزيد — بوكلاء البرمجة بالذكاء الاصطناعي. استقبل إشعارات فورية عند إكمال الوكلاء للمهام أو مواجهة أخطاء، واستعلم عن سجل المحادثات من هاتفك، واحصل على تقارير يومية تلقائية — كل ذلك دون مغادرة تطبيق الدردشة.
|
|
|
|
### القنوات المدعومة
|
|
|
|
| القناة | البروتوكول | الحالة |
|
|
| --- | --- | --- |
|
|
| Telegram | Bot API (HTTP long-polling) | مدمج |
|
|
| Lark (Feishu) | WebSocket + REST API | مدمج |
|
|
|
|
> يُخطَّط لدعم المزيد من القنوات (Discord وSlack وWeChat وDingTalk وغيرها) في الإصدارات المستقبلية.
|
|
|
|
### الميزات الرئيسية
|
|
|
|
- **إشعارات الأحداث** — يتم دفع إتمام أدوار الوكلاء والأخطاء إلى جميع القنوات المُفعَّلة في الوقت الفعلي
|
|
- **أوامر تفاعلية** — أرسل أوامر (`/recent`، `/search`، `/detail`، `/today`، `/status`، `/help`) من تطبيق الدردشة واحصل على ردود فورية؛ بادئة الأمر قابلة للتكوين. الأوامر المتعلقة بالمحادثات (البدء، الإيقاف، الموافقة) مخططة للإصدارات القادمة
|
|
- **التقارير اليومية** — ملخص يومي تلقائي في وقت مجدول، يشمل عدد المحادثات وتوزيع أنواع الوكلاء ونشاط المشروع
|
|
- **متعدد اللغات** — قوالب رسائل بـ 10 لغات (الإنجليزية، الصينية المبسطة/التقليدية، اليابانية، الكورية، الإسبانية، الألمانية، الفرنسية، البرتغالية، العربية)
|
|
- **بيانات اعتماد آمنة** — يتم تخزين الرموز في حلقة مفاتيح نظام التشغيل، ولا تُكشف أبدًا في ملفات التكوين أو السجلات
|
|
- **رسائل غنية** — تنسيق Markdown لـ Telegram، تخطيط قائم على البطاقات لـ Lark؛ احتياطي بالنص العادي لجميع المنصات
|
|
|
|
### الإعداد
|
|
|
|
1. أنشئ قناة في **الإعدادات → قنوات الدردشة** (اختر Telegram أو Lark)
|
|
2. أدخل رمز البوت (Telegram) أو بيانات اعتماد التطبيق (Lark) — مخزّنة بأمان في حلقة مفاتيح نظام التشغيل
|
|
3. قم بتكوين مرشحات الأحداث وجدول التقرير اليومي الاختياري
|
|
4. اتصل — تبدأ الرسائل بالتدفق عندما يصدر الوكلاء أحداثًا
|
|
|
|
## النطاق المدعوم
|
|
|
|
### 1) استيعاب المحادثات (المحادثات التاريخية)
|
|
|
|
| الوكيل | مسار متغير البيئة | الافتراضي في 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` |
|
|
|
|
> ملاحظة: متغيرات البيئة لها الأولوية على المسارات الافتراضية.
|
|
|
|
### 2) جلسات ACP في الوقت الفعلي
|
|
|
|
يدعم حاليًا 5 وكلاء: Claude Code وCodex CLI وGemini CLI وOpenCode وOpenClaw.
|
|
|
|
### 3) دعم إعدادات Skills
|
|
|
|
- مدعوم: `Claude Code / Codex / OpenCode / Gemini CLI / OpenClaw / Cline`
|
|
- سيتم إضافة المزيد من المحولات تدريجيًا
|
|
|
|
### 4) التطبيقات المستهدفة لـ MCP
|
|
|
|
الأهداف القابلة للكتابة حاليًا:
|
|
|
|
- Claude Code
|
|
- Codex
|
|
- OpenCode
|
|
|
|
## البدء السريع
|
|
|
|
### المتطلبات
|
|
|
|
- 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)
|
|
```
|
|
|
|
## القيود
|
|
|
|
- الواجهة الأمامية تستخدم التصدير الثابت (`output: "export"`)
|
|
- لا توجد مسارات ديناميكية في Next.js (`[param]`)؛ استخدم معاملات الاستعلام بدلاً من ذلك
|
|
- معاملات أوامر Tauri: `camelCase` في الواجهة الأمامية، `snake_case` في Rust
|
|
- TypeScript في الوضع الصارم
|
|
|
|
## الخصوصية والأمان
|
|
|
|
- محلي أولاً بشكل افتراضي للتحليل والتخزين وعمليات المشروع
|
|
- الوصول إلى الشبكة يحدث فقط عند الإجراءات التي يبدأها المستخدم
|
|
- دعم بروكسي النظام لبيئات المؤسسات
|
|
- وضع خدمة الويب يستخدم مصادقة قائمة على الرموز
|
|
|
|
## الترخيص
|
|
|
|
Apache-2.0. راجع `LICENSE`.
|