316 lines
14 KiB
Markdown
316 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> |
|
|
<strong>Español</strong> |
|
|
<a href="./README.de.md">Deutsch</a> |
|
|
<a href="./README.fr.md">Français</a> |
|
|
<a href="./README.pt.md">Português</a> |
|
|
<a href="./README.ar.md">العربية</a>
|
|
</p>
|
|
|
|
Codeg (Code Generation) es un espacio de trabajo empresarial para codificación
|
|
con múltiples agentes.
|
|
Integra agentes locales de codificación con IA (Claude Code, Codex CLI, OpenCode,
|
|
Gemini CLI, OpenClaw, Cline, etc.) en una aplicación de escritorio, servidor independiente
|
|
o contenedor Docker — permitiendo el desarrollo remoto desde cualquier navegador — con agregación
|
|
de conversaciones, desarrollo paralelo con `git worktree`, gestión de MCP/Skills,
|
|
interacción con canales de chat (Telegram, Lark, iLink, etc.) y flujos integrados de Git/archivos/terminal.
|
|
|
|
## Flujo de comunicación
|
|
|
|

|
|
|
|
## Interfaz principal
|
|

|
|

|
|
|
|
## Configuración
|
|
| Agentes | MCP | Skills | Control de versiones | Servicio web |
|
|
| :---: | :---: | :---: | :---: | :---: |
|
|
|   |   |   |   |   |
|
|
|
|
## Puntos destacados
|
|
|
|
- Espacio de trabajo unificado para múltiples agentes en el mismo proyecto
|
|
- Ingesta local de conversaciones con renderizado estructurado
|
|
- Desarrollo paralelo con flujos integrados de `git worktree`
|
|
- **Inicio de Proyecto** — crea nuevos proyectos visualmente con vista previa en tiempo real
|
|
- **Canales de Chat** — conecta Telegram, Lark (Feishu), iLink (Weixin) y más a tus agentes de codificación para interacción completa con sesiones y control remoto de tareas
|
|
- Gestión de MCP (escaneo local + búsqueda/instalación desde registro)
|
|
- Gestión de Skills (ámbito global y por proyecto)
|
|
- Gestión de cuentas remotas de Git (GitHub y otros servidores Git)
|
|
- Modo de servicio web — accede a Codeg desde cualquier navegador para trabajo remoto
|
|
- Despliegue como servidor independiente — ejecuta codeg-server en cualquier servidor Linux/macOS, accede desde el navegador
|
|
- **Soporte Docker** — `docker compose up` o `docker run`, con token/puerto personalizables, persistencia de datos y montaje de directorios de proyecto
|
|
- Ciclo de ingeniería integrado (árbol de archivos, diff, cambios git, commit, terminal)
|
|
|
|
## Inicio de Proyecto
|
|
|
|
Crea nuevos proyectos visualmente con una interfaz de panel dividido: configura a la izquierda, vista previa en tiempo real a la derecha.
|
|
|
|

|
|

|
|
|
|
### Qué ofrece
|
|
|
|
- **Configuración visual** — selecciona estilo, tema de color, biblioteca de iconos, fuente, radio de borde y más desde menús desplegables; la vista previa se actualiza instantáneamente
|
|
- **Vista previa en vivo** — visualiza el aspecto elegido renderizado en tiempo real antes de crear nada
|
|
- **Creación con un clic** — presiona "Crear proyecto" y el launcher ejecuta `shadcn init` con tu preset, plantilla de framework (Next.js / Vite / React Router / Astro / Laravel) y gestor de paquetes (pnpm / npm / yarn / bun)
|
|
- **Detección de gestores de paquetes** — verifica automáticamente qué gestores están instalados y muestra sus versiones
|
|
- **Integración fluida** — el proyecto recién creado se abre directamente en el workspace de Codeg
|
|
|
|
Actualmente soporta scaffolding de proyectos **shadcn/ui**, con un diseño basado en pestañas preparado para más tipos de proyectos en el futuro.
|
|
|
|
## Canales de Chat
|
|
|
|
Conecta tus aplicaciones de mensajería favoritas — Telegram, Lark (Feishu), iLink (Weixin) y más — a tus agentes de codificación IA. Crea tareas, envía mensajes de seguimiento, aprueba permisos, reanuda sesiones y monitorea la actividad directamente desde el chat — recibe respuestas del agente en tiempo real con detalles de llamadas a herramientas, solicitudes de permisos y resúmenes de finalización sin necesidad de abrir un navegador.
|
|
|
|
### Canales soportados
|
|
|
|
| Canal | Protocolo | Estado |
|
|
| --- | --- | --- |
|
|
| Telegram | Bot API (HTTP long-polling) | Integrado |
|
|
| Lark (Feishu) | WebSocket + REST API | Integrado |
|
|
| iLink (Weixin) | WebSocket + REST API | Integrado |
|
|
|
|
> Se planean más canales (Discord, Slack, DingTalk, etc.) para futuras versiones.
|
|
|
|
### Características principales
|
|
|
|
- **Interacción de sesiones** — ejecuta sesiones completas de agente: `/folder` para elegir proyecto, `/agent` para seleccionar agente, `/task <descripción>` para iniciar una tarea, envía mensajes de seguimiento como texto plano. `/resume` para continuar una sesión anterior, `/cancel` para cancelar, `/sessions` para listar las sesiones activas
|
|
- **Control de permisos** — los agentes solicitan permisos de ejecución de herramientas directamente en el chat; `/approve` (o `/approve always` para aprobación automática) y `/deny`
|
|
- **Notificaciones de eventos** — las finalizaciones de turno, llamadas a herramientas y errores de los agentes se envían en tiempo real con formato enriquecido
|
|
- **Comandos de consulta** — `/search <palabra clave>`, `/today`, `/status`, `/help` para búsquedas rápidas; prefijo de comando configurable
|
|
- **Informes diarios** — resumen diario automatizado a una hora programada, incluyendo recuento de conversaciones, desglose por tipo de agente y actividad del proyecto
|
|
- **Multi-idioma** — plantillas de mensajes en 10 idiomas (inglés, chino simplificado/tradicional, japonés, coreano, español, alemán, francés, portugués, árabe)
|
|
- **Credenciales seguras** — los tokens se almacenan en el llavero del SO, nunca se exponen en archivos de configuración ni logs
|
|
- **Mensajes enriquecidos** — formato Markdown para Telegram, diseño de tarjetas para Lark; respaldo en texto plano para todas las plataformas
|
|
|
|
### Configuración
|
|
|
|
1. Crea un canal en **Configuración → Canales de Chat** (elige Telegram, Lark o iLink)
|
|
2. Introduce tu token de bot (Telegram), credenciales de la app (Lark) o escanea el código QR para iniciar sesión (iLink) — almacenados de forma segura en el llavero del SO
|
|
3. Configura los filtros de eventos y la programación opcional del informe diario
|
|
4. Conecta — los mensajes empiezan a fluir cuando los agentes emiten eventos
|
|
|
|
## Agentes compatibles
|
|
|
|
| Agente | Ruta de variable de entorno | Ruta por defecto en macOS / Linux | Ruta por defecto en 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` |
|
|
|
|
> Nota: las variables de entorno tienen prioridad sobre las rutas de respaldo.
|
|
|
|
## Inicio rápido
|
|
|
|
### Requisitos
|
|
|
|
- Node.js `>=22` (recomendado)
|
|
- pnpm `>=10`
|
|
- Rust stable (2021 edition)
|
|
- Dependencias de compilación de Tauri 2 (solo modo escritorio)
|
|
|
|
Ejemplo para Linux (Debian/Ubuntu):
|
|
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
libwebkit2gtk-4.1-dev \
|
|
libayatana-appindicator3-dev \
|
|
librsvg2-dev \
|
|
patchelf
|
|
```
|
|
|
|
### Desarrollo
|
|
|
|
```bash
|
|
pnpm install
|
|
|
|
# Exportación estática del frontend a out/
|
|
pnpm build
|
|
|
|
# Aplicación de escritorio completa (Tauri + Next.js)
|
|
pnpm tauri dev
|
|
|
|
# Solo frontend
|
|
pnpm dev
|
|
|
|
# Compilación de escritorio
|
|
pnpm tauri build
|
|
|
|
# Servidor independiente (sin Tauri/GUI necesario)
|
|
pnpm server:dev
|
|
|
|
# Compilar binario de servidor para producción
|
|
pnpm server:build
|
|
|
|
# Lint
|
|
pnpm eslint .
|
|
|
|
# Verificaciones de Rust (ejecutar en src-tauri/)
|
|
cargo check
|
|
cargo clippy
|
|
cargo build
|
|
```
|
|
|
|
### Despliegue del servidor
|
|
|
|
Codeg puede ejecutarse como un servidor web independiente sin entorno de escritorio.
|
|
|
|
#### Opción 1: Instalación en una línea (Linux / macOS)
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash
|
|
```
|
|
|
|
Instalar una versión específica o en un directorio personalizado:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/xintaofei/codeg/main/install.sh | bash -s -- --version v0.5.2 --dir ~/.local/bin
|
|
```
|
|
|
|
Luego ejecutar:
|
|
|
|
```bash
|
|
codeg-server
|
|
```
|
|
|
|
#### Opción 2: Instalación en una línea (Windows PowerShell)
|
|
|
|
```powershell
|
|
irm https://raw.githubusercontent.com/xintaofei/codeg/main/install.ps1 | iex
|
|
```
|
|
|
|
O instalar una versión específica:
|
|
|
|
```powershell
|
|
.\install.ps1 -Version v0.5.2
|
|
```
|
|
|
|
#### Opción 3: Descargar desde GitHub Releases
|
|
|
|
Los binarios precompilados (con recursos web incluidos) están disponibles en la página de [Releases](https://github.com/xintaofei/codeg/releases):
|
|
|
|
| Plataforma | Archivo |
|
|
| --- | --- |
|
|
| 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
|
|
# Ejemplo: descargar, extraer y ejecutar
|
|
tar xzf codeg-server-linux-x64.tar.gz
|
|
cd codeg-server-linux-x64
|
|
CODEG_STATIC_DIR=./web ./codeg-server
|
|
```
|
|
|
|
#### Opción 4: Docker
|
|
|
|
```bash
|
|
# Usando Docker Compose (recomendado)
|
|
docker compose up -d
|
|
|
|
# O ejecutar directamente con Docker
|
|
docker run -d -p 3080:3080 -v codeg-data:/data ghcr.io/xintaofei/codeg:latest
|
|
|
|
# Con token personalizado y directorio de proyecto montado
|
|
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
|
|
```
|
|
|
|
La imagen Docker utiliza una compilación multi-etapa (Node.js + Rust → runtime Debian slim) e incluye `git` y `ssh` para operaciones con repositorios. Los datos se persisten en el volumen `/data`. Opcionalmente, puedes montar directorios de proyecto para acceder a repositorios locales desde el contenedor.
|
|
|
|
#### Opción 5: Compilar desde el código fuente
|
|
|
|
```bash
|
|
pnpm install && pnpm build # compilar frontend
|
|
cd src-tauri
|
|
cargo build --release --bin codeg-server --no-default-features
|
|
CODEG_STATIC_DIR=../out ./target/release/codeg-server
|
|
```
|
|
|
|
#### Configuración
|
|
|
|
Variables de entorno:
|
|
|
|
| Variable | Valor por defecto | Descripción |
|
|
| --- | --- | --- |
|
|
| `CODEG_PORT` | `3080` | Puerto HTTP |
|
|
| `CODEG_HOST` | `0.0.0.0` | Dirección de enlace |
|
|
| `CODEG_TOKEN` | *(aleatorio)* | Token de autenticación (se imprime en stderr al iniciar) |
|
|
| `CODEG_DATA_DIR` | `~/.local/share/codeg` | Directorio de base de datos SQLite |
|
|
| `CODEG_STATIC_DIR` | `./web` o `./out` | Directorio de exportación estática de Next.js |
|
|
|
|
## Arquitectura
|
|
|
|
```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)
|
|
```
|
|
|
|
## Restricciones
|
|
|
|
- El frontend usa exportación estática (`output: "export"`)
|
|
- Sin rutas dinámicas de Next.js (`[param]`); se usan parámetros de consulta en su lugar
|
|
- Parámetros de comandos Tauri: `camelCase` en frontend, `snake_case` en Rust
|
|
- TypeScript en modo estricto
|
|
|
|
## Privacidad y seguridad
|
|
|
|
- Enfoque local por defecto para análisis, almacenamiento y operaciones de proyecto
|
|
- El acceso a la red solo ocurre mediante acciones iniciadas por el usuario
|
|
- Soporte de proxy del sistema para entornos empresariales
|
|
- El modo de servicio web utiliza autenticación basada en tokens
|
|
|
|
## Licencia
|
|
|
|
Apache-2.0. Ver `LICENSE`.
|