Skip to content

Repository files navigation

TrayTidy(后台整理)

TrayTidy 是面向 Windows 11 x64 的本地后台应用整理工具。它常驻系统托盘;左键点击图标后,会在任务栏右下角打开一个简洁窗口,直接列出当前用户应用,并标注“正在活动”“建议清理”“可考虑清理”或“建议保留”。

系统组件默认隐藏且不会成为第一层清理对象。核心扫描与清理默认完全本地;可选 AI 应用说明功能默认关闭,仅在用户主动配置并启用后访问指定模型接口。程序不读取用户内容,也不会自动结束任何应用。

界面预览

主界面集中展示应用状态、推荐理由、保护列表和关闭入口:

TrayTidy 主界面

执行关闭操作时,进度与结果直接显示在窗口内:

TrayTidy 正在释放后台空间

下载

请前往 GitHub Releases 下载 Windows x64 自包含版本。完整解压 ZIP 后运行 TrayTidy.exe,无需另外安装 .NET 运行时。

使用方式

  1. 点击系统托盘中的“后台整理”图标。
  2. 窗口先显示正在运行的用户应用,再用约 2 秒观察 CPU 和进程 I/O 活动。
  3. 查看紧凑应用行的状态与理由;可以点击“打开”“保留本次”或“加入保护列表”。
  4. 勾选确认要处理的应用,然后点击底部“关闭选中的应用”。
  5. 清理进度和结果直接显示在窗口内,不弹出必须处理的对话框;如果仍有进程存在,可选择“彻底终止”,也可以忽略并继续。
  6. 关闭窗口只会将窗口收回托盘;需要完全退出时,请右键托盘图标并选择“退出”。

“应用”Tab 默认列出全部用户应用,并按推荐评分从高到低排列;当前仍建议清理且上次成功选择关闭的应用优先置顶。“正在活动”只用于临时筛选。“保护列表”Tab 专门管理不再参与推荐的应用,并支持移出保护列表。少量可操作提醒直接显示在对应应用行内。

推荐逻辑

扫描只使用当前本机状态:

  • 当前用户会话中的应用进程及经验证的父子关系;
  • 可见窗口、前台状态和疑似模态对话框;
  • 当前工作集、短时 CPU 百分比和进程 I/O 字节率;
  • 用户明确选择的“保留本次”“加入保护列表”和历史关闭/保留次数。某次成功关闭会让该应用在下一次安全扫描中优先进入建议;如果下一次清理时未勾选它,该一次性优先级会失效。

正在前台、刚启动、存在活动子任务、CPU/I/O 活跃、身份无法验证或已设为保留的应用不会被推荐。低活动、没有可见窗口且占用一定内存的普通用户应用会得到较高建议等级。

TrayTidy 不扫描音频,不注册前台使用跟踪 Hook,不持续采样资源,也不保存长期使用轨迹。

可选 AI 应用说明

主界面的“AI 说明”是一个独立显示开关:默认收起以保持紧凑行高,打开时按当前列表刷新应用用途和条件式文字建议,关闭时取消当前请求并折叠全部说明,但不会删除有效缓存。“AI 说明”可连接用户指定的 OpenAI-compatible Chat Completions 接口,默认不访问网络,也不会改变本地推荐评分、推荐等级、默认勾选、用户勾选、保护规则或关闭行为;RecommendationEngine 和关闭前安全复核始终是这些行为的唯一依据。扫描会先立即显示本地结果,AI 缓存与网络请求在独立支路异步执行。

localhost、127.0.0.1 和 [::1] 接口可以使用 HTTP 或 HTTPS;远程接口必须使用 HTTPS,并由用户明确勾选允许远程访问。API Key 可留空以支持本地无认证接口;非空凭据只保存到 Windows Credential Manager 的 TrayTidy/AiAdvisorApiKey,不会写入设置、SQLite、日志、URL、缓存键或请求正文。

会发送给模型的数据仅包括:应用显示名、exe 文件名、去重后的进程文件名列表、产品/文件/厂商描述、包系列名称、进程数量、内存/CPU/I/O 档位、窗口和活动状态、本地推荐等级及历史关闭/保留次数汇总。

不会发送:AppKey、完整路径、PID、精确启动时间、Windows 用户名、窗口标题、命令行、环境变量、文件内容、聊天/文档/浏览器页面、API Key、Token 或原始日志。模型输出按不可信外部输入处理,并在展示前再次经过本地安全降级。

隐私与安全

  • 不采集键盘、鼠标、剪贴板、命令行、完整窗口标题、聊天、文档、浏览器页面、网络请求、密钥或文件内容。
  • 默认不联网,不含遥测、更新检查或崩溃上传;仅在用户启用 AI 说明后访问用户指定的模型接口。
  • 系统关键进程、Session 0、其他用户会话和 Windows 组件受硬保护并从主列表隐藏。
  • 关闭前重新验证 PID 与进程启动时间,避免 PID 复用导致误操作。
  • 执行前重新检查前台窗口和疑似模态对话框;CPU/I/O 活动只影响推荐和默认勾选,不阻断用户明确发起的正常关闭请求。
  • 优先发送正常退出请求;只有进程仍存在且用户再次确认“彻底终止”时,才会强制结束进程树。
  • 窗口弹出、扫描完成和界面内操作提示均不播放提示音。
  • 日常运行保持 asInvoker 且不使用 SeDebugPrivilege;仅当用户明确选择彻底终止且权限不足时,发起一次 Windows UAC 请求。提权请求会校验内容完整性。

详细边界见 docs/SAFETY.md

构建与运行

环境要求:Windows 11 x64、.NET SDK 10.x。

.\build.ps1

该命令执行 Release 构建与全部自动化测试。调试运行:

.\run.ps1

生成自包含 win-x64 发布目录:

.\publish.ps1

输出位于 artifacts\publish\win-x64\,运行其中的 TrayTidy.exe 即可。

项目结构

  • src/TrayTidy.App:WPF 界面、托盘和应用生命周期。
  • src/TrayTidy.Core:应用分组、推荐规则及安全契约。
  • src/TrayTidy.Infrastructure.Windows:Windows 进程、窗口、退出和启动项实现。
  • src/TrayTidy.Infrastructure.AI:可选 AI 说明的脱敏、端点校验、HTTP 协议、响应解析、安全降级和缓存指纹。
  • src/TrayTidy.Persistence:本地 SQLite 设置与决策记录。
  • tests/:核心逻辑、持久化和 Windows 安全边界测试。
  • docs/:架构、安全边界与手工测试说明。

每次向 main 推送或提交 Pull Request 时,GitHub Actions 会在 Windows 环境执行格式检查、Release 构建和全部自动化测试。

托盘与开机启动

托盘图标在程序运行期间始终存在。可选的“随 Windows 登录启动”只写入当前用户的 HKCU\Software\Microsoft\Windows\CurrentVersion\Run,以 --background 启动托盘;后台启动不会自动扫描,只有打开窗口或点击“重新扫描”才会采样。

从托盘打开主窗口时,窗口也会在 Windows 任务栏显示程序图标;隐藏窗口后任务栏图标随之消失,托盘图标继续保留。

本地数据

规则、设置、关闭结果和经过验证的 AI 说明缓存位于 %LocalAppData%\TrayTidy\traytidy.db,日志位于 %LocalAppData%\TrayTidy\logs\。模型凭据不进入 SQLite。日志最多保留 7 天,关闭结果最多保留 30 天,均不记录用户内容、完整模型请求或响应。旧版本遗留的数据库表不会被读取或继续写入。

已知限制

  • Windows 没有通用方法可靠判断所有应用是否有未保存内容,关闭前仍应自行确认。
  • 低 CPU/I/O 不代表绝对空闲,因此建议只是辅助判断,不会自动执行。
  • WM_CLOSE 只表示请求关闭;某些应用可能缩小到自己的托盘而不退出。
  • 进程 I/O 计数不是物理磁盘吞吐的精确归因。
  • 高权限进程信息读取失败时采取保守策略,不给出清理建议。

实机检查步骤见 docs/MANUAL_TESTS.md

About

TrayTidy(后台整理)是一款面向 Windows 11 的轻量级后台应用整理工具。它能够将零散的系统进程聚合为易于理解的应用,结合当前 CPU、内存、子进程运行情况以及用户的个性化规则,提供清晰、可解释的清理建议。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages