Files
WechatHookBot/Memory Bank/decisionLog.md
2025-12-03 15:48:44 +08:00

255 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 技术决策日志
记录项目中的重要技术决策、原因和影响。
---
## 2025-01-12
### 决策 #001: 项目架构选择
**决策:** 采用四层架构设计DLL Hook → WechatHook → Bot Core → Plugin
**原因:**
- 清晰的职责分离
- 便于维护和扩展
- 最大化复用 XYBotV2 代码
**影响:**
- 代码结构清晰
- 80% 代码可复用
- 学习成本低
**状态:** ✅ 已实施
---
### 决策 #002: DLL 文件存放位置
**决策:** DLL 文件放在项目的 `libs/` 目录,不放到微信安装目录
**原因:**
- Loader.dll 由 Python 程序直接加载
- Helper.dll 由 Loader.dll 动态注入到微信进程
- 不需要修改微信安装目录
**影响:**
- 部署更简单
- 不污染微信目录
- 便于版本管理
**状态:** ✅ 已实施
---
### 决策 #003: 不进行本地测试
**决策:** 所有测试在远程设备进行,开发过程中不在本地运行
**原因:**
- 用户要求
- 避免本地环境污染
- 专注于代码实现
**影响:**
- 需要更仔细的代码审查
- 依赖用户反馈进行调试
- 开发周期可能稍长
**状态:** ✅ 已实施
---
### 决策 #004: 复用 XYBotV2 插件系统
**决策:** 完全复用 XYBotV2 的插件系统PluginBase、EventManager、装饰器
**原因:**
- 插件系统设计优秀
- 已经过验证
- 减少开发工作量
- 保持插件兼容性
**影响:**
- 开发速度快
- XYBot 插件可直接使用
- 代码质量有保证
**状态:** ✅ 已确定,待实施
---
### 决策 #005: 使用 Memory Bank 系统
**决策:** 创建 Memory Bank 文件夹,实时跟踪项目进度和决策
**原因:**
- 用户要求
- 便于项目管理
- 保持开发上下文
- 方便后续维护
**影响:**
- 项目管理更规范
- 决策过程可追溯
- 便于团队协作
**文件结构:**
- projectBrief.md - 项目简介
- activeContext.md - 当前上下文
- progress.md - 进度跟踪
- decisionLog.md - 决策日志
- systemPatterns.md - 系统模式
**状态:** ✅ 已实施
---
### 决策 #006: 消息类型映射策略
**决策:** 创建独立的 message_types.py 文件,定义 API type 到内部 event 的映射
**原因:**
- 解耦消息类型定义
- 便于维护和扩展
- 统一消息格式转换
**实现方式:**
```python
MESSAGE_TYPE_MAP = {
10001: "text_message",
10002: "image_message",
# ...
}
```
**影响:**
- 代码更清晰
- 易于添加新消息类型
- 便于调试
**状态:** ✅ 已确定,待实施
---
### 决策 #007: 回调处理机制
**决策:** 使用装饰器模式实现回调处理(@CONNECT_CALLBACK, @RECV_CALLBACK, @CLOSE_CALLBACK
**原因:**
- 参考 python_demo.py 的实现
- 代码简洁优雅
- 易于扩展
**影响:**
- 回调注册简单
- 支持多个回调处理器
- 代码可读性好
**状态:** ✅ 已确定,待实施
---
### 决策 #008: 异步编程模型
**决策:** 使用 asyncio 作为异步编程框架,所有 API 都是异步函数
**原因:**
- 与 XYBotV2 保持一致
- 提高并发性能
- 插件系统要求
**影响:**
- 所有函数必须使用 async/await
- 需要处理同步/异步转换
- 性能更好
**状态:** ✅ 已确定,待实施
---
### 决策 #009: 配置文件格式
**决策:** 使用 TOML 格式作为配置文件格式
**原因:**
- 与 XYBotV2 保持一致
- 可读性好
- Python 3.11+ 原生支持
**影响:**
- 配置文件易于编辑
- 支持注释
- 类型安全
**状态:** ✅ 已实施
---
### 决策 #010: 数据库选择
**决策:** 使用 SQLite + aiosqlite 作为数据库
**原因:**
- 与 XYBotV2 保持一致
- 无需额外服务
- 支持异步操作
**影响:**
- 部署简单
- 性能足够
- 便于备份
**状态:** ✅ 已确定,待实施
---
## 待决策事项
### 待决策 #001: 消息类型 type 值
**问题:** 个微 API 各类消息的具体 type 值未知
**选项:**
1. 参考 API 文档推测
2. 实际测试获取
**倾向:** 选项 2 - 实际测试获取
**需要:** 用户提供实际消息的 type 值
---
### 待决策 #002: WebUI 是否实现
**问题:** 是否需要实现 Web 管理界面
**选项:**
1. 立即实现
2. 基础功能完成后再实现
3. 不实现
**倾向:** 选项 2 - 基础功能完成后再实现
**原因:** 先保证核心功能稳定
---
## 决策模板
```markdown
### 决策 #XXX: 决策标题
**决策:** 简要描述决策内容
**原因:**
- 原因1
- 原因2
**影响:**
- 影响1
- 影响2
**状态:** ✅ 已实施 / 🚧 进行中 / ⏳ 待实施 / ❌ 已废弃
```