Files
codeg/AGENTS.md
2026-03-06 22:56:13 +08:00

76 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 定义错误类型