清理废弃模块并完善测试基础设施
This commit is contained in:
@@ -1,104 +1,70 @@
|
||||
# QtDesktopPet 当前路线与结构收口
|
||||
|
||||
本文档是当前有效的开发路线总览。旧版长文档已归档到 `docs/archive/QtDesktopPet_后续功能规划与结构审查_旧版.md`。
|
||||
更新时间:2026-07-16
|
||||
|
||||
## 当前产品状态
|
||||
## 产品定位
|
||||
|
||||
项目当前是一个 Windows 优先的 Qt 6 Widgets 桌面宠物应用,主要能力包括:
|
||||
QtDesktopPet 当前定位为轻量 Windows 桌面宠物,核心体验是角色动画、简短 AI 对话、AI 原生联网、本地提醒和天气查询。产品不再承担本地文件管理、应用启动或代码工作区 Agent 职责。
|
||||
|
||||
- 透明无边框桌宠窗口、拖动、置顶、托盘和单实例唤醒。
|
||||
- PNG 序列帧角色包、多状态动画、角色导入、切换、导出和用户角色目录管理。
|
||||
- AI 对话,支持 OpenAI Compatible、OpenAI 官方、Google Gemini、DeepSeek、Custom 配置。
|
||||
- 输入框联网模式,使用 AI Provider 原生联网能力,不再维护旧搜索引擎聚合。
|
||||
- 定时提醒,支持一次性和每天/每周/每月重复提醒、音效管理、历史保留和隐藏/AI 忙通知规则。
|
||||
- 天气查询,使用 Open-Meteo、默认城市、IP fallback、多候选提示和默认城市测试。
|
||||
- 对话历史管理,支持本地保存、关键词搜索、Provider/模型/时间筛选、Markdown/JSON 导出。
|
||||
- 本地应用启动,支持登记应用、别名、手选 `.exe`、启动前确认和开机自启动配置。
|
||||
- 本地文件操作 v1,支持读取文本、列目录、复制、备份和重命名。
|
||||
- 本地工作区 Agent v1b,支持选择工作区、扫描索引、搜索文件、搜索文本、读取文本文件、项目结构摘要、文件内容总结、打开普通文件、显示所在位置和独立 Agent 窗口。
|
||||
## 已落地模块
|
||||
|
||||
## 当前结构边界
|
||||
|
||||
已经形成的模块边界:
|
||||
|
||||
| 模块 | 目录 | 状态 |
|
||||
| 模块 | 主要实现 | 当前状态 |
|
||||
| --- | --- | --- |
|
||||
| AI 对话 | `src/ai/` | 已落地 |
|
||||
| 意图分发 | `src/assistant/` | 已落地 |
|
||||
| 角色包 | `src/character/` | 已落地 |
|
||||
| 配置与密钥 | `src/config/` | 已落地 |
|
||||
| 文件操作 v1 | `src/fileops/` | 已落地,后续将被 Workspace Agent 替代 |
|
||||
| 应用启动 | `src/launcher/` | 已落地 |
|
||||
| 通知 | `src/notification/` | 已落地 |
|
||||
| 提醒 | `src/reminder/` | 已落地 |
|
||||
| 状态机 | `src/state/` | 已落地 |
|
||||
| 系统能力 | `src/system/` | 已落地 |
|
||||
| 天气 | `src/weather/` | 已落地 |
|
||||
| 联网模式 | `src/web/` | 已落地 |
|
||||
| 本地工作区 Agent | `src/workspace/` + `src/ui/WorkspaceAgentWindow.*` | v1a.1/v1b/v1b.5 独立窗口化已落地 |
|
||||
| 桌宠与动画 | `src/ui/`、`src/character/`、`src/state/` | 透明窗口、拖动、托盘、单实例、多状态动画、懒加载和缓存管理已落地 |
|
||||
| AI 对话 | `src/ai/` | OpenAI-compatible、Gemini、DeepSeek/Custom 配置、流式输出、取消和历史管理已落地 |
|
||||
| 联网模式 | `src/web/` | OpenAI 官方 Web Search 与 Gemini Google Search grounding 已落地;不支持 Provider 明确提示 |
|
||||
| 提醒 | `src/reminder/`、`src/notification/` | 一次性和日/周/月重复、编辑 pending、20 天历史、音效、通知和兜底调度已落地 |
|
||||
| 天气 | `src/weather/` | Open-Meteo、默认城市、IP fallback、多候选提示和默认城市测试已落地 |
|
||||
| 角色管理 | `src/character/`、设置页 | 导入、验证、切换、删除用户角色、导出和打开用户角色目录已落地 |
|
||||
| 配置与发布 | `src/config/`、`src/system/`、`tools/`、`installer/` | 原子/兼容配置、开机自启动、打包和安装脚本已落地 |
|
||||
|
||||
`PetWindow` 仍然承担较多 UI 编排职责。后续新增大功能必须优先放在独立模块和 Controller 中,`PetWindow` 只保留入口、展示和确认交互。
|
||||
## 已移除模块
|
||||
|
||||
## 下一阶段主线
|
||||
以下模块已从源码、CMake、意图分发、设置页和托盘入口中删除:
|
||||
|
||||
下一阶段主线仍是本地工作区 Agent,而不是继续扩展旧 `src/fileops/`。
|
||||
- 聊天驱动的本地文件操作。
|
||||
- 本地应用启动与应用登记。
|
||||
- 本地工作区 Agent、独立 Agent 窗口和 `Alt+A` 全局快捷键。
|
||||
|
||||
v1a.1/v1b/v1b.5 已完成:
|
||||
删除原因是这些能力显著扩大安全边界和维护面,并使桌宠产品偏离轻量助手定位。应用自身的“开机自启动”不属于应用启动模块,继续保留。
|
||||
|
||||
- 用户选择一个本地工作区目录。
|
||||
- 桌宠可以扫描、搜索、读取和分析该工作区内文件。
|
||||
- 桌宠可以打开工作区内普通文件、打开文件夹、显示文件所在位置。
|
||||
- 独立 Agent 窗口可以展示文件结果、文本命中、最近读取、用户任务、本地工具结果和 AI 分析结果,并对选中结果执行读取、打开、显示位置。
|
||||
- 写操作误分发已收口:创建/新建/写入/修改不会再误走旧 fileops 的读取文本文件流程。
|
||||
- 文本搜索误分发已收口:`含class的文件 / 包含 class 的文件 / 找一下含 class 的文件` 会走工作区全文搜索,不再弹旧文本文件选择框。
|
||||
兼容策略:程序不主动删除用户目录中的旧 `launcher_config.json`;旧 `app_config.json` 中的 `agent` 对象会被忽略,后续保存时不再写回。
|
||||
|
||||
后续目标:
|
||||
## 当前意图边界
|
||||
|
||||
- 桌宠可以生成文件修改计划。
|
||||
- 创建、修改、复制、移动、重命名、删除到回收站等写操作必须先展示计划并等待用户确认。
|
||||
- 不允许访问工作区外路径。
|
||||
- 不允许执行系统命令、脚本或聊天文本中的命令参数。
|
||||
- 不允许永久删除文件。
|
||||
聊天意图优先级固定为:
|
||||
|
||||
正式施工计划见:
|
||||
```text
|
||||
Reminder > Weather > Chat/WebChat
|
||||
```
|
||||
|
||||
`docs/agent/DesktopPet_本地工作区Agent_施工计划.md`
|
||||
- 含“提醒”等明确提醒表达时进入提醒模块。
|
||||
- 含天气、气温、降雨等表达时进入天气模块。
|
||||
- 其余内容进入普通 AI 对话;输入框联网开关开启且 Provider 支持时进入联网对话。
|
||||
- “读取文件”“打开 Codex”“分析这个项目”等文本不会触发本地系统能力。
|
||||
|
||||
## 功能优先级建议
|
||||
## 下一阶段建议
|
||||
|
||||
当前聊天意图建议保持以下原则:
|
||||
优先完成稳定性和发布收口,不再横向扩展高权限本地自动化:
|
||||
|
||||
1. 提醒明确优先,例如“明天提醒我看天气”应创建提醒。
|
||||
2. 天气明确问答走天气模块,例如“明天西安天气怎么样”。
|
||||
3. 工作区相关文件和代码任务走 Workspace Agent,例如“搜索这个项目里的 README”“读取 main.cpp”“分析这个项目”;重命名等写操作留到后续阶段。
|
||||
4. 明确应用启动走 Launcher,例如“打开 Codex”“启动酷狗音乐”。
|
||||
5. 其余走普通聊天或联网聊天。
|
||||
1. 完成全量手动回归,重点覆盖提醒调度、联网 Provider 差异、天气失败路径和旧配置兼容。
|
||||
2. 完成 Release 包、安装、卸载、开机自启动和无 Qt 开发环境运行验证。
|
||||
3. 完成静置、隐藏、动画缓存、AI 连续对话、提醒、天气和联网请求的性能采样。
|
||||
4. 根据实测问题修复稳定性,不新增复杂提醒规则、网页抓取或高权限本地能力。
|
||||
5. 确认角色、图标、音效素材的公开再分发授权。
|
||||
|
||||
不能简单用“文件 / 打开 / 搜索”这类宽关键词吞掉所有请求。尤其要避免:
|
||||
## 延期或非目标
|
||||
|
||||
- “打开微信”误判为工作区打开文件。
|
||||
- “搜索 Qt 最新版本”误判为工作区搜索。
|
||||
- “把天气截图保存到桌面”误判为天气查询。
|
||||
|
||||
## 当前延期项
|
||||
|
||||
以下能力继续延期,不进入本地工作区 Agent 第一阶段:
|
||||
|
||||
- 语音输入和语音朗读。
|
||||
- Live2D、GIF、视频形象。
|
||||
- 插件系统。
|
||||
- 云同步和自动更新。
|
||||
- 长期记忆系统。
|
||||
- 角色市场或角色包分享平台。
|
||||
- Shell 命令执行、脚本执行、自动安装依赖。
|
||||
- 自动 git commit、自动推送、自动联网下载并执行文件。
|
||||
- 工作区外全盘搜索。
|
||||
- 复杂网页抓取和旧搜索引擎聚合。
|
||||
- 语音输入输出、Live2D、GIF/视频角色。
|
||||
- 插件系统、云同步、自动更新、长期记忆和角色市场。
|
||||
- 空气质量、天气预警、国内天气 Provider 和天气提醒联动。
|
||||
- 复杂提醒规则、跨平台通知和自定义稍后提醒间隔。
|
||||
- 网页全文抓取、搜索引擎页面解析、自建结构化搜索后端。
|
||||
- 本地文件访问、应用启动、命令执行和工作区 Agent。
|
||||
|
||||
## 验收策略
|
||||
|
||||
- Codex 不调用 CMake、`cmake --build`、Qt Creator 构建或等价构建命令。
|
||||
- 每完成一个模块,先做静态检查和逻辑推演。
|
||||
- 编译和运行验证由用户手动执行。
|
||||
- 功能验收按 `docs/QtDesktopPet_测试清单与验收标准.md`。
|
||||
- 性能和发布验收按 `docs/performance_stability_check.md`。
|
||||
- 统一测试入口见 `docs/QtDesktopPet_测试清单与验收标准.md`。
|
||||
- 性能与发布验证入口见 `docs/performance_stability_check.md`。
|
||||
- 每次能力调整后必须同步 README、测试清单、CMake 和设置页,避免残留不可达代码。
|
||||
|
||||
Reference in New Issue
Block a user