# 技术决策日志 记录项目中的重要技术决策、原因和影响。 --- ## 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 **状态:** ✅ 已实施 / 🚧 进行中 / ⏳ 待实施 / ❌ 已废弃 ```