本文件是 readme.md,帮助菜单会实时读取它,你可以随时手动修改,无需改代码。
本项目采用 GNU Affero General Public License v3.0(AGPL-3.0) 开源,完整协议见 LICENSE。
致谢:心理评测的题目数据整理自开源项目 ClouderyStudio/psychology(AGPL-3.0)及公开心理量表,仅用于本地自评参考,不构成医疗诊断建议。若您使用本项目的任何代码或题库,请同样遵循 AGPL-3.0 开源。
- 💬 对话:说话 / 角色介绍 / 历史记录 / 人设设置 / 御主档案 / 记忆日志 / 记忆回顾
- 🎭 互动:转身 / 摇尾巴 / 挥手 / 猜拳 / 掷骰子
- 🧰 工具:专注时钟 / 日程提醒 / 记一笔 / 文件整理 / 天气 / 网络 / 音乐播放器 / 麟在听什么 / 闲聊间隔 / 随机事件频率
- 🏪 养成:背包喂食 / 商城(心情·运势·记忆道具)/ 好感度条 / 每日签到 / 今日运势(幸运御守可提升运势)
- 🧠 心理陪伴:记录情绪 / 心理评测 / 评测历史 / 情绪历史 / 情绪统计 / 暖心寄语 / 麟关心一下 / 危机支持
- 🔖 传送门:一键打开收藏的网站
- 🚀 管家服务:一键启动绑定的软件
- 其他:显示/隐藏输入框 / 重新加载图片 / 🔌 API 管理 / 设置面板 / 帮助 / 退出
- 按住拖动:移动桌宠;松手后如果在屏幕中间会"落"到底部,拖到左右边缘会"扒"在边上
- 单击桌宠:互动(戳 10 次有彩蛋奖励)
- 点击气泡:跳过打字 / 显示下一句
- 整点自动报时;23:00~07:00 自动睡觉
- 桌宠底部有一行状态小字(从左到右):好感度条 / 天气 / 接入状态。
- 宠物缩放低于 70% 时自动进入紧凑模式:好感度条隐藏,只保留天气与接入状态;把宠物调大即可恢复。
- 专注时钟启动后,倒计时显示在状态行左侧并常驻在麟的气泡里(更显眼);聊天时气泡自动让位给对话,聊完自动回到倒计时。状态行倒计时旁有 ✕ 按钮可随时取消。
- 专注监督更聪明:麟每 2 秒看一眼前台窗口,发现游戏/视频站会提醒你;但你要是在聊天里说了"我在学习/查资料/开会"等,麟就静默 30 分钟不再打扰(
#恢复监督可提前恢复)。也支持聊天框直接说「专注25分钟」「取消专注」来控制专注时钟。 - 网络异常时右上角显示 📵 图标。
- #好感 查看好感度
- #金币 查看金币
- #心情 查看情绪
- #天气 查看天气
- #换装 查看衣橱;#换装 名字 换装;#换装 默认 脱掉(需准备 名字_close.png 等图片)
- #笔记 随机读一条你的笔记
- #记忆 让麟说说记住的你
- #归档 立刻把今天的回忆写进记忆日志
- #喂 打开背包
- #睡 / #醒 强制睡觉 / 醒来
- #尾巴 / #摇 摇摇尾巴
- #挥手 挥手打招呼
- #音乐 / #听歌 麟放歌给你听(本地音乐播放器)
- #播放器 / #歌单 打开麟的音乐播放器面板
- #聊天窗口 / #窗口 打开聊天窗口(⇄ 气泡模式自由切换)
- #取消专注 / #结束专注 取消专注时钟(也可以直接说"取消专注")
- #暂停监督 / #恢复监督 专注中临时静默/恢复摸鱼提醒(说"我在学习"也会自动静默 30 分钟)
- #下一首 / #切歌 / #换一首 换下一首;#上一首 回到上一首
- #暂停 / #继续 暂停 / 继续播放
- #停 / #停歌 停止播放
- #模式 切换播放模式(顺序 / 列表循环 / 单曲循环 / 随机)
- #在听 / #听什么 麟说说你现在在听什么歌
- #情绪 打开情绪记录;#情绪历史 / #情绪统计 查看记录与统计
- #评测 打开心理评测;#评测历史 查看评测记录
- #寄语 / #暖心 随机一条暖心寄语
- #关心 / #聊聊 / #抱抱 / #难受 让麟看看你最近的心情,陪你一起理一理
- #危机 查看心理援助热线
- #转身 / #转过来 转过身去 / 转回来
- #彩蛋 隐藏彩蛋
- #帮助 查看指令列表
- 没有配置 API Key 或联网失败时,麟会自动进入离线模式,用本地台词陪你聊天、喂食、猜拳、记笔记等功能照常可用。
- 支持多家 OpenAI 兼容接口(DeepSeek / OpenAI / Kimi / 通义千问 / 智谱 / 本地 Ollama / 硅基流动等)。
- 右键 → 🔌 API 管理 可以增删改、启用/停用、切换当前 API、测试连通。
- AI 总开关:API 管理顶部的「启用 AI 对话」勾选框——取消勾选后即使填了 Key 也不发任何请求,麟用纯本地模式陪你(配置原样保留,随时勾回来)。
- 主 API 请求失败时会自动尝试下一个启用的 API;配置保存在程序旁的 api_config.json。
- 网络更稳了:请求失败会自动绕开挂掉的系统代理直连重试;报错也说人话(模型名填错会直接显示官方支持的模型名单,比如 DeepSeek 目前是
deepseek-flash/deepseek-v4-pro,旧名deepseek-chat仍可用)。 - 状态行右侧会显示接入状态:AI 在线 = 正在用 AI;离线模式 = 本地台词回复;AI 已停用 = 总开关关闭。
- 麟每天 23:50 自动把当天的对话写成记忆日志(启动时还会补写前一天的)。
- 聊天中提到你的名字、生日、喜好、讨厌的东西、工作/学校,麟会即时记住,并在之后的对话里自然引用。
- 日志存在程序旁的 memory_log 文件夹(每天一篇 .md),结构化记忆在 memory.json。
- 商城「回忆相册」可以随时手动归档今天的回忆。
- 右键 → 🧰 工具 → 🎵 音乐播放器(或输入
#音乐直接放歌、#播放器只开面板)。 - 曲库自带:72 首歌已经装进 exe 里随身携带,拷到别的电脑也有歌听;想加自己的歌:点面板里的「📥 导入音乐」选文件,或直接把音频放进 exe 旁边的 music 文件夹,点「♻️ 恢复全部」即可入列。
- 面板里有:封面、进度条(可拖动跳转)、上一首/播放暂停/下一首/停止、音量滑条与静音、播放模式(顺序播放 / 列表循环 / 单曲循环 / 随机播放,默认随机)、可搜索的播放队列(双击跳播)。
- 关闭面板 = 停止播放;想收起面板让音乐继续,点标题栏右上角的「—」最小化(音乐继续放,任务栏图标或菜单「🎵 音乐播放器」随时召回)。入睡、进游戏、退出桌宠也会自动停。音量/模式/上次放的歌都会记住,下次接着听。
- 某个文件播不动时麟会自动跳下一首;曲库全空时输入 #音乐,麟会告诉你怎么加歌。
- 麟每 15 秒悄悄看一眼系统正在播放的媒体:优先读 Windows 的媒体会话(SMTC,能拿到歌名/歌手/播放状态),拿不到时退而看常见播放器(网易云、QQ音乐、酷狗、Spotify、foobar2000 等)的窗口标题。
- 只读,不上传、不控制任何播放器;没有在听歌时它什么都不做。
- 输入
#在听(或右键 → 🧰 工具 → 🎧 麟在听什么)可以让麟说说你现在在听什么。 - 你在打字/操作电脑时麟不会突然插话;只有你空闲 20 秒以上、而且刚开播或换歌时才会轻轻搭一句,同一首歌 3 分钟内不重复。
- 靠窗口标题识别时(部分播放器不注册媒体会话)只算"弱证据",麟会用"好像听到……"的说法,不会瞎编歌曲细节。
- 以前每轮聊天都会把整段历史全发给 API,聊得越久越贵。现在加了"上下文预算 + 滚动摘要"(思路来自 billion-context 项目的分层压缩):
- 只保留最近几轮原话 + 更早内容的滚动摘要,整体控制在约 2600 tokens 以内,超长历史自动折叠。
- 每 8 轮顺手把较早的对话压成一小段摘要(约 700 字内),存在程序旁的 chat_context.json,重启后继续用。
- 发给 API 的实时状态(天气/好感/情绪/在听歌)拼在最后一条消息里,系统提示词保持稳定,配合 DeepSeek 的前缀缓存能进一步省钱。
- 实测 50 轮对话:费用约省 37%,同等预算下能带约 2.5 倍的历史上下文。
- 想关掉:把 config.py 里 CONTEXT_BUDGET_ENABLED 改成 False,即回到旧行为(不推荐,会贵很多)。
- 📝 记录情绪:10 种情绪(开心/平静/感恩/兴奋/一般/疲惫/难过/焦虑/愤怒/孤独)、5 级强度、16 个触发标签,支持备注与日记。
- 📋 心理评测:内置 16 套本地量表(症状筛查 / 人格性格 / 专项量表三大类),逐题作答后自动计分、分档解读、维度分析并生成报告。
- 症状筛查:PHQ-9(9 题)、GAD-7(7 题)、SCL-90(90 题)、SDS(20 题)、SAS(20 题)、BDC(15 题)
- 人格性格:MBTI(109 题)、气质类型(60 题)、16PF(187 题)、EPQ(88 题)、EPQ-RSC(48 题)
- 专项量表:PSS 压力感知(10 题)、BPNS 基本心理需求(21 题)、IPIP-EIS 情绪智力(64 题)、情绪稳定性(30 题)、SCCS 自我和谐(35 题)
- 🗂 评测历史:查看历次评测结果与逐题回顾,可删除。
- 📅 情绪历史:按时间倒序查看全部记录,可删除。
- 📊 情绪统计:连续打卡天数、近 7 天平均强度与波动预警、时段情绪规律(清晨/上午/下午/晚间/深夜)。
- 🤖 聊天总结情绪(默认关):设置面板开启后,AI 会定期(攒够 4 句、间隔 1 小时以上)从聊天里总结你的情绪自动记入情绪记录,历史里标「AI总结」;没配 API 或 AI 总开关关闭时绝不发起。
- 🌻 暖心寄语:针对抑郁/焦虑/双相/强迫/PTSD/ADHD 的本地支持话语(不构成医疗建议)。
- 🆘 危机支持:内置心理援助热线(请以官方最新发布为准)。
- 若评测中涉及「伤害自己」的题目(PHQ-9 第 9 题、BDC 第 15 题、SDS 第 19 题、SCL-90 第 15 题)勾选了非最轻选项,或整体得分达到较高水平,结果页与麟都会提醒你寻求专业帮助,并附心理援助热线。
- 记录情绪后,麟会共情回应、播放对应表情;AI 对话会参考你最近的情绪状态,温柔以待。
- 所有情绪数据只保存在本地 mood.json,评测数据只保存在本地 assessment.json,绝不上传;题库来自开源项目与公开量表,仅供自评参考,不构成医学诊断。
- 麟会每隔 10 分钟悄悄看一眼你最近的心情:只读本地的 mood.json 与 assessment.json,不上传、不外发。
- 只有你确实不太好的时候它才会开口:近 3 天负面情绪占比偏高、7 天里高强度负面偏多、或近期症状筛查类评测分数偏高;心情记录最多算「留意」,涉及风险才升级为「认真关心」。
- 一次最多一句(不超过 60 字),说完至少 3 小时内不再提,同一种状态 12 小时内不重复;你 30 秒内有键鼠操作、或者它正在睡觉/游戏/聊天时,绝不会突然插话。
- 措辞永远是「关心」而不是「诊断」:不下结论、不评判对错、不贴标签、不说教。真的很难受时,它会认真建议你找专业帮助(心理援助热线 12356)。
- 想聊聊就输入
#关心(也可以#聊聊/#抱抱/#难受,或右键 → 🧠 心理陪伴 → 💗 麟关心一下):麟会陪你把事情理一理——发生了什么、当时的感觉、你现在需要什么、下次想怎么照顾自己。接下来 30 分钟的聊天都会保持这种「一起分析」的口径,不替你下判断。 - 人格/非症状类量表(MBTI、EPQ、情绪智力等)不参与判断,避免误报;沉默几天只会轻描淡写地问一句,不会追问。
专注完成(+20) / 每日签到(+30) / 日程完成(+10) / 猜拳赢(+10) / 随机事件 / 戳10下(+10)
- 所有姿态帧统一画布 1600×2528,角色水平居中、脚底对齐、主体约占画布高度 82%~88%。
- 程序统一按显示高度 390px(100% 缩放)缩放,画布尺寸不一致不影响屏幕表现。
- 旧的雨伞叠加层会在下雨时把撑伞立绘叠在站立立绘上,看起来像两只麟挤在一起。现在雨/雪天麟的待机立绘直接切换成撑伞图——同一时刻永远只有一只麟;雨停自动恢复,说话/互动/睡觉等所有姿态不受影响。
- 流式速度自定义:设置面板新增「💬 聊天窗口流式速度」——慢速(一笔一画)/ 适中(打字机感,默认)/ 快速 / 瞬间。网络增量先进缓冲按你选的节奏上屏,网络再快也不会糊屏。
- 聊天框全量工具调用:直接用说话指挥麟——「专注模式计时10分钟」「帮我打开专注模式」(默认25分钟)「取消专注」「放首歌 / 下一首 / 暂停音乐 / 停止音乐」「打开设置 / 情绪记录 / 情绪历史 / 情绪统计 / 心理评测 / 帮助 / 历史记录 / 商城 / 日程 / 笔记」「天气怎么样」「现在几点了」「摸摸头」「抱抱」……本地直接执行,不耗 API、不绕弯子。
- 不再揪着心情不放:麟回复的规则已改——你亲口说"没事/我很开心/不想聊"时,麟会完全相信并尊重你的表述,顺着聊轻松的话题,绝不再追问、质疑或把话题拉回情绪;情绪记录和心情数值只是背景推测,不是审问理由。
- 倒计时上气泡:专注时倒计时常驻在麟的气泡里(更显眼);要聊天时气泡自动让位给对话内容,聊完自动回到倒计时。状态行倒计时旁新增 ✕ 取消按钮(也可
#取消专注或直接说"取消专注")。 - 聊天框功能调用:现在可以直接用自然语言指挥麟——说「专注25分钟」开始专注、「取消专注」结束;专注中说「我在学习 / 查资料 / 开会」等,麟就静默摸鱼提醒 30 分钟(B 站看教程不再被误判!),
#暂停监督/#恢复监督手动控制。 - 离线模式大扩容:没配 API 时的本地回复从"翻来覆去几句"扩成每类意图一组台词池(问候/身份/倾诉/报喜/加油/音乐/游戏/专注/提问/长文本……),叠加时段(清晨到深夜)、麟的心情、天气三层语气,且同一句不会连着出现两次。
- 流式输出:聊天窗口里麟的回复现在逐字逐句实时蹦出来(不用等整段写完才显示)。走的还是你配置的 API(DeepSeek 等都支持);如果某个接口不支持流式或中途断流,自动回退到整段返回,不影响使用。桌宠气泡模式保持原有的逐句打字机效果不变。
- 修复:聊天气泡里的文字(尤其首行和长消息)会被气泡边框裁掉一角的问题——内边距计算方式重做,长消息自动换行也完整显示。
- 右键 → 💬 对话 → 🖥 聊天窗口(或输入
#聊天窗口/#窗口):一个完整的聊天界面——你在右边、麟在左边,带时间戳、可上下滚动翻记录、消息可选中复制,底部有输入框(Enter 发送)。 - 两种模式自由切换:窗口开着时,聊天回复显示在窗口里(流式逐字输出,桌宠不打字泡);点窗口右上角 × 或「💬 回到气泡」关掉,立刻回到原来的桌宠气泡模式。两边是同一场对话,历史完全同步,从哪个输入框发都一样。
- 窗口可以最小化到任务栏(有自己的图标,点一下召回);麟的随机事件、主动关心、音乐提示照常在桌宠气泡里冒出来,不受影响。
- 设置面板新增「🤖 聊天总结情绪」开关:开启后,麟会在攒够 4 句发言且距上次总结超过 1 小时时,请 AI 从你最近说的话里总结当前情绪,自动写入情绪记录——情绪历史里带「AI总结」标记,可照常删除,情绪统计与主动关心也会把它算进去。
- 走和聊天同一套 API(遵守 🔌 API 管理的 AI 总开关);没配 API、总开关关闭或纯本地模式下绝不发起,总结失败也完全静默。记录仍然只保存在本地 mood.json;总结时会把最近聊天片段经同一 API 通道发给模型(和聊天本身同一条路)。
- 根因:本项目构建用的 Python 是带安全补丁的定制版,
ssl模块创建加密连接时会强制加载自身目录下的codex-rejected-cas.pem(吊销 emSign 根证书用)。源码运行时该文件就在;打包成 exe 后它没跟进去,于是 exe 里所有 https 请求在建连时就报「Connection aborted / FileNotFoundError」。此问题从第一个 exe 起就存在(源码模式一直正常,所以开发时没发现)。 - 修复(双保险):① 构建时把
codex-rejected-cas.pem直接打进 exe;② 程序启动时自检,发现缺文件就自动补写内置副本。已用「生产代码冻结探针」实测:exe 内 https 请求恢复正常(能拿到服务端 401/200 应答)。聊天对话、📡 测试连通从此在 exe 里真正可用。
- AI 总开关:🔌 API 管理顶部新增「启用 AI 对话」——取消勾选后即使填了 Key 也不发任何请求,麟用纯本地模式陪你;配置原样保留,随时勾回来。状态行会显示「AI 已停用」。
- 网络自愈:系统代理(Clash 等)挂掉时,请求会自动绕开代理直连重试——DeepSeek/Kimi/通义/智谱这些国内接口直连本来就能通,不再被死代理拖垮。
- 报错说人话:测试连通的失败信息直接告诉你原因——模型名填错会显示官方支持名单(DeepSeek 现在是
deepseek-flash/deepseek-v4-pro,旧名deepseek-chat仍可用)、Key 无效、余额不足、限流、代理挂了……一目了然。默认 DeepSeek 模型已更新为deepseek-flash。
- 托盘常驻图标上线:屏幕右下角(时钟旁)现在有麟的小图标——左键/双击一下就把麟叫到最前(被别的窗口挡住时特别好用);右键菜单可以直接「显示/隐藏麟」「🎵 音乐播放器」「⏹ 停止音乐」「退出桌宠」。
- 播放器最小化后在任务栏有自己的图标:点标题栏「—」最小化,任务栏会出现麟的播放器图标,点一下就回到面板(音乐一直在放);托盘菜单的「🎵 音乐播放器」也能召回。桌宠本体保持不占任务栏的惯例(避免被误点最小化弄丢麟),定位就交给托盘图标。
- 音乐播放器面板的背景换成了
bg.jpg(水彩雨巷街景):整窗铺满,再叠一层暖奶油半透明罩,水彩质感透出来、深棕文字依然清晰;最大化/还原时背景自动跟随窗口尺寸。封面与队列等所有功能不受影响。
- 按要求把最小化挪到了标题栏右上角,就是 Windows 标准的三个键:「—」最小化到任务栏(音乐继续放,点任务栏图标或菜单「🎵 音乐播放器」召回)、「□」最大化铺满屏幕、「×」关闭(立即停歌)。
- 最小化时麟会说一句提示;面板有自己的任务栏图标,召回更直观。底部原来的「最小化」按钮已移除(功能在标题栏里)。
- 关闭音乐播放器窗口(X / 关闭键 / Esc)现在会立刻停止播放——不再"关了还在响"。
- 想"收起面板让音乐继续",点面板右下角新增的「🗕 最小化(音乐继续)」:面板收起、音乐照放,麟还会提示一句;之后从右键菜单「🎵 音乐播放器」随时召回(会直接回到刚才的面板,不会重复开)。
- 面板同时改成非模态:开着面板也能照常右键桌宠、戳麟、用其它功能,不再被面板挡住。
- 真凶:游戏侦测名单里原来包含 Steam.exe,而 Steam 经常常驻后台,麟每 5 秒扫一次进程,就把它当成了"你一直在打游戏",于是缩到屏幕角落、静默拒绝所有音乐操作。跟好感度没有任何关系——音乐播放器从来就没有好感度门槛。已把 Steam.exe 从名单摘除:真正的游戏本体(LOL / 原神 / DOTA2 / CF / QQ游戏 / 无畏契约)都有各自的进程名,照常侦测;通过 Steam 启动的游戏也一样。
- 音乐入口加"永不静默"保险:以后即使内部出现任何异常,麟也会用气泡把原因说出来("唔…音乐面板打不开(原因)"),绝不会再无声无息。游戏模式中点音乐会明确提示"检测到你在打游戏,关掉游戏就能放歌"。
- 原来的「听歌陪伴 60 秒」升级成本地音乐播放器:右键 → 🧰 工具 → 🎵 音乐播放器(或输入
#音乐直接放歌)。72 首歌已经打包进 exe 里,把单个 exe 拷到别的电脑也有歌听;想加自己的歌,点面板「📥 导入音乐」或把音频放进 exe 旁的 music 文件夹再点「♻️ 恢复全部」。 - 播放器面板有封面、可拖动进度条、上/下一首、播放暂停、停止、音量与静音、四种播放模式(顺序 / 列表循环 / 单曲循环 / 随机,默认随机)和可搜索的播放队列(双击跳播)。关掉面板音乐不停,入睡 / 进游戏 / 退出才自动停;音量、模式、上次放的歌都会记住。
- 新增聊天指令:
#音乐#播放器#下一首#上一首#换一首#暂停#继续#停#模式;入睡 / 进游戏时麟会自动把音乐停下来。 - 顺便升级:进入游戏模式时网络检测和天气查询也会暂停(以前只在后台静默跑);网络检测彻底不再开子进程(改用 socket 探测),从根上杜绝任何「闪黑框」的可能;没有多媒体组件的老环境自动退回原来的八音盒模式。
- 抓到真凶了:麟每 60 秒会用系统的 ping.exe 检查一次网络,而麟是无控制台的 GUI 程序,Windows 会给 ping 新开一个控制台/终端窗口——这就是「时不时弹出最高层级窗口、游戏被切回桌面」的元凶(尤其独占全屏游戏对此极其敏感)。已在源码里给 ping 加上 CREATE_NO_WINDOW 参数,现在网络检测完全静默,不产生任何窗口。此前「标题栏 ?」等修复解决的是对话框问题,这个黑框来自完全不同的路径,所以在开发机上一直复现不出来,抱歉让你多等了一轮。
- 删掉所有对话框右上角的「?」:那是 Qt 自带的「上下文帮助」按钮,点它会让程序进入 What’s This 模式——整个界面等着你再点一下(看起来就是卡死),还会冒出跟着光标走的小提示气泡,一下就消失、正好盖在打字位置上。麟的控件没写任何帮助文案,这按钮只会误触,现已全局关掉(AA_DisableWindowContextHelpButton)。
- 设置面板等窗口不再一直压在最上层:以前所有面板都是置顶桌宠的子窗口,Windows 会把它们一起放进置顶层,所以点浏览器也抬不到前面。现在打开面板时桌宠临时让位、面板本身也不置顶,点浏览器就能正常切到前面;面板关掉后桌宠自动恢复置顶。
- 新增「桌宠窗口保持置顶」开关:右键 → 设置面板里可以关掉置顶(桌宠像普通窗口一样排序),默认开启;无论开关与否,打开面板期间都不会挡住别的程序。
- 修「点帮助卡死」:帮助窗口以前是模态框,会把桌宠压在后面、连输入框都一起冻结,看起来就像卡死。现在改成非模态小窗:点击后立即返回、不冻结桌宠和输入框,不抢键盘焦点(正在打字完全不受影响),会自动夹进屏幕可视区(不会被置顶的桌宠挤到屏幕外),readme 内容异常或渲染失败会退化成纯文本显示,记事本打不开也只提示、不会闪退。
- 麟会偶尔主动关心你:新增 care.py,本地读取心情记录与评测结果判断你的状态(近 3 天负面占比、7 天高强度负面、30 天症状筛查分数),只在你空闲时轻轻关心一句,最多 3 小时一次、同一状态 12 小时内不重复;措辞不评判、没有对错、不说教、不诊断,涉及风险时认真提示专业帮助与心理援助热线 12356。
- 可以一起分析:输入
#关心/#聊聊/#抱抱/#难受,或右键「🧠 心理陪伴 → 💗 麟关心一下」,接下来 30 分钟麟会用开放式提问陪你把「发生了什么 / 当时感受 / 需要什么 / 下次怎么照顾自己」理一遍,不替你下结论。 - 情绪与评测数据仍然只读本地、绝不上传;人格类与非症状量表不参与判断,避免误报。
- 弹窗再也不会打断打字:随机事件小窗其实是独立窗口,系统把它当成"可接收按键的窗口",随手一个 Esc/Enter 就让它一闪而过(在别的程序打字时也一样)。现在改成桌宠窗口内的普通小部件(不是窗口):不激活、不置顶、抢不到键盘;同时用系统级空闲检测(GetLastInputInfo)判断你忙不忙——你在任何程序里打字,麟都不弹事件也不发请求,等你空闲 20 秒后才安静显示,60 秒没回应自动收起。
- 麟能听见你在听什么歌:新增 now_playing.py(Windows 媒体会话优先,播放器窗口标题兜底)+ listening.py(状态机与话术)。
#在听/ 右键「🎧 麟在听什么」可以问;你空闲时刚开播或换歌它才会轻轻搭一句(同曲 3 分钟、全局 90 秒冷却),弱证据只敢说"好像听到"。 - 聊天越聊越省:新增 context_budget.py,按预算折叠历史 + 滚动摘要(见上文「上下文预算」),50 轮实测省约 37%;系统提示词拆成稳定段/易变段,配合 DeepSeek 前缀缓存继续减费。
- 顺手清理:pet_window.py 里三处早已用不到的死 import(QMessageBox / ask_api_key_once / EventDialog)。
- 修复发送消息后桌宠闪退:写聊天日志的函数漏了
import time,一写日志就抛异常;PyQt 遇到未捕获异常会直接终止进程(就是"点发送→卡死退出"的真凶)。已补齐,并给所有槽函数异常加了兜底。 - 修复偶尔自行退出:新增 crash_guard.py,全局接管未捕获异常——出错只写 crash.log(程序旁)并自动把"思考中/忙碌"状态复位,不再憋死进程;顺带修了剪贴板内容为空时崩溃、接口返回空内容时崩溃。
- 修复弹窗一闪而过、打断打字:日程提醒不再弹抢焦点的提示框、也不再强行把桌宠窗口提到最前,改成气泡提醒 + 轻响;随机事件小窗改为不抢焦点、不挡输入、也不置顶的非模态窗口(你在别处打字它不会吃掉按键),60 秒没回应自动收起;整点报时改到后台线程,不再卡一下。
- 修复 #醒 之后马上又睡:以前夜里即使
#醒,下一秒又被判定为"该睡觉"而重新入睡,导致听歌等指令全部失效。现在#醒是"本夜不再自动入睡"的明确指令,白天自动解除;#睡仍然有效。 - 一分钟听歌真的出声了:新增 music_box.py,用纯标准库(wave + math + winsound)即时合成一段 24 秒无缝循环的八音盒摇篮曲(C 大调五声音阶,22050Hz 单声道 WAV,缓存到 %TEMP%/lin_pet_music),
#音乐/ 右键「听歌陪伴」时循环播放 60 秒,到点/睡觉/游戏/退出自动停止;没有声卡或非 Windows 时安静降级,只陪你不吵你。 - 首次启动的 API 向导不再弹窗:原来的输入框会抢焦点、还容易被按键关掉,现在改成启动后需要时在聊天里提示配置(右键 → 🔌 API 管理)。
- oc.py / main.py:入口(两者等价,run.bat / pack.bat 沿用 oc.py)
- config.py:全部常量(API 仓库模板 / 图片路径 / 人设台词 / 商城 / 天气 / 记忆参数)
- data.py:文件与数据读写(路径、json、日志、Key、初始化)
- api_client.py:多 API 请求与主备切换、连通测试、首次向导、信号桥
- local_brain.py:本地离线台词引擎(无 API 时的保底聊天)
- memory.py:记忆日志写入与本地事实提取
- mood.py:心理陪伴(情绪记录/统计分析/暖心台词库)
- care.py:情绪察觉与主动关心(读心情/评测判断状态、关心话术与冷却、一起分析口径)
- assessment.py:心理评测引擎(16 套量表通用计分、本地存储、分档与维度解读)
- scales_data.py:量表题库数据(题目/选项/维度/计分规则,来自开源项目整理)
- widgets.py:对话气泡与桌宠本体控件
- dialogs.py:全部对话框
- crash_guard.py:全局未捕获异常兜底(写 crash.log + 复位界面状态,防闪退)
- music_box.py:八音盒音频(纯标准库合成 + winsound 异步循环播放,缺多媒体组件时的降级后备)
- music_folder.py:本地音乐播放器内核(QMediaPlayer + 内置/外部两级曲库、四种播放模式)
- context_budget.py:上下文预算与滚动摘要(token 估算、历史折叠、摘要请求)
- listening.py:听歌状态机(开始/暂停/换歌/停止、搭话冷却、话术)
- now_playing.py:读取系统正在播放的音乐(媒体会话强证据 / 窗口标题弱证据)
- pet_window.py:主窗口、状态机、系统感知、对话与记忆业务、入口 main()