dev-manager-tauri/AGENTS.md

150 lines
6.6 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.

# 炼境 — AI Agent 上下文
> 本文件遵循 [AGENTS.md 开放规范](https://agents.md/),供 Claude Code、Qwen Code、Cursor、Copilot 等 AI 工具读取。
## 项目定位
Git 多空间开发管理器,同时也是**项目 Agent 化改造引擎**。
以蓝图为神经系统,以 Claude 为智能层,感知所管理项目的功能运转、质量状态与成长方向。
炼境本身亦被纳入其中,形成可自我进化的开发智能闭环。
## 技术栈
- 前端React 19 + TypeScript + TailwindCSS + React Query + Zustand + React Flow
- 后端Rust + Tauri v2 + SQLiterusqlite + r2d2
- MCP Server内嵌于 Tauri 进程HTTP供 Claude Code 调用炼境数据
- 包管理pnpm禁止 npm/yarn/npx/bun
## 核心开发约束
**包管理**pnpm 唯一,禁止 npm / yarn / npx / bun。
**TypeScript**:优先 TypeScript避免 `any`;函数/变量 camelCase组件 PascalCaseasync/await不用裸 Promise 链try/catch 不吞异常。
**Rust 业务函数**:禁止在函数内部调用 `pool().get()`,连接由调用方传入(依赖注入,便于 in-memory DB 测试。Tauri command 层负责获取连接并调用(薄包装,无需测试)。
## 架构速查
```
src/lib/commands.ts 所有 Tauri command 的前端封装(唯一调用入口)
src-tauri/src/commands/ Rust 后端实现(每功能一个 .rs 文件)
src-tauri/src/db.rs SQLite 建表 + migration 逻辑
src-tauri/src/mcp_server.rs 内嵌 MCP Serveragent 调用炼境的入口)
src-tauri/src/mcp_inject.rs MCP 配置注入(写入被管理项目的 .claude/settings.json
src-tauri/resources/onboarding/ 接入包分发模板AGENTS.md/lefthook/git-workflow
.blueprint/ 项目蓝图manifest + 模块详情 + 任务卡)
docs/ai-context/ AI 上下文文档(速查卡、契约映射)
docs/templates/ 炼境接入包模板草案(设计层)
```
## 关键约定
1. **新增 Tauri command → 必须同步更新 `src/lib/commands.ts`**,否则前端无法调用
2. **SQLite 新增表或字段 → 必须在 `db.rs` 的 `migrate()` 里补 migration 语句**,否则旧版本升级后启动报错
3. **修改接入包模板(`resources/onboarding/`)→ 检查 `docs/templates/agents-meta-rules.md` 是否需要同步**
## 多 AI CLI 协作
本项目可由多个 AI CLI 协同。交接时附上:
```
已完成:<修改了哪些文件 + 核心决策>
待验证:<需要对方确认的地方>
约束继承:<影响后续工作的关键限制>
```
---
## Agent 友好工程四支柱
修改代码前,确认这个项目满足四支柱:
**可导航**:凭文件名/目录名可在 30 秒内定位某功能的代码。通用能力有独立家,不寄生在业务模块下。
**可推理**:公共类型只在一处定义。改一个接口,类型检查能报出所有受影响处。
**可验证**typecheck / lint / test 各有一条命令真能跑。关键路径有冒烟测试。
**可记忆**:规则按场景注入(不是一份巨型文档)。决策只写"为什么",代码自己回答"是什么"。
---
## 文档防腐元规则
做任何改动时,判断它属于哪类变更:
### T1 外部契约变更(最高优先级)
其他代码、服务、或 agent 依赖的定义——Tauri command 接口、MCP 接口、数据库 schema、共享类型。
→ 查 `docs/ai-context/project-context.yaml` 找到对应文档,检查并同步更新。
### T2 架构边界变更
模块划分、目录结构、依赖方向、命令分组变化。
→ 检查本文件架构速查和 `docs/ai-context/project-brief.md` 是否需要同步。
### T3 工具链变更
引入或替换库、Tauri 版本升级、Rust 依赖变更。
→ 更新本文件技术栈声明;更新 `docs/ai-context/project-context.yaml`
### T4 常驻上下文过期
本文件AGENTS.md`docs/ai-context/project-brief.md` 描述的现实已经改变。
→ 立即更新。这两份文档常驻 agent 上下文,过期危害最大。
### 不触发检查
内部重构、性能优化、bug fix外部行为不变、测试文件、UI 样式调整。
---
## 文档防腐铁律
- 文档只写稳定的:为什么、铁律、意图、架构决策。
- 易变的(端口、表名、命令清单)交给工具自省,不写死进常驻文档。
- 单一事实来源:两处说同一事时,删掉派生的那处。
- 两份文档打架时,信代码,不信文档。
---
## 定期防腐自查
- [ ] 技术栈声明还和 `package.json` / `Cargo.toml` 一致吗?
- [ ] `project-brief.md` 最近 30 天有没有随架构改动更新?
- [ ] `src/lib/commands.ts` 的封装覆盖了所有 `src-tauri/src/commands/` 下的 command 吗?
- [ ] 接入包模板(`resources/onboarding/`)和 `docs/templates/` 内容一致吗?
<!-- BLUEPRINT_MANAGED_START version="1.9.0" -->
## 项目蓝图
本项目使用 `.blueprint/` 目录维护项目全景架构图,驱动需求讨论和任务管理。
本节适用于任何 AI 编程工具Claude / Qwen / Cursor / Copilot 等)。
### 对话开始时必须执行
1. 读取 `.blueprint/manifest.yaml` 了解项目全景和当前状态
2. 读取 `.blueprint/CONVENTIONS.md` 了解完整工作流规则
### 需求讨论 → 蓝图同步规则
| 用户说的 | AI 应做的 |
|----------|--------------|
| "我想加个 XX 功能" | 确认需求后manifest 新增模块status: concept创建 `.blueprint/modules/<id>.md` |
| "XX 功能需要 A、B、C" | 在模块文件中拆分为任务卡 |
| "这个方案确定了" | 模块 status → planned补充任务卡 files/acceptance |
| "开始做 XX" | 模块 status → in_progress |
| 没提蓝图但在讨论功能 | 主动提议更新蓝图 |
### 复杂度决策(讨论新功能 / 拆解需求时)
| complexity | 执行流程 |
|-----------|---------|
| S / M | 直接拆任务卡,确保每张卡有 `files` + `acceptance` + `complexity` → 标记 📋 |
| L复杂系统设计 | 先做架构设计Claude 用 `/architect` 技能,其他工具按 CONVENTIONS「复杂功能分析流程」章节执行输出设计文档用户确认后拆成 S/M 任务卡 |
> L 级任务禁止直接写代码,必须先经过 架构设计 → 任务拆解 流程。
### 任务执行两阶段提交
- **开始写代码前**:任务卡前缀改为 🔵status → in_progress
- **完成验收后**:任务卡前缀改为 ✅status → done更新 manifest `updated` 日期
完整规则(迭代管理、阻塞处理、复盘笔记等)详见 `.blueprint/CONVENTIONS.md`
<!-- BLUEPRINT_MANAGED_END -->