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> |
|
|
<strong>한국어</strong> |
|
|
<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)는 엔터프라이즈급 멀티 Agent 코딩 워크스페이스입니다.
|
|
Claude Code, Codex CLI, OpenCode, Gemini CLI, OpenClaw, Cline 등 로컬 AI 코딩 Agent를
|
|
데스크톱 앱, 독립형 서버 또는 Docker 컨테이너로 통합하여 — 브라우저만으로 어디서든 원격 개발이 가능하며 — 대화 집계, 병렬 `git worktree` 개발, MCP/Skills 관리,
|
|
채팅 채널 연동(Telegram, Lark, iLink 등), Git/파일/터미널 통합 워크플로를 제공합니다.
|
|
|
|

|
|
|
|
## 메인 인터페이스
|
|

|
|

|
|
|
|
## 설정
|
|
| 에이전트 | MCP | Skills | 버전 관리 | 웹 서비스 |
|
|
| :---: | :---: | :---: | :---: | :---: |
|
|
|   |   |   |   |   |
|
|
|
|
## 하이라이트
|
|
|
|
- 동일 프로젝트에서 멀티 Agent 통합 워크스페이스
|
|
- 로컬 대화 수집 및 구조화 렌더링
|
|
- 내장 `git worktree` 플로를 통한 병렬 개발
|
|
- **프로젝트 부트** — 시각적 설정과 실시간 미리보기로 새 프로젝트 생성
|
|
- **채팅 채널** — Telegram, Lark(Feishu), iLink(Weixin) 등을 코딩 에이전트에 연결하여 실시간 알림 수신, 전체 세션 상호작용 및 원격 작업 제어
|
|
- MCP 관리 (로컬 스캔 + 레지스트리 검색/설치)
|
|
- Skills 관리 (글로벌 및 프로젝트 범위)
|
|
- Git 원격 계정 관리 (GitHub 및 기타 Git 서버)
|
|
- Web 서비스 모드 — 브라우저에서 Codeg에 접속하여 원격 작업 가능
|
|
- **독립형 서버 배포** — 모든 Linux/macOS 서버에서 `codeg-server`를 실행하고 브라우저로 접속
|
|
- **Docker 지원** — `docker compose up` 또는 `docker run` 지원, 사용자 정의 토큰/포트, 데이터 영속화 및 프로젝트 디렉토리 마운트 지원
|
|
- 통합 엔지니어링 루프 (파일 트리, Diff, Git 변경사항, 커밋, 터미널)
|
|
|
|
## 프로젝트 부트
|
|
|
|
분할 패널 인터페이스로 새 프로젝트를 시각적으로 생성: 왼쪽에서 설정, 오른쪽에서 실시간 미리보기.
|
|
|
|

|
|

|
|
|
|
### 주요 기능
|
|
|
|
- **시각적 설정** — 드롭다운에서 스타일, 색상 테마, 아이콘 라이브러리, 글꼴, 테두리 반경 등을 선택하면 미리보기가 즉시 업데이트
|
|
- **실시간 미리보기** — 프로젝트 생성 전에 선택한 룩앤필을 실시간으로 확인
|
|
- **원클릭 생성** — "프로젝트 생성"을 클릭하면 프리셋 설정, 프레임워크 템플릿(Next.js / Vite / React Router / Astro / Laravel), 패키지 매니저(pnpm / npm / yarn / bun)로 `shadcn init` 실행
|
|
- **패키지 매니저 감지** — 설치된 패키지 매니저를 자동으로 감지하고 버전 표시
|
|
- **원활한 통합** — 새로 생성된 프로젝트가 Codeg 워크스페이스에서 바로 열림
|
|
|
|
현재 **shadcn/ui** 프로젝트 스캐폴딩을 지원하며, 탭 기반 디자인으로 향후 더 많은 프로젝트 유형을 지원할 준비가 되어 있습니다.
|
|
|
|
## 채팅 채널
|
|
|
|
즐겨 사용하는 메신저 앱 — Telegram, Lark(Feishu), iLink(Weixin) 등 — 을 AI 코딩 에이전트에 연결하세요. 채팅에서 직접 작업을 생성하고, 후속 메시지를 보내고, 권한을 승인하고, 세션을 재개하고, 활동을 모니터링할 수 있습니다 — 도구 호출 상세 정보, 권한 프롬프트, 완료 요약이 포함된 실시간 에이전트 응답을 브라우저를 열지 않고도 받을 수 있습니다.
|
|
|
|
### 지원 채널
|
|
|
|
| 채널 | 프로토콜 | 상태 |
|
|
| --- | --- | --- |
|
|
| Telegram | Bot API (HTTP 롱폴링) | 내장 |
|
|
| Lark (Feishu) | WebSocket + REST API | 내장 |
|
|
| iLink (Weixin) | WebSocket + REST API | 내장 |
|
|
|
|
> 추가 채널(Discord, Slack, DingTalk 등)은 향후 릴리스에서 지원 예정입니다.
|
|
|
|
### 주요 기능
|
|
|
|
- **세션 상호작용** — 전체 에이전트 세션 실행: `/folder`로 프로젝트 선택, `/agent`로 에이전트 선택, `/task <설명>`으로 작업 시작, 일반 텍스트로 후속 메시지 전송. `/resume`으로 이전 세션 재개, `/cancel`로 중단, `/sessions`로 활성 세션 목록 확인
|
|
- **권한 제어** — 에이전트가 채팅에서 도구 실행 권한을 요청; `/approve`(또는 `/approve always`로 자동 승인) 및 `/deny`로 응답
|
|
- **이벤트 알림** — 에이전트 턴 완료, 도구 호출, 오류가 리치 포맷으로 실시간 푸시
|
|
- **조회 명령어** — `/search <키워드>`, `/today`, `/status`, `/help`로 빠른 조회; 명령 접두사 설정 가능
|
|
- **일일 리포트** — 예약된 시간에 자동 일일 요약 생성(대화 수, 에이전트 유형별 분석, 프로젝트 활동 포함)
|
|
- **다국어 지원** — 10개 언어의 메시지 템플릿(영어, 간체/번체 중국어, 일본어, 한국어, 스페인어, 독일어, 프랑스어, 포르투갈어, 아랍어)
|
|
- **보안 자격증명** — 토큰은 OS 키링에 저장되며 설정 파일이나 로그에 노출되지 않음
|
|
- **리치 메시지** — Telegram은 Markdown 포맷, Lark은 카드 기반 레이아웃, iLink은 리치 텍스트 메시지; 모든 플랫폼에서 일반 텍스트 폴백 지원
|
|
|
|
### 설정
|
|
|
|
1. **설정 → 채팅 채널**에서 채널 생성(Telegram, Lark 또는 iLink 선택)
|
|
2. 봇 토큰(Telegram), 앱 자격증명(Lark) 또는 QR 코드로 로그인(iLink) — OS 키링에 안전하게 저장
|
|
3. 이벤트 필터 및 선택적 일일 리포트 일정 설정
|
|
4. 연결 — 에이전트가 이벤트를 발생시키면 메시지가 흐르기 시작
|
|
|
|
## 지원 에이전트
|
|
|
|
| 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` |
|
|
|
|
> 참고: 환경 변수가 기본 경로보다 우선합니다.
|
|
|
|
## 빠른 시작
|
|
|
|
### 요구 사항
|
|
|
|
- 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
|
|
```
|
|
|
|
### 개발
|
|
|
|
```bash
|
|
pnpm install
|
|
|
|
# 프론트엔드 정적 내보내기 (out/)
|
|
pnpm build
|
|
|
|
# 전체 데스크톱 앱 (Tauri + Next.js)
|
|
pnpm tauri dev
|
|
|
|
# 프론트엔드만
|
|
pnpm dev
|
|
|
|
# 데스크톱 빌드
|
|
pnpm tauri build
|
|
|
|
# 독립형 서버 (Tauri/GUI 불필요)
|
|
pnpm server:dev
|
|
|
|
# 서버 릴리스 바이너리 빌드
|
|
pnpm server:build
|
|
|
|
# Lint
|
|
pnpm eslint .
|
|
|
|
# Rust 검사 (src-tauri/에서 실행)
|
|
cargo check
|
|
cargo clippy
|
|
cargo build
|
|
```
|
|
|
|
### 서버 배포
|
|
|
|
Codeg는 데스크톱 환경 없이 독립형 웹 서버로 실행할 수 있습니다.
|
|
|
|
#### 옵션 1: 원라인 설치 (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
|
|
```
|
|
|
|
#### 옵션 2: 원라인 설치 (Windows PowerShell)
|
|
|
|
```powershell
|
|
irm https://raw.githubusercontent.com/xintaofei/codeg/main/install.ps1 | iex
|
|
```
|
|
|
|
또는 특정 버전 설치:
|
|
|
|
```powershell
|
|
.\install.ps1 -Version v0.5.2
|
|
```
|
|
|
|
#### 옵션 3: GitHub Releases에서 다운로드
|
|
|
|
사전 빌드된 바이너리(웹 에셋 포함)는 [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
|
|
```
|
|
|
|
#### 옵션 4: 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` 볼륨에 영속적으로 저장됩니다. 선택적으로 프로젝트 디렉토리를 마운트하여 컨테이너 내에서 로컬 저장소에 접근할 수 있습니다.
|
|
|
|
#### 옵션 5: 소스에서 빌드
|
|
|
|
```bash
|
|
pnpm install && pnpm build # 프론트엔드 빌드
|
|
cd src-tauri
|
|
cargo build --release --bin codeg-server --no-default-features
|
|
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 정적 내보내기 디렉토리 |
|
|
|
|
## 아키텍처
|
|
|
|
```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)
|
|
```
|
|
|
|
## 제약 사항
|
|
|
|
- 프론트엔드는 정적 내보내기 사용 (`output: "export"`)
|
|
- Next.js 동적 라우트 (`[param]`) 불가; 대신 쿼리 파라미터 사용
|
|
- Tauri 명령 파라미터: 프론트엔드 `camelCase`, Rust `snake_case`
|
|
- TypeScript strict 모드
|
|
|
|
## 개인정보 보호 및 보안
|
|
|
|
- 파싱, 저장, 프로젝트 작업은 기본적으로 로컬 우선
|
|
- 네트워크 접근은 사용자가 명시적으로 작업을 실행할 때만 발생
|
|
- 엔터프라이즈 환경을 위한 시스템 프록시 지원
|
|
- 웹 서비스 모드에서는 토큰 기반 인증 사용
|
|
|
|
## 감사의 말
|
|
|
|
- [LinuxDO](https://linux.do) — 모든 것이 시작된 커뮤니티
|
|
- [ACP](https://agentclientprotocol.com) — Agent Client Protocol (ACP)은 codeg가 여러 에이전트와 연결할 수 있는 기반입니다
|
|
|
|
## 라이선스
|
|
|
|
Apache-2.0. `LICENSE` 참고.
|