Refresh project documentation status

This commit is contained in:
2026-06-01 14:42:27 +08:00
parent 92483bf6e1
commit 8a266f4e0b
5 changed files with 43 additions and 13 deletions
+1
View File
@@ -1,5 +1,6 @@
build/ build/
dist/ dist/
release_packages/
cmake-build-*/ cmake-build-*/
.vs/ .vs/
.vscode/ .vscode/
+17 -3
View File
@@ -1,6 +1,6 @@
# QtDesktopPet # QtDesktopPet
QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物原型项目当前目标是完成一个轻量桌宠内核,并在此基础上接入用户自定义大模型对话能力 QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物项目当前已具备多状态 PNG 帧动画、托盘控制、角色包导入与切换、用户自定义大模型对话、设置面板和 Windows 发布打包能力。项目现阶段重点是完善稳定性、性能回归、角色管理和发布体验
## 当前状态 ## 当前状态
@@ -14,10 +14,11 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物原型
- PNG 序列帧动画播放 - PNG 序列帧动画播放
- `idle` / `talk` / `think` / `sleep` / `happy` / `drag` / `error` 状态 - `idle` / `talk` / `think` / `sleep` / `happy` / `drag` / `error` 状态
- 托盘显示、隐藏、退出 - 托盘显示、隐藏、退出
- 单实例限制,重复启动会唤醒已有实例
- 隐藏时暂停动画,显示时恢复动画 - 隐藏时暂停动画,显示时恢复动画
- 保存窗口位置、置顶、缩放和性能设置 - 保存窗口位置、置顶、缩放和性能设置
- 文件日志和基础轮转 - 文件日志和基础轮转
- 设置窗口 - 设置窗口按当前屏幕居中弹出
- 应用设置:缩放、性能模式、隐藏暂停、懒加载 - 应用设置:缩放、性能模式、隐藏暂停、懒加载
- 状态级动画预热和 LRU 缓存卸载 - 状态级动画预热和 LRU 缓存卸载
- AI Provider 分组配置 - AI Provider 分组配置
@@ -35,6 +36,7 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物原型
- 角色文件夹导入和角色切换 - 角色文件夹导入和角色切换
- 删除用户导入角色 - 删除用户导入角色
- Windows 发布打包脚本和 Inno Setup 安装器脚本 - Windows 发布打包脚本和 Inno Setup 安装器脚本
- Windows GUI 子系统,Release exe 双击不弹控制台窗口
尚未实现: 尚未实现:
@@ -47,6 +49,7 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物原型
- C++17 - C++17
- Qt 6 Widgets - Qt 6 Widgets
- Qt 6 Network
- CMake - CMake
- PNG 图片序列帧 - PNG 图片序列帧
- JSON 配置文件 - JSON 配置文件
@@ -231,6 +234,17 @@ powershell -NoProfile -ExecutionPolicy Bypass -File tools/package_release.ps1 `
如果需要改变 Inno Setup 的临时编译输出目录,可传入 `-InstallerWorkOutputDir` 如果需要改变 Inno Setup 的临时编译输出目录,可传入 `-InstallerWorkOutputDir`
本地生成的安装包也可以集中放到 `release_packages/`
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File tools/package_release.ps1 `
-ExePath build/release/QtDesktopPet.exe `
-BuildInstaller `
-InstallerOutputDir release_packages
```
`dist/``release_packages/` 都是本地发布产物目录,不进入 Git。
脚本默认优先查找: 脚本默认优先查找:
```text ```text
@@ -264,7 +278,7 @@ reports/perf/
docs/performance_stability_check.md docs/performance_stability_check.md
``` ```
发布包应排除 `tools/``docs/``reports/``build/``dist/``.git/`,只保留运行必需文件、`resources/characters/``resources/icons/``LICENSE` 和必要说明。 发布包应排除 `tools/``docs/``reports/``build/``dist/``release_packages/``.git/`,只保留运行必需文件、`resources/characters/``resources/icons/``LICENSE` 和必要说明。
## AI 配置和聊天 ## AI 配置和聊天
+4 -4
View File
@@ -2,7 +2,7 @@
## 1. 项目目标 ## 1. 项目目标
本项目计划从零创建一个基于 **Qt / C++** 的 Windows 桌面宠物程序。 本项目一个基于 **Qt / C++** 的 Windows 桌面宠物程序。当前已实现轻量桌宠内核、多状态 PNG 帧动画、系统托盘、设置面板、用户角色包导入与切换,以及可配置的大模型对话能力。后续工作重点从“验证核心可行性”转向“稳定回归、体验完善、发布打包和长期维护”。
核心目标: 核心目标:
@@ -50,7 +50,7 @@
17. 低资源占用策略 17. 低资源占用策略
``` ```
### 2.2 第一版暂不实现 ### 2.2 第一版暂不实现或后续增强
```text ```text
1. 语音输入 1. 语音输入
@@ -65,10 +65,9 @@
10. 云端同步 10. 云端同步
11. 自动更新 11. 自动更新
12. 长期记忆系统 12. 长期记忆系统
13. 完整安装器
``` ```
第一版要控制范围,不要因为扩展功能过多导致项目失控。 第一版要控制范围,不要因为扩展功能过多导致项目失控。当前已补齐基础 Inno Setup 安装器脚本,但仍需要继续做安装/卸载实机验证和发布体验打磨。
--- ---
@@ -1414,6 +1413,7 @@ Windows 下不能只拷贝 exe。
6. 需要安装器时,脚本优先查找 D:\Inno Setup 7\ISCC.exe,并调用 ISCC 编译 installer/QtDesktopPet.iss 6. 需要安装器时,脚本优先查找 D:\Inno Setup 7\ISCC.exe,并调用 ISCC 编译 installer/QtDesktopPet.iss
7. 安装器默认最终输出到项目根目录 7. 安装器默认最终输出到项目根目录
8. Inno 编译阶段使用当前盘符下的纯 ASCII 临时目录,例如 D:\QtDesktopPetInstallerOutput,避免中文项目路径下出现 EndUpdateResource failed (5) 8. Inno 编译阶段使用当前盘符下的纯 ASCII 临时目录,例如 D:\QtDesktopPetInstallerOutput,避免中文项目路径下出现 EndUpdateResource failed (5)
9. 如果需要集中保存安装包,可通过 -InstallerOutputDir release_packages 输出到 release_packages/
``` ```
安装器卸载时需要询问用户是否删除用户数据。用户确认后,在卸载完成阶段删除当前用户的 QtDesktopPet 配置、导入角色、聊天记录和日志。 安装器卸载时需要询问用户是否删除用户数据。用户确认后,在卸载完成阶段删除当前用户的 QtDesktopPet 配置、导入角色、聊天记录和日志。
+16 -6
View File
@@ -381,7 +381,7 @@ error 20 帧
1. AI 配置界面 1. AI 配置界面
2. 角色包市场 2. 角色包市场
3. 自动更新 3. 自动更新
4. 完整安装器 4. 安装器实机验证和发布流程自动化
``` ```
验收标准: 验收标准:
@@ -505,6 +505,7 @@ docs/
reports/ reports/
build/ build/
dist/ dist/
release_packages/
.git/ .git/
``` ```
@@ -589,6 +590,8 @@ dist/
运行时资源优先读取可执行文件同级 resources/,找不到时回退到源码目录 resources/ 运行时资源优先读取可执行文件同级 resources/,找不到时回退到源码目录 resources/
已支持角色文件夹导入、角色切换和删除用户导入角色:验证通过后复制到用户数据目录,验证失败不做文件操作;内置角色不可删除 已支持角色文件夹导入、角色切换和删除用户导入角色:验证通过后复制到用户数据目录,验证失败不做文件操作;内置角色不可删除
已新增 Windows 发布打包脚本和 Inno Setup 安装器脚本;脚本不负责 CMake 构建,安装器卸载时可由用户确认后清理当前用户数据目录 已新增 Windows 发布打包脚本和 Inno Setup 安装器脚本;脚本不负责 CMake 构建,安装器卸载时可由用户确认后清理当前用户数据目录
已接入单实例限制,重复启动会唤醒已有实例;设置页打开时按当前屏幕居中
已设置 Windows GUI 子系统,Release exe 双击不弹控制台窗口
``` ```
当前实现与计划仍存在差异: 当前实现与计划仍存在差异:
@@ -607,17 +610,22 @@ dist/
短期建议: 短期建议:
```text ```text
1. 用户手测 Google Gemini Provider 1. 用户手测单实例和窗口行为
- 连续双击 exe 只保留一个 QtDesktopPet 进程
- 隐藏到托盘后重复启动应唤醒已有实例
- 设置页打开后重复启动应置前设置页
- 多屏环境设置页应出现在当前屏幕中间
2. 用户手测 Google Gemini Provider
- Google Provider 配置保存 - Google Provider 配置保存
- Gemini 普通回复 - Gemini 普通回复
- Gemini 流式回复 - Gemini 流式回复
- 错误 Key / 错误模型错误提示 - 错误 Key / 错误模型错误提示
2. 用户手测流式状态修正: 3. 用户手测流式状态修正:
- 发送消息后等待阶段应保持 think - 发送消息后等待阶段应保持 think
- 等待阶段拖动松开应回到 think - 等待阶段拖动松开应回到 think
- 收到首段回复后应进入 talk - 收到首段回复后应进入 talk
- 长文本流式输出期间应持续 talk - 长文本流式输出期间应持续 talk
3. 用户手测应用设置: 4. 用户手测应用设置:
- 缩放比例 - 缩放比例
- 标准 / 低功耗性能模式 - 标准 / 低功耗性能模式
- 隐藏到托盘时暂停动画 - 隐藏到托盘时暂停动画
@@ -628,10 +636,12 @@ dist/
```text ```text
1. 完善设置界面: 1. 完善设置界面:
- AI 配置和测试 - 角色导出
- 角色包导入和角色切换 - 打开用户角色目录
- 更完整的角色管理状态提示
2. 使用 tools/perf_sample.ps1 补一轮可重复的稳定性与性能测试记录 2. 使用 tools/perf_sample.ps1 补一轮可重复的稳定性与性能测试记录
3. 使用 tools/perf_sample.ps1 验证状态级 LRU 卸载、主线程分批预热和动画缓存上限策略 3. 使用 tools/perf_sample.ps1 验证状态级 LRU 卸载、主线程分批预热和动画缓存上限策略
4. 做发布包安装/卸载实机验证,并确认 release_packages/ 或根目录安装包输出规则
``` ```
--- ---
+5
View File
@@ -47,6 +47,8 @@ reports/perf/
| idle 连续播放 | 保持桌宠可见并播放 idle 10 分钟 | `tools/perf_sample.ps1 -DurationSeconds 600` | 动画持续播放,内存曲线稳定 | TODO | TODO | TODO | | idle 连续播放 | 保持桌宠可见并播放 idle 10 分钟 | `tools/perf_sample.ps1 -DurationSeconds 600` | 动画持续播放,内存曲线稳定 | TODO | TODO | TODO |
| 隐藏到托盘 | 可见采样 3 分钟,隐藏后再采样 3 分钟 | 两次采样分别记录 | 隐藏后 CPU 下降或保持低占用 | TODO | TODO | TODO | | 隐藏到托盘 | 可见采样 3 分钟,隐藏后再采样 3 分钟 | 两次采样分别记录 | 隐藏后 CPU 下降或保持低占用 | TODO | TODO | TODO |
| 重复显示 / 隐藏 | 连续显示/隐藏 10 次 | `tools/perf_sample.ps1 -DurationSeconds 300` | 无崩溃,句柄数和内存无异常增长 | TODO | TODO | TODO | | 重复显示 / 隐藏 | 连续显示/隐藏 10 次 | `tools/perf_sample.ps1 -DurationSeconds 300` | 无崩溃,句柄数和内存无异常增长 | TODO | TODO | TODO |
| 重复启动 / 单实例 | 已运行时连续双击 exe 多次;隐藏到托盘后再双击 exe | 任务管理器或 `Get-Process QtDesktopPet` | 始终只有一个进程;隐藏状态可被重复启动唤醒 | TODO | TODO | 检查 QLocalServer 激活路径 |
| 设置页居中 / 置前 | 从托盘打开设置页;多屏环境重复打开;设置页已打开时再次启动 exe | 手工观察 | 设置页位于当前屏幕可用区域中心;重复启动时设置页置前 | TODO | TODO | 优先按宠物所在屏幕计算 |
| 重复切换状态 | 通过右键状态测试切换 `idle/think/talk/error/drag` | `tools/perf_sample.ps1 -DurationSeconds 300` | 首次切换状态允许加载资源,缓存达到上限后按 LRU 卸载非保护状态 | TODO | TODO | 结合日志确认加载/卸载记录 | | 重复切换状态 | 通过右键状态测试切换 `idle/think/talk/error/drag` | `tools/perf_sample.ps1 -DurationSeconds 300` | 首次切换状态允许加载资源,缓存达到上限后按 LRU 卸载非保护状态 | TODO | TODO | 结合日志确认加载/卸载记录 |
| 动画预热与卸载 | 默认配置启动后静置,随后隐藏到托盘再显示 | `tools/perf_sample.ps1 -DurationSeconds 600` | 日志出现有限次分批预热;隐藏后非保护动画缓存释放;显示后不会反复预热刚被卸载的状态 | TODO | TODO | 不应影响当前播放状态恢复 | | 动画预热与卸载 | 默认配置启动后静置,随后隐藏到托盘再显示 | `tools/perf_sample.ps1 -DurationSeconds 600` | 日志出现有限次分批预热;隐藏后非保护动画缓存释放;显示后不会反复预热刚被卸载的状态 | TODO | TODO | 不应影响当前播放状态恢复 |
| 缩放 / 置顶切换 | 设置页切换缩放,右键切换置顶 | `tools/perf_sample.ps1 -DurationSeconds 300` | 窗口尺寸和状态稳定,无崩溃 | TODO | TODO | TODO | | 缩放 / 置顶切换 | 设置页切换缩放,右键切换置顶 | `tools/perf_sample.ps1 -DurationSeconds 300` | 窗口尺寸和状态稳定,无崩溃 | TODO | TODO | TODO |
@@ -86,6 +88,7 @@ docs/
reports/ reports/
build/ build/
dist/ dist/
release_packages/
.git/ .git/
``` ```
@@ -110,6 +113,8 @@ README.md
安装器最终文件默认放在项目根目录。Inno Setup 编译阶段使用当前盘符下的纯 ASCII 临时目录,例如 `D:\QtDesktopPetInstallerOutput`,再复制最终安装包回项目根目录,用于规避中文项目路径下可能出现的 `EndUpdateResource failed (5)` 安装器最终文件默认放在项目根目录。Inno Setup 编译阶段使用当前盘符下的纯 ASCII 临时目录,例如 `D:\QtDesktopPetInstallerOutput`,再复制最终安装包回项目根目录,用于规避中文项目路径下可能出现的 `EndUpdateResource failed (5)`
如果需要把本地安装包集中保存,可通过 `-InstallerOutputDir release_packages` 输出到 `release_packages/`。该目录属于本地发布产物,不进入 Git。
运行时资源查找顺序: 运行时资源查找顺序:
```text ```text