# Project Caffeine 文档编写规范指南

## 1. 目的与概述

本文档编写规范旨在为 **Project Caffeine** 项目的全体成员提供统一的文档撰写标准。通过标准化的元数据管理、文档结构梳理、Markdown 排版、技术写作规范以及版本控制，确保所有输出的工程文档、架构设计与迭代规划具备高度的可读性、一致性与可追溯性。

## 2. 文档头部元数据规范 (YAML Frontmatter)

结合本项目的工程化管理要求，**所有 Markdown 文档的最顶部必须包含标准化的 YAML Frontmatter 元数据块**，以便于文档站点的解析、版本检索与资产归档。

必须包含以下核心字段：

- **`title`**：文档的正式标题。
- **`description`**：用 1-2 句话高度概括文档的核心主旨与意图。
- **`type`**：文档的类型界定（如 `README`, `System Development Guide`, `Roadmap` 等）。
- **`version`**：严格遵循“版本号 + 咖啡代号 + 里程碑”格式（例如 `v1.0.0 (Arabica) - MVP` 或 `Sprint 1`）。
-  **file**：文件名
- **`author`**：统一署名为 **Gitconomy Research**。
- **`date`**：遵循 `YYYY-MM-DD` 的 ISO 标准格式。
- **`tags`**：提取核心技术栈与概念标签（如 `Project Caffeine`, `MCP`, `Deep Research` 等）。
- **`license`**：声明为 `CC BY-SA 4.0`。
- **`status`**：（可选）标注文档的生命周期状态（如 `Active`, `Design and Planning` 等）。

## 3. 文档类型与结构建议

为了确保各类工程文档的逻辑完整性与结构一致性，项目内的核心文档应当遵循以下分类及标准结构框架进行编写：

### 3.1 文档类型与用途

项目文档按用途分为以下几类，主要存放于仓库的 `docs/` 目录下：

|类型|说明|示例路径|
|:--|:--|:--|
|**README**|项目总体介绍、快速开始、核心特性、状态徽章等。每个主要模块/子包应有自己的 README。|`/README.md` `/packages/server/README.md`|
|**设计文档**|记录架构决策、模块设计、协议交互、数据流等，用于指导开发和评审。|`/docs/design/`|
|**开发指南**|面向开发者的环境搭建、编码规范、测试指南、调试技巧等。|`/docs/development/`|
|**用户指南**|面向最终用户的使用说明、配置示例、FAQ 等。|`/docs/user/`|
|**API 文档**|MCP 服务暴露的 tools（工具）、prompts（提示词）、resources（资源）的详细说明，包括 JSON-RPC 参数、返回值、示例。|`/docs/api/`|
|**贡献指南**|如何提交 Issue、PR，代码规范，文档规范，行为准则等。|`/CONTRIBUTING.md`|
|**更新日志**|记录版本变更，遵循 Keep a Changelog 格式。|`/CHANGELOG.md`|

> **注意**：每个文档顶部必须包含标准化的 YAML front matter（详见第 2 节），以便机器读取元数据。

### 3.2 README 主文档

README 是项目或子包的门面，必须清晰传达项目的核心定位与接入方式，包含以下标准模块：

- **项目标题与徽章**：显示构建状态、协议、核心技术栈及目标版本。
- **项目概述**：简述项目功能、核心价值与适用场景。
- **系统架构**：放置核心的架构图或拓扑图，概述系统组件及其职责。
- **技术栈与开发环境**：
    - 核心语言与运行环境（要求使用 TypeScript 与 Node.js LTS v20+）。
    - 依赖管理（明确标明是否采用 Monorepo / 原生 npm Workspaces）。
    - 协议与 SDK 说明（如 MCP 协议与 JSON-RPC 2.0 标准规范）。
    - 安全与环境要求（如配置隔离与“零信任架构原则”）。
- **开发路线图**：按 MVP 或 Sprint 分阶段展示任务、目标及关键功能（如 Arabica Sprint 1 阶段特性）。
- **参与方式**：Issue 提交规范、PR 流程以及讨论参与指引。
- **AI 生成内容声明**：明确提示用户系统生成的报告需人工核验，仅供参考。
- **许可证说明**：明确采用双轨制许可，即源代码通常采用 **MIT License**，而文档与研究成果采用 **CC BY-SA 4.0** 协议。

### 3.3 设计文档

用于详细阐述某一具体微服务或核心逻辑（如提示词策略 Server、资源读取模块），必须包含：

- **文档标题与版本信息**。
- **模块概述**：说明该模块的具体功能、作用及与其他系统组件的交互关系。
- **系统架构图/流程图**：直观展示数据与控制流向。
- **接口定义与通信协议**：如 stdio 或 HTTP+SSE 的传输层约定。
- **数据结构与格式**：如基于 **JSON-RPC 2.0** 的 schema 定义与验证规则。
- **核心算法或逻辑描述**：如针对长文本的语义分块（Semantic Chunking）策略或缓存机制。
- **配置示例与部署说明**：指引如何修改环境路径与启动系统。
- **注意事项与最佳实践**：如代码防范越权访问、性能优化红线等。

### 3.4 图表与示意图

文档中的视觉资产需遵循以下存放与引用规范：

- **格式要求**：首选使用原生 **SVG** 代码，在特定场景下可使用高分辨率 **PNG**。若采用 SVG，必须支持通过 Git 进行 diff 比对。
- **命名与文件夹组织**：图表文件必须存放在规定的资源目录中，遵循 `docs/assets/images/<模块名称>-<内容>.svg` 或对应的后缀格式。
    - _示例_：`docs/assets/images/project-caffeine-system-topology.svg`。
- **图文对应**：所有图表下方必须配备简短的说明（Caption），确保图表与其解释的上下文内容紧密对应。

## 4. 结构与格式

我们使用标准的 Markdown 进行编写。

### 4.1 文件命名

文档文件命名推荐使用清晰的中文标题或英文 **kebab-case（短横线命名法）**，如 `project-caffeine-readme.md`，以保持与工程代码文件目录的命名风格统一。

### 4.2 章节标题的结构

- 使用 ATX 风格的标题（`#`）。
- 文档主标题使用 H1（`#`），章节标题从 H2（`##`）开始。
- 标题应简洁明了，采用**句首大写 (Sentence case)**，除非是专有名词。

### 4.3 章节标题的语法规范

#### H1: 主标题——副标题

1. **结构**：**主标题 + 副标题**
2. **要求**：主标题是文章或章节的核心主题，副标题进一步解释或细化主标题，提供更多上下文或具体内容。主副标题之间可以使用破折号连接。

#### H2: 定语 + 助词 + 名词

1. **结构**：**定语 + 助词 + 名词**
2. **要求**：H2标题通常作为章节标题，简洁地描述章节的核心内容。使用定语修饰名词，使标题具有具体性和引导性，助词（如“的”）连接定语与名词。

#### H3和H4: 谓语 + 宾语

1. **结构**：**谓语 + 宾语**
2. **要求**：H3和H4标题通常用于小节或细节部分，强调动作（谓语）和受动者（宾语）。这种结构使得标题更加具体，直接描述某个操作、过程或事件。

### 4.4 列表 (Lists)

- **无序列表**：使用减号 `-`。列表项如果是一句完整的话，以句号结尾；如果是短语，则不需要。
- **有序列表**：仅在步骤有严格顺序时使用数字列表。

### 4.5 表格

- 使用标准Markdown表格语法。
- 表格前后留一空行。
- 表头与内容之间必须有分隔行。
- 尽量保持列对齐以提高可读性。

### 4.6 链接与图片

- 使用相对路径引用仓库内图片。
- 外部链接应提供完整URL，包括https://前缀。
- 提供清晰的alt 文本，兼顾无障碍与 LLM 理解。

### 4.7 强调

- **粗体 (`text`)**：用于强调关键概念、新的术语定义或需要用户特别注意的UI元素。**不要滥用**，满篇粗体等于没有重点。
- _斜体 (`*text*`)_：用于书籍、文章标题，或表示语气的强调。
- `行内代码 (Inline Code)`：用于正文中的命令、文件名、分支名、路径或配置项。

## 5. 技术写作规范

这是体现专业性的核心区域。

### 5.1 代码块 (Code Blocks)

所有代码块必须指定语言标记，以便正确高亮。

- **命令行操作**：使用 `bash` 或 `sh`。
    - 命令的输出结果**不**带 `$` 符号。
    - 需要用户替换的部分使用尖括号 `<placeholder>` 包裹。
- **配置文件**：使用 `gitconfig`、`yaml`、`json` 等对应格式。
- **文件内容示例**：如果只是展示文本内容，可以使用 `text`。

### 5.2 标点符号

- 使用全角中文标点符号（，。！？：；“”‘’（））。
- 中英文混排时，英文与中文之间应保留一个空格（此项通常由排版引擎自动处理，但在 Markdown 源码中手动添加可以提高可读性）。

## 6. 文字风格规范指南

### 6.1 文字的情绪化与中立性

在编写文档时，我们应避免使用情绪化或带有政治色彩的语言。这不仅是为了确保技术的客观性，也是为了尊重读者的多元背景和文化视角。以下是一些具体的规范：

1. **避免带有攻击性或情绪化的语言**：我们的目标是帮助读者理解技术，而非通过情绪化的语言来引导思维。避免过于夸张、激烈的表述。
2. **避免政治性语言和隐含的偏见**：在技术文档中，避免任何可能引发争议的政治色彩和社会偏见。
3. **避免过于主观或过度的情感表达**：文档应该以冷静、客观的语气提供信息，而不是通过情感化的语言来影响读者的判断。
4. **简洁明了，避免冗长和情绪化的描述**：避免描述性语言过于冗长或情感化的调调。尽量做到简洁直接，保持专业性。

### 6.2 专业性和清晰度

1. **保持语气的中立性**：所有表达应当中立、平衡，避免偏袒或倾向某一方的语气。专业的写作风格是直接、简洁和清晰的，不带有个人情绪色彩。
2. **使用简洁明了的句式**：使用清晰的句式，避免过于复杂的结构。尽量使每个句子都传达一个清晰的想法，避免无谓的修饰和修辞手法。

### 6.3 拒绝“翻译腔”

这是我们文字风格的第一大敌。我们在编写或翻译内容时，必须符合中文的自然表达习惯。

1. **减少“被”字句**：英文习惯用被动语态，而中文习惯用主动语态。
2. **警惕“的”字风暴**：过多的“的”字会让句子变得粘连、拖沓。尝试通过重组句子来消除不必要的“的”。
3. **避免生硬的从句**：不要试图在一个长句中保留英文的所有修饰成分。将长句拆分为短句，符合中文的“流水句”特征。

### 6.4 词汇的选择

1. **动词的力量**：使用精准、有力的动词，避免使用“进行”、“作出了”等万能动词。
2. **术语的“中文本地化”**：除非是专有名词（如 Rebase, Cherry-pick 这种很难翻译传神的），否则尽量使用标准的中文术语，但要标注英文原词。
    - **首次出现**：暂存区 (Staging Area)
    - **后续使用**：暂存区

### 6.5 中英文混排与标点符号

1. **空格规范**：**汉字与英文、汉字与数字之间，必须保留一个空格。**
2. **标点符号**：
    - **全角标点**：中文句子中，必须使用全角标点（，。！？：；（））。
    - **英文标点**：只有在行内代码（Inline Code）或英文专业术语（如 `user.name`）中才使用半角标点。
    - **空格禁忌**：全角标点与汉字或英文之间，**不需要**添加空格。

### 6.6 标题与段落

1. **标题即论点**：标题不应只是名词，最好是动宾结构或完整的论点，让读者只看目录就能懂大意。
2. **倒金字塔结构**：段落的第一句必须是**中心句 (Topic Sentence)**。先说结论，再展开解释，最后给例子。不要让读者读到最后一行才知道这一段想说什么。

## 7. 图形即代码 (Diagram as Code) 集成规范

文档中嵌入的架构图、时序图等图形资产，必须严格遵循《图形即代码设计规范指南》：

- **格式要求**：所有核心图表必须是可内嵌于 Markdown 的原生 **SVG** 代码，并支持通过 Git 进行 diff 比对与历史追溯。
- **兼容性与背景**：为防止 Git 平台深色模式下的反色问题与 XSS 清洗，**推荐在 SVG 最底层放置纯白背景**（`<rect width="100%" height="100%" fill="#FFFFFF" />`），且**严禁包含 `<script>` 标签或外部图像/字体引用**。
- **响应式适配**：SVG 必须使用 `viewBox` 属性定义坐标系，并将宽高设置为 `100%`，确保在 Markdown 容器内流畅等比缩放。

## 8. 术语与内容结构统一

- **MCP 协议原语**：在文档中描述系统能力时，需统一使用标准术语。例如，暴露给模型的主动操作必须统一称为 **Tools (工具)**；静态上下文数据源统一称为 **Resources (资源)**；复用模板称为 **Prompts (提示词)**。

## 9. 版权与许可声明

为了保障知识产权与开源精神的传承，**每一份标准文档的末尾，必须固定包含以下完全一致的版权与开源许可证声明**：

> ## 许可声明
> 
> 本文档采用 **知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)** 进行许可，© 2025-2026 Gitconomy Research。