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

4.6 KiB
Raw Blame History

技术决策日志

记录项目中的重要技术决策、原因和影响。


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 的映射

原因:

  • 解耦消息类型定义
  • 便于维护和扩展
  • 统一消息格式转换

实现方式:

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 - 基础功能完成后再实现

原因: 先保证核心功能稳定


决策模板

### 决策 #XXX: 决策标题

**决策:** 简要描述决策内容

**原因:**
- 原因1
- 原因2

**影响:**
- 影响1
- 影响2

**状态:** ✅ 已实施 / 🚧 进行中 / ⏳ 待实施 / ❌ 已废弃