跳转至
Doc-Code Sync Policy · v1.0

文档-代码同步规范 v1.0

Xisound Doc-Code Sync Policy · Layered Governance · Drift Tolerance · CI Enforcement
3
同步模式(Docs/Code/Contract-First)
7
文档层分治策略
4
同步检查时点(PR/Sprint/季度/Release)

文档-代码同步规范 v1.0

摘要

本规范定义 Xisound 文档体系与代码仓库如何保持同步的政策。 核心理念:分层治理(不同文档层用不同同步策略)· 漂移容忍(架构层接受短期不一致)· CI 强制(实现层必须 1:1 mirror)· 四级校验(PR / Sprint / 季度 / Release)。 适用于所有 Xisound 文档作者、代码工程师、QA 与项目经理。

v1.0 生效

本规范于 2026-05-06 基于《技术开发文档体系方案 v1.0》(O3/O6 拍板)固化生效。 所有新写的文档和代码变更必须遵守本规范。历史文档按 §6 渐进式对齐。


1. 背景与动机

1.1 为什么需要本规范

初创期 / 快速迭代期的 Xisound 普遍存在以下痛点:

痛点 表现
文档追不上代码变化 代码每天改,文档只在 PR 时才改
不知道"改代码要不要改文档" 工程师凭感觉决定,标准不一致
不知道"哪些文档是准的" 找到一份文档,不知是最新还是过时
新人 onboarding 混乱 文档和代码讲的不是同一个系统
被 review 时反复返工 Reviewer 说"文档没同步",已经合并又拆

根本原因:所有文档被"一刀切"对待(要么强制同步要么全不管),没有分层治理

1.2 本规范的目标

四大目标

  1. 按层分治:不同文档层(D0-D6)用不同策略,避免一刀切
  2. 明确契约:每个工程师 / 作者清楚"什么时候必须改文档"
  3. 漂移容忍:承认架构层短期会漂移,但有定期校准机制
  4. CI 强制底线:实现层(D4)偏差必须被 CI 拒绝合并

2. 三种同步模式(公司实践)

不同文档层的本质是选择不同的"真源":

2.1 三模式对比

模式 真源 变更方向 代表行业 代表公司
A · Code-First 代码 代码变 → 文档跟着变 互联网 / SaaS(80%) FAANG · Stripe · Linear · Vercel
B · Docs-First 文档 文档变 → 代码跟着变 安全关键(汽车 / 航空 / 医疗) Bosch · Tesla · 宁德 · 波音
C · Contract-First 接口契约(OpenAPI / Proto) 契约变 → 代码 + 文档双向生成 中台 / API 平台 AWS · Google Cloud · 阿里云

2.2 Xisound 采用的模式

分层混合(与业内字节 / 阿里 / 华为类似):

flowchart TB
    S[文档层] --> D0[D0 战略/品牌/融资<br/>Docs-First · 年度]
    S --> D1[D1 中心章程<br/>Docs-First · 季度]
    S --> D2[D2 产品 PRD/Spec<br/>Docs-First · Release 级]
    S --> D3[D3 架构级<br/>Docs-First(初稿)+ 漂移容忍]
    S --> D4[D4 实现级<br/>Code-First · PR 级 CI 强同步]
    S --> D5[D5 执行模板<br/>静态]
    S --> D6[D6 测试运维<br/>Code-First]
    S --> EXT[external 对外<br/>Docs-First · 法务 review]

    classDef docs fill:#6B3FA0,stroke:#6B3FA0,color:#fff
    classDef code fill:#DFA66D,stroke:#DFA66D,color:#fff
    classDef hybrid fill:#A83F88,stroke:#A83F88,color:#fff
    class D0,D1,D2,EXT docs
    class D4,D6 code
    class D3 hybrid

3. Xisound 七层治理策略(按层细则)

3.1 总表 · 每层策略一览

策略 同步频率 谁负责 CI 强制?
D0 · 公司级 Docs-First 年度 review CEO / CFO / HR / 法务
D1 · 中心级 Docs-First 季度 review 各中心负责人
D2 · 产品级 Docs-First(PRD/Spec)+ Code-First(tech-arch/api) Release 级(大版本) 产品经理 + 研发 owner 部分(API 文档)
D3 · 架构级 Docs-First(初稿)+ 漂移容忍 季度架构评审 架构组 ❌(但有漂移检查)
D4 · 实现级 Code-First PR 级 代码 owner 强制
D5 · 执行级 静态模板 · 无需同步 年度 文档工程
D6 · 测试运维 Code-First PR 级 QA / SRE 强制
external · 对外 Docs-First + 法务 review Release 级 市场 + 法务 ❌(但有公开性审查)

3.2 D0 · 公司级(Docs-First · 年度)

定义:战略 / 品牌 / 融资 / 制度 / 跨中心规范

同步规则: - 战略 / 愿景 → 年度 review(每年 Q4 review 下一年规划) - 品牌 / 色彩 → 重大改版时(如 v1.0 → v2.0) - 融资材料 → 每轮融资前 CFO 更新 - 合同模板 → 法规变更时 法务更新

判断文档过时: - ❌ 不需要看代码 - ✅ 看外部环境变化(法规 / 市场 / 融资轮次)

3.3 D1 · 中心级(Docs-First · 季度)

定义:各中心章程 + 职责边界 + 内部规范

同步规则: - 每季度末各中心负责人 review 本中心文档 - 组织架构变更时立即更新 - 规范细则(如 sw-dev-spec):代码实践验证过的规则才能更新规范

3.4 D2 · 产品级(混合)

定义:每产品 12 份模板文档(P1-P10 × 12 = 120 份)

同步规则(按模板类型差异化):

模板 策略 触发
overview / prd / spec Docs-First 产品里程碑(M1/M2/M3)
tech-arch 混合 架构大改时 · 配合 D3
api Code-First 代码 API 签名变化立即同步
user-manual Docs-First Release 级
one-pager / pricing / competitor Docs-First 营销活动 / 季度 review
changelog Code-First 每次 Release 自动生成
faq Docs-First 客户反馈累积后
training Docs-First 员工培训需求

3.5 D3 · 架构级(Docs-First 初稿 + 漂移容忍)⭐ 重点

定义:System / Backend / Frontend / DSPAlgo / Data-Model / Protocol / Deployment Topology

核心理念架构文档是"北极星",指导代码怎么写;但承认代码执行中会漂移。

同步规则

阶段 动作 频率
初稿 架构组先写 D3 文档 · 定义"理想架构" 项目启动
实施 代码按 D3 实现 · 如需偏离必须开 ADR(Architecture Decision Record)记录 持续
漂移识别 每季度架构评审对比 D3 与实际代码 季度
对齐 发现偏差 → 决定是改文档迁就代码还是改代码迁就文档 季度末
重大改版 D3 文档升 v2.0 · 触发代码重构 年度

漂移容忍窗口: - ≤ 1 个月:正常 · 不 block - 1-3 个月:标 "⚠️ 已知漂移" - > 3 个月:必须季度评审对齐

3.6 D4 · 实现级(Code-First · CI 强制)⭐ 重点

定义:与 04_development/ / 03_algorithms/ / 07_web/xisound-website/ 代码仓库 1:1 mirror

同步规则

CI 强制规则

任何 PR 修改代码目录(如 04_development/backend_csharp/Controllers/*.cs)→ 必须同步修改对应的 D4 文档D4-implementation/backend-csharp/controllers/*.md)。 未同步的 PR 将被 CI job docs-sync-check 自动阻断合并

对应规则

代码路径                                  ↔   文档路径
04_development/backend_csharp/**/*.cs       D4-implementation/backend-csharp/**/*.md
04_development/frontend_vue3/src/**/*.ts    D4-implementation/frontend-vue3/**/*.md
04_development/dsp_algo/**/*.c              D4-implementation/dsp-algo/**/*.md
04_development/pysidecar/**/*.py            D4-implementation/pysidecar/**/*.md
03_algorithms/**/*.{m,py,c}                 D4-implementation/algorithms/**/*.md
07_web/xisound-website/src/**/*.astro       D4-implementation/web-astro/**/*.md

豁免清单(不触发 CI 检查): - 测试文件变化(**/*.spec.* / **/tests/**) - 注释 only 修改 - 格式化 only 修改(prettier / dotnet format) - 依赖版本升级(package-lock.json / *.csproj.lock.json

3.7 D6 · 测试与运维(Code-First)

定义:unit / integration / e2e / hil / cicd / ops/monitoring / ops/release / ops/incident

同步规则: - 新增测试类型 → 同步更新 D6 规范 - CI 流水线变更 → 同步更新 D6-testing-ops/cicd/ - 线上事故 → 7 天内 必须写 Postmortem

3.8 external · 对外(Docs-First + 法务 review)

定义:面向客户 / 公开发布的产品主页 / 技术支持 / 下载 / Demo

同步规则: - 所有对外文档必须 法务 + 市场双签 才能发布 - 任何与产品能力相关的描述必须有 D2/D3 内部文档作为来源引用(防止吹牛) - 变更 → 先改内部 → 再决定是否暴露到对外 → 法务 review → 发布


4. 四级检查时点

4.1 PR 级(最高频 · 实时)

触发:每个 Pull Request 提交

检查项: - ✅ CI job docs-sync-check 扫描代码改动路径,对比文档是否同步 - ✅ reviewer 人工 check:D4/D6 文档是否一致 - ✅ 新增功能必须有 D3 架构章节 ref 或 ADR

违规处置:CI 拒绝 · PR 无法合并

4.2 Sprint 级(2 周)

触发:每个 sprint 结束前一天

检查项: - 本 sprint 所有 PR 是否都同步了文档? - 有没有"临时豁免"的 PR 没补回来? - 本 sprint 产生的 ADR 是否归档?

违规处置:开 issue 指派给 owner 补

4.3 季度级(3 个月)

触发:每季度第一周

检查项: - D3 架构评审:对比文档与实际代码,识别漂移,决定对齐方向 - D1 中心规范是否仍适用? - D5 模板是否需要更新? - external 对外材料是否过期?

产出: - 《Qx 文档-代码同步审查报告》(D5 模板) - 本季度漂移修正 backlog

4.4 Release 级(大版本)

触发:发布 v1.0 / v2.0 / 车规 Tapeout / ASPICE 认证

检查项: - 全体系文档 snapshot - D2 产品文档完整 review - external 对外发布材料法务 review - 溯源矩阵(需求 → 设计 → 实现 → 测试)检查(车规专属)


5. 角色与职责(RACI)

动作 工程师 Doc Owner Tech Lead Architect QA Doc Engineer
PR 同步 D4 文档 R A C I I I
创建 ADR R C A C I I
D3 季度评审 C C C R/A I C
D4 CI job 维护 R I C C I A
Release 文档 snapshot I C C C C R/A
D0/D1 规范更新 I I C C I R/A

R = Responsible(执行)· A = Accountable(负责)· C = Consulted(咨询)· I = Informed(知会)


6. 历史文档渐进式对齐策略

对于 规范生效前的历史文档(如 old-arch-doc/ 33 份),采用渐进式对齐:

6.1 分类处理

文档状态 处置
历史定稿 · 内容稳定(如 System Architecture v7) 迁入 D3 + 标注 as of 2026-05 · 代码迭代中
多版本草稿(如 DSPAlgo v5/v6) 归档 _legacy_arch_drafts/ · 仅保留最终版
与代码严重偏离(> 6 个月) 🔴 deprecated · 等待季度评审决定重写或删除
内容仍有价值但过时 保留 · 加 ⚠️ 历史参考 · 内容待更新 横幅

6.2 对齐节奏

  • 批 1:骨架建立(本规范生效即完成)
  • 批 2:历史定稿原样迁移 + 标注
  • 批 3:草稿归档
  • 批 4-5:D4 实现级 AI 辅助生成(基于当前代码)
  • 批 6:季度评审后,根据漂移情况决定是否重写 D3 主文档

7. 工具链与自动化

7.1 CI Job 设计(O6=C 拍板 · 规划 2026 Q2 落地)

job 名称docs-sync-check

执行逻辑

# .github/workflows/docs-sync-check.yml
name: docs-sync-check
on: pull_request
jobs:
  check:
    steps:
      - 获取 PR diff
      - 识别修改的代码文件路径
      - 按 §3.6 映射表找对应文档路径
      - 若代码改了但文档没改 → 失败
      - 识别豁免清单(§3.6 末)→ 跳过
      - 输出报告到 PR comment

7.2 AI 辅助(O8=C 拍板)

场景: - AI 每周扫描代码变更 vs 文档,生成"偏差热力图"issue - AI 根据代码自动生成 D4 文档草稿(由工程师校对) - AI 识别文档里的 "TODO" / "待补充" 标记并提 issue

工具:Claude / Copilot / Cursor

7.3 漂移可视化(规划)

  • MkDocs 插件:在每页顶部自动显示 "最后同步代码: 3 天前"
  • 超过 90 天自动打 🟡 可能过时 横幅
  • 超过 180 天自动打 🔴 已过时 · 请 review

8. 常见问题 FAQ

Q1:我是个新工程师,不知道一个 PR 要改哪些文档怎么办?

A: 1. 先看 §3.6 代码-文档映射表 2. 如果不在表内(如新功能) · 创建对应 D4 文档 · 或升级 D3 架构文档 3. 不确定 → 找 Tech Lead 或 Doc Engineer 咨询

Q2:CI 卡我合并,但这个修改确实不需要改文档(如修 typo)

A:豁免清单(§3.6 末)已覆盖大部分情况。若确实被误拦: 1. 在 PR 描述里加 [skip-docs-sync] 标签 2. 需要 Tech Lead + Doc Engineer 双 approve 3. 事后在 ADR 记录该特例

Q3:架构已经偏离文档很久了,文档还是改吗?

A:看偏离性质: - 代码错了 → 改代码迁就文档(保持文档作为"北极星") - 文档过时 → 升级文档 · 标 v2.0 · 触发一轮 "清理运动" - 双方都错 → 架构评审重新设计 → 同步更新

Q4:对外文档和内部文档不一致怎么办?

A:外部是"脱敏 subset",内部是"完整版"。不一致是正常的(对外隐藏细节)。但: - 对外宣称的能力 必须有 内部文档支撑 - 对外发布前必须双签(法务 + 市场) - 定期比对"对外承诺 vs 内部现状"

Q5:D3 文档和 D4 文档讲的是同一件事,怎么区分?

A: - D3 架构级为什么这么设计(decisions / trade-offs / diagrams) - D4 实现级实际代码长什么样(API 签名 / 文件结构 / build 命令) - 一份文档不要同时讲两种(混淆只会更难维护)

Q6:AI 生成的文档能直接 merge 吗?

A不能。AI 生成的永远是 v1.0-draft · status: draft。必须: 1. 对应代码栈的 owner 工程师审阅 2. 确认技术准确性 + 补充隐性知识 3. 升级 status: published 才能合并


9. 例外与特殊情况

9.1 Hotfix / 生产事故

规则:允许先改代码救火(不改文档),但必须: - 48 小时内补文档 - 写 Postmortem 进 D6 - 下个 sprint 复盘

9.2 Research / Spike

规则:探索性代码(spike/* / research/* / experimental/* 分支)不强制文档同步。但: - 代码必须在对应分支 · 不合入 main - 合入 main 时必须补齐文档

9.3 车规 / 安全关键场景

规则反向(Docs-First 强制 · 覆盖本规范其他条款): - 必须先有设计文档(D3) 才能写代码 - 必须有需求 → 设计 → 实现 → 测试的溯源矩阵 - 任何变更必须经 CAB(Change Advisory Board)审批

这是 ISO 26262 / IATF 16949 / ASPICE 的强制要求,不可妥协

9.4 外部开发者贡献(XiVST 插件等)

规则:外部贡献必须附文档,没有文档的 PR 直接拒。这比内部工程师要求更严(因为缺少 onboarding 保障)。


10. 规范的演进

本规范也是一份文档,本身也适用本规范:

  • 策略:Docs-First
  • 同步频率:季度 review(每季度第一周)
  • 升级门槛:v1.x 小改 Tech Lead 批 · v2.0 大改需跨中心联席会议
  • 反馈渠道:GitHub issue / 文档末尾"反馈"链接

11. 相关文档


12. 快速记忆卡(工程师速查)

一张图记住

改了代码?看这张表:

改了什么 必须同步吗? 哪里改?
Controller / Service / Component 业务逻辑 必须 D4-implementation/
公开 API 签名 必须 D4 + D2 产品 api.md
配置文件 schema 必须 D4-implementation/.../config.md
依赖版本 ✅ 必须 D4-implementation/.../dependencies.md
注释 / 格式化 ❌ 豁免 -
测试文件 ❌ 豁免 -
新功能 / 大改 必须 + 开 ADR D3 + D4 + ADR
架构重构 必须 + 季度评审 D3

不确定?问 Tech Lead 或 Doc Engineer。别合并。


版本历史

版本 日期 变更
v1.0 2026-05-06 首次发布 · 基于 tech-docs-framework v1.0 拍板(O3/O6/O8)固化生效

文档-代码同步规范 · v1.0 · 2026-05-06 · © Xisound Inc.

反馈

对本规范有意见?请提 PR 或联系 docs@xisound.com。