跳转至

日程与睡眠

系统按自然日运行一份「今日方向」定调,并以一条「活动时间线」记录当前所处状态,其中可包含真正的睡眠。 睡眠时群消息默认不处理,但有几类消息可以将其叫醒。本页说明节奏的生成方式、睡眠规则与日记的查看入口。

默认状态:日程默认运行(无总开关),睡眠默认允许(bot.toml schedule.sleep_enabled = true)。

每日节奏的生成

今日方向:每天首次需要时生成(首次回复或首次主动搭话之前),而非定点任务。内容仅含三项: 一个主题、3~5 条意向、一个大致的节奏描述,刻意不带具体钟点。生成输入包括星期与节日、相识纪念日、 前一日的主题与未推进的意向(滚动至当日)、互动密度、近两日的精力与心情。

生成失败会先按原提示词重试一次;仍失败则当日使用备用主题 fallback_theme (默认「按自己的节奏度过今天。」)加三条中性意向兜底,并按 generation_retry_interval_minutes (默认 10 分钟)冷却后再次尝试。方向落库持久化,当日重启不丢失。

活动时间线:方向之下,由模型逐段推进当前所处状态。活动仅三种:awake(清醒活动)、 rest(休息但保持可回应)、sleep(睡眠)。每段活动带预期时长(10~600 分钟)与精力、心情的推移速率, 并可标记「该段在推进当日的第几条意向」。到达预期结束点时由模型决定继续或切换; 出现超过 90 分钟的空白时由模型一次性补齐;决策失败则 10 分钟后重试。 时间线必须连续,同一时刻至多一条进行中。活动切换驱动精力与心情结算(见人格与状态), 并产生一条主动搭话的「计划」意图(见主动搭话)。

睡眠中的消息规则

sleep_enabled 的精确语义:控制活动模型是否可以选择 sleep。关闭后仅可选择 rest—— 休息并恢复精力,但始终保持可回应,不再出现睡眠表现。

睡眠期间的门控规则:

  • 可以叫醒:真实 @ 且 group_chat.at_mention_must_reply = true(默认开)的群消息;任何私聊消息; 桌宠窗口的消息。
  • 不能叫醒:群内的名字命中、戳一戳、对其消息的表情回应,以及所有非点名消息(直接丢弃,不进入处理)。

叫醒为显式动作:被可叫醒的消息命中后,当前睡眠段立即结束,插入一段「被消息叫醒,正慢慢清醒过来」的 清醒活动。此后 10 分钟内不会立即重新入睡;约 40 分钟内处于「刚醒」状态,提示词要求语气迷糊迟缓—— 该状态下的回复偏短、偏钝,属预期行为。

活动与日记的查看入口

不存在「定时写日记」的机制。日记内容为实时组装:对话累计 48 条(conversation.summarize_trigger_messages, 可调)即摘要为一段情节写入记忆库;日记窗口将这些情节连同今日方向、相关事实按天展示。 情节由模型写成,带召回线索,长期保留、不随时间衰减。

  • 桌宠日记窗口:托盘菜单「看她的日记…」,按天浏览。
  • 面板观察页(首页):当前活动、今日主题与意向清单、睡眠状态条。

日程对聊天的影响

  • 语气与状态:精力、心情折算为行为提示进入提示词;「当前在做什么」仅在对方真正询问时注入具体活动。
  • 回复意愿:日程不影响「是否回复」的判定,唯一的硬性影响为睡眠时段的群消息丢弃规则。
  • 主动搭话:睡眠时桌面主动搭话一律不投放;活动切换会产生新的搭话意图。

调整方式与停用影响

以下三个键位于 bot.toml[schedule] 段,亦可在面板「月璃设置」页修改:

  • schedule.sleep_enabled = false:不再进入真正的睡眠,失去睡着、被叫醒、刚醒迷糊的整套表现 及睡眠恢复精力的节奏;其余日程功能照常。
  • schedule.fallback_theme:修改兜底主题(1~72 字符)。
  • schedule.generation_retry_interval_minutes:生成失败后的冷却时间(1~1440 分钟)。

模型侧:models.tomlmodel_tasks.schedule 留空即沿用对话模型;日程模型不可用时,每日落一份备用方向, 活动不再由模型推进——聊天不受影响,但「当前在做什么」停留在兜底状态。 今日方向与活动时间线均落库于 memory.db,当日重启不丢失。

实现细节见开发手册·core/services