跳转至

人格与状态

人格分两层:配置写定的稳定人设(bot.toml [personality]),以及随互动持续漂移的状态—— 按人记录的好感度、全局的精力与心情。本页说明状态的变化规则、对表达的影响与查看入口。

默认状态:整套系统默认运行,无总开关;可调项为漂移速率与提示词素材。

好感度:按人漂移

  • 每个人物(主人与各位群友)各有一条好感度,范围 0~100。主人初值 12;群友首次互动时建档,初值同为 12。
  • 上升途径:每完成一个实际开口的回合,对在场人物 +0.35×权重(群聊权重见下节); 回复中输出的 favor 事件(单次限 ±3)产生额外加成,按 1.2×权重计入。
  • 下降途径:回复中输出负向 favor;此外仅主人的好感度随时间缓慢回落(每天 -0.6,不足一小时不结算), 群友好感度不随时间变化,仅随互动事件变化。
  • 好感度不以数值进入提示词,而是折算为关系深度文案:初识(20 以下)、熟悉、信任、重要、深厚(88 以上), 写入系统提示词的关系块。与主人的相识时长一并注入(仅对主人注入)。
  • 生效时机:回合内的事件增量在回合结束时落库;时间衰减在下一回合开始时结算。

精力与心情:全局取值,不按人

  • 全局各一个值,范围 0~100,初始精力 80、心情 50。
  • 精力变化:每个回复回合 -0.3×权重;回复中输出的 energy 事件(单次限 ±3)按 3×权重计入; 主要来源为日程活动的时差积分——按活动模型给出的节奏值,每小时 2.5×(节奏值 − 1): 睡眠(节奏 3)每小时 +5,休息(节奏 2)每小时 +2.5,普通清醒(节奏 1)不增不减, 更费力的活动按同一速率下降。无日程时按「清醒每小时 -2.5」兜底。 取值口径是「一夜八小时睡眠 +40,足以兜住一个聊得多的白天」。
  • 心情变化:主要由日程活动的节奏推动,并持续向基线 50 回归(时间常数约 6 小时); 回复中的 energy/favor 事件不直接改变心情。
  • 对表达的影响:数值本身不进入提示词,而是折算为一句行为约束并入时间上下文—— 精力低于 45 提示「有点累,反应可以稍短稍慢」,低于 20 提示「精疲力尽」;心情高于 65 提示「心情不错」, 低于 35 提示「心情低落」。中间区间不提示。
  • 不影响「是否回复」的判定;精力与主人好感仅影响桌面主动搭话的兴趣累积速率(越低累积越慢)。
  • 每天首次状态会存档一份快照;前一日结束时的精力与心情会作为次日日程生成的规划约束。

群聊人格增量的低倍率折算

群聊以一句一答为主,消耗远小于面对面长聊,因此全部人格增量(回合的好感与精力结算、亲昵事件的加成) 均乘以 group_chat.persona_weight,初始配置 0.8。私聊与桌面恒为 1.0。

折算效果:默认配置下群聊 20 个回合约等于私聊 1 个回合。置 0 则群聊完全不产生人格漂移 (好感不上升、精力不消耗)。

稳定人设:提示词素材

bot.toml [personality] 五个键仅从配置进入系统提示词:

  • personality:稳定身份、经历、外表与性格,置于身份块开头。
  • birthday:格式 YYYY-MM-DD;填写后派生年龄,生日当天追加当日提示。
  • reply_style:句长、语气、排版与收尾习惯,进入「说话风格」区。
  • tone_probabilitytone_variants:新会话开始(空闲超过 30 分钟)时按概率从候选中至多抽取一条 临时语调;概率默认 0,即默认不抽取。
  • bot 段的 user_nicknamerelationship 仅对主人注入,群聊中不可见。

面板上的查看入口

  • 「人物与关系」页(/persons):列表支持按好感度排序,详情页展示好感度数值与该人物名下的生效事实。
  • 面板首页观察区:精力与心情数值条、当前状态标签(睡着、刚醒、休息中等); 每回合的状态增量可在回合追踪中查看。

好感度、精力心情与每日快照均保存在数据目录的 memory.db 中,备份数据库即备份这些状态; 清库后所有人物以初始值重新建档。

调整方式与停用影响

  • 调整漂移速率:group_chat.persona_weight(0~1)。置 0 等于关闭群聊的人格漂移; 私聊与桌面的漂移无开关,恒为全速。
  • 调整表达素材:修改 [personality] 五个键,保存后热生效。
  • 该系统无总开关,属于提示词与行为节奏的基础组件;不提供将状态清零的手段。

实现细节见开发手册·core/agent记忆系统