2. 笔记库与文件管理
- 将普通本地文件夹作为笔记库打开,无需导入或转换。
- 自动恢复上次使用的笔记库,并可在最多 10 个最近笔记库之间切换。
- 侧边栏目录树展示文件夹和受支持的 Markdown 文件。
- 支持新建文件/文件夹、重命名、移动、复制,以及移入系统回收站。
- 有未保存文档时阻止移动、重命名或删除对应文件和父文件夹。
- 移动或复制文档时调整常见 Markdown 图片相对路径。
- 支持文件名和正文搜索、正文命中片段、最近文件和收藏。
- 设置编辑器字号以及默认是否显示预览。
可以将任意普通文件夹作为笔记库,使用目录树、全文搜索、最近文件、收藏及可恢复的文件管理操作。
workspace
阶段 2 桌面笔记库设计与验证
阶段 2 将编辑器从“逐个打开文件”扩展为本地优先的 Markdown 笔记库。笔记库就是用户选择的普通文件夹,不要求导入或转换文件。
笔记库与目录树
- 通过系统文件夹对话框打开笔记库,并自动恢复上次使用的笔记库。
- 保存最多 10 个最近笔记库,可从侧边栏直接切换。
- 目录树展示普通文件夹及
.md、.markdown、.mdown、.mkd文件。 .mynote和符号链接不会进入目录树,也不会被递归扫描。- 单个笔记库最多扫描 10000 个 Markdown 文件和 20000 个目录项;超过限制时明确报错。
- 所有工作区 IPC 都再次校验真实路径,拒绝
..越界以及通过符号链接访问库外文件。
文件操作
侧边栏支持:
- 在当前文件夹新建 Markdown 文件或子文件夹。
- 重命名文件和文件夹。
- 将条目移动到用户输入的库内目标文件夹。
- 在原位置生成带“副本”后缀的文件或文件夹副本。
- 将条目移入操作系统回收站,而不是直接永久删除。
- 收藏和取消收藏 Markdown 文件。
目标位置已存在同名条目、移动到自身内部、操作符号链接或路径越界时,操作会被拒绝。打开且尚未保存的文件及其父文件夹不能被移动、重命名或删除,避免用磁盘版本覆盖内存中的修改。
移动或重命名打开的干净文档后,标签路径、正文基线和文件监听会一起迁移,不需要重新打开。
附件引用
移动、重命名或复制 Markdown 文件和文件夹时,应用会调整常见的内联图片相对路径:

- 文件单独移动时,引用继续指向原附件。
- 文件夹整体移动或复制时,位于该文件夹内部的附件引用跟随新位置。
- HTTP、HTTPS、根路径和锚点引用不会被修改。
- 无法无损识别的复杂或未转义目的地址保持原文,不做猜测性修改。
该能力当前只处理 Markdown 图片语法,不会改写普通链接或 HTML 标签中的路径。
搜索与状态
- 搜索匹配相对文件路径和 Markdown 正文,不区分大小写。
- 单文件超过 2 MB 时跳过正文搜索,但仍可通过目录树打开。
- 每次最多返回 100 项,并显示正文命中片段。
- 文件内容按修改时间和大小缓存;再次搜索无需重复读取未变化的文件。
- 每个笔记库保存最多 20 个最近文件和 100 个收藏。
工作区状态保存在 Electron userData/workspace-state.json,使用原子写入。正文和附件始终保留在用户的普通文件夹中。
基础设置
设置对话框当前支持:
- 编辑器字号,范围 12–24 px。
- 启动及刷新笔记库时是否默认显示预览区。
设置与最近记录跨应用重启保留。
性能基准
运行:
npm run benchmark:workspace
基准会创建 1000 个小型 Markdown 文件,测量目录扫描、首次正文搜索和缓存搜索。2026-08-14 开发环境的多次运行参考范围:
- 扫描约 130–180 ms。
- 首次搜索约 470–1200 ms。
- 缓存搜索约 160–420 ms。
结果用于比较相对回退,不作为所有设备的硬性 SLA。当真实笔记库规模或延迟超过当前方案能力时,再评估 SQLite FTS。
自动化覆盖
- 工作区扫描、文件读取、新建文件和文件夹。
- 搜索、最近记录、收藏、设置持久化。
- 重命名、移动、复制和系统回收站调用。
- Markdown 相对图片路径重写。
- 路径穿越、符号链接逃逸、名称冲突和递归移动拒绝。
- 打开文档迁移后的状态更新。
- Electron 冒烟测试覆盖工作区恢复、目录树、搜索和打开文件。
人工平台验证
发布前仍需在 Windows/macOS 测试制品上检查:
- 系统文件夹对话框与最近笔记库切换。
- 中文、空格、长路径和只读目录。
- 回收站中的恢复操作。
- 文件夹跨层级移动及含附件目录的复制。
- 外部程序修改目录结构后手动刷新。
- 1000–10000 文件笔记库的滚动和搜索体验。
