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:
@@ -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 字段时须同步更新文档。
|
||||
|
||||
Reference in New Issue
Block a user