Files
agent/AGENTS.md

72 lines
3.7 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
## 项目
本仓库包含 SenlinAI 项目工作台 MVP。
该产品是一个以项目为中心、面向私有化部署的工作台服务于个人知识工作者、团队负责人和可信的内部用户。它用于组织项目任务、inbox 条目、Markdown 笔记、文件、AI 会话、项目内标签,以及轻量级任务分发。
## 仓库结构
- `backend`: Go Gin + Gorm + PostgreSQL API。
- `apps/web_v1`: 当前主 Web 客户端,使用 React + TypeScript + Arco Design。
- `apps/desktop`: Web 客户端的 Tauri 桌面壳。
- `infra`: 本地开发基础设施,例如 Docker Compose。
- `docs/superpowers/specs`: 产品和技术规格文档。
- `docs/superpowers/plans`: 实施计划。
## 后端规则
- 使用 Go、Gin、Gorm 和 PostgreSQL。
- 后端模块集中放在 `backend/internal` 下,并保持职责聚焦。
- 使用模块路径 `senlinai-agent/backend`
- 业务逻辑包统一放在 `backend/internal/logic` 下,例如 `ai``auth``files``inbox``notes``projects``search``tasks`
- Gorm 模型和数据库连接入口统一放在 `backend/internal/models`,不要恢复独立的 `domain``db` 包。
- 模型结构体使用 `SenlinAgent` 前缀,数据库表名使用 `senlin_agent_` 前缀。
- 所有服务端本地文件路径构造必须集中在文件服务中。
- 不允许 HTTP handler 直接构造存储路径。
- 项目标签必须限定在项目内MVP 阶段不要引入全局标签体系。
- 任务分享保持保守:被指派人只能看到任务,以及被显式分享的关联对象。
- AI 未经用户确认,不得创建正式对象。
- AI 调用必须记录 provider、key 类型、action、status 和 error。
- 认证 session token 必须是已签名、会过期的 bearer token不要接受可伪造的 `user:<id>` 字符串。
- HTTP handler 必须从认证 middleware 读取当前用户,不得硬编码用户 ID。
- 从 inbox 确认生成的任务、笔记和资料,应保留来源 inbox item ID。
- 任务分享必须校验被分享的 note/source 与任务属于同一个项目。
- 用户 AI key 必须加密存储AI 调用在执行 provider 请求前应经过限流检查。
## 前端规则
- 当前主前端使用 React、TypeScript、Vite 和 Arco Design位于 `apps/web_v1`
- Web 应用优先面向桌面端构建,同时保持移动浏览器可用。
- 登录界面必须允许用户输入服务器 IP 地址或域名。
- 页面级工作台状态使用浏览器式标签页。
- 编辑器草稿和 AI 输入草稿要与标签页状态分开保存。
- MVP 阶段使用 Markdown 进行笔记编辑。
## Tauri 规则
- Tauri 用于包装当前主 Web 客户端。
- MVP 桌面端功能包括登录持久化、文件拖拽上传、通知,以及全局快捷键快速收集。
- MVP 阶段不要添加离线编辑、本地优先同步、后台剪贴板监控或文件系统索引。
## MVP 范围边界
除非后续批准的规格文档明确要求,否则不要添加以下功能:
- 真正的实时即时通讯。
- 项目级成员角色体系。
- 匿名公开任务分享。
- 自主 Agent 执行。
- 语义搜索或向量搜索。
- 原生移动 App。
- 浏览器扩展、邮件、IM 或第三方收集集成。
## 验证
- 后端变更应在 `backend` 目录运行 `go test ./...`
- PostgreSQL 集成检查应从 `DATABASE_URL` 读取实时测试数据库 URL不要提交真实凭据。
- Web 变更应在 `apps/web_v1` 目录运行 `node scripts/visual-check.mjs``npm run build``npm run lint`
- Tauri 变更应先构建 Web 应用,然后在 `apps/desktop` 目录运行 Tauri 验证命令。
- 每个实施任务结束时都应创建一个聚焦的提交。