308 lines
13 KiB
Markdown
308 lines
13 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> |
|
|
<strong>Français</strong> |
|
|
<a href="./README.pt.md">Português</a> |
|
|
<a href="./README.ar.md">العربية</a>
|
|
</p>
|
|
|
|
Codeg (Code Generation) est un workspace de codage multi-agents de niveau entreprise.
|
|
Il unifie les agents de codage IA locaux (Claude Code, Codex CLI, OpenCode, Gemini CLI,
|
|
OpenClaw, Cline, etc.) dans une application de bureau, un serveur autonome ou un conteneur
|
|
Docker — permettant le développement à distance depuis n'importe quel navigateur — avec agrégation de conversations, développement
|
|
parallèle via `git worktree`, gestion MCP/Skills, interaction avec les canaux de chat (Telegram, Lark, etc.)
|
|
et workflows intégrés Git/fichiers/terminal.
|
|
|
|
## Interface principale
|
|

|
|

|
|
|
|
## Paramètres
|
|
| Agents | MCP | Skills | Contrôle de version | Service web |
|
|
| :---: | :---: | :---: | :---: | :---: |
|
|
|   |   |   |   |   |
|
|
|
|
## Points forts
|
|
|
|
- Workspace multi-agents unifié dans le même projet
|
|
- Ingestion locale des conversations avec rendu structuré
|
|
- Développement parallèle avec flux `git worktree` intégré
|
|
- **Lanceur de projet** — créez visuellement de nouveaux projets avec aperçu en temps réel
|
|
- **Canaux de chat** — connectez Telegram, Lark (Feishu) et plus à vos agents de codage pour des notifications en temps réel et des commandes interactives
|
|
- Gestion MCP (scan local + recherche/installation depuis le registre)
|
|
- Gestion des Skills (portée globale et projet)
|
|
- Gestion des comptes distants Git (GitHub et autres serveurs Git)
|
|
- Mode service web — accédez à Codeg depuis n'importe quel navigateur pour le travail à distance
|
|
- Déploiement en serveur autonome — exécutez codeg-server sur n'importe quel serveur Linux/macOS, accédez via le navigateur
|
|
- **Support Docker** — `docker compose up` ou `docker run`, avec token/port personnalisables, persistance des données et montage de répertoires de projets
|
|
- Boucle d'ingénierie intégrée (arborescence de fichiers, diff, changements git, commit, terminal)
|
|
|
|
## Lanceur de projet
|
|
|
|
Créez visuellement de nouveaux projets avec une interface à panneaux divisés : configuration à gauche, aperçu en temps réel à droite.
|
|
|
|

|
|

|
|
|
|
### Fonctionnalités
|
|
|
|
- **Configuration visuelle** — sélectionnez le style, le thème de couleur, la bibliothèque d'icônes, la police, le rayon de bordure et plus dans les menus déroulants ; l'aperçu se met à jour instantanément
|
|
- **Aperçu en direct** — visualisez le rendu de votre configuration en temps réel avant de créer quoi que ce soit
|
|
- **Création en un clic** — cliquez sur « Créer un projet » et le launcher exécute `shadcn init` avec votre preset, le template de framework (Next.js / Vite / React Router / Astro / Laravel) et le gestionnaire de paquets (pnpm / npm / yarn / bun)
|
|
- **Détection des gestionnaires de paquets** — vérifie automatiquement quels gestionnaires sont installés et affiche leurs versions
|
|
- **Intégration transparente** — le projet nouvellement créé s'ouvre directement dans l'espace de travail Codeg
|
|
|
|
Prend actuellement en charge le scaffolding de projets **shadcn/ui**, avec un design à onglets prêt pour d'autres types de projets à l'avenir.
|
|
|
|
## Canaux de chat
|
|
|
|
Connectez vos applications de messagerie préférées — Telegram, Lark (Feishu) et plus — à vos agents de codage IA. Recevez des notifications en temps réel lorsque les agents terminent des tâches ou rencontrent des erreurs, consultez l'historique des conversations depuis votre téléphone et obtenez des rapports quotidiens automatisés — le tout sans quitter votre application de chat.
|
|
|
|
### Canaux pris en charge
|
|
|
|
| Canal | Protocole | Statut |
|
|
| --- | --- | --- |
|
|
| Telegram | Bot API (HTTP long-polling) | Intégré |
|
|
| Lark (Feishu) | WebSocket + REST API | Intégré |
|
|
|
|
> D'autres canaux (Discord, Slack, WeChat, DingTalk, etc.) sont prévus pour de futures versions.
|
|
|
|
### Fonctionnalités clés
|
|
|
|
- **Notifications d'événements** — les complétions de tour et les erreurs des agents sont poussées vers tous les canaux activés en temps réel
|
|
- **Commandes interactives** — envoyez des commandes (`/recent`, `/search`, `/detail`, `/today`, `/status`, `/help`) depuis votre application de chat et obtenez des réponses instantanées ; préfixe de commande configurable. Les commandes liées aux conversations (démarrage, arrêt, approbation) sont prévues pour les prochaines versions
|
|
- **Rapports quotidiens** — résumé quotidien automatisé à une heure programmée, incluant le nombre de conversations, la répartition par type d'agent et l'activité du projet
|
|
- **Multi-langue** — modèles de messages en 10 langues (anglais, chinois simplifié/traditionnel, japonais, coréen, espagnol, allemand, français, portugais, arabe)
|
|
- **Identifiants sécurisés** — les tokens sont stockés dans le trousseau du système d'exploitation, jamais exposés dans les fichiers de configuration ou les logs
|
|
- **Messages enrichis** — format Markdown pour Telegram, mise en page par cartes pour Lark ; repli en texte brut pour toutes les plateformes
|
|
|
|
### Configuration
|
|
|
|
1. Créez un canal dans **Paramètres → Canaux de chat** (choisissez Telegram ou Lark)
|
|
2. Entrez votre token de bot (Telegram) ou les identifiants de l'application (Lark) — stockés en toute sécurité dans le trousseau du SO
|
|
3. Configurez les filtres d'événements et la planification optionnelle du rapport quotidien
|
|
4. Connectez — les messages commencent à circuler dès que les agents émettent des événements
|
|
|
|
## Agents supportés
|
|
|
|
| Agent | Chemin via variable d'environnement | Défaut macOS / Linux | Défaut 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` |
|
|
|
|
> Remarque : les variables d'environnement ont priorité sur les chemins par défaut.
|
|
|
|
## Démarrage rapide
|
|
|
|
### Prérequis
|
|
|
|
- Node.js `>=22` (recommandé)
|
|
- pnpm `>=10`
|
|
- Rust stable (2021 edition)
|
|
- Dépendances de build Tauri 2 (mode bureau uniquement)
|
|
|
|
Exemple Linux (Debian/Ubuntu) :
|
|
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
libwebkit2gtk-4.1-dev \
|
|
libayatana-appindicator3-dev \
|
|
librsvg2-dev \
|
|
patchelf
|
|
```
|
|
|
|
### Développement
|
|
|
|
```bash
|
|
pnpm install
|
|
|
|
# Export statique du frontend vers out/
|
|
pnpm build
|
|
|
|
# Application de bureau complète (Tauri + Next.js)
|
|
pnpm tauri dev
|
|
|
|
# Frontend uniquement
|
|
pnpm dev
|
|
|
|
# Build de l'application de bureau
|
|
pnpm tauri build
|
|
|
|
# Serveur autonome (sans Tauri/GUI requis)
|
|
pnpm server:dev
|
|
|
|
# Compiler le binaire serveur pour la production
|
|
pnpm server:build
|
|
|
|
# Lint
|
|
pnpm eslint .
|
|
|
|
# Vérifications Rust (exécuter dans src-tauri/)
|
|
cargo check
|
|
cargo clippy
|
|
cargo build
|
|
```
|
|
|
|
### Déploiement du serveur
|
|
|
|
Codeg peut fonctionner comme un serveur web autonome sans environnement de bureau.
|
|
|
|
#### Option 1 : Installation en une ligne (Linux / macOS)
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash
|
|
```
|
|
|
|
Installer une version spécifique ou dans un répertoire personnalisé :
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash -s -- --version v0.5.2 --dir ~/.local/bin
|
|
```
|
|
|
|
Puis exécuter :
|
|
|
|
```bash
|
|
codeg-server
|
|
```
|
|
|
|
#### Option 2 : Installation en une ligne (Windows PowerShell)
|
|
|
|
```powershell
|
|
irm https://raw.githubusercontent.com/xintaofei/codeg/main/install.ps1 | iex
|
|
```
|
|
|
|
Ou installer une version spécifique :
|
|
|
|
```powershell
|
|
.\install.ps1 -Version v0.5.2
|
|
```
|
|
|
|
#### Option 3 : Télécharger depuis GitHub Releases
|
|
|
|
Les binaires pré-compilés (avec les ressources web incluses) sont disponibles sur la page [Releases](https://github.com/xintaofei/codeg/releases) :
|
|
|
|
| Plateforme | Fichier |
|
|
| --- | --- |
|
|
| 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
|
|
# Exemple : télécharger, extraire et exécuter
|
|
tar xzf codeg-server-linux-x64.tar.gz
|
|
cd codeg-server-linux-x64
|
|
CODEG_STATIC_DIR=./web ./codeg-server
|
|
```
|
|
|
|
#### Option 4 : Docker
|
|
|
|
```bash
|
|
# Avec Docker Compose (recommandé)
|
|
docker compose up -d
|
|
|
|
# Ou exécuter directement avec Docker
|
|
docker run -d -p 3080:3080 -v codeg-data:/data ghcr.io/xintaofei/codeg:latest
|
|
|
|
# Avec token personnalisé et répertoire de projet monté
|
|
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
|
|
```
|
|
|
|
L'image Docker utilise un build multi-stage (Node.js + Rust → runtime Debian allégé) et inclut `git` et `ssh` pour les opérations sur les dépôts. Les données sont persistées dans le volume `/data`. Vous pouvez optionnellement monter des répertoires de projets pour accéder aux dépôts locaux depuis le conteneur.
|
|
|
|
#### Option 5 : Compiler depuis les sources
|
|
|
|
```bash
|
|
pnpm install && pnpm build # compiler le frontend
|
|
cd src-tauri
|
|
cargo build --release --bin codeg-server --no-default-features
|
|
CODEG_STATIC_DIR=../out ./target/release/codeg-server
|
|
```
|
|
|
|
#### Configuration
|
|
|
|
Variables d'environnement :
|
|
|
|
| Variable | Valeur par défaut | Description |
|
|
| --- | --- | --- |
|
|
| `CODEG_PORT` | `3080` | Port HTTP |
|
|
| `CODEG_HOST` | `0.0.0.0` | Adresse de liaison |
|
|
| `CODEG_TOKEN` | *(aléatoire)* | Jeton d'authentification (affiché sur stderr au démarrage) |
|
|
| `CODEG_DATA_DIR` | `~/.local/share/codeg` | Répertoire de base de données SQLite |
|
|
| `CODEG_STATIC_DIR` | `./web` ou `./out` | Répertoire d'export statique Next.js |
|
|
|
|
## Architecture
|
|
|
|
```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)
|
|
```
|
|
|
|
## Contraintes
|
|
|
|
- Le frontend utilise l'export statique (`output: "export"`)
|
|
- Pas de routes dynamiques Next.js (`[param]`) ; utiliser les paramètres de requête à la place
|
|
- Paramètres des commandes Tauri : `camelCase` côté frontend, `snake_case` côté Rust
|
|
- TypeScript en mode strict
|
|
|
|
## Confidentialité et sécurité
|
|
|
|
- Local-first par défaut pour l'analyse, le stockage et les opérations sur le projet
|
|
- L'accès réseau ne se produit que lors d'actions déclenchées par l'utilisateur
|
|
- Prise en charge du proxy système pour les environnements d'entreprise
|
|
- Le mode service web utilise l'authentification par jeton
|
|
|
|
## Licence
|
|
|
|
Apache-2.0. Voir `LICENSE`.
|