Skip to content

v0.3.0 — 角色有了内心 · 妹妹 persona · ghproxy 国内镜像

Choose a tag to compare

@lshhhhhhh lshhhhhhh released this 24 May 09:02

角色有了"内心"——女仆 / 妹妹 都不再是 ChatGPT 套皮

这一版重写了 OpenMeido 的角色塑造方式。之前选 maid 拿到的就是"穿女仆装的 GPT-5",温顺、礼貌、什么观点都没有。这次开始给她真实的内心,每个 persona 都有自己天然契合的关系背景。

主要变化

Wizard 改成 女仆 / 妹妹 二选一

  • 之前是女仆 / 管家。管家还没打磨好,先撤掉
  • 妹妹是新加的主推 persona——发小设定(从小一起长大、毒舌爱顶嘴、心软是真心的)

每个 persona 各有"关系背景"(自动种入,不用配置)

  • 女仆:才到岗的新人。"主人是我接的第一份工,我到岗不久" → 紧张拘谨,对你还在熟悉,分寸感是她的安全感
  • 妹妹:从小一起长大。"我家族三代侍奉主人家,我从 6 岁起就跟在主人身边" / 兄妹设定 → 默认就熟,不用从零建立关系

两层记忆体系

  • 锚点 facts(3 条/persona,always-on):进每轮 system prompt,告诉她"她是谁、和你什么关系"
  • lore 记忆碎片(6-7 条/persona,RAG 召回):她内心一侧的细节(镜子前练招呼 / 偷偷藏过桂花蜜 / 玩偶兔耳朵被哥哥用胶带缠回去……)。聊到相关话题才浮上来,平时不污染上下文

关键约束:lore 严格不写"你过去做过什么"——任何编造的"主人那年..."听起来都像 AI 幻觉。只写她自己一侧的内心,玩家不需要"我记得这事"她也能讲。

妹妹默认好感 20(不是从 0 起步)

  • 女仆默认 5(陌生服务者)
  • 妹妹默认 20(Lv.2 入口·已经熟)
  • API 设置成功 +5 → 妹妹 25(Lv.2 中段)

Settings → 人物 → 关系背景(仅 maid / imouto 显示)

  • 显示当前已种入的锚点 + 记忆碎片数
  • "重新种入她的记忆" 按钮——任何时候清掉旧的、写入当前 persona 的最新预设内容

UI 改进

banner 下载嵌入模型——之前进度条小到看不见,现在全宽橘色 + MB 数 + 当前文件 + 进度百分比

Settings → 关于 → 立即检查更新——之前点了要回到首页看右下角 banner 才能看到下载进度。现在所有阶段(发现 / 下载中 / 已就绪 / 安装)都在原地显示

UI 不再 hardcode "女仆"——主界面 banner、输入框 placeholder、busy 提示、侧栏 placeholder 都根据当前 persona 显示对应的名称(妹妹 / 大小姐 / 管家 / 自定义)

自动更新加国内镜像源

国内用户从 GitHub Releases 直连下 ~70MB 安装包经常卡到几十 KB/s,要 10 分钟以上。这版加了 ghproxy 镜像支持。

  • Settings → 关于 → 版本与更新,底下新增"下载源"切换:
    • GitHub(默认)官方源,海外更快
    • ghproxy(国内镜像)大陆 1-5 MB/s
  • 切换即时生效,不用重启 app。下次检查更新走新源
  • 同样的 .exe + 同样的代码签名——ghproxy 只是 transport,不修改包内容

国内卡的用户去 Settings 切到 ghproxy 就好。后续如果发现 ghproxy 也不稳,再考虑加我们自己的对象存储镜像。

Bug 修复

banner 跟 Settings 状态打架:之前下完模型 banner 还在催下载。根因是 main 进程内的 naiveMode flag 没翻 + 没广播。修了:exitNaiveMemoryMode 现在自动广播到所有窗口;isNaiveMemoryMode 调用时自检文件状态自愈

"全部清空"不删长期记忆模型:root cause 是显式删 hf-cache 目录的逻辑没有,依赖 readdir 迭代偶尔漏掉。修了:显式删 hf-cache / live2d-models / fonts / backgrounds 4 个重模型目录,配合详细日志

wizard 偷偷下载嵌入模型:seedLoreEpisode 在 naive 模式下会触发 transformers.js 的 remote fallback 偷偷下载 ~50MB,导致 banner 进度条根本看不到(点下载时文件已经在硬盘)。修了:naive 模式下跳过 lore 写入,让用户从 banner 显式下载

spending 模式选了童年契约女仆"不认识我":旧版本锚点 fact 写在第三人称("她家族三代...")并塞到 "[关于用户的已知事实]" header 下——模型把这些当成关于第三方"她"的属性,不内化成自身身份。修了:拆出独立的 "[你的身份与关系背景]" header;anchor 值全部第一人称("我家族...")

Gemini multi-step tool 报错:"function call turn comes immediately after a user turn..."——@ai-sdk/google 把 assistant {text + tool-call} 拆成两个连续 model turns 触发。修了:发给 Gemini 前剥掉 assistant 消息里的 text 部分,只留 tool-call

Memory 数据库 schema 迁移episodes 表加 kind TEXT NOT NULL DEFAULT 'chat' 列;老数据自动落到 'chat',lore 写入用 'lore'。recent / sessions / count 过滤只显示 chat,KNN 搜索两类都召回(lore 才能 RAG 浮起来)。配套加 clearLore / deleteFactsByKeyPrefix / countLore API

升级注意

老用户升级会保留所有聊天记录和好感度。但新的 lore 系统需要重新种入:

  • 选 maid 的用户:Settings → 人物 → 关系背景 → 点 "重新种入她的记忆",会写入"我才到岗的新人"档
  • 想试试妹妹:Settings → 人物 切换到妹妹,关系背景会自动配套

如果嫌麻烦想从零开始:Settings → 危险操作 → 全部清空(这次真的会删干净 hf-cache 等)。