{ "basic": { "description": "基础设置", "type": "object", "hint": "群聊分析插件的基础配置项,包括群聊权限、消息数量、输出格式等", "items": { "group_list_mode": { "description": "群聊权限模式", "type": "string", "options": [ "whitelist", "blacklist", "none" ], "default": "none", "hint": "whitelist: 仅允许列表内群;blacklist: 拒绝列表内群;none: 不限制" }, "group_list": { "type": "list", "description": "群组白/黑名单列表", "default": [], "hint": "黑白名单模式下使用的群组列表。支持填写 AstrBot UMO (如 xxxxx:GroupMessage:123456) 或 纯群号 (如 123456,将尝试自动匹配)。可以使用 /sid 命令查看当前会话的 UMO。", "items": { "type": "string" } }, "analysis_days": { "type": "int", "description": "默认分析天数", "default": 1, "hint": "默认分析最近几天的消息,增量分析也基于此数据保存分析情况" }, "max_messages": { "type": "int", "description": "单次分析的获取最大消息条数基准", "default": 1000, "hint": "单次分析的获取最大消息条数基准值,如果当天群聊消息过多,已经获取到足够的消息(达到 max_messages),停止获取,获取到的消息数量是最新一次获取到的超过 max_messages 的消息数量,建议500-2000" }, "min_messages_threshold": { "type": "int", "description": "最小消息数阈值", "default": 200, "hint": "进行分析所需的最小消息数量" }, "bot_self_ids": { "type": "list", "description": "群分析时屏蔽的用户ID列表", "default": [], "hint": "填写后可启用自动分析功能。可以填写用于自动分析的机器人 ID(在不同平台上可能是数字或字符串)、多消息平台 ID、不希望出现于群分析中的其他人的 ID 等。", "items": { "type": "string" } }, "enable_user_card": { "type": "bool", "description": "使用用户群名片", "default": true, "hint": "在分析中优先使用用户的群名片作为昵称显示" }, "output_format": { "type": "string", "description": "输出格式", "default": "image", "hint": "分析报告的输出格式:image(图片)、text(文本)、pdf(PDF文件)。使用 PDF 需要额外配置,根据文件中的 PDF_功能说明.md 进行配置" }, "report_template": { "type": "string", "description": "报告模板", "default": "scrapbook", "hint": "分析报告使用的HTML模板名称,使用 `/设置模板` 查看使用指南,使用`/查看模板` 命令查看模板样式效果" }, "debug_mode": { "type": "bool", "description": "调试模式(建议关闭)", "default": false, "hint": "启用后,会在 plugin_data/debug_data 目录下保存每次分析的平台 API 原始历史消息和 Prompt 原文,用于调试和优化提示词。" } } }, "auto_analysis": { "description": "自动分析设置", "type": "object", "hint": "定时自动分析相关配置,包括启用开关、分析时间和并发数", "items": { "enable_auto_analysis": { "type": "bool", "description": "启用定时自动分析", "default": false, "hint": "是否在指定时间自动进行群聊分析,启用需要填写下面的机器人ID号,并且确保群聊号在 enabled_groups 配置中,否则获取不到实例,不会自动分析" }, "auto_analysis_time": { "type": "list", "description": "自动分析时间列表", "default": [ "23:00" ], "hint": "每日自动分析的时间点列表,格式HH:MM(例如 23:00 ),支持多个时间点,增量分析也基于此时间点进行分析和报告生成", "items": { "type": "string" } }, "max_concurrent_tasks": { "type": "int", "description": "自动分析最大并发数", "default": 3, "hint": "同时进行的群聊分析任务数量,建议根据机器性能和服务商情况调整,过高可能导致LLM API RPM 超出限制,卡顿或被风控" } } }, "llm": { "description": "LLM 设置", "type": "object", "hint": "大语言模型相关配置,包括 Provider 选择、重试策略和 Token 限制", "items": { "llm_provider_id": { "type": "string", "description": "LLM Provider ID(用于所有分析任务)", "_special": "select_provider", "default": "", "hint": "选择用于群聊分析的 LLM Provider。留空则使用当前会话的默认 Provider" }, "topic_provider_id": { "type": "string", "description": "话题分析专用 Provider ID", "_special": "select_provider", "default": "", "hint": "专门用于话题分析的 Provider。留空则使用主 LLM Provider" }, "user_title_provider_id": { "type": "string", "description": "用户称号分析专用 Provider ID", "_special": "select_provider", "default": "", "hint": "专门用于用户称号分析的 Provider。留空则使用主 LLM Provider" }, "golden_quote_provider_id": { "type": "string", "description": "金句分析专用 Provider ID", "_special": "select_provider", "default": "", "hint": "专门用于金句分析的 Provider。留空则使用主 LLM Provider" }, "llm_retries": { "type": "int", "description": "LLM 请求重试次数", "default": 2, "hint": "当请求超时或失败时自动重试的次数,建议设置为1~3之间。" }, "llm_backoff": { "type": "int", "description": "LLM 请求重试退避基值(秒)", "default": 2, "hint": "重试之间的基准等待时间(秒),实际等待时间为基值乘以尝试次数。" }, "topic_max_tokens": { "type": "int", "description": "(兼容部分提供商)话题分析最大 Token 数", "default": 12288, "hint": "(兼容部分提供商,实测大部分模型调整后没有明显效果)话题分析时 LLM 能生成的最大 token 数量。当分析内容较多或者分析提示词复杂时,建议适当调大此值以保证输出质量。" }, "golden_quote_max_tokens": { "type": "int", "description": "(兼容部分提供商)金句分析最大 Token 数", "default": 4096, "hint": "(兼容部分提供商,实测大部分模型调整后没有明显效果)金句分析时 LLM 能生成的最大 token 数量。当分析内容较多或者分析提示词复杂时,建议适当调大此值以保证输出质量。" }, "user_title_max_tokens": { "type": "int", "description": "(兼容部分提供商)用户称号分析最大 Token 数", "default": 4096, "hint": "(兼容部分提供商,实测大部分模型调整后没有明显效果)用户称号分析时 LLM 能生成的最大 token 数量。当分析内容较多或者分析提示词复杂时,建议适当调大此值以保证输出质量。" } } }, "analysis_features": { "description": "分析功能开关", "type": "object", "hint": "控制各项 LLM 分析功能的启用状态和数量限制", "items": { "topic_analysis_enabled": { "type": "bool", "description": "启用话题分析", "default": true, "hint": "是否使用LLM进行智能话题分析" }, "user_title_analysis_enabled": { "type": "bool", "description": "启用用户称号分析", "default": true, "hint": "是否使用LLM进行用户称号分析" }, "golden_quote_analysis_enabled": { "type": "bool", "description": "启用金句分析", "default": true, "hint": "是否使用LLM进行金句分析" }, "max_topics": { "type": "int", "description": "最大话题数量", "default": 5, "hint": "分析报告中显示的最大话题数量,依赖于 LLM 输出的格式化信息质量,模型越好结果越好,可能出现数量不匹配。" }, "max_user_titles": { "type": "int", "description": "最大用户称号数量", "default": 8, "hint": "分析报告中显示的最大用户称号数量,依赖于 LLM 输出的格式化信息质量,模型越好结果越好,可能出现数量不匹配。" }, "max_golden_quotes": { "type": "int", "description": "最大金句数量", "default": 5, "hint": "分析报告中显示的最大金句数量,依赖于 LLM 输出的格式化信息质量,模型越好结果越好,可能出现数量不匹配。" } } }, "incremental": { "description": "增量分析设置", "type": "object", "hint": "增量分析模式相关配置,启用后插件会在一天内多次进行小规模分析并累积结果,不开启则以基础设置的参数为标准;适合用于消息量特别大的群聊和有足够 Token 折腾的用户,尽力做到原本的单次全量分析模式的上位替代(如果把消息阈值拉到足够大),提升分析覆盖率和24小时活跃图表准确性", "items": { "incremental_enabled": { "type": "bool", "description": "启用增量分析模式", "default": false, "hint": "启用后,插件会在一天内多次进行小规模分析并累积结果,最终在报告时间汇总输出。适用于消息量大的群聊,可显著提升分析覆盖率和24小时活跃图表准确性。关闭时保持传统的单次全量分析模式。" }, "incremental_report_immediately": { "type": "bool", "description": "增量分析立即报告(调试用)", "default": false, "hint": "【调试功能】启用后,每次增量分析完成后都会立即生成并发送一份最终报告。仅建议在调试时开启,生产环境请保持关闭,否则会频繁打扰群友。" }, "incremental_interval_minutes": { "type": "int", "description": "增量分析间隔(分钟)", "default": 120, "hint": "每隔多少分钟执行一次增量分析。建议根据群聊实际情况处理,间隔越短分析越精细但消耗更多 Token。" }, "incremental_max_daily_analyses": { "type": "int", "description": "每日最大增量分析次数", "default": 8, "hint": "一天内最多执行多少次增量分析。达到上限后当天不再触发新的增量分析,但仍会在报告时间生成最终报告。建议4-12次。" }, "incremental_max_messages": { "type": "int", "description": "单次增量分析最大消息数", "default": 300, "hint": "每次增量分析最多处理的消息条数。数值越大单次分析越全面但 Token 消耗越高。因为插件的逻辑是记录旧一次拉取获取到的最晚消息,只会处理后续的新消息,所以建议允许根据群聊实际情况设定的越大越好。" }, "incremental_min_messages": { "type": "int", "description": "增量分析最小消息数阈值", "default": 100, "hint": "当自上次分析以来的新消息数低于此阈值时,跳过本次增量分析以节省 Token。可能导致少量消息的群聊分析结果不完整,但是依旧建议设置较大值,因为当获取到的消息不够时,最晚消息的游标不会更新,可以等消息足够后的增量分析进行分析。" }, "incremental_topics_per_batch": { "type": "int", "description": "单次增量提取话题数", "default": 2, "hint": "每次增量分析最多提取的话题数量。最终报告会汇总所有批次的话题。建议1-4。" }, "incremental_quotes_per_batch": { "type": "int", "description": "单次增量提取金句数", "default": 2, "hint": "每次增量分析最多提取的金句数量。最终报告会汇总所有批次的金句。建议1-2。" }, "incremental_active_start_hour": { "type": "int", "description": "增量分析活跃起始时段", "default": 8, "hint": "增量分析的活跃时段起始小时(24小时制)。如果目标群聊凌晨也活跃,建议设定的很早;在活跃时段之外不会触发增量分析,避免凌晨等低活跃时段浪费分析配额." }, "incremental_active_end_hour": { "type": "int", "description": "增量分析活跃结束时段", "default": 23, "hint": "增量分析的活跃时段结束小时(24小时制)。超过此时段后不再触发增量分析。" }, "incremental_stagger_seconds": { "type": "int", "description": "多群增量分析交错间隔(秒)", "default": 2, "hint": "当同时对多个群进行增量分析时,每个群之间的延迟间隔(秒),用于均匀分散 API 请求压力。" } } }, "pdf": { "description": "PDF 设置", "type": "object", "hint": "PDF 报告输出相关配置,包括输出目录、浏览器路径和文件名格式", "items": { "pdf_output_dir": { "type": "string", "description": "PDF输出目录", "default": "data/plugins/astrbot_plugin_qq_group_daily_analysis/reports", "hint": "PDF报告文件的保存目录" }, "browser_path": { "type": "string", "description": "自定义浏览器路径", "default": "", "hint": "要填写的话请你清楚自己在干什么。自定义浏览器的可执行文件路径(如 Chrome 或 Edge 的 .exe 文件)。提示:如果是在网页后台设置,则直接输入普通路径即可(如 C:\\Program Files\\...);如果是手动编辑 config.json 文件,请务必使用双反斜杠 '\\\\' 分隔路径。" }, "pdf_filename_format": { "type": "string", "description": "PDF文件名格式", "default": "群聊分析报告_{group_id}_{date}.pdf", "hint": "PDF文件名格式,支持变量:{group_id}(群号)、{date}(日期)" } } }, "prompts": { "description": "提示词模板", "type": "object", "hint": "LLM 分析使用的提示词模板配置,可自定义各项分析的提示词内容", "items": { "topic_analysis_prompts": { "description": "话题分析提示词模板", "type": "object", "hint": "话题分析提示词模板,可自定义修改,保留变量 {max_topics} 和 {messages_text} 写法不要更改,需要写 JSON 块请使用双花括号 {{ ... }} 兼容当前编辑存在的问题。非常推荐根据实际群聊情况进行优化,保留一定提示样本示例供模型参考", "items": { "topic_prompt": { "description": "默认话题分析提示词", "type": "text", "editor_mode": true, "editor_language": "markdown", "default": "你是一个帮我进行群聊信息总结的助手,生成总结内容时,你需要严格遵守下面的几个准则:\n\n请分析接下来提供的群聊记录,提取出最多 **{max_topics}** 个主要话题。根据实际聊天内容提取所有最有意义的话题。\n\n## 对于每个话题,请提供:\n\n1. **话题名称**(突出主题内容,尽量简明扼要,控制在 10 字以内)\n2. **主要参与者的用户ID**(最多 5 人,按参与度排序)\n3. **话题详细描述**(包含关键信息和结论)\n\n## 注意事项:\n\n- 对于比较有价值的点,稍微用一两句话详细讲讲,让读者能了解讨论的深度\n- 对于其中的部分信息,你需要特意提到主题施加的主体是谁,即明确指出\"谁做了什么\"\n- **用户引用**:在话题详情描述中,如果提到了具体用户,请使用 `[用户ID]` 的格式来指代(例如 `[123456]`)。不要只写昵称。我们会自动渲染头像。\n- 对于每一条总结,尽量讲清楚前因后果,不要只列出结论\n- 如果某个话题有明确的结论或共识,请在描述中体现\n- 忽略无意义的闲聊、灌水、单纯的表情回复等\n- 优先选择讨论深度较深、参与人数较多的话题\n- 如果消息太少或没有明确话题,可以返回空数组 []\n\n群聊记录格式: [HH:MM] [用户ID]: 消息内容\n\n群聊记录:\n{messages_text}\n\n---\n\n## 重要:必须返回标准 JSON 格式\n\n严格遵守以下规则:\n\n1. 只使用英文双引号 `\"` ,不要使用中文引号 `“` `”`\n2. 字符串内容中的引号必须转义为 `\\\"`\n3. 多个对象之间用逗号分隔\n4. 数组元素之间用逗号分隔\n5. 不要在 JSON 外添加任何文字说明\n6. 描述内容避免使用特殊符号,用普通文字表达\n\n### 返回格式示例:\n\n```json\n[\n {{\n \"topic\": \"话题名称\",\n \"contributors\": [\"123456789\", \"987654321\"],\n \"detail\": \"话题的详细描述,包含讨论内容、关键信息和结论。注意:在描述中提及用户时,使用 [用户ID] 格式,例如 [123456789]。\"\n }},\n {{\n \"topic\": \"另一个话题\",\n \"contributors\": [\"111222333\", \"444555666\"],\n \"detail\": \"另一个话题的详细描述...\"\n }}\n]\n```\n\n**注意**:返回的内容必须是纯 JSON,不要包含 markdown 代码块标记或其他格式。" } } }, "user_title_analysis_prompts": { "description": "用户称号分析提示词模板", "type": "object", "hint": "用户称号分析提示词模板,可自定义修改,保留变量 {users_text} 写法不要更改,需要写 JSON 块请使用双花括号 {{ ... }} 兼容当前编辑存在的问题。非常推荐根据实际群聊情况进行优化,保留一定提示样本示例供模型参考", "items": { "user_title_prompt": { "description": "默认用户称号分析提示词", "type": "text", "editor_mode": true, "editor_language": "markdown", "default": "请为以下群友分配合适的称号和 MBTI 类型。\n\n## 规则:\n\n- 每个人只能有一个称号\n- 每个称号只能给一个人\n\n## 可选称号:\n\n- **龙王**: 发言频繁但内容轻松的人\n- **技术专家**: 经常讨论技术话题的人\n- **夜猫子**: 经常在深夜发言的人\n- **表情包军火库**: 经常发表情的人\n- **沉默终结者**: 经常开启话题的人\n- **评论家**: 平均发言长度很长的人\n- **阳角**: 在群里很有影响力的人\n- **互动达人**: 经常回复别人的人\n- *...(你可以自行进行拓展添加)*\n\n## 用户数据:\n\n{users_text}\n\n---\n\n### 返回格式示例:\n\n```json\n[\n {{\n \"name\": \"用户名\",\n \"user_id\": \"123456789\",\n \"title\": \"称号\",\n \"mbti\": \"MBTI类型\",\n \"reason\": \"获得此称号的原因\"\n }}\n]\n```\n\n**注意**:请以纯 JSON 格式返回,不要包含 markdown 代码块标记。" } } }, "golden_quote_analysis_prompts": { "description": "金句分析提示词模板", "type": "object", "hint": "金句分析提示词模板,可自定义修改,保留变量 {max_golden_quotes} 和 {messages_text} 写法不要更改,需要写 JSON 块请使用双花括号 {{ ... }} 兼容当前编辑存在的问题。非常推荐根据实际群聊情况进行优化,保留一定提示样本示例供模型参考", "items": { "golden_quote_prompt": { "description": "默认金句分析提示词", "type": "text", "editor_mode": true, "editor_language": "markdown", "default": "请从以下群聊记录中挑选出 **{max_golden_quotes}** 句最具冲击力、最令人惊叹的「金句」。\n\n## 金句标准:\n\n- **核心标准**:**逆天的神人发言**,即具备颠覆常识的脑洞、逻辑跳脱的表达或强烈反差感的原创内容\n- **典型特征**:包含某些争议话题元素、夸张类比、反常规结论、一本正经的「胡说八道」或突破语境的清奇思路,并且具备一定的冲击力,让人印象深刻\n\n## 对于每个金句,请提供:\n\n1. **原文内容**(完整保留发言细节)\n2. **发言人昵称**\n3. **选择理由**(具体说明其「逆天」之处,如逻辑颠覆点/脑洞角度/反差感/争议话题元素)\n\n## 严格约束:\n\n- 优先筛选 **逆天指数最高** 的内容:\n - 发情、性压抑话题 > 争议话题 > 元素级 > 颠覆认知级 > 逻辑跳脱级 > 趣味调侃级\n - 剔除单纯玩梗或网络热词堆砌的普通发言\n- 重点标记包含极端类比、反常识论证或无厘头结论的内容,并且包含一定的争议话题元素\n\n## 群聊记录:\n\n{messages_text}\n\n---\n\n### 返回格式示例:\n\n```json\n[\n {{\n \"content\": \"金句原文\",\n \"sender\": \"发言人昵称\",\n \"reason\": \"选择这句话的理由(需明确说明逆天特质)\"\n }}\n]\n```\n\n**注意**:请以纯 JSON 格式返回,不要包含 markdown 代码块标记。" } } } } } }