“根据预设规则,开始任务。”
在用户指导和“🤖 AI 建议优化”的迭代下,共同探索出如下的规则。
预设规则
本文档是 {root}/src/doc/ 下所有 issue 文档的唯一规则入口。
路径约定:下文中
{root}表示工作区根目录。每次对话的工作区可能不同(如project),AI 在实际操作时自动替换为当前工作区路径。
人类入口指令
AI 先评估(满足任一即触发):
同一段落/代码块被逐行修改 ≥3 次
连续 ≥2 轮仍在澄清意图,无实际产出
关键背景信息(日志、现象、上下文)持续缺失
触发后,在回答末尾提示人查阅 _ref/高效协作指南 对应章节
AI 入口指令
查看
YYYYMMDD_*/子目录,打开匹配主题的index.md通过导航表定位具体文件
子规则在
_ref/,按操作类型取用阅读 2. 临时前提,声明的约定直接复用
1. 通用前提
所有文档均基于以下符号和状态规则,无需在各子文件中重复声明。
1.1 图例标记
| 标记 | 含义 | 标记 | 含义 |
|---|---|---|---|
| 🔴 | 当前排查焦点(进行中) | 🔧 | 已实施修复,尚未验证 |
| 🎯 | 根因命中(已确认) | ✅ | 验证通过 |
| 🚫 | 已排除,非根因 | ❌ | 修复无效,需回退 |
| 🔄 | 已推翻,原结论失效 | ⬜ | 待验证 |
1.2 状态生命周期
⬜ 待验证└──→ 🔴 排查中 ├──→ 🎯 命中 │ └──→ 🔧 已修复 │ ├──→ ✅ 验证正确 │ └──→ ❌ 修复无效 → 回退至 🔴 └──→ 🚫 已排除🔄 任意状态 → 新证据推翻原结论,保留原文不删
2. 临时前提
用途:用户在进入新 issue 时,可以将当前项目已知的环境/工具/接口约定提前声明。AI 在排查分析时直接使用这些前提,无需重新探索验证。换项目时用户自行更新本节内容。
项目关键目录
| 目录 | 用途 | 关注重点 |
|---|---|---|
{root}/src/doc/ | 诊断文档与规则 | issue 排查、预设规则、uartlog |
{root}/src/ | 用户源码 | 板级代码、诊断模块 |
{root}/board/ | 板级配置 | 引脚、时钟、外设初始化 |
{root}/generate/ | 自动生成代码 | 只读,RTD 外设配置头文件 |
{root}/RTD/ | RTD 驱动库 | 只读,MCAL 层驱动 |
{root}/FreeRTOS/ | RTOS 内核 | 只读,调度与任务管理 |
{root}/stacks/ | lwIP 协议栈 | 只读,TCP/IP 栈源码 |
项目前提
| 前提 | 说明 |
|---|---|
工作区源码目录:{root}/src/ | |
串口诊断输出:{root}/src/Lib/fifo.c / fifo.h,全局 FIFO 实例 g_gmac_diag_fifo 定义在 fifo.c,声明在 fifo.h,通过 fifo_put_bytes() 写入,mytask_udp.c 中轮询 fifo_lock_rbuf() 发送 | 调试日志统一走此通道,AI 添加诊断代码时直接复用 |
串口输出日志文件:{root}/src/doc/uartlog.txt | 运行后收集的串口输出存放路径,AI 分析日志时先读取此文件 |
阅读对话 {root}/src/doc/_ref/重点回顾.md | |
[临时] 每次操作后反思 — 每次完成 issue 文档的更新操作后,简要反思本次协作流程:规则链路是否顺畅、文件定位是否准确、是否有歧义或低效环节。若发现可改进点,主动提出并追加 🤖 AI 建议优化 | 待规则迭代成熟后可移除 |
3. 文件规范
一个主题一个文件夹:
src/doc/├── YYYYMMDD_主题/ ← 文件夹名含日期│ ├── index.md ← 主索引│ ├── tree.md ← 排查树│ ├── log.md ← 变更记录│ └── secX.Y_xxx.md ← 诊断章节└── YYYYMMDD_新主题/ ← 可延续自上游 issue └── ...
3.1 排查树编号约定
tree.md 中 [状态 编号] 方向 的首字母表示排查域,仅在当前 issue 内有效:
| 首字母 | 域 | 首字母 | 域 |
|---|---|---|---|
| D | DCM / 时钟树 | P | 引脚复用 |
| H | PHY / 硬件 | U | 用户/板级代码 |
| S | 软件诊断工具 | A/B/C | issue 自定义域 |
每个 issue 的
tree.md待验证项表格上方加一行首字母映射说明(一行即可,不重复上表)。若出现新首字母,就地追加。
3.2 issue 间延续链
上游闭环时在 index.md 加 > 🔒 已闭环,残留问题转入 [新issue](../新文件夹/index.md);下游 index.md 开头写 > 延续自 [YYYYMMDD_主题](../YYYYMMDD_主题/index.md)。AI 据此自行判断是否展开读取上游文档。
跨 issue 引用上游编号项:所有引用只指向上游 index.md,不链接具体文件。引用格式 [上游](../上游文件夹/index.md) → 章节标题,用上游 index.md 导航表中出现的章节名称,不使用 §X.Y 数字索引:
编号项:
[D5] → [上游](../20250710_gmac_rx_issue/index.md) → DC_0 分频器诊断纯章节:
[上游](../20250710_gmac_rx_issue/index.md) → CRC 配置分析
设计意图:章节标题比数字编号直观明确;上游文件改名时只需更新
index.md导航表,下游引用不受影响。AI 看到引用后先读上游index.md,通过导航表匹配章节标题定位实际文件,不猜测。
4. 通用规则
以下规则适用于所有操作:
讨论与实施分离 — 用户讨论方案时只分析,不说"修复"/"实施"不改代码
输出粒度按场景:
| 场景 | 输出方式 |
|---|---|
| 分析讨论 | 口头总结,必要时贴关键代码片段 |
| 日志分析 | 口头总结规律,引用关键行号 |
| 用户说"写入文档" | 正式写入对应章节 |
| 用户说"新建文档" | 按 _ref/新建issue.md 模板创建 |
| 代码修改完成 | 自动更新排查树 + 待验证项 + 变更记录(不写入新日志/dump) |
issue 间延续 — 当一个 issue 的主要根因已确认闭环、但残留了不同域的新问题时,应新开文件夹,而非在原文件夹继续追加。上游
index.md写入闭环声明 + 转入链接,下游index.md写入延续声明 + 关键经验复用链接。AI 看到延续声明后自行判断是否展开读取上游文档。规则面向未来 — 本文件中的规则变更仅对新创建的文档生效。AI 修改规则时,不需要同步追溯修正历史文档。历史文档中的旧格式/旧标记保留原样,除非用户明确要求统一。这样避免大工程中"改一行规则、修百处文档"的低效。
5. 优化历史
存放于 _ref/优化历史.md。AI 仅在遇到历史文档中不认识的旧标记/旧格式时读取,无需每次加载。
6. 按操作导航
| AI 当前要做的事 | 应读取的文件 |
|---|---|
| 🆕 新建一个 issue 文档 | _ref/新建issue.md |
| 🔍 分析日志、排查诊断 | _ref/分析诊断.md |
| 🔧 实施代码修复 | _ref/实施修复.md |
| 📝 更新文档状态/变更记录 | _ref/维护更新.md |
| ❓ 缺少信息,需向用户收集 | _ref/信息收集.md |
| 💬 回顾/总结本次对话重点 | _ref/重点回顾.md |
夜雨聆风