Files
EzVibeR/docs/usage/09-常见问题FAQ.md
Claude Agent 205c57e9b7 Update: Usage
2026-06-20 14:55:47 +08:00

215 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 09 · 常见问题 FAQ
按问题频率排序。看完还没解决请看终端日志(开发模式直接看 `npm run tauri:dev` 的输出;生产构建看 `~/.local/share/com.ezviber.plus/logs/` 或终端)。
## 启动 / 窗口
### Q1. 双击桌宠会被最大化 / 全屏
A: 这是**已修复**的 bug2026-06-11。双击透明区域被 `dblclick capture listener` 拦截掉,**不会**触发最大化。如果遇到,确认版本是 **2026-06-11 之后**
### Q2. 桌宠窗口不置顶 / 切桌面就消失
A: 这是 **Tauri 2 在 Wayland/GNOME 下的已知 bug**[tauri-apps/tauri#13121](https://github.com/tauri-apps/tauri/issues/13121))。
**软件默认会自动** `set_var("GDK_BACKEND", "x11")` 强制走 XWayland。
如果你**主动**设了 `EZVIBE_FORCE_WAYLAND=1` 就跳过了这个保护 → 关掉。
其他情况:
- KDE 也有类似问题,但概率小
- 关闭桌宠后从托盘恢复时**有时**属性会丢,再点一次托盘「显示桌宠」就行
### Q3. 桌宠关闭后从托盘恢复位置变了 / 尺寸变了
A: **预期行为**。当前版本不记忆关闭前的精确位置。窗口默认按 `live2d.conf.json``width/height/x/y` 建。手工调一次大小后会自动存盘。
> 跨 workspace 重建(拖完关 → 重建)有 [Tauri#14913](https://github.com/tauri-apps/tauri/issues/14913) bug**当前没有干净 workaround**。
### Q4. 关了桌宠窗口想完全退出软件
A: **托盘 → 关闭软件**
> 桌宠窗口右上角 ❌ 按钮 / 任务栏右键关闭**只是隐藏窗口**,软件在托盘继续跑。
### Q5. 托盘图标消失了
A:
- **Linux**:检查 `libappindicator` 装了没KDE 用户可能要装 `libappindicator-gtk3`GNOME 需要装扩展 [AppIndicator Support](https://extensions.gnome.org/extension/615/appindicator-support/)
- **macOS**:系统设置 → 控制中心 → 菜单栏额外项 → 启用
- **Windows**:自动出现在右下角系统托盘,点「^」展开可能看到
### Q6. 打开桌宠后系统变卡
A: 几个可能:
- 移动窗口时频繁触发 `write_config`throttle 100ms→ 低端机可能成瓶颈。建议**别狂拖窗口**。
- 你的模型超复杂(贴图 200+ 张)→ 换简单模型
- 截图功能走 Portal 占用 → 暂停截图(不点桌宠身体就行)
### Q7. 窗口右下角冒出奇怪滚动条,桌宠在抖
A: **已修复**2026-06-14。如果还遇到确认版本是 **2026-06-14 之后**`html/body` 锁了 `overflow: hidden`
## 模型 / Live2D
### Q8. 桌宠加载出来了但是空的 / 全白
A: 检查 `model3.json` 引用的 `.moc3` / texture 路径对不对。控制台会打 `[DEBUG-EMOTION] 无模型` 之类。
> 💡 推荐直接在浏览器打开 `http://127.0.0.1:<port>/<path>.model3.json` 看能不能加载(端口在 `live2d.conf.json` 的 `port` 字段里)。
### Q9. 表情/动作没切
A: 三个常见原因:
1. 你的模型没那么多表情/动作 → 配置中心 → 「🎭 当前 Live2D 模型能力」看实际有哪些
2. 关键词没匹配上 → 改模型的表情名(中文优先)或加新动作
3. pixi-live2d-display v0.4.0 老 bug → 已知有些模型March 7th表情加载失败软件有 workaround直接读 `exp/xxx.exp3.json`),重启软件试试
### Q10. 表情切换后回不去原始状态
A: 已知。软件记录了"上一个表情的参数 ID"试图清掉,但模型里某些参数被永久设值时**恢复不了**。重启软件可以重置(启动时调用 `coreModel.getParameterDefaultValue` 抓快照)。
### Q11. 模型怎么删除 / 我有多个模型想换着用
A: 模型目录里有几个子目录,就会自动识别几个。点工具栏 👁 **随机换一个**
也可以在配置中心加网络模型 URL。
## 聊天 / LLM
### Q12. 状态点红色「API key 未配置」
A: 三选一:
1. 真的没填 → 配置中心填上
2. 填了但没重启 → **必须重启**(见 [07-LLM对话.md §5.1](07-LLM对话.md)
3. 填了重启了还是红 → 检查 `live2d.conf.json` 里的 `llm_api_key` 字段**没有前后空格**
### Q13. 发消息没反应 / 一直「思考中…」
A: 检查顺序:
1. 终端有没有 `[401] API key 无效` → 重新填 key
2. 终端有没有 `无法连接到 API 服务` → 网络/代理问题,见 Q14
3. 终端有没有 `请求超时` → LLM 端点太慢,换个端点或检查网络
4. 终端有没有 `Brain reminder failed` → 是 reminder 报错,不是对话。**和聊天无关**
### Q14. 在 clash-verge / sing-box 后面连接超时
A: 已知现象Tailscale / 内网 IP 会被代理劫持到外网节点。
**软件已经强制 `no_proxy()`**,但**你的系统环境变量**`HTTP_PROXY` 等)如果已经设了,覆盖不到 `reqwest` 内部。临时方案:
```bash
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
unset ALL_PROXY all_proxy
npm run tauri:dev
```
或者把 `100.64.0.0/10`Tailscale 网段)加到你的代理"DIRECT"规则里。
### Q15. 改完 base_url / model / api_key 还是老的
A: **必须重启**。在内存里的 LLM client 不会重读配置。
### Q16. LLM 触发了但桌宠没动作 / 没表情
A: 当前版本**不再注入**动作标签 prompt。模型动起来主要靠**事件注入**interact / praise 等),不是 LLM 主动返回。
### Q17. 思考气泡没出现
A: 说明你的 LLM 不发 `<think>...</think>` 块。
- DeepSeek / QwQ / o1 / Claude extended thinking 都会发
- 普通 GPT-4 / Claude Sonnet 不会
- 想看到效果就换上面任一模型
### Q18. 截图发给 AI 后报 60s 超时
A: **已修复**为 180s2026-06-14。如果你看到错误文案里还写"60s"**那是错误信息的历史遗留**,实际超时已经是 180s。
如果还遇到:
- LLM 端点真的慢 → 换更快的 / 同城
- 截图特别大 → 截屏时缩小(**当前不支持 UI 调**
### Q19. RAG / 长期记忆为什么不工作
A: 当前 embedder 是 `DummyEmbedder`(基于 hash 的伪向量),**不是真实语义嵌入**。所以"长期记忆"功能**当前没意义**。
架构已就位SQLite + 向量索引 + 检索),等接入真实 embedder 即可用。
### Q20. 多模态报错 `invalid image detail: auto (2013)`
A: 你的 OpenAI 兼容网关**严格校验 `detail` 字段**。代码已经主动不传这个字段(兼容 OpenAI 官方默认)。如果你还遇到,**确认版本是 2026-06-14 之后**,否则升级。
### Q21. 我想本地跑(不接云端)
A: 当前**不支持内嵌本地推理**(历史上曾经用过 llama.cpp已删除
**推荐方案**:本地起一个 OpenAI 兼容服务Ollama / LM Studio / vLLM`base_url` 填成 `http://localhost:11434/v1``api_key` 随便填一个字符串。
模型名填你已经 `ollama pull` 的名字。
## 健康提醒
### Q22. 提醒间隔太短,被轰炸
A: 默认 90s/180s 是**开发用**。打开托盘 → 健康提醒,把 `remind_water` 改 270045 min`remind_stretch` 改 360060 min
### Q23. 怎么手动测一次通知(看通知能不能弹)
A: 当前 UI **没有专门的"测试"按钮**。两种方式:
1. 临时把 `remind_test` 间隔改成 5 秒,等 5 秒看
2. 直接看托盘 → 健康提醒 → 列表里 `remind_test` 那条,**编辑**改间隔到 5 秒
### Q24. 改了规则多久生效
A: 立即生效。点"确认"按钮后,后端 `reload_all_behaviors` 全量替换,**当前 tick 就用新规则**。
### Q25. 系统通知不弹
A: 依次检查:
- **Linux**:装 `libnotify-bin`(提供 `notify-send` 命令),手动跑一次 `notify-send "test" "hello"` 验证
- **macOS**:系统设置 → 通知 → EzVibeR+ 允许通知
- **Windows**:设置 → 系统 → 通知 → EzVibeR+ 开启
### Q26. 22 点到 8 点还会被吵醒
A: 默认 `quiet_hours_enabled = false`**24h 都触发**。编辑对应提醒把"是否启用静默时段"打开,"静默开始小时"填 22"静默结束小时"填 8。
## 截图
### Q27. 截图后整个聊天面板点不动了
A: **已修复**2026-06-19。后端 `set_focus()` 在 show 之后立即调。**确认版本是 2026-06-19 之后**。
如果还遇到:随便点一下桌宠窗口内任意位置拿回焦点。
### Q28. 截图截到桌宠自己了
A: 不会。流程是 **hide → sleep 250ms → 截图 → show**。如果还截到桌宠,说明 WM窗口管理器合成太慢250ms 不够——**当前不支持配置**。
备用:截图前手动把桌宠拖到屏幕边缘外(玩笑)。
### Q29. 截图失败"无可用截图方式"
A:
- **Linux**`sudo apt install imagemagick`(虽然 Portal 优先,但 Portal 不可用时兜底要这个)
- **macOS / Windows**:在系统设置里**授权屏幕录制**给 EzVibeR+
- 重启软件
### Q30. 截图存哪了?磁盘满了
A: 存在 `<app-data>/sessions/<当前会话 id>/images/`,启动会自动 GC 孤儿。**截图消息**会一直引用,**不会被 GC 删**。
清空方法:删整个会话(聊天面板 🗑)。
## 多会话 / 数据
### Q31. 怎么导出某个对话
A: 工具栏点 🔍 展开工具栏 → `⬇ MD``⬇ JSON` → 浏览器下载。
### Q32. 删了某个会话能恢复吗
A: **不能**。删了就是删了,包括该会话的所有截图。**记得提前导出**。
### Q33. 重启后某条消息的图片显示「截图加载中…」
A: **已修复**2026-06-19`PersistedMessage` 加了 `#[serde(rename_all = "camelCase")]` + `alias` 兼容。如果还遇到,**确认版本是 2026-06-19 之后**。
旧 jsonl 用 snake_case 写入,新版用 camelCasealias 双向兼容。
### Q34. 换电脑后图片都不显示了
A: app-data 路径**必须一致**。你 `app-data` 在哪,新机器也放哪。改了用户名(如 `/home/old/``/home/new/`)就坏。
### Q35. 我能改消息的标题吗
A: 能,✎ 按钮重命名即可。**提醒中心除外**(系统保留)。
## 平台特定
### Q36. macOS 启动后被 Gatekeeper 拒
A: 首次启动按住 Ctrl 点 `EzVibeR+.app` → 打开 → 确认。或:`xattr -d com.apple.quarantine /Applications/EzVibeR+.app`
### Q37. Windows Defender 报警
A: 未签名应用的正常现象。点"更多信息" → "仍要运行"。
### Q38. Linux Wayland 下完全不能用
A: 不要设 `EZVIBE_FORCE_WAYLAND=1`(默认就是这个保护)。如果你设了,关掉:
```bash
# 启动时不要有这个变量
unset EZVIBE_FORCE_WAYLAND
npm run tauri:dev
```
或显式让软件走 X11
```bash
GDK_BACKEND=x11 npm run tauri:dev
```
### Q39. Linux 截图只截到 workspace 1
A: Wayland + mutter 下用 `convert x:root` 兜底时**可能**这样。**首选 Portal 截图**会自动跟随当前 workspace。Portal 失败才回退到 `convert`
检查 Portal 是否可用:`which xdg-desktop-portal` 应该有输出。装好 `xdg-desktop-portal-gtk` / `-gnome` / `-kde`(取决于你的 DE
### Q40. 鼠标穿透怎么关回来
A: 一旦开启鼠标穿透,**点不到桌宠了**。只能:
- **右键托盘 → 显示桌宠**(如果窗口在,会顶到最前 + 关掉穿透 — 但当前代码没关穿透,需要重启)
- **重启软件**(最稳)
> 💡 这是一个**小坑**,尽量**别点 🔒 穿透按钮**。
---
如果你遇到这里没有列出的问题:
1. 先重启软件(很多奇怪问题重启就好)
2. 看终端 `eprintln!` 输出的 `DEBUG_*` 日志
3.`~/.live2D/live2d.conf.json` 是不是被你手改坏了
4. 实在不行删 `~/.live2D/live2d.conf.json` 重启,自动重建默认配置
返回 [00-README.md](00-README.md)。