<task>
根据提供的已暂存文件变更生成 Git 提交信息。
</task>

<context>
用户正在 Git 仓库中工作，仓库位置为：
<project_path>
{{ projectPath }}
</project_path>

已暂存了多个文件准备提交：
<file_changes>
{{ fileChanges }}
</file_changes>

你需要通过读取项目路径中的实际文件内容来分析这些文件变更，
并生成合适的提交信息。
</context>

<working_directory>
使用此项目路径作为工作目录：{{ projectPath }}
</working_directory>

<requirements>
  <requirement>
    遵循约定式提交（Conventional Commits）规范：
    https://www.conventionalcommits.org/zh-hans/
  </requirement>
  <requirement>
    使用以下类型之一：
    - feat: 新功能
    - fix: 修复 bug
    - docs: 仅文档变更
    - style: 不影响代码含义的格式变更
    - refactor: 既不修复 bug 也不添加功能的代码变更
    - perf: 提高性能的代码变更
    - test: 添加缺失的测试或修正现有测试
    - build: 影响构建系统或外部依赖的变更
    - ci: CI 配置文件和脚本的变更
    - chore: 其他不修改 src 或测试文件的变更
    - revert: 回滚之前的提交
  </requirement>
  <requirement>
    可选的作用域（scope），放在类型后的括号中（例如：feat(auth), fix(api)）
  </requirement>
  <requirement>
    主题行必须：
    - 使用祈使语气（添加，而非已添加）
    - 最多 50-72 个字符
    - 不以句号结尾
    - 以 type(scope): 前缀开头
  </requirement>
  <requirement>
    可选的正文段落，用于详细说明
  </requirement>
  <requirement>
    可选的页脚，包含 BREAKING CHANGE 通知或其他元数据
  </requirement>
  <requirement>
    不要在提交信息中包含文件路径
  </requirement>
  <requirement>
    关注"是什么"和"为什么"，而不是"怎么做"
  </requirement>
  <requirement>
    从项目路径读取实际文件内容以理解变更
  </requirement>
</requirements>

<analysis>
分析文件变更以理解：
1. 这是什么类型的变更？（新功能、bug 修复、重构等）
2. 这些变更的主要目的是什么？
3. 代码库的哪个区域受到影响？（用于确定作用域）
4. 是否有破坏性变更？

使用 Read 工具检查变更的文件并理解其内容。

**历史格式分析**：
在生成提交信息之前，你**必须**分析当前仓库的提交历史：
1. 运行 `git log -n 10 --pretty=format:"%s%n%b"` 查看最近的提交信息
2. 识别模式：结构（单段 vs 多段）、语言（英文/中文）、常用类型、特殊格式
3. 生成提交信息时匹配检测到的风格
4. 如果没有历史，使用标准的 Conventional Commits 格式
</analysis>

<output_format>
关键：仅返回原始的提交信息文本。不要解释、不要 markdown 格式、不要代码块。
直接以提交信息开头，像这样：

feat(scope): 主题行

可选的正文文本。

可选的页脚文本。

不要添加"以下是提交信息："或类似文本。
不要用 markdown 代码块包裹。
不要在前后添加任何评论。
</output_format>

<examples>
好的示例：
- feat(auth): 添加 JWT 令牌刷新机制
- fix(api): 处理用户服务的空响应
- refactor(user): 简化验证逻辑
- docs(readme): 更新安装说明
- chore(deps): 升级到 React 19

不好的示例：
- 修复了一个 bug（太模糊，没有类型）
- feat: 添加了一些东西（太模糊）
- 更新 file.ts（包含文件路径）
- 添加功能（不是祈使语气）
</examples>

<final_instruction>
你的回答必须只包含提交信息。不要包含其他文本。
</final_instruction>
