69 lines
2.4 KiB
Markdown
69 lines
2.4 KiB
Markdown
|
|
# 项目规范与 AI 规范 (agents.md)
|
|||
|
|
|
|||
|
|
## 项目规范
|
|||
|
|
|
|||
|
|
### 代码风格
|
|||
|
|
- 使用 Rust 官方代码风格(rustfmt)
|
|||
|
|
- 所有公开 API 必须包含中文文档注释(///)
|
|||
|
|
- 复杂逻辑必须包含行内中文注释
|
|||
|
|
- 结构体、枚举、trait 使用 PascalCase 命名
|
|||
|
|
- 变量、函数使用 snake_case 命名
|
|||
|
|
|
|||
|
|
### 架构设计
|
|||
|
|
本项目采用 **面向对象 (OOP) + 设计模式** 架构:
|
|||
|
|
|
|||
|
|
1. **Builder 模式**:用于构建复杂的 API 请求对象
|
|||
|
|
2. **Strategy 模式**:不同音色和音频格式的处理策略
|
|||
|
|
3. **Singleton 模式**:全局配置管理器(确保配置只加载一次)
|
|||
|
|
4. **封装**:每个模块负责单一职责,通过 pub 控制可见性
|
|||
|
|
|
|||
|
|
### 错误处理
|
|||
|
|
- 使用 `anyhow::Result<T>` 作为统一返回类型
|
|||
|
|
- 自定义错误类型(如需更精细控制)
|
|||
|
|
- 退出码规范:
|
|||
|
|
- 0: 成功
|
|||
|
|
- 1: 参数错误
|
|||
|
|
- 2: 配置错误(如缺少 API Key)
|
|||
|
|
- 3: API 调用失败
|
|||
|
|
- 4: 文件操作失败
|
|||
|
|
|
|||
|
|
### 文档要求
|
|||
|
|
- 每次操作前必须更新对应文档
|
|||
|
|
- 代码变更同步更新 changelog.md
|
|||
|
|
- 踩坑记录及时写入【认知修正】章节
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## AI 规范
|
|||
|
|
|
|||
|
|
### 沟通语言
|
|||
|
|
- 全程使用中文与用户沟通
|
|||
|
|
- 代码注释使用中文
|
|||
|
|
- 文档使用中文编写
|
|||
|
|
|
|||
|
|
### 执行顺序
|
|||
|
|
每次执行任何操作前,按以下顺序更新文档:
|
|||
|
|
1. 更新 `taolun.md` - 记录本次对话要点
|
|||
|
|
2. 更新 `agents.md` 的【认知修正】- 如有踩坑
|
|||
|
|
3. 更新 `changelog.md` - 如有版本变更
|
|||
|
|
4. 执行实际操作
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 认知修正(踩坑记录)
|
|||
|
|
|
|||
|
|
### 2026-04-24 - 项目初始化
|
|||
|
|
|
|||
|
|
#### 问题:Mimo-TTS API 文档无法直接访问
|
|||
|
|
**现象**:使用 webfetch 工具访问 https://platform.xiaomimimo.com/docs/ 返回的内容不完整
|
|||
|
|
**原因**:网站可能有反爬虫机制或需要 JavaScript 渲染
|
|||
|
|
**解决方案**:通过 websearch 搜索相关内容,从第三方文档(如 DMXAPI、GitHub 项目)获取 API 详细信息
|
|||
|
|
**经验**:对于无法直接抓取的文档,可以通过搜索引擎找到镜像或第三方整理的资料
|
|||
|
|
|
|||
|
|
#### 问题:API 认证需要双 Header
|
|||
|
|
**现象**:标准的 OpenAI SDK 方式(仅使用 Authorization Bearer)可能无法正常工作
|
|||
|
|
**原因**:Mimo-TTS API 要求同时提供 `api-key` 和 `Authorization: Bearer` 两个 Header
|
|||
|
|
**解决方案**:在代码中同时设置两个 Header
|
|||
|
|
**经验**:阅读 API 文档时要注意认证方式的特殊性,不能假设与标准 OpenAI API 完全一致
|
|||
|
|
|