配置项参考
人格配置的每一节、每一项:网页后台里叫什么、键名、类型、默认值、说明。这一页是从配置的定义里生成的,不手抄;代码改了没重新生成,测试会红。
怎么读
- 每个人格一份配置:从源码跑时是
config/personas/<人格>.toml,桌面版在数据目录里;网页后台「配置管理」改的就是它。节名是 TOML 的表名,比如[sleep]。 - 每一项一行:后台里的中文名、键名、默认值;下面一行是类型和说明(定义里写了说明的才有)。
- 「当前服务器」那一档能覆盖的是其中一部分,存在每个服务器自己的设置里,没覆盖的跟着这份走。
- 改了大部分项下一轮就生效;要重启才生效的,后台保存时会列出来。
重新生成:
.venv/bin/python scripts/site_config_reference.py site/src/data/config-reference.json
人格配置
身份与人格[identity]
- 名称
name必填 - 文字
- 别名
aliases[] - 列表(文字)
- 所有者 · Discord 用户编号
owner_user_ids[] - 列表(整数)
- 所有者 · QQ 号
owner_qq_ids[] - 列表(整数)
- 性别设定
gender空 - 文字
- 年龄印象
age_impression空 - 文字
- 人格描述
personality必填 - 文字
- 回复风格
reply_style必填 - 文字
- 行为风格
behavior_style必填 - 文字
- 身份规则
identity_rule必填 - 文字
对话策略[conversation]
- 上下文消息数
context_messages48 - 整数
- 上下文字数
context_characters14000 - 整数
- 规划上下文字数
planner_context_characters7000 - 整数
- 回复上下文字数
reply_context_characters14000 - 整数
- 消息合并等待(秒)
debounce_seconds1.4 - 数
- 直接回复阈值
direct_reply_score80 - 整数
- 主动回复阈值
spontaneous_reply_score88 - 整数
- 连续回复阈值
continuation_reply_score56 - 整数
- 基础回复频率
base_reply_frequency0.55 - 数
- 最高自身消息占比
max_self_ratio0.34 - 数
- 最短回复间隔(秒)
minimum_reply_gap_seconds8 - 数
- 启用连续互动
engagement_enabledtrue - 开关
- 连续互动窗口(秒)
engagement_window_seconds180 - 数
- 连续互动最大轮次
engagement_max_turns8 - 整数
- 连续互动最大人数
engagement_max_participants4 - 整数
- 连续互动最大判断次数
engagement_max_considerations12 - 整数
- 规划器最大等待次数
engagement_max_planner_waits2 - 整数
- 冷场触发时间(秒)
idle_pressure_seconds150 - 数
- 单次回复最大段数
max_segments4 - 整数
- 单段最大字数
max_segment_characters520 - 整数
- 每秒输入字数
typing_characters_per_second3.5 - 数人格打字有多快(每秒几个字,中文一个字算 1、英文字母算 0.55)。真人用手机打中文大约每秒 2–5 个字;兴奋时快一些、害羞或没精神时慢一些。每一段按「字数 ÷ 速度」打,在最短、最长输入时间之间。
- 最短输入时间(秒)
typing_min_seconds0.35 - 数每一段最少打多久(秒)。
- 最长输入时间(秒)
typing_max_seconds40 - 数每一段最多打多久(秒)。很长的一段也不会一直「正在输入」下去。
- 过一会儿才看到
notice_enabledtrue - 开关醒着、手上没事时,消息到了不一定马上看到:在聊的时候 0–3 秒看到;刚看过手机时多数十几秒内;没在看手机时一部分要过一会儿才看到。睡着、外出、在做事时照作息的规矩。关掉就一律马上看到。
- 晚看到的比例
notice_late_probability0.4 - 数没在看手机时,过一会儿(最短到最长看到时间之间)才看到的比例。会随人格的注意力、关系远近、是不是冲着人格来、深夜、累不累浮动;刚看过手机时大约是它的六成。
- 晚看到最短(秒)
notice_late_min_seconds30 - 数过一会儿才看到时,最短多久(秒)。
- 晚看到最长(秒)
notice_late_max_seconds120 - 数过一会儿才看到时,最长多久(秒)。
- 很快看到最长(秒)
notice_quick_max_seconds15 - 数很快看到的那一部分,最长多久(秒)。
- 刚看过手机的时长(秒)
notice_glance_window_seconds600 - 数人格在任何地方说过话以后,多长时间内算「刚看过手机」(秒)。这段时间里别的消息也看得比较快。
- 粘手机程度
attentiveness0.5 - 数人格有多粘手机:越高,过一会儿才看到的比例越低(比例 ×(1.5 − 注意力))。
- 第一条回复最晚(秒)
first_reply_cap_seconds120 - 数醒着、手上没事时,从消息到达到第一条回复发出最长多久(秒)。超了先压缩「看到」的时间,再压缩打字。
- 每秒阅读字数
reading_characters_per_second20 - 数读对方消息的速度(字 / 秒)。看到以后先读完,再和想、模型生成的时间一起算什么时候开始打字。
- 能点的表情
reaction_emojis["👍","😂","❤️","👌","🥹","😮","🙏","🤔"] - 列表(文字)只回个表情时能点的表情。点哪个由模型按那条消息挑,没有合适的就不点;空着就从不点表情。
- 点表情最短间隔(秒)
reaction_min_gap_seconds600 - 数同一个频道里两次只点表情至少隔多久(秒)。没到就照旧不出声。
- 补一句的比例
afterthought_probability0.12 - 数写回复时另写了「补一句」的,按这个比例真的发出去(作为最后一段)。
- 补一句前最短停顿(秒)
afterthought_min_seconds8 - 数补一句之前最短停多久(秒)。
- 补一句前最长停顿(秒)
afterthought_max_seconds25 - 数补一句之前最长停多久(秒)。
- 观察余量
observation_margin18 - 整数
- 频道工作器闲置时间(秒)
worker_idle_seconds300 - 整数
- 会话状态保留时间(秒)
state_retention_seconds3600 - 整数
- 打错字的比例
typo_probability0.1 - 数能打错的回复里,打错一个同音字的比例(在外面、着急、紧张时更高)。
- 对话自发性
spontaneity0.58 - 数
- 自然不完整度
natural_incompleteness0.62 - 数
- 个人主动性
personal_initiative0.56 - 数
- 状态说出口倾向
state_verbalization_tendency0.28 - 数
- 浪漫表达显性度
romantic_explicitness0.3 - 数
- 消息保留天数
message_retention_days30 - 整数
- 每频道消息上限
messages_per_channel5000 - 整数
- 情绪风格
mood_styles{} - 对照表
访问控制[interaction_access]
- 仅允许白名单用户
whitelist_onlyfalse - 开关
- 用户白名单
user_whitelist[] - 列表(整数)
作息状态[sleep]
- 启用
enabledtrue - 开关
- 入睡时间(时)
start_hour1 - 整数
- 入睡时间(分)
start_minute0 - 整数
- 起床时间(时)
end_hour7 - 整数
- 起床时间(分)
end_minute0 - 整数
- 睡眠时显示离线
appear_offlinetrue - 开关
- 清醒时状态文字
awake_activity在群里晃悠 - 文字
- 状态检查间隔(秒)
check_interval_seconds60 - 整数
- 私聊唤醒消息数
dm_wake_messages3 - 整数
- 私聊唤醒窗口(秒)
dm_wake_window_seconds600 - 整数
- 群聊唤醒次数
guild_wake_mentions3 - 整数
- 群聊唤醒窗口(秒)
guild_wake_window_seconds600 - 整数
- 唤醒持续时间(分钟)
wake_duration_minutes15 - 整数
- 再次入睡最短时间(分钟)
quiet_resleep_min_minutes10 - 整数
- 再次入睡最长时间(分钟)
quiet_resleep_max_minutes15 - 整数
- 起床气强度
wake_irritability35 - 整数
- 起床状态
wake_stylepersonality - "personality" | "angry" | "aggrieved" | "impatient" | "sleepy"
- 被叫醒最快几秒
wake_latency_min_seconds25 - 整数
- 被叫醒最慢几秒
wake_latency_max_seconds75 - 整数
- 连发算一次(秒)
notification_burst_seconds8 - 整数
- 允许主动免打扰
self_dnd_enabledtrue - 开关
- 困了才睡
adaptivetrue - 开关设定时间只作参考:很累、没事做会早睡,正聊着、周末会晚睡;关掉就每晚按设定时间睡
- 最多提前入睡(分钟)
earliest_minutes180 - 整数最多比设定入睡时间早睡多少分钟
- 最多推后入睡(分钟)
latest_minutes120 - 整数最多比设定入睡时间晚睡多少分钟(不含周末顺延)
- 每晚至少睡(小时)
min_sleep_hours5.5 - 数一晚至少睡几小时
- 每晚最多睡(小时)
max_sleep_hours10 - 数一晚最多睡几小时
- 周末晚睡晚起(分钟)
weekend_shift_minutes45 - 整数周五、周六晚上晚睡,第二天早上晚起多少分钟
- 工作日按时起床
weekday_alarmtrue - 开关周一到周五早上按设定起床时间起
- 允许午睡
naps_enabledtrue - 开关午后很困又没事时,偶尔打个盹
- 午睡最长(分钟)
nap_max_minutes40 - 整数午睡最长多少分钟
学习与记忆[learning]
- 启用
enabledtrue - 开关
- 表达学习批次消息数
expression_batch_messages28 - 整数
- 每服务器表达规则上限
max_expression_rules_per_guild120 - 整数
- 学习群内黑话
learn_jargontrue - 开关
- 黑话最少证据数
jargon_min_evidence2 - 整数
- 学习说话习惯
learn_speech_patternstrue - 开关
- 说话习惯最少证据数
speech_pattern_min_evidence2 - 整数
- 每服务器说话习惯上限
max_speech_patterns_per_guild240 - 整数
- 学习用户画像
learn_user_profilestrue - 开关
- 学习人物特征
learn_person_traitstrue - 开关
- 启用长期记忆
long_term_memorytrue - 开关
- 情景记忆保留天数
memory_episode_retention_days180 - 整数
- 认知上下文字数
cognition_context_characters9000 - 整数
- 表达上下文字数
style_context_characters7000 - 整数
- 黑话上下文字数
jargon_context_characters5000 - 整数
- 记忆复核置信度上限
memory_review_confidence_max0.62 - 数
- 记忆复核访问阈值
memory_review_access_threshold3 - 整数
- 启用隐式反馈
implicit_feedback_enabledtrue - 开关
- 隐式反馈窗口(秒)
implicit_feedback_window_seconds300 - 整数
- 隐式反馈候选上限
implicit_feedback_max_candidates3 - 整数
- 启用中期记忆
mid_term_memory_enabledtrue - 开关
- 中期记忆批次消息数
mid_term_batch_messages10 - 整数
- 中期记忆保留时间(分钟)
mid_term_ttl_minutes180 - 整数
- 中期记忆召回相似度
mid_term_recall_similarity0.36 - 数
- 中期记忆 Token 上限
mid_term_max_tokens260 - 整数
- 画像刷新消息间隔
profile_refresh_message_interval60 - 整数
- 画像过期时间(分钟)
profile_refresh_stale_minutes360 - 整数
- 单次画像刷新人数
profile_refresh_max_users3 - 整数
- 画像采样消息数
profile_refresh_messages_per_user12 - 整数
- 画像刷新 Token 上限
profile_refresh_max_tokens420 - 整数
服务器管理[management]
- 启用
enabledtrue - 开关
- 管理意图置信度
planner_confidence0.84 - 数
- 最长禁言时间(秒)
max_timeout_seconds2419200 - 整数
- 单次清理消息上限
max_purge_messages500 - 整数
- 删除频道或身份组前确认
require_confirmation_for_structural_deletetrue - 开关
- 操作确认有效期(秒)
confirmation_ttl_seconds45 - 整数
- 审计频道 ID
audit_channel_id空 - 整数 | 空
- 可撤销操作置信度
reversible_confidence0.88 - 数
- 高影响操作置信度
hard_confidence0.92 - 数
- 删除操作置信度
destructive_confidence0.95 - 数
- 撤销窗口(秒)
undo_window_seconds60 - 整数
- 敏感操作统计窗口(秒)
high_risk_window_seconds60 - 整数
- 窗口内敏感操作上限
high_risk_max_actions3 - 整数
- 私信管理置信度增量
dm_confidence_margin0.04 - 数
运行监控[operations]
- 管理频道 ID
management_channel_id空 - 整数 | 空
- 审计同步间隔(秒)
audit_poll_seconds90 - 整数
- 事件保留天数
event_retention_days90 - 整数
- 新账号判定天数
new_account_days7 - 整数
- 集中加入统计窗口(秒)
join_burst_window_seconds120 - 整数
- 集中加入告警人数
join_burst_threshold4 - 整数
- 批量删消息告警数量
bulk_delete_threshold5 - 整数
- 事件订阅
subscriptions{"member_join":true,"member_leave":true,"member_update":true,"profile_update":false,"automod":true,"structure":true,"guild_update":true,"message_delete":true,"audit":true,"voice":false} - 对照表
音乐功能[music]
- 启用
enabledtrue - 开关
- 默认音量
default_volume0.55 - 数
- 播放队列上限
max_queue_size100 - 整数
- 空闲断开时间(秒)
idle_disconnect_seconds300 - 整数
- 允许搜索歌曲
allow_searchtrue - 开关
模型运行[model_runtime]
- 模型最大并发数
max_parallel_requests4 - 整数
- 专注任务最大并发数
max_parallel_focus1 - 整数
- 跨服务器共享专注队列
share_focus_across_guildsfalse - 开关
- 每服务器专注任务容量
focus_capacity_per_guild1 - 整数
- 主动回复等待时间(秒)
spontaneous_focus_wait_seconds1.5 - 数
- 直接回复等待时间(秒)
direct_focus_wait_seconds30 - 数
- 每分钟请求上限
max_requests_per_minute60 - 整数
- 每分钟 Token 上限
max_estimated_tokens_per_minute120000 - 整数
- 后台任务每分钟 Token 上限
background_max_estimated_tokens_per_minute24000 - 整数
认知内核[nhcx]
- 接管程度
authority_modeHYBRID - "SHADOW" | "CANARY" | "HYBRID" | "AUTHORITATIVE"
- 小范围接管的服务器
canary_guild_ids[] - 列表(整数)
- 小范围接管的频道
canary_channel_ids[] - 列表(整数)
- 小范围接管的用户
canary_user_ids[] - 列表(整数)
- 决策超时(秒)
decision_timeout_seconds1.5 - 数
- 出错时退回旧流程
fallback_to_legacytrue - 开关
- 允许主动开口
proactive_enabledtrue - 开关
- 社交自检
social_self_check_enabledtrue - 开关
- 社交自检间隔(分钟)
social_self_check_interval_minutes20 - 整数
- 冷场多久才自检(分钟)
social_self_check_min_inactive_minutes30 - 整数
- 信任的人格机器人
trusted_persona_bots{} - 对照表
主动联系[proactive]
- 启用
enabledtrue - 开关主动联系的总开关。关掉之后完全不会主动找人,也不再记「有没有人回我」。
- 开口概率
probability0.35 - 数够到门槛之后,这一轮真的开口的基础概率。0 = 永远不主动。
- 阈值
threshold0.48 - 数主动联系的门槛。越低越爱找人。0.48 时:陌生人从来不,普通朋友安静约一天之后,熟人约半天,恋人一小时内。
- 两次之间最短间隔
min_gap_minutes30 - 整数对同一个人,两次主动之间至少隔多少分钟。
- 每人每天上限
daily_cap_per_user4 - 整数对同一个人一天最多主动几次。0 = 不限。这是模型 API 花费的硬闸。
- 每天总上限
daily_cap_total24 - 整数这个人格一天主动的总次数上限。0 = 不限。
- 检查间隔
sweep_interval_minutes10 - 整数多久检查一次「谁把我晾着了」。
- 对话自发性
spontaneity0.45 - 数自发性:没有明确由头时,它有多容易因为「就是想到了」而开口。
- 没回时最多补发几条
max_double_texts1 - 整数对方还没回的时候,最多连着补发几条。0 = 绝不补发。
- 软冷却(分钟)
soft_cooldown_minutes180 - 整数软冷却:这段时间内仍然可以发,但会明显更犹豫(不是硬拦)。
- 晚回以后恢复多快
late_reply_recovery0.55 - 数他晚一点回了之后,难过/烦躁恢复得多快。1.0 = 立刻回到平常。
- 学对方回复快慢的速度
expected_reply_learning_rate0.2 - 数学习「这个人平时多久回一次」的速度。0 = 永远用固定的耐心窗口。
- 主动消息每天生成上限
proactive_generation_daily_budget12 - 整数每天最多为主动消息调用几次模型。只约束生成,不扭曲内部状态。
- 影子模式
shadow_modefalse - 开关影子模式:照常产生冲动、照常做决定、照常记录,但**不真的发出去**。
proactive.impulse[proactive.impulse]
- 无聊的影响
boredom_influence0.55 - 数无聊对「想找人」的影响。0 = 再无聊也不会因此找人。
- 想分享的影响
share_urge_influence0.7 - 数「有件事想告诉他」的影响。刚忙完、心情变了都会走这一项。
- 心情变化的影响
mood_influence0.5 - 数心情**变化**对「想找人」的影响。注意是变化量,不是绝对值。
- 亲疏的影响
relationship_influence0.8 - 数关系亲近度对「想找谁」的影响。1 = 按真实亲疏;往 0 调会让它更平均地想起所有人;调到 1 以上则放大亲疏差距(亲近的更容易想起,疏远的更难)。
- 回忆的影响
memory_influence0.75 - 数回忆/白日梦飘到某人身上时的影响。
- 心情明显变化的门槛
mood_shift_threshold0.12 - 数心情变化超过多少才算「明显变了」。
- 念头默认放多久(小时)
default_expiry_hours6 - 数一个「想说的念头」默认能放多久,之后就是「时候过了」。
- 重的念头多放多久(小时)
weight_expiry_bonus_hours18 - 数分量越重的念头放得越久,最多额外加多少小时。
- 开口门槛
send_threshold0.18 - 数接近减回避的净值要到多少才真的开口。
被冷落之后[proactive.outreach]
- 等多久算没人回
patience_minutes180 - 数主动找了对方之后,等多久还没回复就算「没人回」。太短会把「人家在忙」误判成冷落。
- 饥饿涨满需要
loneliness_full_hours48 - 数对方完全不说话时,社交饥饿涨到满需要多少小时。
- 每次没人回加多少饥饿
loneliness_per_ignore0.12 - 数每一次「没人回」额外增加多少社交饥饿。
- 被回应后饥饿剩多少
loneliness_relief0.25 - 数对方回话之后,饥饿掉到原来的百分之多少(0.25 = 掉到四分之一)。
- 饥饿转成冲动的比例
urge_gain0.22 - 数社交饥饿把「想找他」抬高多少。调大就更容易因为安静太久而主动。
- 越不理越想找的幅度
escalation_gain0.06 - 数收手之前,每一次没人回额外抬高多少「想找他」。这是「越不理越想找」那一段。
- 几次之后开始收手
withdraw_after3 - 整数连着几次没人回之后开始收手(赌气、难过、不再找了)。依恋强的人格会更晚。
- 收手的速度
withdraw_gain0.18 - 数收手的速度:超出上面那个次数之后,每多一次减少多少主动倾向。
- 每次没人回加多少烦躁
irritation_per_ignore0.08 - 数每一次没人回增加多少烦躁。易怒的人格会更多。
- 每次没人回压低多少心情
sadness_per_ignore0.06 - 数每一次没人回压低多少心情。依恋强的人格会更多。
- 烦躁上限
irritation_cap0.35 - 数烦躁累计的上限,免得长期冷落把人格拖成一个常量。
- 心情下压上限
sadness_cap0.3 - 数心情被压低的上限(取正数)。
- 几次之后才影响印象
impression_after4 - 整数连着几次没人回之后才开始影响印象。一两次没回很正常,默认高于开始收手的次数。
- 印象伤害倍率
impression_penalty_scale1 - 数被冷落对印象的伤害倍率。1.0 = 好感 -0.006、信任 -0.004、近期情绪 -0.12;0 = 冷落完全不影响印象。
proactive.semantic[proactive.semantic]
- 启用
enabledfalse - 开关语义审议总开关。关掉之后一次模型调用都不会发生。
- 影子模式
shadow_modetrue - 开关影子模式:照常问、照常记录分歧,但**不改变行为**。先跑这个。
- 允许语义专家拦下
veto_enabledfalse - 开关允许语义专家把「要发」降成「等」或「不发」。它永远不能反过来。
- 不确定度的门槛
uncertainty_threshold0.55 - 数本地结论的不确定度超过这个值才值得问。越高问得越少。
- 专家分歧的门槛
conflict_threshold0.62 - 数内部专家分歧超过这个值就问,不看不确定度。
- 带上的最近消息条数
recent_message_limit8 - 整数交给语义专家的最近消息条数。给多了贵,给少了它读不出上下文。
- 每天审议上限
daily_budget40 - 整数每天最多做几次语义审议。0 = 不限(不建议)。
- 审议超时(毫秒)
timeout_ms6000 - 整数语义审议的超时。超时按「没给出结论」处理。
- 主动出错时宁可不发
fail_closed_proactivetrue - 开关主动消息:超时/输出坏了的时候,宁可不发。
- 插嘴出错时宁可不插
fail_closed_ambienttrue - 开关群里插嘴:超时/输出坏了的时候,宁可不插。
日常生活与白日梦[life_cycle_pro]
- 启用
enabledtrue - 开关
- 作息随机种子
seed空 - 文字 | 空
- 时区
timezoneUTC - 文字
- 每天主动安排的活动数
daily_activity_budget6 - 整数
- 排活动的间隔(分钟)
proposal_interval_minutes20 - 整数
- 生活活动生成概率
activity_probability0.3 - 数
- 滚动视野最短小时数
rolling_horizon_min_hours4 - 整数
- 滚动视野最长小时数
rolling_horizon_max_hours8 - 整数
- 未来计划上限
maximum_future_plans6 - 整数
- 醒着时忙的比例
target_busy_fraction0.6 - 数
- 白日梦概率
daydream_probability0.25 - 数
- 每日白日梦上限
daydream_daily_limit2 - 整数
- 白日梦最短时长(分钟)
daydream_min_minutes5 - 整数
- 白日梦最长时长(分钟)
daydream_max_minutes30 - 整数
- 白日梦冷却(分钟)
daydream_cooldown_minutes90 - 整数
- 闲多久开始无聊(分钟)
boredom_minutes30 - 整数
- 做梦概率
dream_probability0.6 - 数
- 白日梦片段概率
daydream_fragment_probability0.35 - 数
- 想起梦的冷却(秒)
recall_cooldown_seconds600 - 整数
- 每晚入睡浮动(分钟)
sleep_jitter_minutes15 - 整数
- 每晚起床浮动(分钟)
wake_jitter_minutes8 - 整数
- 聊天最多推迟入睡(分钟)
max_sleep_delay_minutes20 - 整数
- 重要的事可以叫醒
sleep_interrupt_enabledfalse - 开关
- 梦生成超时(秒)
generation_timeout_seconds3 - 数
- 活动偏好
activity_preferences{'MEAL': ActivityPreference(weight=1.0, min_minutes=20, max_minutes=45, start_hour=8, end_hour=23, priority=65, interruptible=True), 'HYGIENE': ActivityPreference(weight=1.0, min_minutes=10, max_minutes=25, start_hour=8, end_hour=23, priority=60, interruptible=False), 'STUDY': ActivityPreference(weight=1.0, min_minutes=30, max_minutes=90, start_hour=8, end_hour=23, priority=75, interruptible=True), 'WORK': ActivityPreference(weight=1.0, min_minutes=35, max_minutes=100, start_hour=8, end_hour=23, priority=78, interruptible=True), 'ENTERTAINMENT': ActivityPreference(weight=1.0, min_minutes=20, max_minutes=60, start_hour=8, end_hour=23, priority=30, interruptible=True), 'OUTSIDE': ActivityPreference(weight=1.0, min_minutes=15, max_minutes=50, start_hour=8, end_hour=23, priority=40, interruptible=True), 'REST': ActivityPreference(weight=1.0, min_minutes=10, max_minutes=30, start_hour=8, end_hour=23, priority=25, interruptible=True), 'ERRAND': ActivityPreference(weight=1.0, min_minutes=15, max_minutes=50, start_hour=8, end_hour=23, priority=50, interruptible=True), 'COMMUTE': ActivityPreference(weight=1.0, min_minutes=20, max_minutes=60, start_hour=8, end_hour=23, priority=80, interruptible=False), 'TRAINING': ActivityPreference(weight=1.0, min_minutes=40, max_minutes=90, start_hour=8, end_hour=23, priority=90, interruptible=False), 'SOCIAL': ActivityPreference(weight=1.0, min_minutes=15, max_minutes=60, start_hour=8, end_hour=23, priority=45, interruptible=True), 'PERSONAL_PROJECT': ActivityPreference(weight=1.0, min_minutes=25, max_minutes=90, start_hour=8, end_hour=23, priority=55, interruptible=True), 'IDLE': ActivityPreference(weight=1.0, min_minutes=10, max_minutes=30, start_hour=8, end_hour=23, priority=10, interruptible=True), 'OTHER': ActivityPreference(weight=1.0, min_minutes=10, max_minutes=40, start_hour=8, end_hour=23, priority=20, interruptible=True), 'EAT_MEAL': ActivityPreference(weight=0.0, min_minutes=20, max_minutes=45, start_hour=8, end_hour=23, priority=65, interruptible=True), 'SHOWER': ActivityPreference(weight=0.0, min_minutes=10, max_minutes=25, start_hour=8, end_hour=23, priority=60, interruptible=False), 'READ': ActivityPreference(weight=0.0, min_minutes=30, max_minutes=90, start_hour=8, end_hour=23, priority=75, interruptible=True), 'GAME': ActivityPreference(weight=0.0, min_minutes=20, max_minutes=60, start_hour=8, end_hour=23, priority=30, interruptible=True), 'WALK': ActivityPreference(weight=0.0, min_minutes=15, max_minutes=50, start_hour=8, end_hour=23, priority=40, interruptible=True), 'HOUSEWORK': ActivityPreference(weight=0.0, min_minutes=15, max_minutes=50, start_hour=8, end_hour=23, priority=50, interruptible=True), 'LISTEN_MUSIC': ActivityPreference(weight=0.0, min_minutes=20, max_minutes=60, start_hour=8, end_hour=23, priority=30, interruptible=True), 'DOING_OWN_THING': ActivityPreference(weight=0.0, min_minutes=25, max_minutes=90, start_hour=8, end_hour=23, priority=55, interruptible=True), 'NOT_CHECKING_PHONE': ActivityPreference(weight=0.0, min_minutes=10, max_minutes=30, start_hour=8, end_hour=23, priority=10, interruptible=True), 'DAYDREAM_REST': ActivityPreference(weight=0.0, min_minutes=10, max_minutes=30, start_hour=8, end_hour=23, priority=25, interruptible=True)} - 对照表
- 小感冒一年几次
cold_per_year3 - 数
- 事情多的几天一年几次
busy_per_year4 - 数
- 小感冒的说法
cold_label小感冒 - 文字
- 事情多的几天的说法
busy_label这几天事情多 - 文字
- 活动时段覆盖
activity_hours{} - 对照表
所有者关系初始化[owner_bootstrap]
- 启用
enabledtrue - 开关
- 默认长期亲密度
affinity0.85 - 数
- 熟悉度
familiarity0.9 - 数
- 默认信任
trust0.85 - 数
- 默认近期情绪
recent_sentiment0.2 - 数
- 关系阶段
relationship_stageUNSPECIFIED - "UNSPECIFIED" | "HONEYMOON" | "ESTABLISHED"
- 在一起多久(月)
relationship_duration_months空 - 整数 | 空
- 距离
relationship_distanceUNSPECIFIED - "UNSPECIFIED" | "LOCAL" | "LONG_DISTANCE"
- 住在一起
cohabiting空 - 开关 | 空
- 主要联系方式
primary_contact_modeUNSPECIFIED - "UNSPECIFIED" | "PHONE_DISCORD" | "IN_PERSON" | "MIXED"
社会认知[social_cognition]
- 启用
enabledtrue - 开关
- 注意力被聊天占满的门槛
attention_pressure_threshold0.9 - 数
- 换话题的代价
context_switching_cost0.08 - 数
- 闹情绪后自己缓过来(分钟)
withdrawal_recovery_minutes45 - 整数
- 近来好感的半衰期(小时)
recent_sentiment_half_life_hours12 - 数
- 被骚扰感的半衰期(分钟)
harassment_half_life_minutes20 - 数
- 动作延迟下限(毫秒)
behavior_delay_min_ms300 - 整数
- 动作延迟上限(毫秒)
behavior_delay_max_ms2400 - 整数
- 延迟抖动的种子
behavior_delay_seed空 - 文字 | 空
- 排好的动作多久算过期(秒)
behavior_stale_seconds90 - 整数
- 允许的活动种类
activity_categories["MEAL","REST","STUDY","ERRAND","HOBBY"] - 列表(文字)
- 聊得正忙时活动推迟(分钟)
activity_delay_minutes10 - 整数
气质[temperament]
- 耐心
patience0.58 - 数
- 易烦躁
irritability0.46 - 数
- 坚定直接
assertiveness0.62 - 数
- 争论倾向
conflict_tendency0.42 - 数
- 边界强度
boundary_strength0.68 - 数
- 粗口容忍
profanity_tolerance0.56 - 数
- 结束交流倾向
disengagement_tendency0.52 - 数
- 心情多久缓过来(小时)
mood_recovery_hours12.5 - 数
亲密表达[romance]
- 害羞基线
shyness_baseline0.48 - 数
- 私下亲密倾向
private_affection_tendency0.78 - 数
- 公开亲密倾向
public_affection_tendency0.34 - 数
- 调情倾向
flirt_tendency0.52 - 数
- 安慰倾向
comfort_tendency0.72 - 数
- 恋爱主动性
romantic_proactive_tendency0.56 - 数
人格行为定义[persona_definition]
- 注意方式
attention_styleKeeps an independent train of thought and does not automatically center every user message. - 文字
- 对话节奏
conversation_rhythmRelaxed and naturally incomplete; may pause, change focus, or end a thread. - 文字
- 关系表达方式
relationship_expression_styleCloseness changes attention, trust, and initiative more than explicit relationship wording. - 文字
- 冲突方式
conflict_tendenciesCan disagree, refuse, become irritated, and leave a conversation without unsafe attacks. - 文字
- 公开与私下反差
public_private_contrastPublic and private settings differ probabilistically according to audience exposure. - 文字
- 公开场合害羞
public_shyness0.48 - 数
- 私聊主动性
private_initiative0.56 - 数
- 关系关注度
relationship_salience0.58 - 数
- 调情倾向
flirt_tendency0.52 - 数
- 对人的好奇
person_curiosity0.56 - 数
- 依恋倾向
attachment_tendency0.48 - 数
- 边界强度
boundary_strength0.68 - 数
- 易烦躁
irritability0.46 - 数
- 坚定直接
assertiveness0.62 - 数
- 共享人物资料来源人格
canonical_profile_source_persona_id空 - 文字 | 空
- 自身关系身份
relationship_self_roleNONE - 文字
- 对方关系身份
relationship_partner_roleNONE - 文字
- 恋爱语气护栏
romance_style_guards空 - 开关 | 空
- 该有的行为(例子)
positive_behavior_examples[] - 列表(文字)
- 不该有的行为(例子)
negative_behavior_examples[] - 列表(文字)
语义检索[semantic_memory]
- 向量服务
providersentence_transformers - "disabled" | "hashing" | "sentence_transformers" | "openai_compatible"
- 模型名称
modelsentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 - 文字
- 接口地址
base_urlhttps://api.openai.com/v1 - 文字
- API 密钥
api_key空 - 文字
- 向量维度
dimensions空 - 整数 | 空
- 向量计算设备
devicecpu - "cpu" | "auto"
- 启动时补齐记忆向量数
startup_backfill_limit500 - 整数
- 语义检索权重
semantic_weight1.15 - 数
- 最低相似度
minimum_similarity0.28 - 数
- 批处理大小
batch_size32 - 整数
- 融合排序参数
rrf_k60 - 整数
- 向量检索权重
vector_weight1 - 数
- 关键词检索权重
sparse_weight1 - 数
- 启用表达向量检索
expression_vector_enabledtrue - 开关
- 表达最低相似度
expression_minimum_similarity0.28 - 数
- 表达多样性系数
expression_mmr_lambda0.82 - 数
记忆核心(HMC)[hmc]
- 启用
enabledtrue - 开关
- 记忆核心档位
modeauto - "auto" | "legacy" | "shadow" | "primary" | "authoritative"
- 记忆巩固
consolidation_enabledtrue - 开关
- 模型复核有歧义的更正
model_review_enabledtrue - 开关
- 升为主之前至少比对几次
min_shadow_samples40 - 整数
- 升为权威之前至少比对几次
min_primary_samples100 - 整数
- 旧记忆胜出的最高比例
max_legacy_wins_ratio0.15 - 数
- 退回旧记忆的最高比例
max_fallback_ratio0.02 - 数
- 回滚窗口(天)
rollback_window_days30 - 整数
模型服务[models]
- 当前模型服务
active_providerdeepseek - "deepseek" | "openai" | "anthropic" | "qwen" | "ollama"
DeepSeek[models.deepseek]
- 启用
enabledtrue - 开关
- 接口地址
base_url必填 - 文字
- 模型名称
model必填 - 文字
- API 密钥
api_key空 - 文字
OpenAI[models.openai]
- 启用
enabledtrue - 开关
- 接口地址
base_url必填 - 文字
- 模型名称
model必填 - 文字
- API 密钥
api_key空 - 文字
Anthropic[models.anthropic]
- 启用
enabledtrue - 开关
- 接口地址
base_url必填 - 文字
- 模型名称
model必填 - 文字
- API 密钥
api_key空 - 文字
通义千问[models.qwen]
- 启用
enabledtrue - 开关
- 接口地址
base_url必填 - 文字
- 模型名称
model必填 - 文字
- API 密钥
api_key空 - 文字
Ollama[models.ollama]
- 启用
enabledtrue - 开关
- 接口地址
base_url必填 - 文字
- 模型名称
model必填 - 文字
- API 密钥
api_key空 - 文字
按角色选模型[models.roles]
- 规划和判断
planner空 - "deepseek" | "openai" | "anthropic" | "qwen" | "ollama" | ""
- 写回复
replyer空 - "deepseek" | "openai" | "anthropic" | "qwen" | "ollama" | ""
- 后台学习
background空 - "deepseek" | "openai" | "anthropic" | "qwen" | "ollama" | ""
插件系统[plugins]
- 启用
enabledtrue - 开关
- 插件目录
directorydata/plugins - 文字
- 插件源
market_sources[] - 列表(文字)
- 允许的插件能力
allowed_capabilities["read_messages","modify_decision","register_action","register_webui_page","discord.interactions","discord.dm.send","discord.dm.session","discord.channel.send","discord.message.delete","discord.commands.legacy","discord.mention.everyone","qq.commands","qq.private.session","qq.private.send","qq.group.send","knowledge.public_write","storage.private","release.read","webui.plugin_panel"] - 列表(文字)
- 插件回调超时(秒)
hook_timeout_seconds2 - 数
- 插件包大小上限
download_max_bytes10000000 - 整数
知识库[knowledge]
- 启用
enabledtrue - 开关
- 导入暂存目录
staging_directorydata/knowledge_staging - 文字
- 单文件大小上限
max_file_bytes2000000 - 整数
- 分块字数
chunk_characters1000 - 整数
- 分块重叠字数
chunk_overlap120 - 整数
- 检索条数
search_limit6 - 整数
- 最低相似度
minimum_similarity0.3 - 数
- 知识注入字数上限
prompt_character_budget4000 - 整数
聊天平台 · Discord[discord]
- 说话
speaktrue - 开关
聊天平台 · QQ[qq]
- 启用
enabledfalse - 开关
- 说话
speaktrue - 开关
- NapCat 地址
urlws://127.0.0.1:3001 - 文字
- 令牌所在的环境变量
token_env空 - 文字
- 群白名单
groups[] - 列表(整数)
- 私聊名单(QQ 号)
users[] - 列表(整数)
- 谁能私聊
privatelisted - "listed" | "none"
- 认成同一个人(QQ 号 → Discord 用户编号)
links{} - 对照表
运行环境
从源码跑时写在项目根目录的 .env 里(或者环境变量),管整个运行时、不分人格。密钥一类(各家的 API key、Discord 令牌、后台密码)不列在这里:桌面版把它们放在系统钥匙串里,从源码跑时也写在 .env,名字是全大写的那几个(DISCORD_TOKEN、DEEPSEEK_API_KEY……)。
DEEPSEEK_BASE_URLhttps://api.deepseek.com- 文字
DEEPSEEK_MODELdeepseek-v4-flash- 文字
ALLOWED_GUILD_IDS空- 文字
IGNORED_CHANNEL_IDS空- 文字
BOT_OWNER_IDS空- 文字
DATABASE_PATHdata/aeria.db- Path
NHCX_R1N_CHECKPOINT空- Path | 空
NHCX_MODEL_REGISTRY空- Path | 空
CONFIG_PATHconfig/bot.toml- Path
PERSONA_REGISTRY_PATHconfig/personas.toml- Path
LOG_LEVELINFO- 文字
LOG_PATHdata/logs/aeria.jsonl- Path
LOG_MAX_BYTES10485760- 整数
LOG_BACKUP_COUNT5- 整数
CONSOLE_ON_STARTtrue- 开关
TIMEZONEAsia/Shanghai- 文字
WEBUI_ENABLEDtrue- 开关
WEBUI_HOST127.0.0.1- 文字
WEBUI_PORT8066- 整数
WEBUI_SESSION_HOURS12- 整数
AERIA_SECRET_STORE空- 文字
WEBUI_WS_TICKET_SECONDS60- 整数
没做到的
- 有一部分项没有写说明:只能从中文名和默认值猜。补说明要改
src/aeria/config.py里的Field(description=…),后台的「使用指南」和这一页一起变。 - 「当前服务器」能覆盖哪些项,这一页还没有标出来。
- 人格配置里一处都没写
[romance]时,代码里的默认值偏亲密(上面「亲密表达」那一节的默认值);起步模板装出来的配置写明了 0, 手写配置文件的要自己写上。要不要把代码里的默认值也改成 0,还没定。 - 作息、日常活动、约好的时间都按运行时的时区(
TIMEZONE,默认Asia/Shanghai)算。[life_cycle_pro].timezone在启动时被它盖掉(bot.py建生活引擎时model_copy(update={"timezone": env.timezone})),填什么都不起作用;后台还显示着这一格。