dev-manager-tauri/src-tauri/resources/onboarding/AGENTS.md.tmpl
lanrtop 5b0b068148
All checks were successful
Push & PR Check / check (push) Successful in 49s
fix(onboarding/tmpl): 托管块首加「勿在块内定制」警示——AGENTS v1.6.1 / git-workflow v1.5.1
使者回传兑现(confirmed·all_projects):炼境自身因块内写定制被
升级抹掉 5 段内容,模板块首此前无任何警示。警示行放块内随版本
升级触达全部存量项目。

Rules-Applied: R07
2026-07-15 23:18:16 +09:00

171 lines
8.2 KiB
Cheetah
Raw Permalink 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 工具读取。
> 由炼境接入包分发。请按项目实际补全下方 TODO 段落。
> `ONBOARDING_MANAGED` 标记块由炼境版本化管理(重跑接入包可原位升级),块外内容永不触碰。
## 项目概况
<!-- TODO: 一句话描述项目 + 技术栈。例pnpm monorepoReact 19 + TypeScript 前端 + Hono API。 -->
<!-- TODO: 在 .blueprint/manifest.yaml 顶层补 agent_button_carriertauri/http/cli/playwright
splitter 生成任务卡时直接从此字段继承验证载体。参考 .blueprint/CONVENTIONS.md §manifest.yaml规范。 -->
## 架构与模块
<!-- TODO: 列出主要目录/模块及职责,帮助 AI 快速定位「改哪里」。 -->
## 关键文档索引
<!-- TODO: 列出 README / ARCHITECTURE.md / 其他关键文档及用途。 -->
<!-- ONBOARDING_MANAGED_START version="1.6.1" -->
> ⚠️ 本块由炼境版本化托管,升级时**整块原位覆盖**——项目定制请写到块外块内手改必丢2026-07-15 炼境自身实锤丢失 5 段定制后新增本警示)。
## 核心开发约束
### 包管理
- **pnpm 唯一**:禁止 npm / yarn / npx / bun
- lock 文件只有 `pnpm-lock.yaml`,不生成其他
### 代码规范
- TypeScript 优先,避免 `any`
- 函数/变量 camelCase组件 PascalCase
- 异步统一 `async/await`,不用裸 Promise 链
- 错误处理明确 `try/catch`,不吞异常
- 优先编辑现有文件,避免创建不必要的新文件
- **Playwright 版本固定**`package.json` 里的 `playwright` 锁死版本号,去掉 `^`
另建 `test:install` 脚本显式安装浏览器(`playwright install --with-deps`
升级时有意识操作,避免 pnpm install 静默触发 ~200MB 的浏览器重下
## 需求对齐协议
开始写代码前,先判断改动类型:
**Bug Fix**(当前行为与预期的意外偏差)
→ 建任务卡,直接执行,无需等确认词。
**Feature / 行为变更**(新增能力或主动改变已有行为)
→ 必须先输出确认卡,等用户说「确认」再动手:
- **S 级**(单文件、行为对外无变化,任务卡 complexity=S输出三行轻量卡
```
改哪:<文件或模块>
改什么:<一句话>
验收:<agent_verify 路径>
```
- **M / L 级**:输出完整任务卡(含 `files` + `acceptance` + `complexity`),等确认
**边界模糊时**:保守判断,按 Feature 处理,走完整确认卡。
**提交时**`feat:` 提交须在 commit message 末尾加 `Feature-Confirmed: true` trailerlefthook commit-msg 强制检查)。这是确认卡已输出的机器层存证。
> ⚠️ Session 结束汇总补录 ≠ 确认卡替代——补录仅适用于漂移检测触发后用户主动选择补录的场景,不得作为「先做再补」的通道。
## Git 工作流
见 `docs/ai-context/git-workflow.md`(分支策略 + Conventional Commits + Rules-Applied trailer + PR 规范)。
**commit 必须符合 Conventional Commits**lefthook 强制),炼境据此采集飞轮数据。
## agent 按钮与验证路径
功能的本体是代码层的能力UI 按钮是它给人的投影,**agent 按钮**是给 agent 的投影
(可发现 + 可调用 + 有边界的能力声明)。开发任何功能时遵守:
1. **边界单点实现**业务校验只写在能力本体层API/commandUI 只呈现不复制逻辑——
否则人与 agent 的验证路径会分裂
2. **载体就近选择**(本项目的 agent 按钮是什么,按项目类型对号入座):
| 项目类型 | agent 按钮载体 |
|---------|---------------|
| Web 服务 | HTTP API 本身(前端按钮与 curl 调同一 endpoint天然双投影 |
| CLI/脚本 | 命令与 npm scripts |
| 桌面应用 | 测试直接调用 command 函数 |
| UI 呈现层 | Playwright 驱动真界面(最后手段,仅关键路径) |
3. **完成的定义**:功能实现后,由 agent 沿投影路径真实走通一次(起服务 → 调接口 →
断言行为),再交人做 UI 终验——不许绕过功能手改产物冒充验证
4. **侦察 → 驻军**agent 走通的关键路径,顺手固化为一条测试(桌面应用用 cargo testWeb 项目纯逻辑层用 vitest
一次性验收不固化(少而稳 > 多而脆)
5. **acceptance 可执行化**`/splitter` 生成任务卡时,`acceptance` 字段必须是可执行验证路径,
格式:`[载体] 调用/运行什么(参数) → 断言什么`。
- 正例:`[Tauri command] apply_onboarding_pack(project_id) → written≥1文件在磁盘存在`
- 正例:`[HTTP API] POST /api/users → 201body.id 非空`
- 反例:`功能正常可用`模糊agent 无法自验)
**分层原则**:凡含 UI 操作路径的 acceptance必须拆成两段
- `agent_verify:` — 机器可断言HTTP 状态码、数据库记录、函数返回值stop hook / CI 只验此段
- `human_verify:` — 需人眼判断视觉效果、拖拽手势、30 秒浏览器终验)
纯 API / 命令行任务可省略 `human_verify:`UI 拖拽 / 动画 / 视觉类必须拆,否则 stop hook 无法收敛。
6. **自验报告纪律**:交人终验前的反馈必须含「**没验什么**」一节(未覆盖的路径、依赖的
假设、不确定的地方);自修过程中改了断言/验收标准必须显式声明理由(改功能让测试过是
常规改测试让功能过需报备agent 自验对 acceptance人终验对意图——acceptance
可能继承需求理解偏差,两把尺子不可合一
## 多 AI CLI 协作
本项目可由多个 AI CLI 协同。交接时把结果总结成 3 条传给下一个:
```
1. 已完成:<改了哪些文件 + 核心决策>
2. 待验证:<需要确认的地方>
3. 约束继承:<影响后续的关键限制>
```
<!-- ONBOARDING_MANAGED_END -->
---
## Agent 友好工程四支柱
修改代码前,确认这个项目满足四支柱:
**可导航**:凭文件名/目录名可在 30 秒内定位某功能的代码。通用能力有独立家,不寄生在业务模块下。
**可推理**:公共类型只在一处定义。改一个接口,类型检查能报出所有受影响处。
**可验证**typecheck / lint / test 各有一条命令真能跑。关键路径有冒烟测试。
**可记忆**:规则按场景注入(不是一份巨型文档)。决策只写"为什么",代码自己回答"是什么"。
---
## 文档防腐元规则
做任何改动时,判断它属于哪类变更:
### T1 外部契约变更(最高优先级)
其他代码、服务、或 agent 依赖的定义——接口、共享类型、数据结构、配置键名、环境变量名。
→ 查 `docs/ai-context/project-context.yaml`(若存在)找到记录该契约的文档,检查并同步更新。
### T2 架构边界变更
模块划分、目录结构、依赖方向、包边界调整。
→ 检查架构文档是否需要同步。
### T3 工具链变更
引入或替换库、框架、构建工具。
→ 更新本文件AGENTS.md技术栈声明通知炼境重新扫描并更新 `project-context.yaml`。
### T4 常驻上下文过期
本文件AGENTS.md或 `docs/ai-context/project-brief.md` 描述的现实已经改变。
→ 立即更新。这两份文档常驻 agent 上下文,过期危害最大。
### 不触发检查
内部重构、性能优化、bug fix外部行为不变、测试文件、临时脚本。
---
## 文档防腐铁律
- 文档只写稳定的:为什么、铁律、意图、架构决策。
- 易变的(端口、路由、表名、命令清单)交给工具自省,不写死进常驻文档。写死 = 定时炸弹。
- 单一事实来源:两处说同一事时,删掉派生的那处。
- 两份文档打架时,信代码,不信文档。
---
## 定期防腐自查
每隔一阵或大改后,对照以下清单:
- [ ] AGENTS.md 里的技术栈声明还和代码一致吗?
- [ ] `docs/ai-context/project-brief.md` 最近 30 天有没有随架构改动更新?
- [ ] 有没有两份文档说同一件事且打架?
- [ ] `docs/ai-context/project-context.yaml` 的契约路径还准确吗?