支持无GUI的Server运行模式

This commit is contained in:
xintaofei
2026-03-29 18:36:30 +08:00
parent 7b73d7e1c2
commit 080a16f26c
49 changed files with 2169 additions and 1047 deletions

View File

@@ -4,6 +4,7 @@
[![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> |
@@ -46,6 +47,8 @@ OpenClaw、Cline 等)整合到桌面應用與 Web 服務中——透過瀏覽
- Skills 管理(全域與專案級)
- Git 遠端帳號管理(支援 GitHub 及其他 Git 伺服器)
- Web 服務模式 — 開啟後可在瀏覽器中存取 Codeg支援遠端工作
- **獨立伺服器部署** — 在任意 Linux/macOS 伺服器上執行 `codeg-server`,透過瀏覽器存取
- **Docker 支援** — 使用 `docker compose up` 部署,零設定啟動服務
- 整合工程閉環檔案樹、Diff、Git 變更、提交、終端)
## 專案啟動器
@@ -104,7 +107,7 @@ OpenClaw、Cline 等)整合到桌面應用與 Web 服務中——透過瀏覽
- Node.js `>=22`(建議)
- pnpm `>=10`
- Rust stable2021 edition
- Tauri 2 建置依賴
- Tauri 2 建置依賴(僅桌面模式)
LinuxDebian/Ubuntu範例
@@ -122,18 +125,24 @@ sudo apt-get install -y \
```bash
pnpm install
# 前端靜態匯出到 out/
pnpm build
# 完整桌面應用Tauri + Next.js
pnpm tauri dev
# 僅前端
pnpm dev
# 前端靜態匯出到 out/
pnpm build
# 桌面應用建置
pnpm tauri build
# 獨立伺服器(無需 Tauri/GUI
pnpm server:dev
# 建置伺服器發行版二進位檔
pnpm server:build
# Lint
pnpm eslint .
@@ -143,22 +152,71 @@ cargo clippy
cargo build
```
### 伺服器部署
Codeg 可以作為獨立 Web 伺服器執行,無需桌面環境。
#### 方式一:直接執行二進位檔
```bash
# 建置伺服器二進位檔
cd src-tauri
cargo build --release --bin codeg-server --no-default-features
# 執行
CODEG_PORT=3080 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 靜態匯出目錄 |
#### 方式二Docker
```bash
# 建置並執行
docker compose up -d
# 或手動建置
docker build -t codeg .
docker run -p 3080:3080 -v codeg-data:/data codeg
```
## 架構
```text
Next.js 16 (Static Export) + React 19
|
| invoke()
| invoke() (desktop) / fetch() + WebSocket (web)
v
Tauri 2 Commands (Rust)
|- ACP Manager
|- Parsers (local session ingestion)
|- Git / File Tree / Terminal runtime
|- MCP marketplace + local config writer
|- SeaORM + SQLite
┌─────────────────────────┐
│ Transport Abstraction │
│ (Tauri IPC or HTTP/WS) │
└─────────────────────────┘
|
v
Local Filesystem / Local Agent Data / Git Repos
┌─── Tauri Desktop ───┐ ┌─── codeg-server ───┐
│ Tauri 2 Commands │ │ Axum HTTP + WS │
│ (window management) │ │ (standalone mode) │
└──────────┬───────────┘ └──────────┬──────────┘
└──────────┬───────────────┘
v
Shared Rust Core
|- AppState
|- ACP Manager
|- Parsers (session ingestion)
|- Git / File Tree / Terminal
|- MCP marketplace + config
|- SeaORM + SQLite
|
v
Local Filesystem / Git Repos
```
## 開發約束
@@ -173,6 +231,7 @@ Local Filesystem / Local Agent Data / Git Repos
- 預設本地優先:解析、儲存、專案操作均在本地完成
- 僅在使用者主動觸發時才存取網路
- 支援系統代理,適配企業網路環境
- Web 服務模式使用基於令牌的身份認證
## 授權