diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..34e49f61 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,297 @@ +# AGENTS.md + +This file provides guidance to Codex (Codex.ai/code) when working with code in this repository. + +**重要提示:** +- 当功能发生变化时,请保持此文件和 `README.md` 同步更新。请更新文档以反映当前状态,但是需要经过我的允许后再修改。 +- 所有的注释和日志优先采用中文,保留必要的专业术语部分。 +- 所有的依赖包的安装都要先进行搜索,综合判断依赖采用的版本,而不是默认采用某个版本。 +- 状态管理上我们全部采用 Jotai 来实现。 +- 这是个开源项目,本地存储优先,善用配置文件优于大部分默认采用 localstorage,不采用本地数据库方案。 +- 保证充分的组件化以及人类的可读性,每次完成改动后都要思考这一点,运行@code-simplifier 来简化优化代码,保持简单直接不过渡设计的风格。 +- 在 UI 设计上采用更现代的方案,UI 组件推荐采用 ShadcnUI,在合适的情况下,用卡片和阴影取代边框,用符合主题的饱满色彩,设置界面要设置背景,为未来做不同主题留下空间。 +- 采用 BDD 行为驱动开发的方案。 + +## 项目概述 + +Proma 是一个集成通用 AI Agent 的下一代人工智能软件,采用 Electron 桌面应用架构。 + +## Monorepo 结构 + +Bun workspace monorepo: + +``` +proma/ +├── packages/ +│ ├── core/ # AI Provider 适配器、代码高亮服务 (Shiki) +│ ├── shared/ # 共享类型、IPC 通道常量、配置、Agent 工具匹配 +│ └── ui/ # 共享 UI 组件 (CodeBlock, MermaidBlock, useSmoothStream) +└── apps/ + └── electron/ # Electron 桌面应用 + └── src/ + ├── main/ # 主进程 + 服务层 (main/lib/) + ├── preload/ # IPC 上下文桥接 + └── renderer/ # React UI (Vite + Tailwind + ShadcnUI) +``` + +**包命名规范**:`@proma/*` 作用域(`@proma/core`、`@proma/shared`、`@proma/ui`、`@proma/electron`) + +**依赖管理**:package.json 中使用 `workspace:*` 引用内部包 + +## 常用命令 + +```bash +# 开发模式(推荐 - 自动启动 Vite + Electron + 热重载) +bun run dev + +# 手动开发模式(调试时更稳定) +# 终端 1: cd apps/electron && bun run dev:vite +# 终端 2: cd apps/electron && bun run dev:electron + +# 构建并运行 +bun run electron:start + +# 仅构建 +bun run electron:build + +# 类型检查(所有包) +bun run typecheck + +# 单包类型检查 +cd packages/core && bun run typecheck + +# 测试 +bun test + +# 打包分发 +cd apps/electron +bun run dist:mac # macOS +bun run dist:win # Windows +bun run dist:linux # Linux +bun run dist:fast # 当前架构快速打包 +``` + +### Electron 构建脚本(`apps/electron/` 目录下) + +```bash +bun run build:main # esbuild → dist/main.cjs +bun run build:preload # esbuild → dist/preload.cjs +bun run build:renderer # Vite → dist/renderer/ +bun run build:resources # 复制 resources/ 到 dist/ +bun run generate:icons # 生成应用图标 +``` + +## 运行时环境 + +使用 Bun 代替 Node.js/npm/pnpm: + +- `bun install` 安装依赖,`bun run