清理废弃模块并完善测试基础设施

This commit is contained in:
2026-07-17 23:49:45 +08:00
parent d0d1de4d00
commit 90262aaf6d
102 changed files with 1711 additions and 8175 deletions
+15 -100
View File
@@ -40,9 +40,7 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物项目
- 提醒到点气泡提示、稍后提醒、拖动后延迟提示和隐藏时托盘通知
- 提醒音效切换、试听、用户 wav 导入和删除
- 天气查询 v1:Open-Meteo 天气源、城市解析、默认城市、公网 IP 定位兜底和模板回复
- 本地文件操作 v1:读取文本文件、列出文件夹、复制、备份、重命名
- 联网模式:输入框开关触发 AI Provider 原生联网能力,支持 OpenAI 官方 Web Search 和 Gemini Google Search grounding
- 应用启动 v1:通过聊天打开已登记应用、开始菜单快捷方式或用户确认选择的 `.exe`
- Windows 发布打包脚本和 Inno Setup 安装器脚本
- Windows GUI 子系统,Release exe 双击不弹控制台窗口
@@ -50,9 +48,11 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物项目
- 长期性能压测记录
- 发布包实机安装/卸载验证
- 文件操作 zip 打包、删除、覆盖、移动、脚本/命令执行
- 搜索网页全文抓取、长期缓存和浏览器自动打开网页
- 应用启动脚本、命令行参数、管理员权限和跨平台应用发现
当前非目标:
- 本地文件访问、应用启动、命令执行和工作区 Agent;这些能力已从当前产品方向移除
## 技术栈
@@ -292,71 +292,6 @@ QStandardPaths::AppDataLocation/sounds/reminders/
- 每月 31 号这类规则会跳过不存在该日期的月份,寻找下一个有效月份
- 用户音效删除仅允许删除用户音效目录内的安全 sound id,内置音效和非法路径不会被删除
## 本地文件操作
本地文件操作通过聊天意图触发,但不会直接使用聊天文本里的路径。所有文件和文件夹都必须由用户在系统文件选择框中主动选择。
当前 v1 支持:
- 读取用户选择的常见文本文件:txt、md、log、json、csv、ini、xml、yaml
- 列出用户选择的文件夹,最多显示前 200 项
- 复制用户选择的文件到用户选择的目标文件夹
- 为用户选择的文件创建同目录备份
- 重命名用户选择的文件
安全规则:
- 写操作会先展示操作计划并要求确认
- 不覆盖已有文件
- 不删除文件
- 不移动大量文件
- 不执行脚本或命令
- 不访问 Windows 系统目录
- 拒绝符号链接或符号链接目录内的路径
暂不支持:
- zip 打包
- 删除、覆盖、移动
- 修改源码
- 执行脚本或命令
## 本地工作区 Agent v1b 独立窗口
本地工作区 Agent 是旧文件操作 v1 的后续替代方向。当前已接入 v1a.1/v1b/v1b.5,并完成独立窗口化:工作区路径只保存在本次运行内,不执行任何写操作。
当前支持:
- `打开工作区 / 选择工作区`:用户主动选择一个目录后,程序扫描并建立内存索引
- `当前工作区 / 扫描工作区`:查看当前工作区和重新扫描
- `搜索 README / 搜索 main.cpp`:按文件名搜索,最多显示 30 个结果
- `搜索包含 class 的文件 / 含class的文件 / 找一下含 class 的文件`:搜索文本内容,显示路径、行号和片段
- `读取 main.cpp / 读取第一个`:读取工作区内文本文件,最多显示前 128KB
- `总结这个文件 / 分析这个文件 / 解释 main.cpp / main.cpp 是干嘛的`:使用最近读取或指定工作区文件;AI 可用且空闲时补简短分析
- `分析这个项目`:先显示本地结构摘要;AI 可用且空闲时再用独立工作区提示词补简短分析
- `打开 README / 打开第一个`:打开工作区内普通文件,打开前二次确认
- `打开 docs / 显示 main.cpp 所在位置 / 打开所在文件夹`:打开工作区内文件夹或文件所在目录
- 独立 Agent 窗口:左侧展示文件结果、文本命中和上下文,中间展示用户任务、本地工具结果和 AI 分析,右侧展示选中项详情、文本命中详情、最近读取预览以及 v1c 预留的变更计划/Diff 空状态
- 窗口入口:桌宠右键菜单、托盘菜单和全局快捷键,默认 `Alt+A`
- 设置页 `Agent` 页:可启用/关闭窗口快捷键、修改快捷键、控制工作区命令完成后是否自动显示窗口
安全规则:
- 工作区只能由用户通过目录选择框选择
- 拒绝 Windows 系统目录、符号链接目录和工作区外路径
- 跳过 `.git``build``node_modules``dist``release_packages` 等目录
- 默认拒绝读取 `.env`、密钥、凭证和包含 `secret/token/password/credential/private/api_key` 等关键词的敏感文件
- 拒绝打开 `.exe/.bat/.cmd/.ps1/.vbs/.msi/.scr/.reg/.com/.pif/.lnk`
- `读取文件` 这类泛泛请求仍走旧 `src/fileops/`;工作区读取建议使用 `读取 main.cpp``读取这个项目里的 README`
- `打开工作区 / 选择工作区` 表示重新选择目录;查看状态使用 `当前工作区`
- `创建 test.txt / 新建文件 / 写入 README / 修改 main.cpp / 修复 main.cpp / 优化 main.cpp` 当前只提示不支持,不弹读取文件选择框
- 不执行命令,不创建/修改/移动/删除文件
完整施工计划见:
```text
docs/agent/DesktopPet_本地工作区Agent_施工计划.md
```
## 联网模式
@@ -388,38 +323,12 @@ QStandardPaths::AppConfigLocation/web_config.json
- 结构化搜索 API 或自建联网后端。
- 更细粒度的来源证据摘录和引用 UI。
## 应用启动
## 当前能力边界
应用启动是独立能力,不归入本地文件操作。可通过聊天输入:
为保持桌宠产品聚焦,当前版本已移除聊天驱动的本地文件操作、应用启动和工作区 Agent。相关聊天内容只会进入普通 AI 对话或现有的提醒/天气意图,不会弹出本地路径选择器、启动程序、扫描项目或执行命令。
```text
打开 Codex
启动酷狗音乐
帮我打开 VSCode
```
应用自身的“开机自启动”仍保留,由设置页和安装器选项管理。旧版 `launcher_config.json``app_config.json` 中的 `agent` 字段不会再读取或写入,但程序不会主动删除用户目录中的旧文件。
配置保存到:
```text
QStandardPaths::AppConfigLocation/launcher_config.json
```
设置页“应用启动”支持:
- 启用或关闭应用启动
- 未知应用允许用户手动选择 `.exe`
- 登记应用名称和别名
- 编辑、删除、测试启动已登记应用
安全边界:
- 启动前始终二次确认,确认内容包含应用名、路径、工作目录和来源
- 只允许启动 `.exe` 或开始菜单 `.lnk` 快捷方式
- 不执行 `.bat` / `.cmd` / `.ps1` / `.vbs` / `.js` / `.msi`
- 不执行聊天文本里的命令
- 不拼接聊天文本参数
- 不以管理员权限启动
- 手选 `.exe` 后可选择记住为当前名称,后续走登记应用匹配
## 配置和日志
@@ -437,7 +346,6 @@ ai_config.broken.yyyyMMdd-HHmmss.json
conversation_history.broken.yyyyMMdd-HHmmss.json
weather_config.broken.yyyyMMdd-HHmmss.json
web_config.broken.yyyyMMdd-HHmmss.json
launcher_config.broken.yyyyMMdd-HHmmss.json
```
日志输出到文件,不输出到控制台:
@@ -550,7 +458,7 @@ C:\Program Files (x86)\Inno Setup 6\ISCC.exe
仓库提供开发用性能采样脚本,不进入普通用户发布包:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File tools/perf_sample.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File internal/qa/scripts/perf_sample.ps1 -Scenario idle-5m
```
默认采样当前 `QtDesktopPet` 进程 5 分钟,每 5 秒一条,CSV 输出到:
@@ -565,6 +473,13 @@ reports/perf/
docs/performance_stability_check.md
```
内部核心逻辑测试、静态检查、性能报告和长期测试记录说明见:
```text
internal/qa/README.md
docs/test-records/README.md
```
发布包应排除 `tools/``docs/``reports/``build/``dist/``release_packages/``.git/`,只保留运行必需文件、`resources/characters/``resources/icons/``resources/sounds/``LICENSE` 和必要说明。
## AI 配置和聊天