# 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> |
  <strong>简体中文</strong> |
  <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> |
  <a href="./README.ar.md">العربية</a>
</p>

Codeg（Code Generation）是一个多智能体编码工作台，它将多个智能体（Claude Code、Codex CLI、OpenCode、Gemini CLI、OpenClaw、Cline、Hermes Agent 等）统一到一个工作区中，支持会话聚合和多智能体协作，支持桌面安装，服务器/Docker 部署。

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

## 赞助

<table>
  <tr>
    <td colspan="2" align="center">
      <a href="https://myclaw.ai/?utm_source=github&utm_campaign=codeg" target="_blank"><img src="https://raw.githubusercontent.com/LeoYeAI/myclaw-sponsor-preview/main/banner.svg" alt="MyClaw.ai — Your OpenClaw Agent, Always On." /></a><br/>
      <strong><a href="https://myclaw.ai/?utm_source=github&utm_campaign=codeg">MyClaw.ai</a></strong> — 全托管的 OpenClaw 云端实例服务，一键部署、7×24 全天候在线、数据完全由用户掌控，无需自行管理服务器。
    </td>
  </tr>
  <tr>
    <td align="center" width="220">
      <a href="https://www.compshare.cn/?ytag=GPU_YY_git_codeg" target="_blank"><img src="../images/compshare.png" alt="优云智算" width="160" /></a><br/>
      <strong><a href="https://www.compshare.cn/?ytag=GPU_YY_git_codeg">优云智算</a></strong>
    </td>
    <td>感谢优云智算赞助了本项目！优云智算是 UCloud 旗下 AI 云平台，主打包月、按次的高性价比国模 agent Plan 套餐，低至 49 元/月起。同时提供官转稳定海外模型。支持接入 Claude Code、Codex 及 API 调用。支持企业高并发、7*24 技术支持、自助开票。通过<a href="https://www.compshare.cn/?ytag=GPU_YY_git_codeg">此链接</a>注册的用户，可得免费 5 元平台体验金！</td>
  </tr>
</table>

> 想成为 Codeg 赞助商？[欢迎通过邮件与我们联系。](mailto:itpkcn@gmail.com)

## 主界面

![Codeg Light](../images/main-light.png#gh-light-mode-only)
![Codeg Dark](../images/main-dark.png#gh-dark-mode-only)

## 设置

![Codeg Light](../images/settings-light.png#gh-light-mode-only)
![Codeg Dark](../images/settings-dark.png#gh-dark-mode-only)

## 核心亮点

- **会话聚合** — 将所有受支持智能体的会话导入到统一工作台
- **多智能体协作** — 在同一会话中，主智能体可调用不同类型的子智能体（如 Claude Code 调用 Codex、Gemini 等）协作完成任务，每个子智能体作为独立会话运行
- 内置 `git worktree` 并行开发流程
- **项目启动器** — 可视化创建新项目，实时预览效果
- **消息渠道** — 连接 Telegram、飞书、iLink（微信）等即时通讯应用到编码代理，实时接收通知、完整会话交互、远程任务控制
- MCP 管理（本地扫描 + 市场搜索/安装）
- Skills 管理（全局与项目级）
- Git 远程账号管理（支持 GitHub 及其它 Git 服务器）
- Web 服务模式 — 开启后可在浏览器中访问 Codeg，支持远程工作
- **独立服务器部署** — 在任意 Linux/macOS 服务器上运行 `codeg-server`，通过浏览器访问
- **Docker 支持** — `docker compose up` 或 `docker run`，可自定义令牌、端口，支持数据持久化及项目目录挂载
- 集成工程闭环（文件树、Diff、Git 变更、提交、终端）

## 支持的Agent

| Agent        | 环境变量优先路径                      | 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`                  |
| Hermes Agent | `$HERMES_HOME/state.db`               | `~/.hermes/state.db`                  | `%USERPROFILE%\\.hermes\\state.db`                    |

> 注意：环境变量的优先级高于默认路径。

<details>
<summary><h2>项目启动器</h2></summary>

可视化创建新项目：左侧配置面板，右侧实时预览。

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

### 功能特性

- **可视化配置** — 从下拉菜单中选择样式、颜色主题、图标库、字体、圆角等，预览面板即时更新
- **实时预览** — 在创建项目前，实时查看所选样式的渲染效果
- **一键创建** — 点击"创建项目"，启动器将使用您的预设配置、框架模板（Next.js / Vite / React Router / Astro / Laravel）和包管理器（pnpm / npm / yarn / bun）执行 `shadcn init`
- **包管理器检测** — 自动检测已安装的包管理器并显示版本号
- **无缝集成** — 新创建的项目会立即在 Codeg 工作台中打开

目前支持 **shadcn/ui** 项目脚手架，选项卡式设计为未来支持更多项目类型做好了准备。

</details>

<details>
<summary><h2>消息渠道</h2></summary>

连接你喜爱的即时通讯应用——Telegram、飞书、iLink（微信）等——到 AI 编码代理。直接在聊天中创建任务、发送后续消息、审批权限、恢复会话、监控活动。实时接收代理响应（包含工具调用详情、权限提示和完成摘要），无需打开浏览器。

### 支持的渠道

| 渠道          | 协议                   | 状态 |
| ------------- | ---------------------- | ---- |
| Telegram      | Bot API（HTTP 长轮询） | 内置 |
| 飞书          | WebSocket + REST API   | 内置 |
| iLink（微信） | WebSocket + REST API   | 内置 |

> 更多渠道（Discord、Slack、钉钉等）计划在未来版本中支持。

</details>

<details>
<summary><h2>快速开始</h2></summary>

### 环境要求

- 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
```

### 二进制文件

Codeg 在单个 workspace 中提供三个 Rust 二进制文件：

| 二进制         | 角色                                                                                         | 构建方式                                                                    |
| -------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| `codeg`        | Tauri 桌面应用（窗口、托盘、自动更新）                                                       | `pnpm tauri build`（发布）/ `pnpm tauri dev`（开发）                        |
| `codeg-server` | 用于浏览器/无头部署的独立 HTTP + WebSocket 服务器                                            | `pnpm server:build` / `pnpm server:dev`                                     |
| `codeg-mcp`    | 单次启动的 stdio MCP 协作进程，向 agent CLI 暴露 `delegate_to_agent` 工具（多智能体协作）    | `pnpm tauri:prepare-sidecars`（由 `tauri dev` / `tauri build` 自动调用）    |

`codeg-mcp` 在运行时必须与其父二进制位于同一目录——安装器、Docker 镜像和 Tauri sidecar 打包器都会把它放在 `codeg` / `codeg-server` 旁边。源码构建和自定义部署可以通过 `CODEG_MCP_BIN=/abs/path/codeg-mcp` 环境变量覆盖查找路径。如果协作进程缺失，委托功能会被跳过（仅记录一条警告日志），其余 agent 会话仍可正常工作。

### 开发命令

```bash
pnpm install

# 仅前端（Next.js 开发服务器，无需 Rust）
pnpm dev

# 前端静态导出到 out/
pnpm build

# 完整桌面应用（Tauri + Next.js，自动构建 codeg-mcp sidecar）
pnpm tauri dev

# 桌面发布构建（将 codeg-mcp 作为 externalBin 打包）
pnpm tauri build

# 独立服务器（无需 Tauri/GUI）
pnpm server:dev
pnpm server:build                  # 发布二进制位于 src-tauri/target/release/codeg-server

# 显式构建 codeg-mcp 协作进程（针对当前主机 triple）
pnpm tauri:prepare-sidecars        # 输出：src-tauri/binaries/codeg-mcp-<triple>

# 当只调试前端且不需要委托功能时，跳过 sidecar 准备
CODEG_SKIP_SIDECAR=1 pnpm tauri dev

# Lint
pnpm eslint .

# 前端测试（vitest）
pnpm test
pnpm test:watch
pnpm test:coverage

# Rust 检查（在 src-tauri/ 下执行）
cargo check                                                     # 桌面（默认 features）
cargo check --no-default-features --bin codeg-server            # 服务器模式
cargo check --no-default-features --bin codeg-mcp               # MCP 协作进程
cargo clippy --all-targets --features test-utils -- -D warnings

# Rust 测试
cargo test --features test-utils                                # 桌面（含集成）
cargo test --no-default-features --bin codeg-server --lib       # 服务器模式
cargo insta review                                              # 接受解析器快照变更
```

> 提示：当你在 `src-tauri/target/release/` 下有新构建的 `codeg-mcp` 并想让手动启动的 `codeg-server` 在不重新安装的情况下指向它时，可以导出 `CODEG_MCP_BIN=$(pwd)/src-tauri/target/release/codeg-mcp`。

### 服务器部署

Codeg 可以作为独立 Web 服务器运行，无需桌面环境。

#### 方式一：一键安装（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
```

#### 方式二：一键安装（Windows PowerShell）

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

或安装指定版本：

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

#### 方式三：从 GitHub Releases 下载

预构建二进制文件（已打包 Web 前端资源）可在 [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
```

#### 方式四：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` 卷中。可选挂载项目目录以从容器内访问本地仓库。

#### 方式五：从源码构建

```bash
pnpm install && pnpm build          # 构建前端
cd src-tauri
cargo build --release --bin codeg-server --no-default-features
cargo build --release --bin codeg-mcp --no-default-features    # 委托协作进程
CODEG_STATIC_DIR=../out ./target/release/codeg-server          # codeg-mcp 会作为同级二进制被自动发现
```

> 如果两个二进制分别存放在不同目录，请设置 `CODEG_MCP_BIN=/abs/path/to/codeg-mcp`，运行时才能找到协作进程；否则多智能体委托会被静默禁用。

#### 配置

环境变量：

| 变量                           | 默认值                 | 说明                                                                                                                                                                                                                                                                                                        |
| ------------------------------ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CODEG_PORT`                   | `3080`                 | HTTP 端口                                                                                                                                                                                                                                                                                                   |
| `CODEG_HOST`                   | `0.0.0.0`              | 绑定地址                                                                                                                                                                                                                                                                                                    |
| `CODEG_TOKEN`                  | _（随机）_             | 认证令牌（启动时输出到 stderr）                                                                                                                                                                                                                                                                             |
| `CODEG_DATA_DIR`               | `~/.local/share/codeg` | SQLite 数据库目录（同时也是 `uploads/`、`pets/` 的根目录）                                                                                                                                                                                                                                                  |
| `CODEG_STATIC_DIR`             | `./web` 或 `./out`     | Next.js 静态导出目录                                                                                                                                                                                                                                                                                        |
| `CODEG_MCP_BIN`                | _（未设置）_           | `codeg-mcp` 协作进程的绝对路径。会覆盖默认的"可执行文件同级目录 + `PATH`"查找逻辑。用于源码构建或协作进程不在服务端安装目录内的自定义部署。                                                                                                                                                                  |
| `CODEG_SKIP_SIDECAR`           | _（未设置）_           | 仅供 `pnpm tauri dev` / `pnpm tauri build` 调试前端时使用——当值为 `1` 时，跳过 `codeg-mcp` sidecar 的构建。此类构建不支持委托功能；发布质量的产物必须保持此变量未设置。                                                                                                                                      |
| `CODEG_UPLOAD_MAX_TOTAL_BYTES` | _（未设置）_           | `<data dir>/uploads/` 下所有文件总字节数的硬上限。十进制字节数（例如 `10737418240` 表示 10 GiB）。未设置、`0` 或无法解析的值会禁用上限，并在启动时打印一行日志以便观察当前状态。该上限仅在单个 `codeg-server` 进程内生效——共享一个 `uploads/` 卷的横向扩展部署需要外部协调（文件锁、Redis、反向代理配额）。 |
| `CODEG_UPLOAD_QUOTA_STRICT`    | _（未设置）_           | 当值为真（`1` / `true` / `yes` / `on`）时，若 `CODEG_UPLOAD_MAX_TOTAL_BYTES` 设置为无法解析的值，则以退出码 2 中止启动，而不是发出 WARN 后继续运行。当安全策略要求"配置的配额必须生效"时使用此选项。                                                                                                        |

</details>

<details>
<summary><h2>架构</h2></summary>

```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)
```

</details>

## 隐私与安全

- 默认本地优先：解析、存储、项目操作均在本地完成
- 仅在用户主动触发时才访问网络
- 支持系统代理，适配企业网络环境
- Web 服务模式使用基于令牌的身份认证

## 交流

- 扫描下方二维码加入我们的微信群，参与讨论、反馈与更新

<img src="../images/weixin-light.jpg#gh-light-mode-only" alt="WeChat" width="240" />
<img src="../images/weixin-dark.jpg#gh-dark-mode-only" alt="WeChat" width="240" />

- 感谢 [LinuxDO](https://linux.do) 社区的支持

## 鸣谢

- [ACP](https://agentclientprotocol.com)：智能体客户端协议 (ACP) 是 codeg 实现多智能体连接的基础

## 许可证

Apache-2.0，详见 `LICENSE`。
