docs: 注释规范要求精简可读,并清理生产代码中的历史叙事

AGENTS.md 的注释规范新增三节可执行约束:

- 只写代码真实逻辑:注释只回答"做什么"与"为什么必须这么做",禁止写决策/
  修改时间、历史版本对比、实测数据与实验结论、事故与缺陷编号(run_xxxx /
  batch_xxxx / R01 等)——这些属 docs/decisions.md 与审查跟踪文件;当前生效
  的约束可以写,但不附带它何时因何变成这样。
- 精简可读:单段连续注释不超过 3 行;docstring 一句话概括职责,不重复函数名
  已表达的信息;不写逐行翻译代码的废话注释,只在非显然处(业务规则、边界、
  易错点、外部约束)加注。
- 覆盖范围:测试注释只说明验证什么行为,回归用例可保留一句溯源;并明确
  参数说明应写在**参数读取处**附近,而不是把多个参数的解释堆在离使用位置
  很远的注释块里。

按此清理生产代码(注释净减 70 行,18 个文件),典型处理:

- nodes/whisper.py:删掉堆在一起、含"用户 2026-08 决定 / 实测 savr-1054"
  等叙事的参数块,把各参数说明移到各自的读取处与 model.transcribe 调用处;
- nodes/llm_filter.py、nodes/subtitle_cleanup.py:模块 docstring 去掉英文
  背景叙事与条数统计,保留"默认只跑规则层""整条删除而非 '-' 占位"等当前
  行为;
- src/wov_app/{batch,db,scheduler}.py 与 routers:去掉 batch_xxx/run_xxx 事故
  编号与"修复前……"对比,改为一句"否则会出现什么问题";
- nodes/ass.py、frame_extract.py:去掉废弃值对比与日期,保留判据本身。

安全验证:用 AST 对比(剥离 docstring 后比较语法树)确认 18 个文件**零逻辑
变更**;`nodes/proper_nouns.py` 的规则表 reason 字段会注入 LLM 提示词,属于
数据而非注释,已恢复原值。全量测试 476 passed。
This commit is contained in:
2026-09-13 16:37:49 +08:00
parent 8f6083f8cf
commit 7a7212f70c
18 changed files with 192 additions and 262 deletions
+34 -5
View File
@@ -124,11 +124,40 @@
## 代码注释规范
- 本仓库所有源码(Python、JavaScript、HTML、CSS、TOML 等支持注释的文件)
必须配有详细中文注释,说明模块/文件职责、核心类与函数的作用以及关键逻辑,
确保后续维护人员无需通读全部实现即可快速理解工作原理。
- 新增或修改代码时,必须同步补充或更新对应注释;不得删除已有注释
- 测试代码同样必须配有中文注释,说明每条测试验证的行为与覆盖的路径。
### 只写代码真实逻辑
- 注释只回答两个问题:**这段代码做什么**、**为什么必须这么做**(不这样写会出
什么错)。读代码的人需要的是当前逻辑,不是它的来历
- **禁止写进代码注释**(这些属于 [docs/decisions.md](./docs/decisions.md) 与
[docs/代码审查问题跟踪.md](./docs/代码审查问题跟踪.md)):
- 修改/决策时间(“用户 2026-08 决定”、“2026-09 起”);
- 历史版本对比(“旧版是 X,现在改为 Y”、“修复前……”);
- 实测数据与实验结论(具体条数、耗时、模型名、实验目录);
- 事故与缺陷编号(`run_xxxx``batch_xxxx`、R01/R02 等):改用一句
“否则会出现什么问题” 描述后果即可;
- 变更原因的长篇叙述、将来计划、TODO 式背景;需要时在 docs 记录并链接。
- 例外:**当前生效的约束**可以写(如“默认 60 秒一块,切块失败回退整段”),
但不能附带它何时、因何改为如此。
### 精简可读
- **单段连续注释不超过 3 行**(含行)。超过说明它很可能在讲历史或设计辩论,
应压缩为 1~3 行;确实需要展开的写进 docs/ 并在此链接一句。
- 函数/类 docstring 用一句话概括职责,必要时补 1~2 句关键行为或参数语义;
不重复函数名已表达的信息(`def parse_srt` 不必再写“解析 SRT”)。
- 不写“废话注释”:逐行翻译代码、`# 返回结果``# 循环处理` 这类无信息量的
句子;只在**非显然处**加注释(业务规则、边界、易错点、外部约束)。
- 中文说明,术语与代码标识符保持英文;保持注释与代码同步,改代码必须
同步改注释(不留过期注释),但**不要为了“补充说明”把注释越写越长**。
### 覆盖范围
- 模块/文件职责、公开类与函数的职责与非显然行为必须有注释;私有工具函数
仅在逻辑非显然时加简注。
- 测试代码同样配中文注释,但只说明**验证什么行为**(一句话),不重复测试
步骤的机械描述。例外:回归用例可保留**简要的溯源**(如"曾因 XX 导致
时间轴错位"一句),因为它解释了"为什么必须有这条用例";但仍不写长叙事、
不贴大段实测数据,详细经过放 [docs/decisions.md](./docs/decisions.md)。
- JSON 数据文件(如 `manifests/*.json``workflows/*.json`)按 JSON 规范不支持
注释,字段语义以 `src/wov_sdk/models.py` 的模型注释和 [docs/](./docs/) 文档为准;
修改 JSON 字段时须同步更新文档。