dev-manager-tauri/docs/templates/agents-meta-rules.md
lanrtop 86995f7472
All checks were successful
Push & PR Check / check (push) Successful in 51s
docs(conventions): 自验报告纪律三条——负面披露/改断言报备/两把尺子
用户确立 agent 协作协议执行版(多角度辩证后选最小成本版落地):
1. 交人终验前反馈必含「没验什么」一节(负面披露收窄已知盲区)
2. 自修中改断言/验收标准需显式声明(封 Goodhart 最短路径,diff 可审计)
3. agent 自验对 acceptance、人终验对意图(acceptance 可能继承需求
   理解偏差,两把尺子不可合一)

三处同步:AGENTS.md(单一来源)+ 接入包模板(分发子项目)+
agents-meta-rules(设计草案)。完整辩证(五张力/四调节器/三缝隙)
存档于 governance-feedback-loop 模块设计档案节。
实证案例:mcp-single-server 自验全绿但 git-bash 层全挂,端到端终验抓住。
2026-07-06 22:46:04 +09:00

145 lines
5.4 KiB
Markdown
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.

---
version: 1.1.0
updated: 2026-07-03
usage: 炼境接入包分发时写入被管理项目 AGENTS.md 的元规则标准内容
---
# Agent 友好工程元规则
> 本节由炼境接入包分发,规则技术栈无关,适用于所有项目和所有 AI 工具。
> 项目特定的路径映射见 `docs/ai-context/project-context.yaml`。
---
## 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外部行为不变、测试文件、临时脚本。
---
## 文档防腐铁律
- 文档只写稳定的:为什么、铁律、意图、架构决策。
- 易变的(端口、路由、表名、命令清单)交给工具自省,不写死进常驻文档。写死 = 定时炸弹。
- 单一事实来源:两处说同一事时,删掉派生的那处。
- 两份文档打架时,信代码,不信文档。
---
## 跨 AI 工具交接模板
完成一段工作并交接给下一个 agent 时,附上:
```
已完成:<修改了哪些文件 + 核心决策>
待验证:<需要对方确认的地方>
约束继承:<影响对方工作的关键限制>
```
---
## 定期防腐自查
每隔一阵或大改后,对照以下清单:
- [ ] AGENTS.md 里的技术栈声明还和代码一致吗?
- [ ] `project-brief.md` 最近 30 天有没有随架构改动更新?
- [ ] 有没有两份文档说同一件事且打架?
- [ ] `project-context.yaml` 的契约路径还准确吗?
---
## Agent 按钮体系
> 让 AI agent 具备无人值守执行能力的工程方针。随炼境接入包分发,适用于所有项目和所有 AI 工具。
### 分工原则
```
人定目标 → agent执行 → agent自验走agent按钮 → 人终验
```
人只保留两件事:**需求澄清(目标定义权)** 和 **目标验收(终验权)**。中间的执行与验证环路在 agent 内部闭合。
### Agent 按钮清单(接入时必填)
在项目 AGENTS.md 中声明本项目的 agent 按钮,让 agent 知道有哪些能力可调用:
```markdown
## Agent 按钮(可调用能力)
| 能力 | 调用方式 | 通过标准 |
|------|---------|---------|
| 类型检查 | `<填入命令>` | `<填入通过标准>` |
| 测试运行 | `<填入命令>` | `<填入通过标准>` |
| 核心功能验证 | `<填入命令>` | `<填入通过标准>` |
```
三要素缺一不可:**可发现**(清单里有)、**可调用**(结构化命令)、**边界清晰**(通过标准明确)。
### Acceptance 写法规范
acceptance 是 agent 自验的唯一判断依据,必须是**可执行断言**,不能是描述性语句:
```
❌ "功能正常运行"描述性agent 无法判断完成)
❌ "代码正确"(主观,无可执行路径)
✅ "pnpm test 通过"
✅ "curl /api/xxx 返回 200body.id 非空"
✅ "pnpm typecheck 无报错"
✅ "[命令] 运行什么 → 断言什么"
```
含 acceptance 的任务卡才可派发acceptance 可执行,自验才是真自验——这是整个体系的核心关节。
### 自验报告纪律
- 交人终验前的反馈必须含「**没验什么**」一节:未覆盖的路径、依赖的假设、不确定的地方
- 自修过程中改了断言/验收标准必须显式声明理由(改功能让测试过是常规,改测试让功能过需报备)
- agent 自验对 acceptance人终验对**意图**——acceptance 可能继承需求理解偏差,两把尺子不可合一
> 为什么:自验的结构性盲区是"验证代码与功能代码共享同一份理解偏差",负面披露收窄已知盲区,
> 人终验(对意图、带意外感触发的深查)兜底未知盲区。两者互补,缺一另一超载。
### 自验失败降级约定
- **失败 2 次内**:自行修正,继续自验
- **失败 3 次**:停止执行,输出以下内容后等待人工介入:
1. 失败原因(具体报错或不通过的断言)
2. 已尝试的修正路径
3. 需要人决策的具体问题
> 无人值守不是消灭人工介入,而是把人从"执行路径"移到"降级路径"。降级时主动升级,比静默卡死更重要。