一个为 AstrBot 打造的「聊天增强 + 时间感知 + 智能主动对话」插件。
让 AI 不只是被动应答,而是像朋友一样记得你、惦记你、主动找你。
快速上手:AstrBot「心念」插件使用指南
「心念」是一个 AstrBot 插件,围绕三件事展开:
所有能力均使用 AstrBot 官方 API 实现,并配有一套独立的可视化管理面板用于配置与运维。
| 模块 | 一句话说明 | 关键词 |
|---|---|---|
| 聊天附带用户信息 | 每次对话自动注入用户信息与时间,可自定义模板 | 模板 / 占位符 / 不污染缓存 |
| 智能主动对话 | 由 LLM 生成个性化主动消息,支持固定 / 随机间隔 | 人格协同 / 历史记录 / 多风格提示词 |
| 时间感知增强 | 引导 AI 自然表达时间,支持睡眠时段 | 时间指南 / 睡眠模式 / 唤醒发送 |
| 智能时间表 | 月历可视化管理节日/纪念日,并可 AI 一键生成整套日历 | {calendar_today} / 重复规则 / AI 生成 |
| AI 自主调度 | 从对话中识别「X 分钟后找你」并自动定时回访 | 关键词预检测 / 独立模型 / 去重 |
| 消息分割 | 把长回复拆成多条逐句发送,更拟人 | 8 种分割模式 / 可调延迟 |
| 可视化管理面板 | 概览 / 会话 / AI 约定 / 时间表 / 占位符 / 配置文件 | 中英双语 / 深浅色主题 |
| 时区与持久化 | 自定义时区、跟随 AstrBot 时区,YAML 持久化 | 跨重启不丢数据 / 可手动查看编辑 |
/proactive status 或 WebUI「会话」页查看各会话的下次发送时间。default:默认系统触发标记 <SYSTEM_TRIGGER: ...>。proactive_prompt:使用当次的主动对话提示词(已替换占位符)。custom:自定义内容(支持占位符)。{unreplied_count} 占位符追踪用户连续未回复的次数。22:00-8:00)。immediate:立即发送(计时器过期则马上发送)。delayed:延后发送(恢复睡眠前的剩余计时,保持自然间隔)。{calendar_today} 占位符:启用后将「当天」事项注入用户信息模板或主动对话提示词,让 AI 感知特殊日期;关闭时返回空字符串。calendar_data.yaml,完全本地、不联网。把 LLM 生成的长消息按特定分隔符拆分成多条消息发送,模拟更自然的对话节奏。提供 8 种分割模式:
| 模式 | 分隔符 | 使用场景 | 示例 |
|---|---|---|---|
| backslash(默认) | 反斜线 \ |
LLM 生成时使用 \ 标记分段 |
早上好\今天天气不错 → 2 条消息 |
| newline | 换行符 | 按换行分割,适合长文本 | 第一段<换行>第二段 → 2 条消息 |
| comma | 逗号 , |
按逗号分割 | 你好,最近怎么样 → 2 条消息 |
| semicolon | 分号 ; |
按分号分割 | 早上好;吃早餐了吗 → 2 条消息 |
| punctuation | 多种标点 | 按中英文标点分割 | 你好。最近好吗? → 2 条消息 |
| custom | 自定义正则 | 高级用户自定义 | 见 自定义正则填写指南 |
| words | 分段词列表 | 官方风格:用分段词作为分割标记 | 。?!~… |
| regex | 官方风格正则 | 官方风格:re.findall + DOTALL/MULTILINE |
.*?[。?!~…\n]+\|.+$ |
插件内置一套独立的可视化管理面板(AstrBot Plugin Pages),无需手改 JSON 即可完成全部配置与运维。
打开方式:在 AstrBot WebUI 的「插件管理」中找到「心念」插件,点击其插件页面 / 管理入口即可打开。
面板特性:
面板包含 6 个页面:
| 页面 | 功能 |
|---|---|
| 概览 | 展示总会话数、计划任务数、记录用户数、已发送数、待回复数、运行状态等统计,以及最近活动记录与功能状态徽标。 |
| 会话 | 列表化管理主动对话目标会话:查看平台、用户、下次发送时间、最后发送、未回复数、运行状态;支持添加 / 移除会话、查看会话详情。 |
| AI 约定 | 查看由「AI 自主调度」生成的一次性任务:倒计时、执行时间、触发提示词、创建时间,并可取消任意任务。 |
| 时间表 | 月历视图管理节日 / 事项(增删改、设置重复规则)、导入 / 导出 YAML、清空,以及 AI 生成时间表(主题输入 → 可编辑预览 → 追加 / 替换)。 |
| 占位符 | 占位符速查面板,按「用户信息」与「主动对话」分组列出所有可用占位符及说明。 |
| 配置文件 | 以可视化表单编辑插件的全部配置分组(基础设置、用户信息、时间感知、时间表、主动对话、消息分割、AI 调度),保存后即时生效。 |
环境要求:AstrBot
>=4.24.0,Python3.10+。插件依赖pyyaml(AstrBot 运行时通常已自带)。
方式一:通过 AstrBot 插件市场 / 管理面板安装(推荐)
方式二:手动安装
data/plugins/astrbot_proactive_reply/ 目录下。推荐通过 AstrBot 管理面板或插件 WebUI「配置文件」页进行配置,会自动生成和保存配置文件。配置修改后通常需要重载插件或使用
/proactive restart才能完全生效。
Asia/Shanghai、America/New_York)。留空使用系统本地时区。datetime 格式,如 %Y-%m-%d %H:%M:%S)。platform:type:id)。fixed_interval(固定间隔)或 random_interval(随机间隔)。default / proactive_prompt / custom。custom 模式生效,支持占位符。\n 换行)。开始-结束(24 小时制),支持跨午夜,如 22:00-8:00。immediate(立即发送)/ delayed(延后发送)。{calendar_today} 占位符返回当天事项;关闭时即使配置了事项也不注入(返回空)。、)。{calendar_today} 返回的文本(留空表示空字符串)。month / day / text / repeat)输出贴合主题的日历事项;插件会自动补充当前年份与数量上限等运行时约束。custom 模式使用。regex 模式使用,官方风格。words 模式使用。仅当分割模式为 custom 时需要填写。常用示例:
| 需求 | 填写内容 | 说明 |
|---|---|---|
| 按中文句号分割 | 。 |
直接填写字符 |
| 按中英文逗号分割 | [,,] |
方括号表示「任选其一」 |
| 按多种中文标点分割 | [。,!?;] |
包含句号、逗号等 |
| 按反斜线分割 | \\ |
两个反斜线 |
| 按换行符分割 | \n |
反斜线 + n |
| 按空格分割 | \s+ |
一个或多个空格 |
| 标点后可跟空格 | [,;]\\s* |
标点 + 可选空格 |
注意事项:
- 填写错误的正则会导致插件自动降级到 backslash 模式。
- 查看日志可确认分割模式是否生效,或用 /proactive test basic 测试效果。
- 优先使用预设模式,仅在需要特殊规则时使用 custom / regex。
插件提供 /proactive 指令组,共 9 个主要指令,按功能分组:
权限说明:
test、show、config、manage、restart等涉及调试、配置、破坏性操作及隐私信息的指令仅管理员可用(基于 AstrBot 的PermissionType.ADMIN校验)。普通成员仅可使用status、add_session、remove_session、help。
/proactive help # 显示帮助信息
/proactive status # 查看插件状态和当前会话信息
/proactive add_session # 将当前会话添加到主动对话列表
/proactive remove_session # 将当前会话从主动对话列表移除
/proactive config # [管理员] 显示完整的插件配置信息
/proactive restart # [管理员] 重启定时任务(强制刷新计时器)
/proactive test [type] # 统一测试指令(不带参数显示帮助)
• test basic # 基础测试发送
• test llm # 测试 LLM 请求,体验用户信息附加功能
• test generation # 测试 LLM 生成主动消息功能
• test prompt # 测试系统提示词构建过程(包含历史记录)
• test placeholders # 测试占位符替换功能
• test history # 测试对话历史记录功能
• test save # 测试对话保存功能
• test schedule # 测试 AI 调度任务
/proactive show [type] # 统一显示指令
• show prompt # 显示当前配置下会输入给 LLM 的组合话术
• show users # 显示已记录的用户信息
/proactive manage [action] # 统一管理指令
基础管理:
• manage clear # 清除记录的用户信息和发送时间
• manage task_status # 检查定时任务状态
• manage force_stop # 强制停止所有定时任务
• manage force_start # 强制启动定时任务
• manage save_config # 强制保存配置文件
故障排查:
• manage debug_info # 调试用户信息(查看 AI 收到的信息)
• manage debug_send # 调试发送功能(检查 LLM 生成过程)
• manage debug_times # 调试时间记录(查看发送时间记录)
在管理面板或 WebUI「配置文件」页自定义信息模板,通过模板控制显示哪些信息(用户名、ID、时间等)。
设置智能主动对话
/proactive add_session 添加会话,或在 WebUI「会话」页添加。用 /proactive status 查看当前会话状态。
测试功能
/proactive manage debug_info 查看 AI 收到的用户信息。/proactive test llm 实际测试用户信息附加功能。/proactive test generation 测试 LLM 生成主动消息。/proactive test basic 测试主动消息发送。不想显示某项信息?直接从模板中删除对应的占位符即可。
用户信息模板支持的占位符:
| 占位符 | 说明 |
|---|---|
{username} |
用户名 / 昵称 |
{user_id} |
用户 ID |
{time} |
消息时间 |
{current_time} |
当前时间 |
{weekday} |
当前星期(如「星期一」) |
{platform} |
平台名(如 aiocqhttp、telegram) |
{chat_type} |
聊天类型(群聊 / 私聊) |
{user_last_message_time} |
用户上次发消息时间 |
{user_last_message_time_ago} |
用户上次发消息相对时间(如「5 分钟前」) |
{ai_last_sent_time} |
AI 上次发送时间 |
{calendar_today} |
今天的时间表事项(需启用「时间表」功能,关闭时为空) |
主动对话提示词额外支持的占位符:
| 占位符 | 说明 |
|---|---|
{user_context} |
完整的用户上下文信息(含用户名、平台、时间等) |
{unreplied_count} |
用户连续未回复次数 |
主动对话提示词同样支持上表中的
{username}、{platform}、{chat_type}、{current_time}、{weekday}、{user_last_message_time}、{user_last_message_time_ago}、{ai_last_sent_time}、{calendar_today}。
内置默认模板:
[对话信息] 用户名称:{username},时间:{time},上次聊天时间:{user_last_message_time}
简洁模板(推荐):
[对话信息] 用户:{username},时间:{time}
详细信息模板:
[对话信息] 用户:{username}(ID:{user_id}),时间:{time},平台:{platform}({chat_type})
最简模板(只显示用户名):
用户:{username}
基础提示词列表:
主动问候用户,询问近况
分享有趣话题,发起轻松对话
关心用户情况,温暖问候
友好交流,分享今日想法
使用占位符的提示词示例:
现在是 {current_time},用户 {username} 上次发消息是在 {user_last_message_time},请主动问候用户
{username} 在 {platform} 上已经有一段时间没有活跃了,上次发消息是 {user_last_message_time_ago},请友好地询问近况
根据以下用户信息主动发起对话:{user_context}
现在是 {current_time},已连续 {unreplied_count} 次未回复,请主动关心一下用户
固定间隔模式:
{
"timing_mode": "fixed_interval",
"interval_minutes": 600,
"random_delay_enabled": true,
"min_random_minutes": 0,
"max_random_minutes": 30
}
随机间隔模式:
{
"timing_mode": "random_interval",
"random_min_minutes": 600,
"random_max_minutes": 1200
}
/proactive manage debug_info —— 查看当前用户原始信息、配置状态与 AI 将收到的完整用户信息。/proactive test llm —— 发送一条测试消息,自动附加用户信息,直接体验效果。/proactive status —— 查看当前会话是否在主动对话列表中。/proactive add_session —— 添加当前会话。/proactive test generation —— 测试 LLM 生成。/proactive show prompt —— 预览主动对话提示词列表与组合话术。/proactive test prompt —— 含历史记录处理的完整测试。/proactive test basic —— 测试立即发送。/proactive manage debug_send —— 调试发送过程。extra_user_content_parts 追加到用户消息后;时间感$ claude mcp add astrbot_proactive_reply \
-- python -m otcore.mcp_server <graph>