Initial commit

This commit is contained in:
xggz
2026-03-06 22:56:13 +08:00
commit 54d1097b41
273 changed files with 92457 additions and 0 deletions

75
AGENTS.md Normal file
View File

@@ -0,0 +1,75 @@
# AGENTS.md
This file provides guidance to Code Agent when working with code in this repository.
## 项目概述
codeg 是一个桌面应用,用于聚合和浏览本地 AI 编码代理的会话记录。它从多个代理Claude Code、Codex、OpenCode的本地文件系统中读取会话数据统一格式后在 UI 中展示。
## 技术栈
- **桌面运行时**: Tauri 2Rust 后端 + webview 前端)
- **前端**: Next.js 16静态导出模式+ React 19 + TypeScriptstrict
- **样式**: Tailwind CSS v4 + shadcn/uiradix-maia 风格)
- **包管理器**: pnpm
## 开发命令
```bash
# 启动完整应用Tauri + Next.js Turbopack 开发服务器)
pnpm tauri dev
# 仅启动前端
pnpm dev
# 构建前端(静态导出到 out/
pnpm build
# 构建 Tauri 桌面应用
pnpm tauri build
# Lint 检查
pnpm eslint .
# Rust 检查(在 src-tauri/ 目录下执行)
cargo check
cargo clippy
cargo build
```
目前尚未配置测试框架。
## 架构
### Rust 后端(`src-tauri/src/`
后端负责读取和解析本地文件系统上的代理会话文件:
- **`models/`** — 共享数据结构
- **`parsers/`** — 每个代理一个解析器
- **`commands/sessions.rs`** — 暴露给前端的 Tauri 命令
### 前端(`src/`
- **`lib/types.ts`** — Rust 模型的 TypeScript 镜像。`AgentType``"claude_code" | "codex" | "open_code"`snake_case与 Rust serde 一致)
- **`lib/tauri.ts`** — 对每个 Tauri 命令的类型化 `invoke()` 封装
- **`app/`** — Next.js 页面,不使用动态路由
- **`components/`** — 项目组件
- **`components/ui/`** — shadcn 组件
### 数据流
前端调用 `invoke()` → Tauri 命令 → 解析器读取本地文件 → 返回 `SessionSummary[]` / `SessionDetail` → React 渲染
## 关键约束
- **仅支持静态导出**`next.config.ts` 设置 `output: "export"`,不支持动态路由(`[param]`),必须使用查询参数替代
- **路径别名**`@/*` 映射到 `./src/*`,导入写法为 `@/lib/utils``@/components/ui/button`
- **Rust serde 约定**`AgentType` 序列化为 snake_case`claude_code``open_code`。Tauri 命令参数在 JS 侧使用 camelCaseRust 侧使用 snake_case
## 代码风格
- Prettier无分号、尾逗号es5、2 空格缩进、80 字符宽度
- ESLintnext/core-web-vitals + typescript + prettier
- TypeScriptstrict 模式,启用 `noUnusedLocals``noUnusedParameters`
- Rust2021 edition使用 `thiserror` 定义错误类型