AGENTS.md@docs · git:20261105.36a6b70 · 2026-11-05 · sha256 14d5d7a999804ef7
AGENTS.md@docs git:20261105.36a6b70A
Immutable. This exact content never changes and is served at /api/v1/blob/14d5d7a999804ef7.
# docs/AGENTS.md —— 文档标准 本文件定义本仓库文档的分层、事实归属、写作规则与审稿清单。根 [AGENTS.md](../AGENTS.md) 只保留落点与登记红线;代码注释规范见 [MODULE-COMMENTS.md](./MODULE-COMMENTS.md) 与 [CODE-COMMENTS.md](./CODE-COMMENTS.md)。 ## 1. 分层:一个事实一个家 每类事实只有一个 home;其他地方只写一句话摘要 + 相对链接,不复述细节。 | 层 | 位置 | 职责 | 不放什么 | | --- | --- | --- | --- | | 常驻规则 | 根 `AGENTS.md` | 每个会话都必须进上下文的红线,每条 1–3 行 | 教程、完整清单、实测记录、能从链接读到的细节 | | 文档标准 | `docs/AGENTS.md` | 分层、归属、写作与审稿规则 | 具体契约(→ 各规范文档) | | 索引 | `docs/README.md` | 每份文档一句话用途 + 链接 | 状态注解、实现细节、重复规则 | | 契约与规范 | `docs/CONTRACT-TS.md` 等 | 当前设计、接口、命令形态、存储 / 日志 / Web 规则 | 变更史、设计取舍(→ 设计依据文档)、进度 | | 设计依据 | `docs/ACCOUNT-CIRCUIT.md` 等 | 为什么这样做、放弃了什么、实测证据;规则收敛后指向 owning doc | 重复的现行规则 | | 渠道协议 | `docs/channels/<cid>/PROTOCOL.md` | 上游协议事实与证据等级 | 共享层规则、实现细节 | | 状态快照 | `docs/PROGRESS.md` | 当前版本、渠道状态、已知边界 | 契约条文 | | 门面 | 根 `README.md` | 项目是什么、怎么开始、去哪找文档 | 详细交互规则、契约细节 | | 流程 | `.agents/skills/<name>/SKILL.md` | 多步操作流程与验收清单 | 单点事实(→ `docs/`) | ## 2. 写作规则 1. **只写当前状态**:历史、变更过程、为什么改,属于 git / PR / 设计依据文档;正文不写 「以前是……现在改为……」或「本次修改」。 2. **一个事实一个家**:同一条规则出现第二遍就是漂移源。保留最靠近该事实的文档,其他位置 写一句摘要 + 链接。 3. **索引只写用途**:`docs/README.md` 的表格行是一句话导航,不写「已实施 / 已收敛 / 待实施」。 设计依据文档顶部允许一行状态(是否已收敛、收敛到哪里);当前能力与进度统一看 [PROGRESS.md](./PROGRESS.md)。 4. **不写能力状态注解**:「已实现」「未来支持」「TODO」会腐烂。能力是否存在由代码、包清单 和 `mx` 命令输出回答;未完成项进 `ROADMAP.md` 或 issue。 5. **不手抄清单**:命令、模型、渠道、字段、测试数量以源码 / 生成物 / CLI 输出为准;文档只写 规则与判据,需要枚举时链接到唯一来源。 6. **不写推理过程**:保留结论、取舍、约束、失败模式、验证方式;删除「先试了 A,又试了 B」的 过程叙述。实测证据例外:日期绑在外部事实上(上游行为、风控、限流)时必须写,并标注证据等级。 7. **一段一个主题**:避免把多条规则塞进一个长段;需要并列时用列表或表格。 8. **强调节制**:粗体、全大写、「注意」只留给会改变行为的句子。 9. **术语直接**:用「响应字段」「JSON 校验」「CLI 输出」这类具体词,不用「形状」「边界」「面」 等隐喻;「为什么」与「怎么做」分开写。 ## 3. 链接与引用 - 站内链接一律相对路径;外链写全 URL。 - 源码引用用仓库根相对路径 + 行号(如 `packages/core/gateway/src/...:12`); `scripts/verify-docs.mjs` 会校验文件存在且行号不越界。 - 历史引用用 tag / PR 编号,不写 commit SHA(rebase 会重写,SHA 不可靠)。 - 不在文档里复制大段源码;引用接口时用签名 + 指向实现的路径。 ## 4. 文档类型 - **参考**:定义当前行为与契约,按主题组织,不要求顺序阅读。`docs/` 下绝大多数属于此类。 - **教程 / 流程**:按步骤达成一个结果,每步有可验证动作。多步操作放 `.agents/skills/`; 安装、构建、发版等固定步骤放 [WORKFLOW.md](./WORKFLOW.md)。 - **设计依据**:记录为什么、放弃了什么、证据是什么;规则一旦收敛进 owning doc,本文只留 设计依据并在顶部指向新家。 ## 5. 预算 - 根 `AGENTS.md` ≤ 30,000 字节(`scripts/verify-docs.mjs` 强制;Codex 默认 32,768 字节会静默截断)。 - 新增文档以「一次能读完」为度,建议不超过约 30 KB;超过时先按主题评估拆分并登记索引。 现有 `CONTRACT-TS.md` / `POOL-ARCHITECTURE.md` / `WEB-CONSOLE.md` 已超过该体积,不为了数字硬拆, 在下次大幅改写时再按主题收敛。 - 预算不是压缩指标:超限先迁移(搬到正确层级),再压缩,最后才考虑放宽上限;放宽要在 PR 里说明理由。 ## 6. 审稿清单 - [ ] 这条事实是否已有 home?有就改成链接。 - [ ] 是否出现「已实施 / 待实施 / 以前 / 本次」这类会过期的表述? - [ ] 是否手抄了命令、模型、渠道、字段或测试数量? - [ ] 是否把推理过程、评审讨论、测试步骤写进了契约文档? - [ ] 是否有一段承载多条规则? - [ ] 链接是否相对、可达?源码引用是否带行号且校验通过? - [ ] 新增 / 改名 / 删除的文档是否登记到 [docs/README.md](./README.md)? - [ ] 文档是否与代码在同一个 commit? ## 7. 机械门禁 `scripts/verify-docs.mjs` 在 `npm test` 中检查:md 落点、仓库根文件白名单(只放门面与工程 配置文件)、渠道 `PROTOCOL.md` 存在性、相对链接可达、`file:line` 源码引用有效、索引登记、 技能登记、根 `AGENTS.md` 字节上限。 `scripts/verify-comments.mjs` 在 `npm test` 中检查注释的机器可判部分:文件头 ≤ 12 行、无署名 / 修订留痕、TODO 与 @deprecated 条件、空 catch 说明、`@ts-ignore` 同行理由、显式 `any`(契约面 刻意宽松走脚本内 ALLOWLIST 并写明理由)。 「文档与代码同 commit」「中文」「无 emoji」「一个事实一个家」属于评审约束,脚本不检查。