Files
mnote/CLAUDE.md
T

125 lines
5.3 KiB
Markdown
Raw Normal View History

2026-01-17 12:38:04 +08:00
# CLAUDE.md
2026-01-21 18:21:10 +08:00
本文件用于指导 Claude Codeclaude.ai/code)在此仓库中进行开发与协作。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 重要(防止误判)
- **当前已使用 Convex 完全替换 Supabase**:数据读写、鉴权与权限控制以 Convex 为主线。
- 仓库内若仍存在 `supabase/``supabase.md``wolai-frontend/src/lib/supabase/``@supabase/*` 依赖或相关代码,均应视为**历史遗留/兼容残留**;除非任务明确要求,否则不要基于它们继续扩展实现。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 项目概览
MNOTE 是一个知识管理系统,结合类 Notion 的块编辑器、思维导图与 AI 工具,支持 Web/桌面(Electron)混合形态。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
**技术栈(核心)**
- 前端:Next.jsApp Router)、React、BlockNote
- 数据层:Convex(自托管见 `infra/convex/`functions 见 `wolai-frontend/convex/`
- 后端(辅助能力):FastAPI + CeleryOCR / OnlyOffice / 集成服务等)
- 桌面端:Electron(内嵌 Next.js standalone
- AI:工具型 Agent 系统(30+ 内置工具)
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 常用命令
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
### 快速启动(推荐)
2026-01-17 12:38:04 +08:00
```bash
2026-01-21 18:21:10 +08:00
npm run desktop:hot # 启动前端 + 后端(Redis 可用时启 Celery
npm run desktop:local # 本地离线模式
npm run desktop # 桌面端生产模式
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
### 仅前端(wolai-frontend/
2026-01-17 12:38:04 +08:00
```bash
2026-01-21 18:21:10 +08:00
pnpm dev
pnpm build
pnpm start
pnpm lint
pnpm test
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
### 仅后端(wolai-backend/
2026-01-17 12:38:04 +08:00
```bash
pip install -r requirements.txt
2026-01-21 18:21:10 +08:00
uvicorn app.main:app --reload --port 8000
celery -A app.workers.celery_app worker --loglevel=info
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
### Convex(自托管)
`infra/convex/README.md` 启动(Docker Compose)。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
### E2E 测试
2026-01-17 12:38:04 +08:00
```bash
cd pw-tests/scripts
2026-01-21 18:21:10 +08:00
python e2e_mindmap_sync.py
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
## 架构与目录
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
### 目录结构(关键)
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
wolai-frontend/ # 主前端(优先在这里改)
src/ # Next.js 源码
convex/ # Convex functionsschema/query/mutation/action
public/ # 静态资源 + mnote-env.json 等
infra/convex/ # Convex 自托管(compose + README
wolai-backend/ # FastAPI 后端(辅助能力)
services/ # 配套服务(OCR/RAG 等)
pw-tests/ # 端到端测试
desktop-electron/ # Electron 包装
supabase/ # 历史遗留(不要当作现行架构)
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
**注意:**仓库根目录的 `src/` 可能是历史/镜像目录;前端改动优先在 `wolai-frontend/src/`
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
### 关键模式
- **BFFBackend for Frontend**Next.js Route Handlers 负责鉴权与调用 Convexquery/mutation/action),前端页面通过这些 API/或 Convex provider 获取数据。
- **桌面端与 Web 共用代码**:桌面端通过运行期注入配置(`window.__MNOTE_RUNTIME_CONFIG__`)实现同一套前端在不同网络/环境下运行。
- **思维导图是一等公民**:以结构化 JSON 存储,支持节点引用(附件、URL + 页码)、AI 扩写等。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 环境变量与配置
2026-01-17 12:38:04 +08:00
2026-02-01 08:47:40 +08:00
### 前端(使用仓库根目录 .env.all)
2026-01-21 18:21:10 +08:00
至少需要:
2026-01-17 12:38:04 +08:00
```bash
2026-01-21 18:21:10 +08:00
NEXT_PUBLIC_CONVEX_URL=... # 浏览器侧 Convex URL(云端或自托管)
NEXT_PUBLIC_USE_CONVEX=1 # 开启 Convex 模式(或 USE_CONVEX=1
NEXT_PUBLIC_BACKEND_URL=... # FastAPI(如启用 OCR/OnlyOffice 等)
NEXT_PUBLIC_ONLYOFFICE_BASE_URL=... # OnlyOffice(如启用)
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
### 服务端(仅在需要服务端直连/管理权限时)
2026-01-17 12:38:04 +08:00
```bash
2026-01-21 18:21:10 +08:00
CONVEX_SELF_HOSTED_URL=...
CONVEX_SELF_HOSTED_ADMIN_KEY=...
2026-01-17 12:38:04 +08:00
```
2026-01-21 18:21:10 +08:00
### 桌面端运行期配置
桌面端会读取/合并运行期配置(如 `public/mnote-env.json` 与桌面配置文件)。以 Convex 为主线配置即可;若看到 Supabase 字段,默认当作历史兼容残留处理。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 编码约定
- 文件编码:UTF-8;代码注释允许中文(建议简体)。
- 缩进:TS/TSX 2 空格,Python 4 空格。
- 命名:组件 `PascalCase`hooks `useXxx`,测试 `*.test.ts(x)`
- 导入:使用 `@/` 作为绝对路径别名。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 关键文件(快速上手)
- `wolai-frontend/src/app/layout.tsx`:根布局与运行期配置注入(Convex provider 挂载)。
- `wolai-frontend/src/components/providers/convex-provider.tsx`Convex React Client 初始化与 Provider。
- `wolai-frontend/src/lib/convex/`Convex client/server/route 封装。
- `wolai-frontend/convex/`Convex functions(数据模型与后端逻辑)。
- `wolai-frontend/src/lib/ai-agent/runtime/runAgent.ts`AI agent 引擎。
- `wolai-frontend/src/lib/ai-agent/tools/builtins/registryBuiltins.ts`:内置工具注册表。
- `scripts/desktop-hot.js`:开发编排脚本。
- `AGENTS.md`:仓库协作指南(中文)。
- `CODE_INDEX.md`:代码索引(中文)。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## 其他注意事项
2026-02-01 08:47:40 +08:00
- 不要提交密钥/Token/账号;本地/生产配置统一放在仓库根目录的 `.env.all`(UTF-8,且要求 key 唯一)。
2026-01-21 18:21:10 +08:00
- 路由目录含 `()``[]`(如 `(app)``[id]`),PowerShell 中操作建议用 `-LiteralPath` 避免通配符误匹配。
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
## AI Agent 工具开发
新增 AI 能力时,在 `wolai-frontend/src/lib/ai-agent/tools/builtins/` 注册工具,按 scope 组织:
- Globalsearch_web、docs_search/read
- Mindmapmindmap_get、mindmap_apply_ops
- Documentdoc_get、doc_insert_blocks
- OnlyOfficeoo_get_selection、oo_replace_selection
2026-01-17 12:38:04 +08:00
2026-01-21 18:21:10 +08:00
权限模型:`{ read: "allow" | "confirm", write: "allow" | "confirm" }`