乐于分享
好东西不私藏

以编程思维面向AI编程 --AI辅助编程经验

以编程思维面向AI编程 --AI辅助编程经验

“根据预设规则,开始任务。”

在用户指导和“🤖 AI 建议优化”的迭代下,共同探索出如下的规则。

预设规则

本文档是 {root}/src/doc/ 下所有 issue 文档的唯一规则入口

路径约定:下文中 {root} 表示工作区根目录。每次对话的工作区可能不同(如 project),AI 在实际操作时自动替换为当前工作区路径。

人类入口指令

AI 先评估(满足任一即触发):

  1. 同一段落/代码块被逐行修改 ≥3 次

  2. 连续 ≥2 轮仍在澄清意图,无实际产出

  3. 关键背景信息(日志、现象、上下文)持续缺失

触发后,在回答末尾提示人查阅 _ref/高效协作指南 对应章节

AI 入口指令

  1. 查看 YYYYMMDD_*/ 子目录,打开匹配主题的 index.md

  2. 通过导航表定位具体文件

  3. 子规则在 _ref/,按操作类型取用

  4. 阅读 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 内有效:

首字母首字母
DDCM / 时钟树P引脚复用
HPHY / 硬件U用户/板级代码
S软件诊断工具A/B/Cissue 自定义域

每个 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. 通用规则

以下规则适用于所有操作:

  1. 讨论与实施分离 — 用户讨论方案时只分析,不说"修复"/"实施"不改代码

  2. 输出粒度按场景

场景输出方式
分析讨论口头总结,必要时贴关键代码片段
日志分析口头总结规律,引用关键行号
用户说"写入文档"正式写入对应章节
用户说"新建文档"按 _ref/新建issue.md 模板创建
代码修改完成自动更新排查树 + 待验证项 + 变更记录(不写入新日志/dump)
  1. issue 间延续 — 当一个 issue 的主要根因已确认闭环、但残留了不同域的新问题时,应新开文件夹,而非在原文件夹继续追加。上游 index.md 写入闭环声明 + 转入链接,下游 index.md 写入延续声明 + 关键经验复用链接。AI 看到延续声明后自行判断是否展开读取上游文档。

  2. 规则面向未来 — 本文件中的规则变更仅对新创建的文档生效。AI 修改规则时,不需要同步追溯修正历史文档。历史文档中的旧格式/旧标记保留原样,除非用户明确要求统一。这样避免大工程中"改一行规则、修百处文档"的低效。


5. 优化历史

存放于 _ref/优化历史.md。AI 仅在遇到历史文档中不认识的旧标记/旧格式时读取,无需每次加载。


6. 按操作导航

AI 当前要做的事应读取的文件
🆕 新建一个 issue 文档_ref/新建issue.md
🔍 分析日志、排查诊断_ref/分析诊断.md
🔧 实施代码修复_ref/实施修复.md
📝 更新文档状态/变更记录_ref/维护更新.md
❓ 缺少信息,需向用户收集_ref/信息收集.md
💬 回顾/总结本次对话重点_ref/重点回顾.md