# Desktop Organizer

> 猎头简历库自动化整理。把桌面/下载目录中散落的候选人简历 PDF，按 22 个精确岗位方向（具身智能细分：世界模型/预训练/VLA/运控/仿真/具身数据/感知/具身综合 + 通用类）归类，按「姓名-具体工作方向.pdf」统一命名，识别某一届应届生（如 27 届 = 2027 毕业，含「教育经历写至今」的隐形应届生），扫描人才计划头衔（杰青/优青/博新/卓博/天才少年等），处理图片型扫描件 PDF。全程不删文件、dry-run 优先、生成回退表。

- Skill: `zacharyzheng-133/desktop-organizer` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add zacharyzheng-133/desktop-organizer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zacharyzheng-133/desktop-organizer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: Zacharyzheng-133 (https://skillmd.com/u/zacharyzheng-133)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/zacharyzheng-133/desktop-organizer

---


# Desktop Organizer — 猎头简历库整理

把桌面散落的候选人简历变成一套可用的人才库。核心原则：**不删除任何文件**、**dry-run 优先**、**判定结果必须可审计**。

## 0. 环境准备（每次会话先做）

**依赖**：
```bash
pip install pymupdf
```

**桌面路径 — 必须实测，不能假设**：

Windows 上桌面可能被移动到其他盘（如华为笔记本的 `HuaweiMoveData`）。**先读取注册表确认**，不要直接扫 `C:\Users\<user>\Desktop`（那可能只是个空镜像）：

```bash
# Windows：读注册表确认真实桌面路径
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
```
或 PowerShell：
```powershell
(Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders").Desktop
```

**扫描方式 — 不要用 Glob**：`Glob`/`find` 会漏文件。一律用 Python `os.listdir` / `os.walk`。

## 1. 目录体系

```
<桌面>/简历库/              ← 主库，22 个方向文件夹
├── 01-世界模型/
├── 02-预训练/
├── ...
└── 22-移动端/

<桌面>/27届/                ← 某一届集中文件夹（命名规约不同，见 §4）
<桌面>/话术/                ← 公司名 / JD 类 docx
<桌面>/客户/<客户名>/       ← JD 归档
```

| 文件类型 | 目标位置 | 规则 |
|---|---|---|
| 候选人简历 PDF | `简历库/<方向>/` | 判定方向 → 命名 → 归类 |
| 简历 docx | 不自动归类 | 单独列出，人工确认（转 PDF 后原 docx 放类目内 `_原件docx/`） |
| 公司名 / JD docx | `话术/` | 按文件名识别 |
| 图片 | 原位 | 分析内容后询问，不擅自处理 |
| `~$` / `.lnk` / 安装包 / 项目文件夹 | 原位 | 忽略，仅在报告列出 |

## 2. 22 方向判定

完整关键词表见 [`references/direction-taxonomy.md`](references/direction-taxonomy.md)。

**具身智能类（细分，优先匹配）**：`01-世界模型` `02-预训练` `03-VLA` `04-运控` `05-仿真` `06-具身数据` `07-感知` `08-具身综合`
**通用类**：`09-大模型` `10-Agent` `11-多模态` `12-语音` `13-算法` `14-前端` `15-后端` `16-数据` `17-产品` `18-测试` `19-Infra` `20-管理` `21-嵌入式` `22-移动端`

**判定顺序**：文件名关键词 → PDF 内容「求职意向 / 研究方向」字段 → 全文关键词 → 兜底（归最接近大类，报告中列出待确认）

**方向要"最正确"**——这些是实战纠错过的：

| 简历内容 | ❌ 错 | ✅ 对 |
|---|---|---|
| 世界模型与机器人学习算法 | VLA | 01-世界模型 |
| 具身仿真平台 / 评测 | 08-具身综合 | 05-仿真 |
| MindVLA 基座模型 | 03-VLA | 02-预训练 |
| 字节 PMO 做 AI 产品 | 06-具身数据 | 17-产品 |
| 多模态 Agent 后训练 | 11-多模态 | 10-Agent |

## 3. 主库命名规约：`姓名-具体工作方向.pdf`

**文件夹是「大致方向」，文件名后缀必须是简历「实际工作内容」。**

```
✅ 吴栋-世界模型.pdf          （放在 01-世界模型/）
✅ 沈勇-语音识别.pdf          （放在 13-算法/）
❌ 吴栋-VLA.pdf               （用文件夹名当后缀，不合格）
❌ 沈勇-算法.pdf              （"算法"是泛词，不合格）
```

**具体方向提取优先级**：
1. 原文件名里的具体方向词（`代东洋-语音合成-TTC.pdf` → `代东洋-语音合成.pdf`）
2. 只有泛词（算法/工程师/研发/开发/技术/负责人/研究员/专家）→ **读 PDF 内容**，优先「求职意向 / 从事职业 / 研究方向 / 目标岗位」字段
3. 仍无法确定 → 文件夹名兜底

**姓名提取**：取文件名首段（中文 2-4 字 / 英文名 / 中英混排如 `Eric李`）；英文名保留下划线（`Cheng_Lu`）；提取失败读内容；仍失败保持原名并列为待人工处理。
**`_N` 后缀**：`_2/_3` 是**版本标记不是方向**，提取方向时先剥离，最终保留。
**清理噪音**：TTC、个人简历/resume/cv、公司后缀、学历（博士/硕士/27届）、城市、长 ID（`ATCH2052...`）。

**流程顺序**：判定方向 → 命名 → 归类，一步完成，落盘即新名。

## 4. 届数文件夹命名规约

`<桌面>/27届/` 集中放 27 届候选人简历**副本**（主库仍保留原件），命名：
**`姓名-最近一段学校-最近一段实习工作-实习研究方向.pdf`**

```
吴栋-北京大学-百度阿波罗-多模态流式仿真世界模型.pdf
曹式铖-南开大学-星海图-G0.5 VLA预训练与后训练.pdf
```

提取要点：
- **最近学校** = 最高学历（硕士/博士优先于本科；本科西工大 + 硕士北理工 → 用北理工）
- **最近实习** = 起止时间最新的一段（商汤 2025.9-至今 优先于光明实验室 2025.4-2025.8）
- **实习研究方向** = 该段的具体方向，10-20 字
- **无实习者**用「XX课题 / XX科研」代替单位，方向填研究方向
- ⚠️ **自动提取不可靠**（会把「具身智能」当公司名、把日期当方向）→ 必须生成 CSV 清单让人工核对后再执行

## 5. 届数判定（最容易漏人的部分）

**目标**：找出某一届应届生（如 27 届 = 2027 毕业）。

### 三个坑

**坑 1：只看「文件名标 27 届」会漏掉一半人。**
大量应届生简历不写届数，写的是「2024.09-至今」。必须按学制推算：
- 硕士 2024 入学（3 年制）/ 2025 入学（2 年制）→ 2027 毕业
- 博士 2022 / 2023 入学（4-5 年制）→ 2027 毕业

**坑 2：全文正则匹配「至今」会把在职的也抓进来。**
在职人员的工作经历同样写「2024-至今」。**必须只在教育经历块内匹配**——先定位「教育经历」标题，截到下一个区块标题（工作经历/项目经历/技能/荣誉）之前，再在这段文本里找。窗口内出现「有限公司/股份有限公司/职级/任职/年以上经验/Leader/主管/总监」即判定为工作经历，跳过。

**坑 3：英文格式和竖排文本会让标准正则失效。**
`Sep. 2024 – Jun. 2027` 中间夹月份；竖排排版的 PDF 文本流顺序错乱，导致「至今」和入学年不相邻。用**宽松邻近匹配**兜底：目标年份前后 110 字内同时出现入学年 + 教育词。

### 判定优先级与置信度

| 规则 | 置信度 |
|---|---|
| 1. 显式标注「27届 / 2027届 / 27年应届 / 预计2027」 | high |
| 2. 教育经历结束年份 = 2027 | high |
| 3. 教育块内「入学年-至今」，按学制推算 = 2027 | high |
| 4. 宽松邻近匹配兜底 | **low**（误判率高，必须人工复核） |

**宽松匹配会命中大量在职人员**——这是刻意设计（宁多不漏），但输出必须按置信度分开，`low` 的逐个人工看。

### 必须排除的误判

- 工作经历「至今」的在职人员
- 已毕业（2020-2024、2021-2025 等）
- 博士后（非应届）
- 教育时间缺失、无法确认毕业年份的 → 存疑不收录，单独列出

### 图片型 PDF 单独排查

文本提取 0 字的 PDF（扫描件/图片型）靠文件名判断会漏。渲染成 jpg 做视觉识别：

```python
import pymupdf
doc = pymupdf.open(path)
doc[0].get_pixmap(dpi=150).save("out.jpg")
```

### 跨来源核对

届数信息在**改名后可能丢失**。如果库里已做过一轮改名，要同时参考**改名前的原始文件名**（可能带「27届」标记）。只读内容会漏，只读文件名也会漏——**双源核对**。

## 6. 人才计划扫描

关键词 30+：杰青、优青、海外优青、长江学者、千人计划、青年千人、万人计划、博新计划、卓博计划、上海市超级博士后、科技新星、青托、天才少年、阿里星、水木学者、浦江人才、香江学者、以及企业计划（字节筋斗云、百度探路星、地平线专项等）。

⚠️ **必须区分「本人获得」和「导师获得」**：简历常写「导师：XXX（杰青）」——那是导师的头衔。命中上下文含「导师 / Advisor / 合作导师 / Prof.」的，标记为**待复核**。

## 7. 执行脚本

```bash
# 扫描（结构化 JSON + 控制台摘要）
python scripts/scan_resumes.py --lib "<桌面>/简历库" --out scan.json
python scripts/scan_resumes.py --lib "<桌面>/简历库" --jie 2027 --only-jie
python scripts/scan_resumes.py --lib "<桌面>/简历库" --jie 2027 --only-jie --min-confidence high
python scripts/scan_resumes.py --lib "<桌面>/简历库" --only-scanned --render-dir ./render

# 归档桌面散落简历
python scripts/organize.py --src "<桌面>" --lib "<桌面>/简历库"                    # 预览
python scripts/organize.py --src "<桌面>" --lib "<桌面>/简历库" --apply --revert-csv revert.csv

# 届数同步
python scripts/jie_sync.py --lib "<桌面>/简历库" --out-dir "<桌面>/27届" --year 2027 --preview review.csv
python scripts/jie_sync.py --lib "<桌面>/简历库" --out-dir "<桌面>/27届" --year 2027 --apply --from-csv review.csv

# 人才计划
python scripts/talent_scan.py --lib "<桌面>/简历库"
```

## 8. 安全红线

- **不删除任何文件**。重复文件只报告，脚本里没有任何删除调用
- **dry-run 默认**，`--apply` 才真正写盘
- **只动源目录根层**，不递归子文件夹
- **md5 去重**跨库比对，同 md5 跳过不移动
- **同名冲突**加 `_2/_3`，绝不覆盖
- **回退表**：`--revert-csv` 输出完整 原路径 ↔ 新路径
- **批量改名/移动前先生成预览清单给使用者确认**（几百个文件的操作会触发权限弹窗，也是安全阀）
- `~$` 开头是 Word 锁定临时文件，忽略

## 9. 输出报告格式

每次整理后汇报：
1. 处理了多少份、按方向分布
2. 新增归档明细（原文件名 → 新路径）
3. 跳过 / 重复的文件清单
4. 无法判定的，附上内容摘要供人工决策
5. 需要人工确认的事项（docx 简历、姓名存疑、图片型 PDF）

## 10. 定时巡检（可选）

建议做成每周一次的自动化任务，覆盖：
- 扫描桌面根目录新散落简历 → 归档
- 检查 22 个方向文件夹：方向放错的、md5 重复的、空文件夹
- 检查某一届是否漏同步
- 输出巡检报告

## 参考

- `references/direction-taxonomy.md` — 22 方向完整关键词表 + 常见误判清单
- `scripts/resume_core.py` — 核心库（PDF/教育块/姓名/学校/方向/届数/人才计划）
- `README.md` — 项目说明

