┌─────────────────────────────────────────────┐
│ Refile: 00.000.0001 - 快速记录              │
├─────────────────────────────────────────────┤
│ [1] personal                                │
│ [2] work-project                            │
│ [3] study                                   │
│ [q] Cancel                                  │
└─────────────────────────────────────────────┘
         ↓ 按 2
┌─────────────────────────────────────────────┐
│ Refile to: work-project                     │
├─────────────────────────────────────────────┤
│ [20] 项目管理                               │
│ [21] 开发                                   │
│ [22] 设计                                   │
│ [+] 新建 Area                               │
│ [q] Back                                    │
└─────────────────────────────────────────────┘
         ↓ 按 20
┌─────────────────────────────────────────────┐
│ Refile to: work-project/20                  │
├─────────────────────────────────────────────┤
│ [001] 任务                                  │
│ [002] 会议                                  │
│ [+] 新建 Category                           │
│ [q] Back                                    │
└─────────────────────────────────────────────┘
         ↓ 按 001
✓ Moved to: work-project/20/001/20.001.0003-task-快速记录.md


**关键设计**:
- 用户只需选"要去哪个区",**不需要手动输入 ID**
- 系统自动分配下一个可用 ID
- 支持快捷键直接跳转(数字键选择)
- 支持 / 搜索过滤 Namespace/Area/Category

### 5.5 引用自动更新(Link Refactoring)

**问题**:Refile 导致 ID 变化时,其他文件中的引用会断裂。


场景:
1. Inbox 中有 00.000.0001(想法A)
2. 笔记 10.002.0005 中写道:"参考 [[00.000.0001]]"
3. Refile 后,A 变为 20.001.0003
4. 结果:[[00.000.0001]] 成为 Dead Link


解决方案:自动重构所有引用

当执行 syn inbox move 且 ID 发生变化时,更新**两种引用形式**:


1. 搜索旧 ID 的引用(使用不同策略):
   - Wiki-style 链接:Ripgrep 搜索 [[00.000.0001]]
   - Frontmatter related:SQLite 索引查询(精确匹配,避免误改)
2. 自动替换为新 ID
3. 将所有修改一并加入 Git Commit


**实现逻辑(带安全回滚)**:

⚠️ **原子性保证**:Refile 涉及跨多文件修改,必须保证原子性。

⚠️ **安全警告**:绝对不能使用 `git reset --hard`!它会清空**所有**未提交的修改,包括与 Refile 无关的用户编辑。

策略 A:前置检查(推荐)

在开始 Refile 前,检查工作区是否干净:
 
 
Back to Top