313 lines
14 KiB
Markdown
313 lines
14 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, iLink, 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), iLink (Weixin) et plus à vos agents de codage pour des notifications en temps réel, une interaction complète avec les sessions et le contrôle à distance des tâches
|
|
- 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), iLink (Weixin) et plus — à vos agents de codage IA. Créez des tâches, envoyez des messages de suivi, approuvez les permissions, reprenez des sessions et surveillez l'activité directement depuis votre chat — recevez les réponses des agents en temps réel avec les détails des appels d'outils, les demandes de permissions et les résumés de complétion, le tout sans ouvrir de navigateur.
|
|
|
|
### Canaux pris en charge
|
|
|
|
| Canal | Protocole | Statut |
|
|
| --- | --- | --- |
|
|
| Telegram | Bot API (HTTP long-polling) | Intégré |
|
|
| Lark (Feishu) | WebSocket + REST API | Intégré |
|
|
| iLink (Weixin) | WebSocket + REST API | Intégré |
|
|
|
|
> D'autres canaux (Discord, Slack, DingTalk, etc.) sont prévus pour de futures versions.
|
|
|
|
### Fonctionnalités clés
|
|
|
|
- **Interaction de session** — exécutez des sessions complètes avec les agents : `/folder` pour choisir le projet, `/agent` pour sélectionner l'agent, `/task <description>` pour lancer une tâche, envoyez des messages de suivi en texte libre. `/resume` pour reprendre une session précédente, `/cancel` pour annuler, `/sessions` pour lister les sessions actives
|
|
- **Contrôle des permissions** — les agents demandent les permissions d'exécution d'outils directement dans le chat ; `/approve` (ou `/approve always` pour l'approbation automatique) et `/deny`
|
|
- **Notifications d'événements** — les complétions de tour, les appels d'outils et les erreurs des agents sont poussés en temps réel avec un formatage enrichi
|
|
- **Commandes de requête** — `/search <mot-clé>`, `/today`, `/status`, `/help` pour des consultations rapides ; préfixe de commande configurable
|
|
- **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, Lark ou iLink)
|
|
2. Entrez votre token de bot (Telegram), les identifiants de l'application (Lark) ou scannez le code QR pour vous connecter (iLink) — 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, iLink)
|
|
```
|
|
|
|
## 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`.
|