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

插件详情

LLM 遗忘插件

当您不满意大模型的回复时,使用 /forget 指令,让它“忘记”最近的N轮对话,以便您重新提问并获得更好的回答。

对话管理
工具
遗忘
版本v1.1.5
作者NigthStar
Star3
更新2025/12/24

插件说明

🧠 AstrBot 遗忘插件

AstrBot Plugin
Python
License

🎯 功能简介

当不满意LLM的回复时,可以使用指令从AstrBot的上下文管理器中删除指定数量的对话轮次,让大模型"遗忘"这些对话,然后用户重新发送问题,让LLM重新回复。

✨ 核心特性

  • 🔮 智能遗忘: 支持删除1-10轮对话,精准控制遗忘范围
  • ↩️ 反悔功能: 支持取消遗忘操作,恢复被删除的对话
  • ⏰ 自动清理: 自动清理过期的删除记录,防止内存泄漏
  • 📊 状态查询: 随时查看遗忘状态和可恢复的对话详情
  • 🔒 会话隔离: 按会话和用户隔离,互不影响
  • 📚 帮助系统: 完整的使用帮助和指令说明
  • 🚀 并发安全: 引入异步锁机制,确保在高并发场景下的稳定运行,杜绝竞态条件。
  • 🛠️ 健壮设计: 采用事件钩子等高级特性,智能判断反悔时机,避免误操作。

🚀 安装方法

方法一:通过插件市场安装(推荐)

  1. 打开 AstrBot WebUI。
  2. 进入"插件管理"页面。
  3. 在插件市场中搜索"遗忘插件"(llm_amnesia)。
  4. 点击安装即可。

方法二:手动安装

  1. 克隆本仓库到 AstrBot 插件目录
cd AstrBot/data/plugins
git clone https://github.com/SinkAbyss/astrbot_plugin_llm_amnesia.git
  1. 重启 AstrBot 或在 WebUI 中重载插件

📖 使用说明

指令列表

指令 描述 示例
/forget 遗忘最新1轮对话 /forget
/forget [n] 遗忘最新n轮对话 /forget 3
/cancel_forget 取消遗忘,恢复对话 /cancel_forget
/forget_status 查看遗忘状态 /forget_status
/forget_help 显示帮助信息 /forget_help

使用场景

场景1:不满意AI回复时重新生成

当你对AI的回复不满意时,可以使用遗忘功能让AI重新回答:

用户: 帮我写一个Python函数来计算斐波那契数列
AI: def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)
用户: /forget  ← 不满意这个递归实现,想要更高效的版本
AI: ✅ 已遗忘最新一轮对话
被删除的对话:
👤 你: 帮我写一个Python函数来计算斐波那契数列
🤖 AI: def fibonacci(n):...
💡 在下一条消息发送前,发送 /cancel_forget 可以恢复这段对话
用户: 帮我写一个Python函数来计算斐波那契数列
AI: def fibonacci(n):
    if n <= 1:
        return n
    a, b = 0, 1
    for _ in range(2, n+1):
        a, b = b, a + b
    return b  ← 获得了更高效的迭代实现

场景2:批量遗忘多轮对话

当你有多轮不满意的对话时,可以批量删除:

# 假设有以下对话历史:
# 轮次1: 你好 -> 你好!有什么可以帮助你的吗?
# 轮次2: 写首诗 -> 春风拂面花自开...
# 轮次3: 再写一首 -> 雨夜窗前思故乡...
# 轮次4: 写首词 -> 明月几时有...

用户: /forget 3
AI: ✅ 已遗忘 3 轮对话

删除了 3 轮对话:

轮次1:
👤 你: 写首诗...
🤖 AI: 春风拂面花自开,柳绿桃红映山崖。

轮次2:
👤 你: 再写一首...
🤖 AI: 雨夜窗前思故乡,灯火阑珊夜未央。

轮次3:
👤 你: 写首词...
🤖 AI: 明月几时有,把酒问青天。

💡 在下一条消息发送前,发送 /cancel_forget 可以恢复这些对话

场景3:使用反悔功能

不小心删除了重要对话,可以立即恢复:

用户: 帮我总结这篇文章的主要内容
AI: [详细的总结内容...]
用户: /forget  ← 误操作,不小心删除了
AI: ✅ 已遗忘最新一轮对话
用户: /cancel_forget  ← 立即反悔,恢复对话
AI: ✅ 已恢复被删除的对话
恢复的对话:
👤 你: 帮我总结这篇文章的主要内容
🤖 AI: [详细的总结内容...]
对话已恢复到之前的状态

场景4:查看遗忘状态

随时查看当前的遗忘状态:

用户: /forget_status
AI: 📝 遗忘状态

你有可恢复的遗忘记录:
⏰ 删除时间: 5分钟前
🔄 删除轮次: 3轮
💬 删除消息数: 6条

💡 发送 /cancel_forget 可以恢复这些对话

🔧 技术实现

核心原理

基于AstrBot官方文档推荐的对话管理方式:

# 正确的获取方式
unified_msg_origin = event.unified_msg_origin
conv_mgr = self.context.conversation_manager
curr_cid = await conv_mgr.get_curr_conversation_id(unified_msg_origin)
conversation = await conv_mgr.get_conversation(unified_msg_origin, curr_cid)

批量删除算法

使用智能算法查找和删除多轮对话:

def find_conversation_rounds(self, conversation_history: List[dict], round_count: int):
    """从后往前查找指定数量的用户-助手对话轮次"""
    # 智能查找算法,确保删除正确的对话轮次

🛠️ 配置选项

限制设置

  • 最大遗忘轮次: 10轮
  • 自动清理时间: 30分钟
  • 反悔时间限制: 下一条消息发送前

🛠️ 健壮性与安全

  • 并发安全: 使用 asyncio.Lock 保护共享数据,杜绝竞态条件,防止后台任务崩溃。
  • 会话隔离: 会话和用户完全隔离,互不影响。
  • 错误处理: 完善的 try...except 块捕获和记录异常,防止插件意外退出。
  • 内存管理: 后台任务会定时清理超过30分钟的遗忘记录,防止内存泄漏。

📚 开发信息

插件结构

astrbot_plugin_forget/
├── main.py              # 主要插件代码
├── metadata.yaml        # 插件元数据
├── requirements.txt     # 依赖库(当前为空)
├── README.md           # 使用说明

依赖要求

  • AstrBot v3.0+
  • Python 3.8+
  • 无额外第三方依赖

📝 更新日志

v1.1.5 (2025-11-15)

  • 🐛 Bug 修复:
    • 修复了执行 /forget_status 等插件指令时,会意外清除可反悔记录的严重Bug。
  • 🔒 健壮性增强:
    • 引入 asyncio.Lock 解决并发访问共享数据时的竞态条件问题,防止后台清理任务崩溃。
  • ✨ 代码质量:
    • 使用 dataclass 替代复杂的元组来定义数据结构,大幅提升了代码的可读性和可维护性。
    • 重构了 forget_conversations 函数,使用单次循环和切片操作提升性能。

v1.1.0 (2025-11-12)

  • ✅ 新增批量遗忘功能,支持1-10轮对话
  • ✅ 新增 /forget_help 帮助指令
  • ✅ 增强 /forget_status 状态显示
  • ✅ 优化用户反馈信息
  • ✅ 完善错误处理机制

v1.0.0 (2025-11-12)

  • ✅ 基础遗忘功能
  • ✅ 反悔功能
  • ✅ 状态查询功能
  • ✅ 自动清理机制
  • ✅ 会话用户隔离

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

开发环境搭建

  1. Fork 本仓库
  2. 克隆到本地
  3. 在 AstrBot 插件目录中创建符号链接
  4. 开始开发

代码规范

  • 使用类型注解
  • 添加充分的注释
  • 遵循 PEP 8 规范
  • 添加异常处理

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🔗 相关链接

  • AstrBot 官方文档
  • AstrBot 插件开发指南
  • AstrBot 社区

💬 联系方式

如有问题或建议,欢迎:

  • 提交 Issue
  • 加入 AstrBot 官方交流群
  • 发送邮件至: 1053757925@qq.com

⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!

享受你的遗忘插件吧! 🧠✨

AstrBot LogoAstrBot 插件市场社区

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

相关链接

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

开发相关

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

© 2026 AstrBot 插件市场 Made with by Community