GNU Affero General Public License v3.0

项目介绍

Him666233/astrbot_plugin_group_chat_plus 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 GNU Affero General Public License v3.0 许可证,目前获得 204 个 Star、30 次 Fork。

仓库全名
Him666233/astrbot_plugin_group_chat_plus
开源许可证
GNU Affero General Public License v3.0
Star 数
204
Fork 数
30
未关闭 Issue
20

README 摘要

群聊增强插件 (Chat Plus) 一个以 AI读空气 为核心的群聊增强插件,让你的Bot更懂氛围、更自然地参与群聊互动 ⚠️ 注意: AstrBot平台自带的说明文档查看器有一定的问题,可能会导致点击跳转按钮之后,没办法跳转到正常的说明文件中,建议直接在项目的github仓库中查看或者是直接下载压缩包,然后解压自行翻看 快速开始 • 功能总览 • 推荐配置 • 更新日志 深度指南与常见问题 • 消息工作流程详解 • 配置项完整参考 • 项目结构说明 • 桌面端兼容说明 🚨 重要声明:防盗版与安全警告 本插件完全免费且开源,不会以任何形式进行商业收费! 近期我们发现有人疑似在其他渠道贩卖本插件。在此郑重声明: 本插件永久免费、开源,不存在任何付费版本,不会进行任何商业性收费行为 唯一官方开源仓库:GitHub - Him666233/astrbotplugingroupchatplus 唯一官方获取渠道:上述 GitHub…

完整内容见 GitHub 原始 README 或本页 。

常见问题

astrbot_plugin_group_chat_plus 用什么语言开发?

主要使用 Python 编写,采用 GNU Affero General Public License v3.0 许可证,目前有 204 个 Star。

astrbot_plugin_group_chat_plus 可以免费商用吗?

仓库标注的许可证为 GNU Affero General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 astrbot_plugin_group_chat_plus 的源码?

可以直接克隆仓库:git clone https://github.com/Him666233/astrbot_plugin_group_chat_plus.git,默认分支为 main;安装与运行步骤见仓库 README。

astrbot_plugin_group_chat_plus 最近还在维护吗?

仓库最近一次更新为 9月24日,当前有 20 个未关闭 Issue;Star 数为 204,可作为社区活跃度的参考。

简要分析

热度分
266
价值分
130
活跃状态
活跃

语言占比

CSS
HTML
JavaScript
Python

Release

README

群聊增强插件 (Chat Plus)


Version AstrBot License

一个以 AI读空气 为核心的群聊增强插件,让你的Bot更懂氛围、更自然地参与群聊互动

⚠️ 注意: AstrBot平台自带的说明文档查看器有一定的问题,可能会导致点击跳转按钮之后,没办法跳转到正常的说明文件中,建议直接在项目的github仓库中查看或者是直接下载压缩包,然后解压自行翻看

快速开始 • 功能总览 • 推荐配置 • 更新日志

深度指南与常见问题 • 消息工作流程详解 • 配置项完整参考 • 项目结构说明 • 桌面端兼容说明


🚨 重要声明:防盗版与安全警告

本插件完全免费且开源,不会以任何形式进行商业收费!

近期我们发现有人疑似在其他渠道贩卖本插件。在此郑重声明:

  • 本插件永久免费、开源,不存在任何付费版本,不会进行任何商业性收费行为
  • 唯一官方开源仓库:GitHub - Him666233/astrbot_plugin_group_chat_plus
  • 唯一官方获取渠道:上述 GitHub 仓库 及 内部内测交流群(QQ群:1021544792)
  • 从其他渠道获取到的版本可能被篡改并包含恶意代码或病毒,请务必通过官方渠道获取,保障自身安全

如果有人向你收费或在非官方渠道分发本插件,请提高警惕!


⚠️ 使用前必读

关闭AstrBot官方自带的主动回复功能! 本插件的智能回复与官方主动回复是完全独立的两套系统,同时开启会导致重复回复、刷屏、API费用翻倍等问题。如果您有其他主动回复/主动对话类插件也建议关闭,避免冲突。

关闭平台的"只 @ 机器人是否触发等待"(empty_mention_waiting)! 该功能与插件的群聊等待窗口(GWW)存在冲突:平台的空 @ 等待机制会在群级别拦截任意用户的下一条消息,人工插入 @bot 后重新入队,可能导致插件认错消息发送者。本插件的群聊等待窗口已完全覆盖该场景,且按用户粒度隔离等待,不会劫持他人消息。如需空 @ 等待行为,请开启插件的 enable_group_wait_window 并按需配置 group_wait_window_at_mode 等参数。

必须开启平台的"群聊上下文感知"! 这是本插件正常工作的关键前提之一。不开启时,插件拿到的群聊历史与上下文信息会明显不完整,可能导致读空气判断失真、回复上下文错乱、主动对话判断不准,严重时会表现成"像没理解群里刚刚在聊什么"。推荐配置与原因说明见:深度指南 → 平台配置

图片处理须知: 两种模式可选——(1) 配置 image_to_text_provider_id 后图片会被 AI 转写为文字描述再参与上下文,结果自动缓存省钱(推荐);(2) 留空 image_to_text_provider_id 时直接传递原始图片给多模态 AI(需使用支持图片的多模态模型)。模式(2)理论上可行但未经充分测试,如果发现 AI 仍然看不到图片,请改为填写 image_to_text_provider_id。视频、语音、文件等非图片媒体会被插件自动提取并内联到消息文本中(格式如 [视频: /path]、[语音: /path]、[文件: name, /path]),AI 可通过工具调用自行解析处理。

注意第三方插件回复修改与平台分段回复功能! 本插件的普通消息回复流程走的是平台方的 on_decorating_result → after_message_sent 钩子链路,这意味着其他第三方插件可以在 AI 生成回复后、消息发送前对回复内容进行修改(包括但不限于分段发送、文字转语音、内容清理替换再发送等)。此外,AstrBot 平台自带的「分段回复」功能(platform_settings.segmented_reply)也会在此阶段对消息进行拆分处理。

这些修改操作如果发生在 LLM 生成回复之后、本插件保存回复之前,会导致本插件在 after_message_sent 阶段保存 AI 回复到自定义存储和官方存储时,只能保存到拆分后的第一小段内容,后续分段无法被正常保存;严重时甚至会被识别为"空的 AI 回复",导致整条 AI 回复完全没有被保存到历史记录中。本插件虽然已针对此类场景做了多层防御措施(多段回复文本累积、_saved_messages 保存去重守卫等),但在部分极端情况下仍无法完全避免,因此建议按以下方式操作:

对于 AstrBot 平台自带的「分段回复」功能:如果需要开启分段回复,请务必同时保持 「仅对 LLM 结果分段」(platform_settings.segmented_reply.only_llm_result,默认 true)处于开启状态。该开关确保分段操作仅在 LLM 直接生成的最终结果上进行,避免对其他中间环节的输出进行不必要的拆分。

对于其他会修改 AI 回复内容的第三方插件(如分段发送插件、TTS 插件、回复内容过滤/替换插件等):请检查该插件是否有类似的「仅对 LLM 结果处理」「仅在 AI 回复之后处理」等含义的开关,如有请务必开启。如果该插件没有此类开关,请自行确认其默认行为是否本身就是仅在 LLM 生成最终回复之后才进行处理——如果该插件会在处理时修改 result.chain 的结构(如拆分 Plain 组件等),则存在与本插件的兼容性风险。

关于提示词注入类第三方插件:此类插件(如人格增强、记忆注入、上下文补充等)通过 on_llm_request 钩子向 LLM 请求中注入提示词或上下文。这些注入仅对走插件普通消息回复流程的最终回复生成 AI 生效——因为只有该 AI 调用会经过平台完整的提示词组装流程(build_main_agent → _decorate_llm_request,即平台方会注入提示词钩子的那一条链路)。本插件内部的判断型 AI(读空气 AI、频率调整 AI、主动对话判断 AI)使用的是独立的 LLM 调用,不走平台钩子流程,因此这些第三方提示词注入不会对它们产生任何影响。这是正常现象,无需额外配置。

⚠️ 私聊功能警告

私聊处理功能目前仍在开发中,请勿开启 enable_private_chat! 当前版本的私聊模块尚未完善,开启可能导致异常行为。请耐心等待后续版本正式支持。


❤️ 支持作者(自愿捐款)

本插件由个人开发者用爱发电、投入大量精力独立维护,开发与持续更新压力不小。如果你觉得这个插件对你有帮助,欢迎自愿捐款支持作者,让作者有更多动力继续维护和改进。

⚠️ 重要声明:

  • 捐款完全自愿 — 捐不捐功能完全一样,不会有任何功能差异或特殊对待,纯粹是对作者的支持和认可
  • 官方唯一捐款渠道:爱发电 (Afdian) — afdian.com/a/chat_plus
  • 内部交流群:QQ群 1021544792(可在群内直接联系作者本人)
  • ⚠️ 防骗警告:除上述爱发电链接和 QQ 群内与作者本人直接联系外,任何其他渠道声称代表本插件接受捐款的皆为骗子,请务必提高警惕,谨防上当受骗

🔐 Web 管理面板安全提醒

强烈建议启用 Web 端功能 — Web 管理面板提供了可视化配置编辑、实时统计、会话管理等完善的插件管理体验,比传统 JSON 配置界面更加直观易用。

⚠️ 从旧版本升级的用户请务必注意:v1.2.2-hotfix.1 版本开始对 Web 面板安全机制进行了全面升级(Argon2id 密码哈希、JWT + HttpOnly Cookie + 服务端会话表等),请尽快登录一次 Web 面板,让旧版密码自动透明升级为更强的 Argon2id 哈希,同时堵住各项安全漏洞,确保您的面板安全。

关于配置文件:为什么能下载但不能上传?

出于安全考虑,Web 面板支持下载配置文件,但不支持直接上传配置文件。原因是配置文件内部包含了 Web 面板的敏感安全配置(如密码哈希、JWT 密钥存储路径、IP 访问控制规则等),如果直接允许上传,在上传校验未完全覆盖所有安全字段的情况下,攻击者可能通过伪造配置文件替换对应的安全配置,从而导致面板被入侵。

如需修改配置,建议通过以下方式操作:

  • 方式一(推荐):直接在 Web 管理面板中可视化修改各项配置并保存
  • 方式二:手动前往配置文件所在目录,直接编辑或替换配置文件

配置文件路径:<AstrBot 数据目录>/data/config/astrbot_plugin_group_chat_plus_config.json

AstrBot 插件配置通常存放在 data/config/ 目录下,插件自身的运行数据存放在 data/plugin_data/astrbot_plugin_group_chat_plus/ 目录下。

不确定当前使用的配置文件叫什么名字? 登录 Web 面板后,在「核心控制面板」或「科技树展览」菜单面板的右下角即可看到当前生效的配置文件名称。


📚 文档导航

不知道从哪里看起?根据你的需求选择对应的文档:

你想了解… 去看这个文档
AI 回复太多/太少/读空气不准怎么调? 深度指南 → 常见问题排查
某些 Skill / MCP 工具在开启插件后报参数错配怎么办? 深度指南 → 常见问题排查
Web 管理面板怎么用?打不开怎么办? 深度指南 → Web 管理面板
配置文件怎么下载?下载失败怎么办? 深度指南 → 配置文件下载
插件的工作原理是什么?为什么要"偷天换日"? 深度指南 → 工作原理
平台的"群聊上下文感知"和"自动理解图片"怎么配? 深度指南 → 平台配置
某个配置项是什么意思?默认值是多少? 配置项完整参考
一条消息从收到到回复经历了什么流程? 消息工作流程详解
代码文件结构和各模块职责? 项目结构说明
使用 AstrBot 桌面端?重启不生效?路径找不到? 桌面端兼容说明
我用的其他插件和本插件会冲突吗? 深度指南 → 兼容性
如果 AstrBot 或其他插件改了内部提示词结构,会不会影响兼容? 深度指南 → 兼容性与回退机制
第三方插件往 system_prompt / prompt / contexts 注入内容时,AI 现在能看到哪些? 深度指南 → 兼容性
记忆插件怎么选?为什么推荐适配过的? 深度指南 → 记忆插件

🤝 插件合作

第三方插件兼容性判断

一个其他插件能否与本插件一起使用,取决于它向 AI 注入提示词的方式是否匹配以下任意一条保留路径:

注入方式 说明 保留机制
向 system_prompt 前面插入内容 插件在人格设定之前添加了自己的提示词(如规则块、管理指令等) SystemPromptRewriter 精确命中人格边界,prefix 原样保留
向 system_prompt 后面追加内容 插件在人格设定之后追加了提示词(如状态面板、记忆文本等) SystemPromptRewriter 精确命中人格边界,suffix 原样保留
向 req.contexts 注入对话/工具调用 插件在对话历史数组中添加伪造对话示例、协议消息、伪工具调用等 逐插件追踪提取 → 每个插件独立 [第三方插件注入上下文 - 插件名] 首尾配对标记
向 req.prompt 前后追加长期说明 插件在当前用户消息前后附加了记忆说明、解释文本等内容 逐插件追踪提取 → 每个插件独立 [第三方插件补充 - 插件名] 首尾配对标记,外层 [第三方插件补充信息] 包裹
向 extra_user_content_parts 追加内容 插件通过新版 AstrBot API 在用户消息之外附加内容块 逐插件追踪提取文本 → [第三方插件补充 - 插件名] 标记,原始项同时原样保留

判断方法:查看该插件的源码,找到它的 on_llm_request 钩子,看它修改了 req 的哪些字段、是怎么改的(prepend/append/新增)。只要匹配以上任意一条,即可兼容。

兼容机制的详细原理和风险说明见 深度指南 → 与其他插件的兼容性。

AstrBot智能自学习插件

与 astrbot_plugin_self_learning 建立官方合作关系:

  • 本插件 负责"智能决策何时回复" — AI读空气、动态概率、注意力机制
  • 自学习插件 负责"智能优化如何回复" — 对话风格学习、人格自动优化、好感度系统

两者功能互补,推荐组合使用。欢迎加入 QQ群 1021544792 交流!

工具参数串扰排查

如果你发现某些 Skill / MCP 工具在关闭本插件时正常、开启本插件后更容易出现参数错配,例如:

  • unexpected keyword argument 'silent'
  • Tool handler parameter mismatch
  • 某个工具收到了明显属于另一个工具的参数

可以优先按这个顺序排查:

  1. 确认 AstrBot 当前会话的 provider_settings.tool_schema_mode
    • skills_like:本插件现在会自动把工具提醒降级为"只展示工具名称与功能描述"
    • full / 旧版 AstrBot:仍会完整展示名称、描述和参数
  2. 临时关闭 enable_tools_reminder 再复测一次
    • 如果问题明显缓解,通常说明是提醒层参数提示过细引发的串扰,而不是工具本身损坏
  3. 对照报错工具的真实签名
    • 例如 astrbot_execute_shell 只接受 command / background / env
    • 如果日志里出现了明显属于其他工具的参数(如 Python 工具常见的 silent),就是典型串扰

更详细的背景说明和排障建议见:


🆕 V1.2.3.hotfix.2 更新亮点

本次更新在 v1.2.3.hotfix.1 的基础上追加了 AI 提示词注入顺序优化(提升缓存命中占比与 AI 理解性)、逐插件上下文追踪升级(全字段覆盖+消除重复显示)、Agent 调用非图片媒体全面扩展、消息元数据化防注入、User/Agent 全链路兜底与标注优化,以及 Web 面板 UX 大幅增强(自动刷新机制完善、心跳状态实时同步、IP 管理全面 IPV6 兼容、按钮布局与图表主题适配、悬浮窗移动端适配、访问日志与封禁管理多项修复)和多项消息处理链路 Bug 修复,同时包含全部说明文档的补充与更新。

AI 提示词注入顺序优化与缓存命中提升

  • 缓存友好的提示词拼接顺序 — 全面调整回复 AI(reply_handler.py)、私聊回复 AI(private_chat_reply_handler.py)、读空气 AI(decision_ai.py)、频率调整 AI(frequency_adjuster.py)等全部 AI 模块的提示词拼接顺序:静态指令(角色设定、行为规则)统一放在前面,动态内容(时间信息、聊天记录、用户消息)放在后面。同一静态前缀在连续 API 调用之间保持不变,大幅提升 Anthropic prompt cache 命中占比,降低首 token 延迟与 API 费用
  • 提示词位置引用同步调整 — 所有 AI 提示词中"上方/上述"等位置引用全部更新为"下方",与新的拼接顺序一致,AI 不会因方向措辞与内容实际位置不一致而产生理解偏差
  • 增强提示词防回声 — 回复 AI 与主动对话生成 AI 的提示词中增加防重复/防回声约束,引导 AI 理解"你的任务是生成新的有价值的回复,而不是重复或改写用户刚说的话",减少 AI 无意义复读用户消息的行为

逐插件上下文追踪全面升级

  • monkey-patch 替换为 handler wrapper — 废弃通过 monkey-patch call_event_hook 拦截第三方插件注入的方式,改为直接包装 OnLLMRequestEvent 各 handler,在执行过程中实时写入每个插件的独立注入数据到 event._gcp_per_plugin_injections。不再依赖 Python from-import 语义,消除了 monkey-patch 方式在特定加载顺序下失效的死代码问题
  • 第三方标记从统一编号升级为具名隔离 — prompt 和 contexts 中的第三方插件注入标记从原有的 [第三方插件注入上下文] / [第三方插件片段 N] 统一编号格式,升级为携带插件名称的首尾配对隔离格式(如 [第三方插件:xxx 注入上下文] ... [/第三方插件:xxx 注入上下文]),AI 可明确区分不同插件的注入来源
  • 全字段追踪覆盖 — 新增 system_prompt、extra_user_content_parts、image_urls、audio_urls 四个注入通道的追踪,结合原有的 prompt 和 contexts 追踪,实现第三方插件所有注入通道的完整覆盖,统一走逐插件标记合并管道,消除不同通道注入内容重复显示的问题
  • Web 端与架构文档同步 — Web 面板提示词预览与架构文档中的第三方注入隔离说明同步更新为具名标记格式

Agent 调用兼容性全面扩充

  • 非图片媒体完整支持 — 为群聊增强插件新增视频、语音、文件三类非图片媒体的完整支持:从消息链中提取视频组件(Video)的文件路径、语音组件(Record)的音频路径、文件组件(File)的文件名与路径,分别注入为 [视频: /path]、[语音]、[文件: name] 内联标记。覆盖消息提取、标记内联、缓存剥离前富化、保存传递全链路,与既有图片处理逻辑([图片] / [图片内容: xxx])保持一致
  • 纯语音/文件消息防丢弃 — 语音消息和文件消息在内容检查环节视为有效内容,防止纯语音或纯文件的合法消息在入口处被误判为空消息而丢弃

消息系统提示词统一元数据化(杜绝提示词注入伪造)

  • 元数据区与用户内容区严格分离 — 所有系统级提示(时间戳 [2026-05-29 周四 14:30:00]、发送者信息 Name(ID:12345)、[戳一戳事件] 持久化文本、平台 LTM 历史标记等)统一注入到冒号 : 之前作为系统元数据区;冒号之后仅保留用户消息原始内容(含 @ 提及内联解析 [At:ID|解析结果])。用户无法通过消息内容伪造时间戳、发送者身份或戳一戳事件文本,从源头杜绝提示词注入攻击面
  • [戳一戳提示] 运行时注入在分隔符之外 — 运行时戳一戳提示(由主流程在上下文拼接阶段追加)不进入冒号前元数据区,而是追加到分隔符之外,与持久化戳一戳事件文本严格区分

戳一戳事件双层标注机制与引用消息格式优化

  • 戳一戳事件双层标注 — 持久化戳一戳事件文本([戳一戳事件])注入到冒号前的系统元数据区,随消息一起保存到历史上下文,不会被后续过滤清理移除;运行时戳一戳提示([戳一戳提示])由主流程在上下文拼接阶段追加到分隔符之外,仅在当前轮次可见。双层标注机制确保:历史记录保留完整的戳一戳事件信息,过滤清理不会误伤必要上下文
  • 引用消息格式修复 — 引用消息在构建时添加 >>> 分隔符与换行,将引用内容与用户新消息正文视觉隔离:[引用: Name(ID:xxx): 原文内容...]\n>>>\n用户消息正文。修复被引用者为 AI 自身时自动标注 (你)(格式:Name(ID:xxx)(你)),多条引用各自独立解析,不再合并为单一引用块
  • 空引用消息保留框架 — 引用消息源内容为空或无法获取时,不再丢弃整个引用标记,而是保留发送者框架并附注"无法获取内容",确保 AI 知晓用户正在回复某条消息(而非凭空说话)
  • 过滤规则与全部文档同步更新 — 内容过滤规则中的相关正则模式同步适配新引用格式,所有说明文档同步更新

用户名称解析全链路兜底

  • 统一兜底策略 — 统一修复所有用户名称解析失败时的兜底行为:当名称解析结果为裸 ID、空字符串或与 ID 完全相同时,替换为 未知用户(保留原始 ID 字段不变)。覆盖戳一戳发送者/目标者展示、@ 提及内联解析、转发消息发送者标注、引用消息被引用者展示、普通消息发送者信息注入、Smart 并发批量消息等全链路场景,确保名称字段永远不泄露原始用户 ID,同时 ID 字段始终存在供日志排查
  • Smart 并发批量消息名称保护 — Smart 并发批量保存消息时,每条消息独立执行名称兜底检查,不因某条消息的名称异常而影响同一批次中其他消息的保存

主动对话重复启动防护

  • 后台循环任务身份识别 — 主动对话后台检查循环(_background_check_loop)现在记录当前 asyncio.Task 身份(_own_task = asyncio.current_task()),循环条件从仅检查 _is_running 升级为同时校验 cls._background_task is _own_task。当插件类被重复加载(如插件重载)导致旧循环仍在运行时,旧 task 身份与新 task 不匹配,旧循环自动退出,彻底杜绝"旧循环未停止+新循环已启动"的双循环并发冲突
  • 普通回复时主动对话状态双重保险关闭 — record_bot_reply 方法中,当记录普通回复(非主动对话)时,新增主动对话活跃状态检查与自动关闭逻辑:如果检测到 proactive_active=True(如主动对话流程异常退出未清理),普通回复会主动将其置为 False,防止残留的活跃标记干扰后续主动对话的正常触发

多轮工具调用链路修复

  • LLM_RESULT 误判为最终回复修复 — 修复多轮工具调用中 LLM_RESULT 被误判为最终回复导致后续工具调用和 AI 回复全部丢失的问题:on_decorating_result() 钩子不再对 LLM_RESULT 类型强制完成保存(因为多轮调用中 AI 先说话再调工具时,中间文本也是 LLM_RESULT,若强制完成会将第一段中间话误当最终回复)。正常完成流程由 on_llm_response → _agent_done_flags → after_message_sent 处理;异常终止时通过 GENERAL_RESULT 类型检测触发强制保存,确保所有已累积的中间文本和已完成的工具调用记录不丢失
  • 工具调用异常时反馈结果保存修复 — 修复工具循环调用过程中出现报错时,已完成的工具调用记录和 AI 中间回复文本无法正常保存到历史存储的问题:异常终止时,通过 _finalize_bot_reply_save 兜底构建交错排列的工具调用记录(多轮顺序保留),确保异常中断场景下的上下文完整性

概率过滤信息描述纠正

  • “概率过滤失败"纠正为"概率过滤未通过” — 全面调整概率过滤链路中的日志、Web 流程图节点标签、缓存消息注释等信息输出,将"概率过滤失败"改为"概率过滤未通过"。概率过滤未命中不是功能失败,而是概率模型的正常随机结果("未通过"更准确反映"不需要回复"的业务意图),避免用户误以为系统故障

IPV6 全面兼容与边界管控

  • 全安全机制 IPV6 完整支持 — Web 面板的 IP 过滤(白名单/黑名单)、IP 封禁管理、防爬虫检测、速率限制、暴力破解防护等全部安全机制均已完整适配 IPv6 地址。security.py 中 IP 规范化为 RFC 5952 标准形式(IPv6 压缩、IPv4 点分十进制),server.py 中客户端 IP 获取同样走规范化管道,确保 IPv4/IPv6 统一比较和存储
  • IP 管理配置边界警告 — 配置 schema 和 Web 前端中新增 IP 地址输入校验与边界警告:IP 黑白名单和受保护 IP 列表中的非法 IPv4/IPv6 地址配置项在加载时输出明确 WARNING 日志(配置警告:xxx 不是合法的 IPv4/IPv6 地址),IPv6 地址说明文字(支持任意格式,系统自动规范化)同步展示在 Web 面板编辑区和文档中
  • IP 封禁错误页增强 — IP 被封禁后的错误页(/error?code=blocked)增强了解封状态自动轮询检测机制,封禁到期后自动跳转至登录页(已认证用户直达面板),手动封禁可通过 Web 面板「IP 封禁管理」解封
  • Web 面板监听地址双栈说明 — 监听地址 0.0.0.0 或 :: 时自动启用双栈(同时监听 IPv4 + IPv6),启动日志输出本机所有 IPv4 和 IPv6 地址的访问入口
  • localhost 归一化 — Web 面板启动日志中将 localhost 统一归一化为 127.0.0.1,避免部分环境 localhost 解析到 ::1 导致点击链接时浏览器默认行为不一致

Web 面板 UX 全面增强

自动刷新机制重构
  • 会话列表 3 秒自动刷新 — 会话管理页新增 3 秒间隔自动刷新:进入会话详情页自动暂停列表刷新、返回列表自动恢复,编辑模式完全禁用自动刷新,避免编辑过程中列表跳变
  • 聊天记录增量更新 — 聊天记录查看改为内容比对增量更新策略:仅更新变更的消息条目而非整体替换 DOM,保留用户滚动位置不跳动。如增量更新异常(数据不一致)自动回退为全量重建,确保数据完整性
  • 心跳状态自动/手动刷新 — 心跳状态面板支持自动刷新(定时器永不停仅设标志位控制是否渲染更新)和手动刷新按钮(🔄),Leader 心跳成功后广播 session-ok 事件,Follower 标签页接收广播同步 lastHeartbeatSuccessAt,解决 Follower 长期不更新心跳成功时间戳的问题。_loadHeartbeatStatus 增加兜底逻辑:只要 verify 成功且 _authMonitor 尚未记录过心跳成功时间,直接用当前时间初始化,确保首次加载即显示有意义的时间戳
  • 图表页面自动刷新 — 图表页新增 3 秒自动刷新开关 UI(含绿色圆点状态指示器),用户可自由启停
  • 速率窗口修复 — 修复前端自动刷新请求被计入速率限制窗口的问题:后端新增 X-GCP-Auto-Refresh 请求头豁免机制(值为 1 时跳过速率窗口计数),前端所有自动刷新请求统一携带该头;同时心跳请求(/api/auth/heartbeat)无论是否携带该头均不计入速率窗口
  • 无自动刷新页面提示 — 访问日志页刷新按钮旁新增"本页无自动刷新机制"提示文字(适配桌面/平板/手机三端及明暗双主题),api.verify 新增 options 参数支持
页面交互与布局修复
  • 全页面手动刷新 + toast 反馈 — 补充所有页面的手动刷新按钮,点击后显示 toast 反馈(“刷新成功”/“刷新失败”);编辑模式下手动刷新跳过以避免覆盖未保存内容;手动刷新始终强制全量重载数据
  • 会话列表计数移至右侧 — 会话卡片的群聊/私聊计数标签从左侧移至右侧,视觉层次更清晰
  • 按钮布局位移修复 — 修复 Web 面板中部分按钮因 CSS 布局变更导致的位移/错位问题
  • 插件重启期间自动刷新静默容错 — 插件重启/重载期间自动刷新请求遇到网络错误或 5xx 时静默忽略(不弹 toast),避免重启过程中大量错误提示干扰用户体验
图表与主题适配
  • 柱状图始终重绘适配主题 — 修复柱状图在明暗主题切换时颜色不适配的问题:移除主题色缓存守卫,图表每次更新始终重绘并使用 CSS 变量动态适配当前主题色;统一概率柱状图颜色为红色
  • "图表无会话"手动刷新修复 — 修复当图表页面无会话数据时,手动刷新按钮被守卫逻辑误拦截无效的问题:去除无会话时的刷新守卫,用户可在任意状态下手动刷新
悬浮窗与移动端优化
  • 悬浮窗拖拽超屏与内容截断修复 — 修复悬浮窗拖拽超出手势区外导致无法拖动和内容截断的问题,补全移动端触摸拖动(touchstart / touchmove / touchend)支持
  • 悬浮窗默认宽度防撑大 — 为悬浮窗设置默认宽度(min-width / max-width),防止内容过长时悬浮窗被撑大到超出可视范围
  • 移动端自定义缩放拖拽手柄 — 移动端新增自定义缩放拖拽手柄(prompt-floater-resize-handle),桌面端使用原生 resize 属性,移动端隐藏原生 handle 显示自定义大尺寸手柄
访问日志与封禁管理
  • 访问日志桌面端表格优化 — 附注列改用 auto 列宽并截断溢出内容(text-overflow: ellipsis),移动端卡片布局不受影响
  • 封禁 IP 备注 128 字符限制 — 封禁原因输入框限制 128 字符并显示实时计数,前端限制 + 服务端同步截断双重保障,列表原因文字自动换行不溢出
  • 封禁列表桌面端短列 nowrap — 来源、状态等短列添加 white-space: nowrap 防止换行导致行高参差不齐,原因列保持自动换行
其他 UX 增强
  • Web 面板启动日志三级地址输出 — 启动日志从仅显示 localhost 升级为完整输出本地(localhost + 127.0.0.1)、内网(IPv4 + IPv6,过滤链路本地地址 fe80::)、公网三级访问地址。公网 IP 多来源去重获取(ipify / ifconfig.me / icanhazip),任一获取成功即显示
  • Web UI 前端缩放按钮 — 流程图页面新增缩放控件(+ 放大 / ⊡ 适应屏幕 / − 缩小),仅在流程图页面显示,配置面板打开时自动隐藏,适配桌面和移动端尺寸

AstrBot v4 平台重启认证与 Web 重置行为修正

  • JWT 优先 + 密码降级重启认证 — Web 面板触发的插件重载和 AstrBot 重启操作,认证方式从单一密码登录升级为 JWT 优先:直接通过 dashboard 配置中的 jwt_secret 签发 HS256 token 调用 AstrBot 仪表盘 REST API(/api/plugin/reload、/api/stat/restart-core);JWT 签发失败时自动降级为密码登录(兼容旧版 AstrBot v3),确保不同版本平台的平滑兼容
  • Web 端重启状态轮询反馈 — 新增 restart_status 接口(GET /api/restart-status),前端在触发重启/重载后定期轮询该接口获取操作进度(pending → in_progress → success/failed),状态栏文案从"正在重启…"静态文本升级为动态进度反馈
  • 会话管理重置行为修正 — Web 面板「会话管理」中每张会话卡片上的「重置」按钮行为修正为:仅清运行时状态(注意力、情绪、概率、冷却、Smart 待合并记录等),不删除聊天记录文件,不设历史截止时间戳,重置后自动触发插件重载使清理生效。与聊天指令 gcp_reset_here 的行为明确区分(后者会删文件和设截止戳)。补全 reset_here 与 clear_image_cache 的 reload 分支中此前缺失的重载触发调用
  • cutoff 日志补全 — 补全 gcp_reset_here 和 gcp_reset 操作中的历史截止时间戳相关日志输出,方便排查跨重置的历史记录问题

戳一戳消息后提示词注入修复

  • 反戳后 ID/名称/时间戳注入不生效修复 — 修复戳一戳消息处理流程中的一个隐蔽 Bug:当收到戳一戳消息并在处理流程中触发直接反戳(poke_reverse_on_poke_probability > 0)后,插件在发送反戳动作后通过 event.stop_event() 或提前 return 终止了后续处理链路,导致用户开启的 include_sender_info(用户 ID 与名称解析)和 include_timestamp(时间戳提示词注入)等元数据注入功能不生效。修复后的流程确保反戳动作完成后的消息保存、元数据注入、上下文缓存更新等步骤不被跳过

gcp_clear_image_cache 旧版缓存兼容清理

  • 旧版残留路径兼容清理 — gcp_clear_image_cache 指令和 Web 面板图片缓存清理操作现在同时检查并清理旧版残留路径 image_description_cache.json(当前主缓存文件为 image_cache/descriptions.jsonl),确保从旧版本升级的用户不会留下无法清理的孤立缓存文件

其他细节修复

  • proactive_system_prompt 变量名拆分遗漏修复 — 修复主动对话管理中一个内部变量名拆分遗漏的 Bug:mark_proactive_chat_message 和实际发送的消息文本使用了不一致的变量引用路径,特定配置组合下可能导致主动对话提示词拼接异常
  • 过滤清理规则与工具循环修复 — 调整内容过滤清理规则中可能导致正则回溯超时的表达式;修复工具循环调用时因异常导致后续工具记录及 AI 回复无法正常保存的问题(与多轮工具调用链路修复互补)
  • Web 面板按钮布局位移修复 — 修复因 CSS flex 布局变更导致的配置保存按钮与其他控件之间的间距偏差
  • 编辑保存直接覆盖源文件 — Web 面板文件管理中的在线编辑保存逻辑改为直接覆盖源文件(而非新建副本),避免编辑后的文件与原文件路径不一致

📚 文档补充与更新

  • 全部说明文档更新 — 更新了项目中所有说明文档的版本号、功能描述和配置说明,确保与 V1.2.3.hotfix.2 版本的实际功能保持一致
  • 配置项文档补充 — CONFIG_REFERENCE.md 同步了关闭平台「只 @ 机器人是否触发等待」(empty_mention_waiting)的提醒说明(该平台行为与本插件冲突),补充了 IPV6 相关配置的边界说明
  • 架构文档更新 — ARCHITECTURE.md 更新了第三方插件注入隔离、逐插件追踪机制、Web 面板安全机制、AstrBot v4 兼容性等章节,同步了 Web 面板访问地址输出说明
  • 消息工作流程文档更新 — MESSAGE_WORKFLOW.md 补充了消息元数据区机制、戳一戳双层标注、引用消息格式等流程说明
  • 项目结构文档更新 — PROJECT_STRUCTURE.md 更新了模块列表和版本信息

兼容性

  • 完全向下兼容 v1.2.3.hotfix.1 配置,升级无需修改任何配置项
  • 所有新功能默认使用安全合理的默认值
  • IPV6 兼容性对所有安全机制透明生效,无额外配置开关
  • 第三方插件提示词全面兼容:第三方插件通过 system_prompt 前置/后置、req.contexts、req.prompt、extra_user_content_parts、image_urls、audio_urls 任一通道注入的内容均可被 AI 看到,且以具名标记隔离,详见 深度指南 → 兼容性

📖 功能总览

核心机制

  • AI读空气 — 两层过滤:概率筛选 + AI智能判断,精准控制回复时机;在 Smart 并发模式下,读空气判断也会参考当前消息之后紧接着到达的追加消息,而不是只看单条消息
  • 动态概率系统 — 传统模式下回复后临时提升促进连续对话,时段概率模拟作息节奏;注意力模式开启后由注意力机制接管回复后加成
  • 注意力机制 — 多用户同时追踪(0-1连续值),指数衰减,情绪检测,注意力溢出;注意力冷却已升级为"候选冷却 → 正式冷却"的双阶段结构,专门减少普通概率路径消息的误伤;"读空气未回复衰减"改为独立机制,可在无冷却模式下单独生效,也可在冷却模式下与正式冷却协同(仅在开启注意力模式时生效)
  • 智能缓存 — "缓存+转正"机制,未回复消息保留上下文,下次回复时自动合并;支持冷群自动转正,群聊长时间静默后自动将缓存写入历史,避免过期丢失
  • 记忆系统 — 支持 LivingMemory(混合检索+人格隔离)和 Legacy 双模式,auto 模式自动检测适配插件
  • 并发协调 — 群聊支持 legacy / smart 两种并发模式;smart 会按真实到达顺序选主消息并批量感知追加消息,legacy 保持传统串行兜底;普通对话、主动对话、冷群转正之间自动互斥,无需额外配置
  • Smart批次回复提示增强 — 可选开关(enable_smart_batch_reply_hint,默认开启)。开启后,Smart 模式下回复阶段会动态插入一段提示:当前触发 anchor 消息的用户仍是主要回复对象,但 AI 可以像真人一样自然顺带回应批次中来自其他用户的消息;不值得回的消息也可以大方忽略。该提示只存在于运行时上下文,保存历史前会自动过滤(通过 MessageCleaner / ContextManager 清洗),不会污染长期上下文

社交行为

  • 主动对话 — 沉默后AI自然发起话题,自适应互动评分系统,越聊越开心
  • 对话疲劳 — 连续对话后逐渐降低回复倾向,模拟真人节奏
  • 拟人增强 — 沉默状态机、兴趣话题检测、决策历史一致性
  • 吐槽系统 — 连续被无视时AI会"吐槽",让Bot更有性格

真实感增强

  • 打字错误 — 基于拼音相似性的自然错别字 (默认2%概率)
  • 情绪系统 — 根据对话检测情绪状态,影响回复语气
  • 回复延迟 — 模拟打字速度,避免秒回
  • 频率调整 — 自动分析群聊节奏,动态调整基础回复频率;与传统回复后提升解耦,可在提升结束后继续维持基础概率修正

消息处理

  • 多媒体消息 — 支持图片(转文字或直传多模态)、视频、语音、文件等媒体类型的识别与传递;媒体文件路径内联到消息文本中(如 [视频: /path]、[语音: /path]、[文件: name, /path]),AI 可通过 Agent 工具调用自行解析;纯占位标记在缓存时剥离,成功解析的文字描述保留
  • 转发解析 — 面向 QQ / OneBot 场景解析合并转发消息,支持在深度限制内展开嵌套转发,并将整条转发内容折叠为单条可读文本继续参与后续 AI 流程
  • 关键词系统 — 触发词跳过概率/智能模式,黑名单词直接过滤
  • 戳一戳 — 智能响应QQ戳一戳,支持反戳和回复后戳。戳一戳事件解析为两层:[戳一戳事件](持久化事件文本,注入到消息格式中「冒号前」的系统元数据区域,随消息一起保存到历史上下文,不会被后续过滤清理)与 [戳一戳提示](运行时提示,追加在上下文分隔符 ===== 之外,仅当前轮 AI 可见,保存时由 MessageCleaner 过滤规则自动移除)。对本插件实际接手处理的真实戳一戳事件,会把"谁戳了谁"的事件语义保留到历史上下文中(官方存储与自定义存储双写),便于后续AI理解。触发反戳时,会先后保存用户戳一戳事件(user视角)和AI反戳动作(assistant视角),均绑定当前会话。启用"戳过对方追踪提示"后,还会在短时间内追踪被AI戳过的用户;若追踪人数超过上限,会移除当前最早登记的记录。此行为无独立配置项,是否生效取决于当前 poke_message_mode、平台是否为 QQ+aiocqhttp/OneBot poke notice,以及该群是否允许本插件处理戳一戳消息
  • @消息优先 — @机器人消息跳过所有判断直接回复;@全体成员 与 @他人过滤 独立处理,可单独配置为按普通消息处理、跳过概率筛选、跳过概率+读空气,或仅对当前这条消息临时提升概率;对于单独的、不包含任何信息的 @ 消息,系统会默认启用中性上下文强化,并在通过前置过滤与读空气筛选后,再提醒 AI 优先参考最近上下文但不要强行续话;这层关联会同时受时间窗口和消息数窗口约束。@全体成员 的解析说明会随消息一起保存,供后续缓存转正与历史上下文继续使用
  • 引用/回复消息 — 自动解析消息中的引用(Reply)组件,格式为 [引用 >>> 发送者(ID): 被引用的消息内容],使用 >>> 符号明确分隔"引用"标记与实际的引用内容,帮助 AI 清晰区分哪部分是引用的消息、哪部分是用户正文。引用内容末尾自动追加换行,使正文另起一行,视觉上不会有歧义。若被引用消息的发送者为 AI 自身,会在发送者名称后标注 (你),帮助 AI 识别自己被引用的消息。当被引用内容无法提取时,若发送者信息可用,保留引用框架并标注 (无法获取引用内容);仅当发送者和内容全部缺失时才跳过

安全与管理

  • 指令过滤 — 自动跳过 /help 等指令消息
  • 用户黑名单 — 屏蔽特定用户
  • @他人过滤 — 避免插入他人私密对话
  • 重复拦截 — 防止AI发送重复内容
  • 内容过滤 — 发送前/保存前过滤AI输出
  • 桌面端兼容 — 自动检测 AstrBot 桌面端环境,适配重启机制差异(详细说明)

🚀 快速开始

安装

  1. 在 AstrBot 插件市场搜索安装,或下载本仓库放入 /data/plugins 目录
  2. 重启 AstrBot,在插件管理面板中配置

Web 面板认证文件说明:当前版本将认证数据拆分为两个独立文件——web_data/auth.json(密码哈希)和 web_data/jwt_secret.json(JWT 密钥),实现物理隔离。如果你是从旧版升级,且旧版的 auth.json 中同时包含密码和 JWT secret,系统会在启动时自动分离到独立文件,无需手动操作。若旧版密码文件保存在插件数据根目录下(而非 web_data/ 子目录),请先将其移动到 web_data/auth.json 后再启动。

密码哈希升级说明:1.2.2版本起,Web 面板密码默认使用 Argon2id 内存硬化哈希。旧版本 PBKDF2-SHA256 密码数据无需手动迁移,用户使用原密码首次登录成功后会自动透明升级到 Argon2id。无论是用户自定义密码,还是重置后生成的默认随机密码,都支持无缝跨版本升级。

Web 面板会话补充说明:当前版本的 Web 面板会话已升级为 JWT + HttpOnly Cookie + 服务端会话表。登录页遇到有效会话时会直接跳转到面板;若检测到令牌过期、密码已修改、服务端重启或(开启 web_panel_ip_bind_check 时)IP 变化,会统一要求重新登录。前台/后台心跳频率、失败重试基准与最大重试间隔现已提供独立配置项,但这些参数属于安全敏感配置,只能通过 AstrBot 传统配置界面修改,Web 面板中为只读显示。

Web 面板文件/会话/缓存边界说明:当前 Web 面板中的文件管理仅允许操作插件数据目录下的普通数据文件;auth.json、jwt_secret.json、sessions.json、访问日志、封禁数据等核心安全文件会被后端直接拒绝。会话管理中的聊天记录查看/编辑针对的是插件自定义 chat_history/... 历史文件,不是 AstrBot 官方 ConversationManager 历史。图片缓存相关功能则只作用于图片描述缓存文件 image_cache/descriptions.jsonl(若检测到旧版残留路径 image_description_cache.json 也会兼容处理),不会清理聊天记录、注意力、概率或主动对话状态。

反向代理补充说明:如果反向代理与 Web 面板部署在同一台机器,系统在检测到连接来源为 127.0.0.1 / ::1 时会自动读取 X-Real-IP / X-Forwarded-For 获取真实客户端 IP,因此即使未开启 web_panel_trust_proxy,也可能正常拿到真实 IP;若反向代理不在本机,则需要显式开启 web_panel_trust_proxy 才会信任代理头。该项现已归类为安全边界配置,只能在传统配置界面修改。

默认密码安全提醒:首次安装或重置密码后,系统会以 WARNING 级别向 AstrBot 日志输出默认密码及安全警告。请务必登录后立即修改为自定义密码——修改后明文副本将自动删除,日志中也不再输出任何密码信息。

使用打包启动器部署的用户请注意:若启动后报错 ModuleNotFoundError: No module named 'aiohttp',请额外执行 pip install aiohttp>=3.8.0(详见下方依赖说明)。

依赖要求

依赖 版本 说明
AstrBot >= v4.11.0 平台框架

| argon2-cffi | >= 23.1.0 | Web 面板密码哈希(Argon2id),插件会随 requirements.txt 自动安装 | | aiohttp | >= 3.8.0 | Web 管理面板 HTTP 服务器,通常由 AstrBot 平台自动安装,无需手动安装 |

关于 aiohttp:该库是 AstrBot 平台本身的核心依赖,通过 pip 或源码方式部署时,AstrBot 在安装时会自动包含此依赖,插件本身无需重复声明。但若使用 AstrBot 新版打包启动器(exe/独立包) 进行部署,平台依赖可能未完整暴露给插件环境,此时需要手动安装:pip install aiohttp>=3.8.0

  • 推荐: astrbot_plugin_livingmemory 或 astrbot_plugin_play_sy (记忆系统)

关于 platform_message_history 历史消息清除

AstrBot 的 /reset 指令只清除 conversations 表,不会清除 platform_message_history 表,导致旧历史消息可能被 AI 持续读取。

本插件的解决方案:执行 gcp_reset 或 gcp_reset_here 指令后,插件会记录一个截止时间戳。此后从平台历史读取消息时,截止点之前的所有消息都会被自动过滤——表里的数据虽然还在,但 AI 看不到,效果等同于已清除。

边界说明:

  • gcp_reset = 全局重置,清理插件维护的全局运行态与本地持久化缓存(如自定义 chat_history 历史目录、注意力/主动对话持久化文件等),并为所有已知会话设置历史截止时间戳
  • gcp_reset_here = 单会话重置,仅清理当前会话的运行态、当前会话对应的自定义聊天记录文件,并为当前会话设置历史截止时间戳
  • gcp_clear_image_cache / Web 面板里的图片缓存清理 = 仅清理图片描述缓存,当前主缓存文件为 image_cache/descriptions.jsonl;若检测到旧版残留路径 image_description_cache.json 也会兼容清理,但不会触碰聊天记录、注意力、概率或主动对话状态
  • Web 面板「会话管理」中的单会话重置(每张会话卡片上的「重置」按钮)= 仅清除运行时状态(注意力、情绪、概率、冷却等),不删除聊天记录文件,不设历史截止时间戳。重置后自动触发插件重载使清理生效。与聊天指令 gcp_reset_here 的行为不同(后者会删文件和设截止戳)

如需彻底清除数据库中的历史记录,有两种方式:

⚠️ platform_message_history 存储在 data/data_v4.db(SQLite),同一数据库还存有人格配置、会话记录、插件配置等所有平台数据。不建议直接删除 data_v4.db,否则所有数据全部丢失。

方式一(推荐):仅清除 platform_message_history 表

sqlite3 data/data_v4.db "DELETE FROM platform_message_history;"

方式二:使用插件清除指令(推荐日常使用)

执行 gcp_reset_here 后,插件记录截止时间戳,之后 AI 不再读取截止点之前的旧消息,无需操作数据库。

说明:这是 AstrBot 平台层面的设计遗漏(/reset 未清理 platform_message_history),本插件通过截止时间戳机制在插件层进行了修复。


🎯 完整推荐配置

以下是当前版本的全功能推荐配置,启用注意力机制并开启全部增强功能,适合大多数群聊场景。

说明:示例里同时保留了 after_reply_probability 与 probability_duration,它们只在传统模式(enable_attention_mechanism = false)下生效;若开启注意力机制,则回复后加成会改由注意力机制按用户接管。

每个配置项旁均标注了在 Web 配置面板中对应的显示名称,方便对照查找。

{
  // ══════════════ 📱 群聊基础 ══════════════
  "enable_group_chat": true,
  // 显示名:🔘 启用群聊功能
  "enabled_groups": [],
  // 显示名:启用的群组列表 — 留空=所有群聊启用,填写群号=仅指定群组启用
  "enable_debug_log": false,
  // 显示名:启用群聊处理的详细日志

  // ══════════════ 🧠 读空气判断AI ══════════════
  "decision_ai_provider_id": "",
  // 显示名:读空气AI提供商 — 留空使用默认,建议使用轻量快速的模型
  "initial_probability": 0.06,
  // 显示名:初始读空气概率
  "after_reply_probability": 1.0,
  // 显示名:回复后的读空气概率(传统模式)
  "probability_duration": 90,
  // 显示名:概率提升持续时间(秒)
  "decision_ai_include_persona": true,
  // 显示名:读空气AI自动包含人格
  "decision_ai_persona_name": "",
  // 显示名:读空气AI指定人格名 — 留空=跟随当前会话人格
  "decision_ai_prompt_mode": "append",
  // 显示名:读空气AI提示词模式
  "decision_ai_extra_prompt": "",
  // 显示名:读空气AI额外提示词 — 在此填写你自定义的判断提示词,留空则沿用默认
  "decision_ai_timeout": 300,
  // 显示名:读空气AI超时时间(秒)
  "enable_decision_ai_reasoning": true,
  // 显示名:🧠 读空气AI启用额外推理
  "decision_ai_reasoning_log": true,
  // 显示名:📋 读空气AI推理过程输出到日志
  "decision_ai_reasoning_log_mode": "raw",
  // 显示名:🪵 读空气AI推理日志输出模式
  "judgment_reasoning_start_marker": "[[GCP_REASONING_START]]",
  // 显示名:🔖 判断型AI共用推理起始符
  "judgment_reasoning_end_marker": "[[GCP_REASONING_END]]",
  // 显示名:🔖 判断型AI共用推理截止符

  // ══════════════ 💬 回复生成 ══════════════
  "reply_ai_prompt_mode": "append",
  // 显示名:回复AI提示词模式
  "reply_ai_extra_prompt": "",
  // 显示名:回复AI额外提示词 — 在此填写你自定义的回复约束提示词,留空则沿用默认
  "reply_timeout_warning_threshold": 120,
  // 显示名:消息处理总耗时超时警告阈值(秒)
  "reply_generation_timeout_warning": 60,
  // 显示名:回复生成耗时超时警告阈值(秒)

  // ══════════════ 🔄 并发处理 ══════════════
  "concurrent_mode": "smart",
  // 显示名:🔄 并发消息处理模式
  "enable_smart_batch_reply_hint": true,
  // 显示名:🧠 Smart批次回复提示增强
  "smart_concurrent_merge_wait": 30.0,
  // 显示名:⏱️ Smart模式:合并超时时间(秒)
  "smart_concurrent_max_batch_size": 20,
  // 显示名:📦 Smart模式:单批次最多合并消息数
  // 显示名:⏱️ Smart模式:合并超时时间(秒)
  "concurrent_wait_max_loops": 15,
  // 显示名:并发消息等待最大循环次数
  "concurrent_wait_interval": 5.0,
  // 显示名:并发消息等待间隔(秒)

  // ══════════════ 📝 消息上下文 ══════════════
  "include_timestamp": true,
  // 显示名:包含时间戳信息
  "include_sender_info": true,
  // 显示名:包含发送者信息
  "single_at_message_reply_link_max_messages": 8,
  // 显示名:单独无信息@消息关联窗口-最大消息数
  "single_at_message_reply_link_max_seconds": 180,
  // 显示名:单独无信息@消息关联窗口-最长时间(秒)
  "max_context_messages": 50,
  // 显示名:最大上下文消息数
  "custom_storage_max_messages": 500,
  // 显示名:📦 自定义存储每会话最大消息数
  "pending_cache_max_count": 20,
  // 显示名:📦 两次AI回复之间的消息缓存上限
  "pending_cache_ttl_seconds": 1800,
  // 显示名:📦 缓存消息过期时间(秒)
  "enable_idle_cache_flush": true,
  // 显示名:📦 启用冷群缓存自动转正
  "idle_cache_flush_delay_seconds": 600,
  // 显示名:📦 冷群转正触发延迟(秒)

  // ══════════════ 📦 特殊消息解析 ══════════════
  "enable_forward_message_parsing": true,
  // 显示名:📦 启用转发消息解析
  "forward_max_nesting_depth": 3,
  // 显示名:📦 转发消息嵌套解析深度
  "enable_welcome_message_parsing": true,
  // 显示名:🎉 启用新成员入群消息解析
  "welcome_message_mode": "skip_probability",
  // 显示名:🎉 入群消息处理模式

  // ══════════════ 🖼️ 图片处理 ══════════════
  "enable_image_processing": true,
  // 显示名:🖼️ 允许处理图片(通过概率筛选的消息)
  "image_to_text_scope": "all",
  // 显示名:图片转文字应用范围
  "image_to_text_provider_id": "",
  // 显示名:图片转文字AI提供商 — 在此填写你的图片转文字AI提供商ID
  "image_to_text_prompt": "请详细描述这张图片的内容",
  // 显示名:图片转文字提示词 — 已填入默认提示词,按需自定义
  "image_to_text_timeout": 300,
  // 显示名:图片转文字超时时间(秒)
  "max_images_per_message": 10,
  // 显示名:🖼️ 单条消息最大处理图片数
  "enable_image_description_cache": true,
  // 显示名:💾 启用图片描述本地缓存(省钱功能)
  "image_description_cache_max_entries": 500,
  // 显示名:💾 图片描述缓存最大条目数
  "platform_image_caption_max_wait": 5.0,
  // 显示名:🖼️ 平台图片描述提取-最大等待时间(秒)
  "platform_image_caption_retry_interval": 50,
  // 显示名:🖼️ 平台图片描述提取-重试间隔(毫秒)
  "platform_image_caption_fast_check_count": 10,
  // 显示名:🖼️ 平台图片描述提取-快速检查次数
  "probability_filter_cache_delay": 1000,
  // 显示名:🖼️ 概率过滤缓存延迟(毫秒)

  // ══════════════ 🎭 表情包过滤(仅QQ) ══════════════
  "enable_emoji_filter": true,
  // 显示名:🎭 启用表情包过滤(仅QQ)
  "emoji_probability_decay": 0.7,
  // 显示名:🎭 表情包概率衰减因子(仅QQ)
  "emoji_decay_min_probability": 0.02,
  // 显示名:🎭 表情包衰减最低门槛(仅QQ)

  // ══════════════ 🧠 记忆注入 ══════════════
  "enable_memory_injection": true,
  // 显示名:启用强制记忆植入
  "memory_plugin_mode": "legacy",
  // 显示名:记忆插件模式 — 推荐使用 auto 自动检测
  "livingmemory_version": "v1",
  // 显示名:LivingMemory插件版本
  "livingmemory_persona_compat_mode": "auto",
  // 显示名:LivingMemory人格ID兼容模式
  "livingmemory_top_k": 5,
  // 显示名:LivingMemory召回记忆数量
  "memory_insertion_timing": "pre_decision",
  // 显示名:记忆插入时机

  // ══════════════ 🔧 工具提醒 ══════════════
  "enable_tools_reminder": true,
  // 显示名:启用工具文本提醒
  "tools_reminder_persona_filter": true,
  // 显示名:工具按人格过滤

  // ══════════════ 🔑 关键词与黑名单 ══════════════
  "trigger_keywords": [],
  // 显示名:触发关键词列表 — 在此填写你的AI角色名字/别名,让别人叫它时更容易触发回复
  // ⚠️ 大小写敏感 + 子串匹配:关键词"Bot"不会匹配"bot",关键词"at"会匹配"attention"等
  // 仅匹配用户原始消息文本,不会匹配用户名、系统提示词等元数据
  "keyword_smart_mode": true,
  // 显示名:【v1.1.2新增】启用关键词智能模式
  "blacklist_keywords": [],
  // 显示名:黑名单关键词列表 — 消息包含这些词时直接忽略
  // ⚠️ 大小写敏感 + 子串匹配,规则同触发关键词
  "enable_user_blacklist": true,
  // 显示名:启用用户黑名单
  "blacklist_user_ids": [],
  

提示:代码过长已自动截断

评论

暂无评论