Files
mai-bot/代码备忘.md
2026-03-11 20:18:30 +08:00

3.2 KiB
Raw Blame History

代码备忘

  • 检查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管理
  • 对于旧的消息需要重新计算其Hashmd5 -> 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无论任何情况都将初始化ExpressionReflectorExpressionLearnerJargonMiner实例无论配置文件中是否在此聊天流启用了他们。
    • 可优化方向将其置为Optional在不启用的情况下不进行初始化
    • 当配置文件重载时重新分析所有启用判定所有HFC进行并行检查将启用的进行实例化。不启用的实例化移除引用释放内存。