新版人格对话系统(MaiReply)
嘿,这可是我现在最喜欢、也是最灵动聪明的思考大脑啦~
比起以前死板的一问一答,MaiReply 让我更像一个活在群聊里的鲜活群友:我会看群里聊天气氛偷偷插话、偶尔会故意打错字、甚至无聊犯困时还会闹点小脾气呢。
核心代码位于:run/mai_reply/
配置文件位于:run/mai_reply/config.yaml
只要在配置文件顶部把 enable: true 打开,系统就会自动接管所有对话,并优雅地退休掉旧版的对话逻辑。
核心配置片段一览
yaml
enable: true # 开启新版人格对话,自动接管并停用旧版 ai_llm
llm:
provider: openai # 大模型接口类型:openai 或 gemini
stream: true # 是否开启流式回复
func_calling: true # 极为关键!是否允许我调用各种插件工具(画图、查天气、搜资源等)
max_tool_rounds: 10 # 一轮对话中工具链连续调用的最大轮数
openai:
api_keys:
- "your-api-key-here"
model: "gemini-2.5-pro" # 建议选择支持工具调用的高智商模型
base_url: "http://api.apollodorus.xyz/v1"
temperature: 1.1 # 灵动度与发散度
max_tokens: 1024
enable_official_sdk: false
trigger:
at_trigger: true # 是否在群里被 @ 时必定回复
prefix: # 前缀触发列表,例如 ["/chat", "小助手"],填空字符串表示禁用
- ""
private_trigger: true # 私聊收到消息是否直接触发
random_reply_probability: 3 # 随缘插嘴概率(0=关闭,1-100 为概率百分比)
trigger_llm: # 智能潜水侦测(让廉价小模型判断群友聊的话题值不值得我接话)
enable: true
api_key: "your-api-key"
base_url: "http://api.apollodorus.xyz/v1"
model: "gpt-4o-mini"
whitelist_enabled: true # 是否只在特定群聊开启随缘插嘴
whitelist:
- 1050663831 # 允许插嘴的白名单群号
ignore_prefixes: # 遇到以这些前缀开头的指令跳过判断,不乱插嘴
- "/"
- "#"
persona:
chara_file: "猫娘.txt" # 角色设定文件!放在 data/system/chara/ 目录下(比如 yucca.txt)
human_like: # 活人拟真行为模拟!
typing_delay_ms_per_char: 30 # 模拟打字延迟(毫秒/字),拒绝秒回机器人感
typing_delay_max_ms: 4000
split_threshold: 60 # 超过字数自动拆分成多条短消息连发
split_interval_ms: 800 # 多条短句发送间隔
typo_probability: 8 # 偶尔故意手滑打错字的概率(百分比)
ignore_probability: 15 # 模拟“已读不回/懒得搭理”的随性概率(仅对概率触发有效)
quote_reply: true # 是否随机引用群友的原话进行回复
emotion: # 少女的心情波动系统
enable: true
decay_rate_min: 20 # 心情自然衰减平复时间(分钟)
default_mood: "还行,没啥特别的"
context:
max_turns: 20 # 当前会话保存的最大轮数
group_context_window: 15 # 偷看群里最近15条消息作为聊天背景环境
enable_impression: true # 跨越日夜的记忆!对每个群友生成专属印象与好感记忆如果你想做什么,应该改哪里?
- 想换一个更喜欢的人设角色卡(比如换成我 Yucca 或者是你专属定制的角色)?
- 在
data/system/chara/文件夹里放好你的文本或 JSON 角色卡,然后把persona.chara_file改成对应文件名(例如"yucca.txt")。
- 在
- 想让我不仅能陪聊,还能帮群友查天气、画图、查番剧?
- 一定要确认
llm.func_calling: true!各个功能插件只要导出了工具函数,MaiReply 就会自动把工具清单递给大模型,让我根据对话自然调用。
- 一定要确认
- 觉得我在群里话太多有点吵,或者概率插嘴太烦人?
- 把
trigger.random_reply_probability调小或者设为0;如果只想在熟人群里插嘴,打开trigger_llm.whitelist_enabled: true并把目标群号写进whitelist列表里就好啦。
- 把
- 回复总是长篇大论太机械,想要鲜活的女孩子碎碎念感觉?
- 检查
human_like区块:把split_threshold设为50或60,长段落就会自动拆成一截一截的轻快短句发出来;再加上适当的typing_delay_ms_per_char,活人感直接拉满~
- 检查