基于 .NET 8、Avalonia 与 MVVM 的 Windows 磁盘清理工具(TigerCleaner)。以 JSON 规则驱动扫描与删除,内置安全路径校验与 Serilog 日志,扫描历史保存在本地 SQLite。
| 项目 | 说明 |
|---|---|
src/TigerCleaner.Core |
模型、规则引擎、扫描/清理服务、安全守卫、SQLite 历史 |
src/TigerCleaner.UI |
Avalonia 图形界面(仪表盘、扫描结果、设置、清理历史) |
src/TigerCleaner.CLI |
命令行:scan、clean、clean --dry-run、list-rules |
src/TigerCleaner.Mcp |
Model Context Protocol stdio 服务器(开发/IDE 用):规则列表、只读扫描、数据路径查询;不提供删除类工具 |
dotnet build TigerCleaner.sln -c Release
dotnet run --project src/TigerCleaner.UI/TigerCleaner.UI.csproj
dotnet run --project src/TigerCleaner.CLI/TigerCleaner.CLI.csproj -- scan
dotnet run --project src/TigerCleaner.Mcp/TigerCleaner.Mcp.csprojTigerCleaner.Mcp 使用官方 NuGet 包 ModelContextProtocol,通过标准输入输出与 Cursor 等客户端通信。工具仅包含查询与只读扫描(与产品需求中「不在运行时依赖 MCP」一致:此为独立进程,供开发辅助,不参与最终用户安装包逻辑)。
本地运行:
dotnet run --project src/TigerCleaner.Mcp/TigerCleaner.Mcp.csproj在 Cursor 的 MCP 配置中增加一项(将下面 JSON 里 --project 的路径改为本机克隆目录下的 src/TigerCleaner.Mcp/TigerCleaner.Mcp.csproj 的绝对路径):
{
"mcpServers": {
"tigercleaner": {
"command": "dotnet",
"args": [
"run",
"--project",
"C:/path/to/CClean/src/TigerCleaner.Mcp/TigerCleaner.Mcp.csproj"
]
}
}
}暴露的工具名由 SDK 从方法名生成(例如 GetDataPaths、ListRules、ScanEnabledRulesAsync)。ScanEnabledRulesAsync 的 recordHistory 默认为 false;设为 true 时与 CLI scan 一样会写入一条 ScanHistory 记录。
根目录 Directory.Build.props 在传入 MSBuild 属性 TigerPublishExe=true 时会启用 win-x64、自包含与 PublishSingleFile,并定义预处理器符号 TIGER_PUBLISH_EXE(可在 Program.cs 等处以 #if TIGER_PUBLISH_EXE 使用)。
dotnet publish src/TigerCleaner.UI/TigerCleaner.UI.csproj -c Release -p:TigerPublishExe=true -o publish/ui
dotnet publish src/TigerCleaner.CLI/TigerCleaner.CLI.csproj -c Release -p:TigerPublishExe=true -o publish/cli
dotnet publish src/TigerCleaner.Mcp/TigerCleaner.Mcp.csproj -c Release -p:TigerPublishExe=true -o publish/mcp同一属性 TigerPublishExe=true 由根目录 Directory.Build.props 统一启用单文件、自包含 win-x64。一次 dotnet build TigerCleaner.sln 会同时生成 UI、CLI、MCP 与 Core 的调试/发布输出目录;上列三条 dotnet publish 则分别产出三个 exe(例如 publish/ui/TigerCleaner.UI.exe、publish/cli/TigerCleaner.CLI.exe、publish/mcp/TigerCleaner.Mcp.exe)。Cursor 里可把 MCP 的 command 改为上述 TigerCleaner.Mcp.exe 的绝对路径、args 留空或仅传额外参数。
若发布失败:GenerateBundle / IOException … file is being used by another process
说明目标目录里的 TigerCleaner.UI.exe(或 CLI exe)正被占用(常见:程序仍在运行、杀毒实时扫描)。任选其一:
- 退出正在运行的 TigerCleaner 后再执行上面的
dotnet publish;或 - 使用脚本发布到新目录(推荐,不覆盖旧 exe):
.\scripts\Publish-UI.ps1/.\scripts\Publish-CLI.ps1 - 临时改输出路径,例如
-o publish/ui-new。
默认目录:%LocalAppData%\TigerCleaner\
rules.json:清理规则(首次运行从内置模板复制)history.db:扫描/清理历史user-settings.json:用户设置(例如是否允许清理「下载」)tiger-cleaner-*.log:按日滚动的 Serilog 文本日志
以下文件由版本库跟踪:
| 中文 | English |
|---|---|
| doc/详细设计.md | doc/detailed-design.md |
| doc/使用手册.md | doc/user-guide.md |
(中文需求见本地 doc/需求.md) |
doc/requirements.md |
以下路径已列入 .gitignore,仅在本地维护(不随克隆下发):doc/开发目标和约束.md、doc/需求.md、doc/development-goals-and-constraints.md(及误名的 doc/yues.md)。需要团队共享时可用 CI 制品或内部 Wiki,勿将敏感内容提交进本仓库。
第一版不包含注册表清理;删除仅发生在规则定义的安全目录内;图形界面与 CLI 在非 dry-run 清理前均需用户确认。