meta: 重写 CLAUDE.md——精简为常驻规则与效率准则

去掉重构任务相关段落("当前进行中的重构"以及对
agent_instruction.md 的索引),保留并细化常驻规则。

主要调整:
- 拆出"写作风格"与"LaTeX 操作约束"两块,原"通用规则"过散
- LaTeX 编译措辞从"绝对禁令"改为"默认不编译,阶段性收尾
  时用 xelatex 验证",避免修改后才发现 undefined ref
- preamble 边界澄清:补 \newacronym 词条不算改 preamble
- archive/ 措辞改为"历史草稿仅供查阅",与保留追踪状态一致
- 新增"效率与 token 准则"一节,沉淀 Grep 优先、不重读、
  不创建中间元文档、响应不写 trailing summary 等做法
This commit is contained in:
2026-06-15 10:20:49 +08:00
parent ef923247be
commit 6dd28e744e
+39 -49
View File
@@ -8,26 +8,34 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
- 章节源:`parts/*.tex`
- 文献:`ref.bib`
- 图片:`fig/`
- 重构指导:`agent_instruction.md`(一次性方案,**非常驻规则**)
## 当前进行中的重构
完整方案在 `agent_instruction.md`,分 6 个阶段。开始任一阶段前必须 `@agent_instruction.md` 读取该阶段细节,**不要凭记忆执行**。一次会话只做一个阶段,做完即停等用户编译验证。
## 通用规则
- **不要编译 LaTeX**:xelatex/pdflatex/latexmk 均不调用,用户在 TeXstudio 手动编译。agent 只改文件。
- **不要读编译产物**:`*.aux`、`*.log`、`*.bbl`、`*.bcf`、`*.synctex.gz`、`*.run.xml`、`*.toc`、`*.ist`、`*.glo`、`*.acn`、根目录历史 PDF(`doa_doppler_est_*.pdf`)、`*.zip`。这些都在 `.gitignore` 里。
- **不要重排 `ref.bib`**:除非明确要求,保持现有条目顺序与格式。
- **不要动 preamble 的宏包定义**:主文件 `doa_doppler_est.tex` 的 `\input` 列表可以按重构需要调整,宏包加载段不动。
- **删除/重命名文件用 `git mv`**:保留 history,diff 更小。彻底删除前先 `git mv` 到 `archive/` 子目录(已 gitignore)暂存。
- **推导卡壳留 `% TODO:` 注释**,不要编造 placeholder 文字。
- **语言**:中文为主;公式、符号、文件路径、命令用英文。
- **不要总结改动**:用户看 diff,不需要 trailing summary。
- `archive/`:主线之外的历史草稿,仅供查阅,不参与 `\input`。`/archive/` 在 .gitignore 里只是阻止新草稿意外被追踪,已追踪的旧稿继续保留版本史。
---
# Git commit 规范
# 写作风格
- **学习笔记优先**:正文按"由简到繁"递进,每节开头一段过渡,说明上一节限制如何被解除、本节引入什么结构。
- **一节一维度**:每节只沿一个维度推进,其他维度保持最简。
- **正文止于结论**:信号模型、负对数似然、集中似然准则、EFIM/CRB 表达式都给出,矩阵代入与逐步化简推到附录。
- **符号跟随问题引入**:每个符号在首次出现的那一节定义;完整索引在附录 A。
- **不创造元章节**:"放置规则"、"阅读路线图"等元信息不进正文,归入前言或本文件。
- **语言**:中文为主;公式、符号、文件路径、命令用英文。
- **推导卡壳留 `% TODO:` 注释**,不编造 placeholder 文字。具体推导待办放在 .tex 源文件里,不进 CLAUDE.md。
---
# LaTeX 操作约束
- **默认不编译**。阶段性收尾或涉及交叉引用/宏定义的改动后用 `xelatex` 验证:至少跑两次让 ref 稳定,有 bib 引用时夹一次 `biber`;检查 log 里的 `! `、`undefined references`、`label(s) may have changed`,全部消除后再 commit。
- **编译产物在 .gitignore,不主动 add,也不主动 rm**:用户在本地可能反复使用。
- **不读编译产物**:`*.aux`、`*.log`、`*.bbl`、`*.bcf`、`*.synctex.gz`、`*.run.xml`、`*.toc`、`*.ist`、`*.glo`、`*.acn`、根目录历史 PDF(`doa_doppler_est_*.pdf`)、`*.zip`。
- **preamble 指主文件 `\documentclass` 到 `\begin{document}` 之间的宏包/计数器/glossary 等设置**。新增或修复 `\newacronym` 词条不算改 preamble,按 `fix(preamble)` 处理。`\input` 列表可按重构需要调整。
- **不重排 `ref.bib`**:除非明确要求。
- **删除/重命名文件用 `git mv`**:保留 history,diff 更小。归档主线之外的旧稿先 `git mv` 到 `archive/`。
---
# Git 提交规范
## 格式
@@ -43,8 +51,8 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
|------|------|
| `struct` | 文件移动/合并/拆分、`\input` 顺序调整 |
| `content` | 实质性内容:新增/改写推导、过渡段、文献、图表 |
| `fix` | 修错:typo、公式错、断引用 |
| `meta` | 元文件:CLAUDE.md、agent_instruction.md、.gitignore、.gitattributes |
| `fix` | 修错:typo、公式错、断引用、缺词条 |
| `meta` | 元文件:CLAUDE.md、.gitignore、.gitattributes |
## scope(细分维度)
@@ -55,7 +63,7 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
- `type=struct` **必须**有 body,说明拆/合的依据
- `scope=symbol` **必须**有 body,说明符号冲突或废弃原因
- 其他情况自由,但建议解释"为什么"而非"什么"
- 其他自由,建议解释"为什么"而非"什么"
## subject 规则
@@ -66,36 +74,18 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
## 其他硬规则
- **每阶段至少一个 commit**,不跨阶段堆改动
- **结构改动与内容改动分开 commit**——"重命名 A6 → E" (`struct`) 和 "E.2 新增多用户推导" (`content`) 必须是两个 commit
- **结构改动与内容改动分开 commit**——"重命名 A6 → E" (`struct`) 与 "E.2 新增多用户推导" (`content`) 必须是两个 commit
- **不写 `Co-Authored-By` 尾注**——个人学习笔记
- **不加阶段标记**(如 `Stage: 1/6`)——subject 自带阶段语义即可
- subject 与 body 风格不一致时,参考既往 commit 历史定调
## 示例
---
```
struct(app): 合并 A3+A4+A5 为附录 D
# 效率与 token 准则
三者共享 FIM 推导框架(确定/随机信号 + DoA/DoA-Doppler),
分立反而割裂对比。合并后子节顺序 D.1 确定 DoA、D.2 确定
DoA-Doppler、D.3 随机 DoA(对照支线)。
```
```
struct(symbol): Q_ℓ 全局替换为 Ω_ℓ
Q 保留给波束成形人工噪声协方差矩阵(后续第 7 节)。
影响 parts/ 下全部 .tex 文件及附录 A 符号表。
```
```
content(sec5): 新增时间戳误差信号模型与 EFIM 框架
```
```
fix(sec3): 修正参考星 Doppler 偏差号
```
```
meta: 新增 agent_instruction.md 重构指导文档
```
- **优先 `Grep`/`Glob` 直接命中**:`parts/*.tex` 路径稳定、符号命名规律,三五次 Grep 即可定位绝大多数任务。仅当跨 10+ 文件做开放式分析时才用 Agent 子代理;子代理冷启动会重读上下文,单点查询用它得不偿失。
- **不为了"再确认"重读刚改过的文件**:Edit/Write 失败会立即报错,harness 自带状态追踪。
- **独立的工具调用一次并行发出**:多条 Grep/Glob/Read 没有依赖时合并到同一轮。
- **大文件局部读取**:`ref.bib` 几千条 entry 用 Grep 查找特定 key,不要 Read 全文;长 .tex 用 `offset`/`limit` 跳到目标区域。
- **不创建中间元文档**(`plan.md`、`todo.md`、`analysis.md`、`summary.md`):所有内容应进 `parts/` 或 commit message,不另起辅助文件。
- **响应不写 trailing summary,commit 后不复述改动清单**——用户看 diff 与 commit message 即可。
- **避免向用户罗列"我接下来会……"的长方案**:直接执行小步操作,停在用户需要决策的节点。