Skip to content

FlashDir v3.5.0

Choose a tag to compare

@BlkSword BlkSword released this 25 Sep 06:48
· 33 commits to main since this release

FlashDir v3.5.0 Release Notes

自 3.4.2 以来的累积更新,包含界面重构、扫描与检索性能专项、MCP 接入三部分。

新增功能

MCP(Model Context Protocol)接入

  • 桌面端内置 MCP 端点,AI 客户端(Claude Desktop / Cursor 等)可直接查询本机磁盘;
    不新增可执行文件,MCP 为桌面端本体的运行模式。
  • 两种接入方式:
    • HTTP(推荐):http://127.0.0.1:47821/mcp?token=<本机令牌>;端口固定、令牌持久,
      配置长期有效,仅监听回环地址;
    • stdio:flashdir.exe --bridge;桌面端未运行时会自动启动并等待就绪。
  • 13 个工具:search_files、scan_directory、list_directory、find_large_files、
    find_duplicates、analyze_dev_cache、list_snapshots、save_snapshot、
    compare_snapshots、disk_usage_trend、list_volumes、cache_stats、diagnostics。
  • 工具均带 MCP 标准标注(readOnlyHint / destructiveHint / openWorldHint);
    除 save_snapshot 外全部只读。
  • 设置页可开关端点、修改端口(约 1 秒内生效,无需重启);状态栏显示连接状态与最近调用。

界面(按“指挥台”方向重构)

  • 布局:范围条(卷容量条、命令入口、设置、面板开关)/工具栏(前进后退、扫描控制、
    路径面包屑、过滤、列表·热图、导出)/常驻目录树/文件表/检查器/洞察坞/状态栏。
  • 主题跟随系统,可切换并记忆;统一设计令牌(深、浅两套变量,3px 圆角,1px 分隔线)。
  • 洞察坞:大文件、增长趋势、重复文件、快照对比、开发缓存(Ctrl+1..5)。
  • 体积构成:squarified treemap(面积严格对应体积),以工具栏“热图”整屏展示。
  • 目录树支持无限层级与键盘导航(↑ ↓ ← →、Enter、Home、End)。
  • 命令面板(Ctrl+K):文件搜索与命令同框,Tab 切换模式,Ctrl+Enter 打开完整结果。
  • 搜索结果视图:命中总数、虚拟滚动、加载更多、导出 CSV(最多 5 万条)。
  • 状态栏可解释:结果来源、USN 校验状态、索引规模、MCP 状态;非管理员时提供“以管理员重启”。

目录分析与快照

  • 重复文件检测:体积分组 + 内容哈希,输出重复组与可回收空间。
  • 开发缓存分析:识别 node_modules、target、包管理器缓存、构建产物等占用。
  • 快照:保存、任意两份对比、“快照与当前”对比、基于快照序列的体积趋势。

命令行

  • cli.exe --filter <EXPR>:与桌面端一致的过滤语义,便于脚本化。

性能(同一台机器、同一数据集测量)

场景 优化前 3.5.0
全量扫描 C:\Windows(约 30.5 万条,含缓存写入) 约 47 s 约 3.4 s
磁盘缓存命中(约 30.5 万条) 1.1–7.6 s 约 0.4–0.5 s
全量扫描 C:\Users(约 29 万条) 约 36 s 约 2.4 s
全局检索(114 万条,分桶命中) 12–27 ms 1.5–3 ms
全局检索(114 万条,海量命中) 448–706 ms 30–40 ms
目录聚合(40 万条) 约 114 ms 约 59 ms
桌面端常驻内存 0.9–1.5 GB 约 0.2–0.5 GB
磁盘缓存写入(约 30 万条) 约 42 s 约 0.9 s

主要手段:

  1. MFT 读取与解析:记录号即数组下标(替代哈希表),解析使用 rayon 并行;
    路径构建改为父链 + 记忆化,O(n) 摊还。
  2. 磁盘缓存:由“每条目一行 + 多索引”改为“每目录单行数据块”,数据块外置为文件,
    写入在后台线程完成。
  3. 全局检索:改为每线程 top-K 堆归并,只复制最终结果;索引改为连续数组 +
    128 位路径哈希 + 首字符分桶,名称等字段按需派生。
  4. USN 增量:按实测校准阈值(增量约 1.67 ms/条,全量扫描 2.4–3.5 s,阈值取 1200)。

修复

类别 内容
USN FSCTL_READ_USN_JOURNAL 控制码错误;将 MaxUsn 误作当前位置导致检查点无效;增量窗口失效后未回退全量扫描而返回陈旧数据;目录改名后按当前名称解析路径导致遗漏改名前的删除记录;常驻记录未读取未命名 $DATA 大小导致体积为 0
检索 全局检索响应结构被前端当作数组使用,导致命令面板渲染失败;! 前缀否定未实现(被当作字面量匹配,结果恒为空);过滤匹配绝对路径,扫描根目录时输入根名会命中全部条目
布局 骨架使用固定行数网格,进度条未渲染时行错位,导致状态栏不贴底、洞察坞下方留白;小屏 / 高 DPI / 云桌面环境下窗口高于工作区,底部内容被裁剪
缓存 扫描根目录时级联清空所有子目录缓存;冗余索引与格式化文本持久化;全量扫描前未清理陈旧条目
稳定性 IPC 异常或事件订阅失败导致模块加载中断、界面空白(现提供防护与可见错误提示);被 MCP 拉起的桌面端继承客户端 stdio 管道导致客户端挂起

兼容性与注意事项

  • 磁盘缓存格式变更(数据块外置、字段调整):升级后首次扫描会重建缓存;
  • 旧版本保存的快照可能无法读取(条目结构新增访问时间字段);
  • MCP 端点仅监听回环地址并使用本机令牌,面向本机客户端。

文件

文件 说明
FlashDir-3.5.0.exe 桌面端(内嵌前端资源;同时提供 MCP 模式)
FlashDir_CLI_3.5.0_x64.exe 命令行工具
  • 便携版:下载后直接运行,无需安装;
  • 建议以管理员身份运行,以启用 MFT 直读与 USN 增量;首次启动会在后台建立全局索引。

已知限制

  • 非管理员模式回退为目录遍历,扫描速度显著降低,数据新鲜度依赖目录修改时间;
  • Windows 可能关闭“最后访问时间”更新,界面会标注该列不可用并回退显示修改时间;
  • MFT 直读与全局索引仅覆盖 NTFS 卷;不提供删除、移动等改动用户数据的操作;
  • 快照保存在本地缓存库中并占用磁盘空间(单目录保留 50 份 / 30 天)。