# GitDataAI > Where Humans & Agents Engineer Together. > > Every action is a command. Every command is versioned, auditable, and composable. ## 项目概述 GitDataAI 是一个面向 Agentic 时代的开发协作平台,通过 **Command as Service** 理念,将人类与 AI 代理的协作标准化。每一次操作——创建仓库、发起 PR、调度 Agent——都是一条可版本化、可回放、可组合的命令。CLI 即 API,工作流即可查询的命令流。 ### 核心功能 - **Command as Service** — 所有操作均为版本化命令,CLI 即 API,支持回放与组合 - **Git Repositories** — 完整 Git 操作(分支、提交、合并),HTTP/SSH 访问,内置分支保护 - **Collaborative Rooms** — 人类与 AI 代理共存的实时命令执行空间 - **AI Agents** — 监听命令流,执行 Skill,报告结果,可持久化记忆 - **Issue & Pull Request** — 追踪、审查、Agent 自动化 - **Skill Registry** — 可复用的 Agent 行为包,通过命令调用 ## 技术栈 ### 后端 (Rust) | 类别 | 技术 | |--------|----------------------| | 语言 | Rust 2024 Edition | | Web 框架 | Actix-web | | ORM | SeaORM | | 数据库 | PostgreSQL | | 缓存 | Redis | | 实时通信 | WebSocket (actix-ws) | | 消息队列 | Redis | | 向量数据库 | Qdrant | | Git 操作 | git2 / git2-ext | | 认证 | JWT + Session | | API 文档 | utoipa (OpenAPI) | ### 前端 (TypeScript/React) | 类别 | 技术 | |----------|----------------------------| | 语言 | TypeScript 5.9 | | 框架 | React 19 | | 路由 | React Router v7 | | 构建工具 | Vite 8 + SWC | | UI 组件 | shadcn/ui + Tailwind CSS 4 | | 状态管理 | TanStack Query | | HTTP 客户端 | Axios + OpenAPI 生成 | | Markdown | react-markdown + Shiki | | 拖拽 | dnd-kit | ## 项目结构 ``` code/ ├── apps/ # 应用程序入口 │ ├── app/ # 主 Web 应用 │ ├── gitserver/ # Git HTTP/SSH 服务器 │ ├── git-hook/ # Git Hook 处理服务 │ ├── email/ # 邮件发送服务 │ ├── migrate/ # 数据库迁移工具 │ └── operator/ # Kubernetes 操作器 ├── libs/ # 共享库 │ ├── api/ # REST API 路由与处理器 │ ├── models/ # 数据库模型 (SeaORM) │ ├── service/ # 业务逻辑层 │ ├── db/ # 数据库连接池 │ ├── config/ # 配置管理 │ ├── session/ # 会话管理 │ ├── git/ # Git 操作封装 │ ├── room/ # 实时聊天服务 │ ├── queue/ # 消息队列 │ ├── webhook/ # Webhook 处理 │ ├── rpc/ # RPC 服务 (gRPC/Tonic) │ ├── email/ # 邮件发送 │ ├── agent/ # AI Agent 集成 │ ├── avatar/ # 头像处理 │ ├── transport/ # 传输层 │ └── migrate/ # 迁移脚本 ├── src/ # 前端源代码 │ ├── app/ # 页面路由组件 │ ├── components/ # 可复用组件 │ ├── contexts/ # React Context │ ├── client/ # API 客户端 (OpenAPI 生成) │ ├── hooks/ # 自定义 Hooks │ └── lib/ # 工具函数 ├── docker/ # Docker 配置 ├── scripts/ # 构建脚本 ├── openapi.json # OpenAPI 规范文件 └── Cargo.toml # Rust Workspace 配置 ``` ## 快速开始 ### 环境要求 - **Rust**: 最新稳定版 (Edition 2024) - **Node.js**: >= 20 - **pnpm**: >= 10 - **PostgreSQL**: >= 14 - **Redis**: >= 6 ### 安装步骤 1. **克隆仓库** ```bash git clone cd code ``` 2. **配置环境变量** ```bash cp .env.example .env # 编辑 .env 文件,配置数据库连接等信息 ``` 3. **启动数据库与 Redis** ```bash # 使用 Docker 启动(推荐) docker compose -f docker/docker-compose.yml up -d ``` 4. **数据库迁移** ```bash cargo run -p migrate ``` 5. **启动后端服务** ```bash cargo run -p app ``` 6. **启动前端开发服务器** ```bash pnpm install pnpm dev ``` 7. **访问应用** - 前端: http://localhost:5173 - 后端 API: http://localhost:8080 ## 开发指南 ### 后端开发 ```bash # 运行所有测试 cargo test # 运行特定模块测试 cargo test -p service # 检查代码质量 cargo clippy --workspace # 格式化代码 cargo fmt --workspace # 生成 OpenAPI 文档 pnpm openapi:gen-json ``` ### 前端开发 ```bash # 安装依赖 pnpm install # 启动开发服务器 pnpm dev # 构建生产版本 pnpm build # 代码检查 pnpm lint # 生成 OpenAPI 客户端 pnpm openapi:gen ``` ### 数据库迁移 ```bash # 创建新迁移 cd libs/migrate && cargo run -- create # 执行迁移 cargo run -p migrate ``` ## 配置说明 ### 必需配置项 | 变量名 | 说明 | 示例 | |--------------------|---------------|---------------------------------------| | `APP_DATABASE_URL` | PostgreSQL 连接 | `postgresql://user:pass@localhost/db` | | `APP_REDIS_URL` | Redis 连接 | `redis://localhost:6379` | | `APP_AI_API_KEY` | AI 服务 API Key | `sk-xxxxx` | | `APP_SMTP_*` | SMTP 邮件配置 | 见 `.env.example` | ### 可选配置项 | 变量名 | 默认值 | 说明 | |--------------------------------|-------------|------------| | `APP_DATABASE_MAX_CONNECTIONS` | 10 | 数据库连接池大小 | | `APP_LOG_LEVEL` | info | 日志级别 | | `APP_QDRANT_URL` | - | 向量数据库地址 | | `APP_REPOS_ROOT` | /data/repos | Git 仓库存储路径 | 完整配置请参考 `.env.example`。 ## API 文档 启动服务后访问 http://localhost:8080/swagger-ui 查看完整的 API 文档。 ## 架构设计 ### 后端分层架构 ``` ┌─────────────────────────────────────┐ │ apps/app │ ← 应用入口 ├─────────────────────────────────────┤ │ libs/api │ ← HTTP 路由/Handler ├─────────────────────────────────────┤ │ libs/service │ ← 业务逻辑层 ├─────────────────────────────────────┤ │ libs/models │ libs/db │ libs/git│ ← 数据访问层 ├─────────────────────────────────────┤ │ PostgreSQL │ Redis │ Qdrant │ ← 存储层 └─────────────────────────────────────┘ ``` ### 前端目录结构 ``` src/ ├── app/ # 页面级组件 (按功能模块组织) │ ├── project/ # 项目相关页面 (Issue、Settings) │ ├── repository/ # 仓库相关页面 (PR、代码浏览) │ └── settings/ # 用户设置 ├── components/ # 可复用组件 │ ├── ui/ # 基础 UI 组件 (shadcn) │ ├── project/ # 项目相关组件 │ ├── repository/ # 仓库相关组件 │ └── room/ # 聊天相关组件 ├── contexts/ # React Context (用户、聊天室等) ├── client/ # OpenAPI 生成的客户端 └── lib/ # 工具函数与 Hooks ``` ## 任务清单 项目当前开发任务详见 [task.md](./task.md),按优先级分为: - **P0** — 阻塞性问题(核心流程不通) - **P1** — 核心体验(关键功能) - **P2** — 体验优化(增强功能) ## 许可证 [待添加]