日程与睡眠¶
系统按自然日运行一份「今日方向」定调,并以一条「活动时间线」记录当前所处状态,其中可包含真正的睡眠。 睡眠时群消息默认不处理,但有几类消息可以将其叫醒。本页说明节奏的生成方式、睡眠规则与日记的查看入口。
默认状态:日程默认运行(无总开关);精力系统默认开启(bot.toml schedule.energy_enabled = true),开启时活动可以选择睡眠。
每日节奏的生成¶
今日方向:每天首次需要时生成(首次回复或首次主动搭话之前),而非定点任务。内容仅含三项: 一个主题、3~5 条意向、一个大致的节奏描述,刻意不带具体钟点。生成输入包括星期与节日、相识纪念日、 前一日的主题与未推进的意向(滚动至当日)、互动密度、近两日的精力与心情。
生成失败会先按原提示词重试一次;仍失败则当日使用备用主题 fallback_theme
(默认「按自己的节奏度过今天。」)加三条中性意向兜底,并按 generation_retry_interval_minutes
(默认 10 分钟)冷却后再次尝试。方向落库持久化,当日重启不丢失。
活动时间线:方向之下,由模型逐段推进当前所处状态。活动仅三种:awake(清醒活动)、
rest(休息但保持可回应)、sleep(睡眠)。每段活动带预期时长与精力、心情的推移速率,
并可标记「该段在推进当日的第几条意向」。单段清醒最长 120 分钟、休息最长 180 分钟;
睡眠按首尾相接的一整觉累计,最长 540 分钟(9 小时)。到达预期结束点时由模型决定继续或切换;
出现超过 90 分钟的空白时由模型一次性补齐;决策失败则 10 分钟后重试。
时间线必须连续,同一时刻至多一条进行中。活动切换驱动精力与心情结算(见人格与状态),
并产生一条主动搭话的「计划」意图(见主动搭话)。
睡眠中的消息规则¶
睡眠依附于精力系统。energy_enabled 关闭后,活动模型不允许选择 sleep,只在 awake 与 rest 之间推进,
正在进行的睡眠也会结束;此后始终保持可回应,不再出现睡眠表现。
睡眠期间的门控规则:
- 可以叫醒:真实 @ 且
group_chat.at_mention_must_reply = true(默认开)的群消息;任何私聊消息; 桌宠窗口的消息。 - 不能叫醒:群内的名字命中、戳一戳、对其消息的表情回应,以及所有非点名消息(直接丢弃,不进入处理)。
叫醒为显式动作:被可叫醒的消息命中后,当前睡眠段立即结束,插入一段「被消息叫醒,正慢慢清醒过来」的 清醒活动。约 40 分钟内处于「刚醒」状态,提示词要求语气迷糊迟缓—— 该状态下的回复偏短、偏钝,属预期行为。
入睡的两条硬规则,不论睡眠是自然结束还是被叫醒都适用:
- 距上一段睡眠结束不足 60 分钟时,不允许再次入睡。
- 一整觉累计达到 540 分钟后不能续睡;模型仍要续睡时,由系统结束这一觉并重新决定下一段活动。
活动与日记的查看入口¶
不存在「定时写日记」的机制。日记内容为实时组装:对话累计 48 条(conversation.summarize_trigger_messages,
可调)即摘要为一段情节写入记忆库;日记窗口将这些情节连同今日方向、相关事实按天展示。
情节由模型写成,带召回线索,长期保留、不随时间衰减。
- 桌宠日记窗口:托盘菜单「看她的日记…」,按天浏览。
- 面板观察页(首页):当前活动、今日主题与意向清单、睡眠状态条。
日程对聊天的影响¶
- 语气与状态:精力、心情折算为行为提示进入提示词;「当前在做什么」仅在对方真正询问时注入具体活动。
- 回复意愿:日程不影响「是否回复」的判定,唯一的硬性影响为睡眠时段的群消息丢弃规则。
- 主动搭话:睡眠时桌面主动搭话一律不投放;活动切换会产生新的搭话意图。
调整方式与停用影响¶
以下三个键位于 bot.toml 的 [schedule] 段,亦可在面板「月璃设置」页修改:
schedule.energy_enabled = false(面板中为「启用精力系统」):精力冻结在当前值,对话与活动都不再改变它, 行为也不再受精力影响;不再进入真正的睡眠,失去睡着、被叫醒、刚醒迷糊的整套表现。 心情、亲密度与其余日程功能照常。重新开启时精力按关闭时长向基线收敛,关闭期间的活动不补算。 运行中切换这个开关(任一方向)时,正在进行的清醒或休息活动会立即结束,并按新开关重新决定下一段, 不会再沿用按旧开关写下的活动描述。 该键在配置 1.6.0 之前名为sleep_enabled,升级时沿用原值。schedule.fallback_theme:修改兜底主题(1~72 字符)。schedule.generation_retry_interval_minutes:生成失败后的冷却时间(1~1440 分钟)。
模型侧:models.toml 的 model_tasks.schedule 留空即沿用对话模型;日程模型不可用时,每日落一份备用方向,
活动不再由模型推进——聊天不受影响,但「当前在做什么」停留在兜底状态。
今日方向与活动时间线均落库于 memory.db,当日重启不丢失。
实现细节见开发手册·core/services。