# 代码备忘
- [ ] 检查EmojiManager的replace_an_emoji_by_llm传入的emoji是否真的是没有注册到db的
- [ ] According to a comment, MaiMBot's check_types() accesses format_info.accept_format without None check
- [ ] 如果需要更多的消息格式支持，更新列表如下：
    - [ ] `src/common/utils/utils_message.py`中的`_parse_maim_message_segment_to_component`函数
    - [ ] `src/common/data_models/message_component_model.py`中：
        - [ ] 增加新的消息组件
        - [ ] 看情况修改`StandardMessageComponents`的内容
        - [ ] `MessageSequence`的`_dict_2_item`和`_item_2_dict`函数
- [ ] **取消了从chat_manager获取ChatSession时候的deepcopy，看看会不会有问题**

# 迁移脚本备忘
- [ ] 迁移env到新版的bot_config管理
- [ ] 对于旧的消息，需要重新计算其Hash（md5 -> sha256），做好映射防止消息丢失
- [ ] PersonInfo的group_nickname名字改为group_cardname，做好映射防止数据丢失，同时存储的方式从`[{"group_id": str, "group_nick_name": str}]` -> `[{"group_id": str, "group_cardname": str}]`
- [ ] Expression中的`up_content`被移除了
- [ ] Jargon现在chat_id(session_id_list，格式为`[["session_id", session_count]]`) -> session_id_dict（`{"session_id": session_count}`），做好映射防止数据丢失

# 插件开发备忘
- [ ] 求各位插件开发不要在Dict里面塞一堆乱七八糟的东西，免得数据库存储的时候一团糟

# Hack备忘
- [ ] 对于不符合内容审查要求的表情包，无法注册到数据库内，因此面对相同的非法表情包时，会导致反复识别。有成功注册的可能。
    - [ ] 考虑到数据库记录表情包不合规判定有大模型误判的风险，因此保留现有的无法注册的情况，在再次遇到的时候重新识别。
- [ ] 目前在匿名化build message的时候，如果一个被回复的消息包含了一个转发消息组件，那么这个转发消息组件中的用户信息是不会被匿名化的，后续需要修复这个问题。（有时候感觉用正则是对的）
    - [ ] 可以考虑将消息保存的时候就将消息中的用户信息匿名化，这样在后续的处理过程中就不需要担心匿名化的问题了，同时也可以避免在build message的时候进行复杂的递归处理，同时还要保存匿名映射表。

# 计算备忘
- [ ] emoji的emotion比较是基于编辑距离的，考虑更换为基于语义的比较（比如使用emoji的embedding进行比较），以提高准确性和鲁棒性
- [ ] expression的相似度比较是基于LCS的（Ratcliff-Obershelp算法），考虑更换为基于语义的比较（比如使用embedding进行比较），以提高准确性和鲁棒性
- [ ] 为了保持代码的简洁性，HFC无论任何情况都将初始化ExpressionReflector，ExpressionLearner，JargonMiner实例，无论配置文件中是否在此聊天流启用了他们。
    - [ ] 可优化方向：将其置为Optional，在不启用的情况下不进行初始化
    - [ ] 当配置文件重载时，重新分析所有启用判定，所有HFC进行并行检查，将启用的进行实例化。不启用的实例化移除引用，释放内存。