Files
EzVibeR/README.md
2026-06-19 16:41:23 +08:00

8.3 KiB
Raw Permalink Blame History

EzVibeR+

A Tauri + Vue desktop pet that lives on your screen: a Live2D mascot you can chat with, take screenshots through, and have remember your conversations.


核心能力

  • Live2D 桌宠 — 透明置顶窗口上的可交互模型,点头/身子有不同反应
  • 多会话聊天 — 每个对话独立存档,刷新不丢,支持重命名/删除/搜索/导出
  • 日期分割线 — 仿微信风格,跨日自动插入分割线(今天/昨天/具体日期)
  • 截图 → AI — 点击模型即可全屏截图,预览、附文、发送给 LLM 分析
  • 自动标题 — 聊满 5 条消息后AI 自动给当前对话起个短标题
  • 全局搜索 — 当前会话高亮 + 跨会话关键词检索
  • 导出 — Markdown / JSON 两种格式,保留全部消息
  • 提醒中心 — 独立的伪对话,自动汇聚所有健康提醒(喝水/伸展/早安等)
  • LLM 对话 — 兼容 OpenAI含各类自部署网关与 Anthropic配置中心填 key 即可
  • 情绪引擎 — 模型在闲置时会随情绪变化切换微表情
  • 后台调度 — 60s 心跳驱动情绪、提醒、行为编排
  • 系统托盘 — 显示/隐藏/配置/健康提醒/退出

架构(高层)

作用
Vue 3 + Vite 前端 桌宠窗口Live2D + 聊天面板)、配置窗口、健康提醒管理窗口
PixiJS / pixi-live2d-display Live2D 模型渲染与点击命中
Tauri 2 IPC 前端 ↔ Rust 命令与事件通道
Rust 后端 LLM 接入、情绪引擎、调度器、会话持久化、截图、系统通知
SQLite (rusqlite) 记忆与向量检索
Axum 本地服务 给 webview 提供本地 Live2D 模型文件

两个长驻子系统:

  • 情绪引擎:维护 idle / happy / focused / annoyed / sleepy 等状态
  • 60s 调度器:触发健康提醒、推进情绪、生成主动消息

数据存储

数据 位置
主配置 ~/.live2D/live2d.conf.json
会话数据 <系统 app-data 目录>/com.ezviber.plus/sessions/
├─ _index.json — 会话索引(标题/消息数/时间)
└─ <session-id>/chat.jsonl — 消息流(一行一条 JSON仅 user/assistant/system/reminder图片只存相对路径
└─ <session-id>/images/<uuid>.{png,jpg} — 截图原图PNG给 LLM 多模态用)+ 压缩预览JPEG给聊天气泡用
数据库 ezvibe_memory.db — 向量记忆

启动时自动 GC扫描每个 session 的 images/ 目录,删除没被任何消息引用的孤儿图片。

配置项

主配置里的关键字段:

字段 含义
model_dir Live2D 模型目录
width / height / x / y 窗口几何
llm_provider openai(含兼容服务)/ anthropic
llm_model 模型名
llm_base_url API 端点
llm_api_key API key
behaviors 健康提醒规则(可在托盘菜单里 CRUD

构建与运行

# 一次性安装
npm install

# 开发模式(前端 + 后端热重载)
npm run tauri:dev

# 生产构建
npm run build                  # 前端
cd src-tauri && cargo build --release
./src-tauri/target/release/live2d

环境要求Node 18+、Rust 1.65+。


更新日志

2026-06-19 — reload 修复 / 截图流程收尾 / 日期分割线 / 启动 GC

  • reload 后历史截图正常显示 — 修正了 Rust PersistedMessage 的字段命名snake_case → camelCase 显式标注 + 旧数据 alias 兼容),消息里的图片路径在重启后能被前端正确读回
  • 截图后整面板可点 — 截图 hide→show 后补齐 set_focus()X11 透明窗口不再卡死
  • 截图预览气泡生命周期干净 — 点"取消"或"发送给AI"立刻从内存移除screenshot 消息被三层防御彻底排除出聊天记录(前端清 debounce timer + 后端拒绝写入 + reload 跳过读出)
  • 截图后窗口属性保留 — hide→show 后自动恢复 always_on_topvisible_on_all_workspaces,不再需要去托盘点"显示桌宠"
  • 搜索 / 导出改为弹出工具栏 — 顶部 🔍 按钮折叠展开,主聊天区更清爽
  • 日期分割线 — 仿微信风格,自动按本地时区分组消息,跨日插入「今天 / 昨天 / YYYY-MM-DD」灰底圆角标签
  • 启动时图片 GC — 应用启动异步扫描 images/ 目录,清理不被任何消息引用的孤儿 PNG / JPEG释放磁盘

2026-06-15 — 重建窗口保持置顶 + 全工作区可见

  • 关闭后再开,置顶属性不丢 — 关闭桌宠窗口后,从托盘"显示桌宠"重建,新窗口仍是「始终在最前」
  • 切换工作区桌宠跟着走 — 重建后的窗口在所有工作区都可见,切桌面不会丢

2026-06-14 — 多会话 / 截图存档 / 提醒中心 / UI 收尾

  • 多会话聊天持久化 — 每个对话独立存档到磁盘,刷新 / 重启不丢;顶部下拉切换,新建 / 重命名 / 删除
  • 截图存档 — 截图自动保存为图片文件PNG + JPEG 预览),消息里只存路径,气泡内直接预览
  • 截图发送给 AI — 在聊天里就能把截图 + 文字发给 LLM 分析
  • 自动标题 — 5 条消息后异步调 LLM 生成 ≤20 字短标题
  • 当前会话搜索 — 顶部输入框即时过滤 + 黄色高亮命中
  • 全局搜索 — 跨会话搜索弹窗,命中后一键跳转
  • 导出 — 当前会话一键导出为 Markdown 或 JSON
  • 提醒中心伪 session — 所有健康提醒自动汇聚到独立的「🔔 提醒中心」对话,触发时自动跳转
  • 模型位置 / 大小 — 模型水平居中,高度贴近聊天面板,宽度不超窗格
  • 浮动工具栏 — 9 个按钮(聊天切换 / 配置 / 背景 / 换模型 / 位置 / 大小 / 复制 URL / 穿透 / 关闭)常驻可见
  • LLM 多模态兼容性 — 适配严格 OpenAI 兼容服务(去除冗余 detail 字段),多模态请求延长超时
  • 右侧滚动条修复 — 页面不再因窗口边缘滚动而抖动
  • 帮助横幅移除 — 不再每次启动弹出「?」说明

2026-06-12 — 动作标签 / Idle 表情 / 截图 AI

  • AI 动作标签 — LLM 回复末尾附带 [MOTION: xxx],自动驱动 Live2D 动作与表情
  • Idle 微表情 — 长时间无交互时,模型随当前情绪切换微表情
  • 截图 + AI 分析 — 点击模型身体 → 截图 → 气泡预览 → 可附文字 → 发给 AI
  • 配置中心展示模型能力 — 显示当前模型的动作组、表情列表、情绪映射表
  • 透明窗口下 ChatPanel 点击修复 — 解决了 Linux + Tauri 透明窗口里 WebGL 画布拦截鼠标事件的问题

2026-06-11 — Tauri v2 升级 / 健康提醒 / 窗口交互

  • 升级到 Tauri v2
  • 健康提醒 CRUD 面板 — 托盘「健康提醒」菜单进入,实时增删改查、变更立刻同步到调度器
  • 禁双击全屏 — 透明窗口不再被双击意外最大化
  • 情绪 → 表情 / 动作映射 — 自动根据模型实际可用的 expression / motion 匹配
  • 前景遮罩修复 — 模型始终显示在最上层

2026-06-01 ~ 2026-06-02 — LLM 对话能力

  • LLM 对话上线 — 桌宠从「能显示」进化为「能对话」
    • 兼容 OpenAI含自部署网关与 Anthropic Claude
    • 配置中心填 key / model / base_url 即可启用
    • 聊天面板常驻在桌宠窗口右侧
    • 聊天面板可一键收起,模型自动占满整个窗口
  • 思考气泡 — DeepSeek / QwQ / o1 等推理模型的 <think>…</think> 块折叠显示,主回复独立
  • 健康提醒显示为气泡 — 提醒事件实时以绿松石色气泡出现在聊天里,并自动注入 LLM system prompt 引导健康小贴士
  • 窗口默认尺寸调整 — 600×480可缩放
  • 删除本地 llama.cpp 路径 — 不再支持内嵌本地推理,仅保留云端 API

2026-05-31 — 基础修复

  • 「选择本地模型」按钮恢复响应
  • 工具栏按钮全部正常显示
  • 模型显示比例修复
  • 切换 workspace 后模型尺寸不再重置
  • 窗口置顶可配置

相关链接

免责声明

本软件仅供个人学习使用,禁止商用或非法用途。