来提交你的插件吧!
有疑问?来看看呗!

插件详情

persistent_history

基本无需设置的简单永久记忆插件

记忆
永久记忆
版本v0.2.6.0
作者komeiji_shiki
Star1
更新2025/11/23

插件说明

Persistent Chat Plugin for AstrBot

版本: 0.2.6.0
作者: komeiji_shiki

一个为 AstrBot 设计的强大插件,可以持久化保存聊天记录(包括图片),为多模态LLM提供带图文的上下文,并提供了一套完整的聊天记录管理命令。

✨ 核心功能

  • 持久化聊天记录: 将群聊和私聊的对话(包括文本和图片)保存到本地SQLite数据库中,实现永久记忆。
  • 多模态上下文注入: 在向LLM(如Gemini)发起请求时,能将历史聊天中的图片和文本一起注入,让AI“看懂”之前的对话内容。
  • 智能图片处理:
    • 自动下载对话中的图片并保存在本地。
    • 在注入上下文时,将图片转换为Base64格式,符合多模态模型的要求。
    • 智能识别纯图片消息:当用户只发送图片时,会自动生成一条提示性文本(如 [用户最新消息只发送了图片]),帮助LLM理解用户意图。
  • 防止消息重复: 采用了精确的事件优先级和职责分离逻辑,完美解决了聊天上下文被重复注入的问题。
  • 灵活的配置: 用户可以通过配置文件自由开关各项功能,如是否记录私聊、是否注入上下文等。
  • 强大的管理命令: 提供了一套简单易用的命令来查看、清除当前会话或所有会话的聊天记录。

⚙️ 配置

| log_private_messages | false | true 为开启私聊记录,false 为关闭。 |
| log_group_messages | true | true 为开启群聊记录,false 为关闭。 |
| log_self_messages | true | true 为记录机器人自己的回复,false 为关闭。 |
| inject_context | true | true 为开启上下文注入功能,false 为关闭。 |
| max_history_messages | 20 | 控制每次请求时,最多回顾多少条历史消息。设置为 0 可禁用注入。 |

📖 使用方法 (命令)

插件提供了一组命令来管理聊天记录。

基础命令: /chathistory


view - 查看历史记录

查看当前会话(群聊或私聊)的最近聊天记录。

  • 用法: /chathistory view [条数]
  • 别名: 查看
  • 示例:
    • /chathistory view (默认查看最近5条)
    • /pchat view 15 (查看最近15条)
  • 说明: 为了防止刷屏,结果将以图片形式发送。最大可查看50条。

clear - 清空当前会话记录

清空当前会话的所有聊天记录以及关联的本地图片文件。

  • 用法: /chathistory clear
  • 别名: 清空
  • 示例: /聊天历史 clear
  • 注意: 此操作不可逆,但只会影响你发送命令所在的群聊或私聊。

clear_all - 清空所有记录 (仅管理员)

清空数据库中所有会话的聊天记录,并删除所有已保存的图片。

  • 用法: /chathistory clear_all
  • 别名: 清空全部
  • 权限: 仅限管理员 (Admin)
  • 警告: 这是一个非常危险的操作,会删除所有人的聊天记忆。请谨慎使用!

🔧 技术实现简述

本插件通过监听两个关键的AstrBot事件来工作:

  1. @filter.event_message_type(priority=10): 当用户或机器人发送消息时,此函数会以较高的优先级(数字越大优先级越低)执行,将消息内容(文本和图片链接)处理后存入SQLite数据库。
  2. @filter.on_llm_request(priority=1): 当AstrBot准备向LLM发送请求时,此函数会以非常低的优先级(数字越小优先级越高)执行。它会:
    a. 从数据库中读取历史消息。
    b. 从数据库中读取当前用户的消息,分析其内容(纯文本、纯图片或图文混合)。
    c. 根据预设规则,增强由框架提供的当前消息上下文(例如,为其添加图片或提示文本)。
    d. 将历史记录与增强后的当前消息合并,构建一个完整、无重复的多模态上下文,再交由LLM处理。

这种职责分离的设计确保了插件既能提供丰富的历史上下文,又不会与AstrBot核心的上下文处理机制冲突,从而避免了消息的重复注入。

📜 更新日志

  • v0.2.6.0 (最新):
    • 修复: 彻底解决了因插件与框架双重注入导致的当前消息重复问题。
    • 优化: 重构了上下文注入逻辑,实现了插件只负责注入历史和增强当前消息的清晰职责划分。
    • 实现: 完美实现了对纯图片、纯文本、图文混合消息的差异化处理。
  • v0.2.5.0: 尝试将数据库作为唯一上下文来源,解决了纯图片消息的处理,但引入了消息重复问题。
  • v0.2.3.1 - v0.2.4.0: 修复了与Gemini Provider的兼容性问题,并首次尝试优化图片处理逻辑。
  • v0.2.2.0 - v0.2.3.0: 修复了因事件优先级导致的初始消息重复问题,并为私聊上下文添加了用户名。

AstrBot LogoAstrBot 插件市场社区

AstrBot 插件市场 是一个开放的插件分享平台,欢迎开发者们贡献优质插件。本站致力于为 AstrBot 用户提供高质量扩展,帮助您快速找到喜欢的插件,并鼓励社区伙伴分享使用心得、提出改进建议。

相关链接

官方项目主站 官方插件市场 官方项目仓库 侧边展示主站

开发相关

插件开发文档 快速提交插件 官方项目文档

© 2026 AstrBot 插件市场 Made with by Community