---
name: youjian-assistant
slug: youjian-assistant
display_name: 邮件助手
displayName: 邮件助手
display_name_en: Youjian Assistant
description: 收件箱的待办打捞员。适用场景：邮件批量解析（一个目录的 .eml/.txt/.md 邮件全读一遍，主题/发件人/收件人/日期/附件清单自动成邮件台账 Excel，eml 编码主题自动解码，提取不到的标待核对绝不瞎编）；待办提取（从正文拎出「请/麻烦/请于/把…发给我」这类要办的事，截止日期自动解析成真实日期——明天/下周三/月底/3天后都算得清，已过期的标红排最前、3天内的标黄）；批量改名归档（邮件按「日期_发件人_主题」规范重命名，按月分文件夹，先出计划 dry-run 确认后再执行，复制不移动原件不动）。当用户说"把这堆邮件整理成台账"、"看看哪些邮件要我办事"、"邮件批量改名归档"，或提到邮件管理、邮件整理、EML、收件箱整理、待办提取、催办、邮件归档、邮件台账、外贸邮件、客户邮件时使用。纯本地处理，邮件不出本机。
description_zh: 几百封邮件躺着不知道哪些要办？这个技能全拎出来：谁要我办事、哪天截止、过期的标红。批量解析成台账，待办带截止排好序，再按日期发件人主题改名按月归档。纯本地，邮件不出本机。
description_en: "The inbox triage clerk for anyone drowning in exported mail: batch-reads a folder of .eml/.txt/.md emails into a structured Excel ledger (subject, sender, recipients, date, attachment list - RFC2047 encoded subjects auto-decoded, unparseable fields marked 'to verify', never fabricated); extracts action items from bodies ('please confirm / please send me ...' style requests) with deadlines resolved to real dates anchored on the receive date (tomorrow, next Wednesday, month-end, 'in 3 days' all computed) - overdue items flagged red and sorted to the top, due-within-3-days yellow; then batch-renames and archives by month ('date_sender_subject' naming, dry-run plan first, copy-only execution so originals stay untouched). 100% local - mail never leaves your machine."
category: development
version: 1.0.0
author: Horizon
examples:
  - 把这个目录里的邮件全部解析成台账，看看哪些要我办事、哪天截止
  - 帮我查查有没有过期还没处理的邮件
  - 把邮件按月份归档改名，先出个计划我看看
---

# 邮件助手（Youjian Assistant）

收件箱的待办打捞员。核心信条：**邮件台账可以粗，待办一条不能漏**——已过期标红排最前，3 天内标黄，「把…发给我」这种隐性请求也跑不掉。

## 核心能力（M1–M3）

| 模块 | 能力 | 说明 |
|------|------|------|
| M1 | 批量解析台账 | 目录里 .eml/.txt/.md 邮件全读一遍：主题/发件人/收件人/日期/附件清单自动入表，eml 编码主题（=?UTF-8?B?...?=）自动解码，100 封约 1 秒 |
| M2 | 待办提取 | 正文里「请/麻烦/请于/务必/把…发给我」类祈使句全拎出；截止日期解析成真实日期（明天/下周三/月底/N天后，以收件日期为锚），已过期标红、3 天内标黄 |
| M3 | 批量改名归档 | 按「日期_发件人_主题」规范重命名，按月分文件夹；默认 dry-run 先出计划表，加 --do 执行且**复制不移动**——原件永远不动，重名拒绝执行 |

## 工作流：台账 → 待办 → 归档

1. **扫描（scan）**：邮件目录丢进来，台账+待办清单一次出全。
2. **办事**：待办清单按优先级排序，过期的先清；每条可戳回来源邮件。
3. **归档（archive）**：dry-run 看计划，确认后 --do 复制归档，按月分文件夹。

## 能力边界与免责声明

- **只做提取提醒**：待办是从正文规则提取的线索，请以邮箱原文为准复核。
- **待核对不瞎编**：版式太野的邮件标「待核对」，由人补录。
- **原件零风险**：归档只复制不移动；台账不修改任何源文件。
- **纯本地处理**：邮件是商务机密——你的收件箱，不出你的电脑。

## 文件结构

```
youjian-assistant/
├── SKILL.md
└── scripts/
    ├── main.py            # 统一入口：scan / archive
    ├── common.py          # 断点、重试、日志、人话报错
    ├── mail_parse.py      # M1 eml/txt 解析 + RFC2047 主题解码 + 附件清单
    ├── todo_extract.py    # M2 待办提取 + 截止日期锚定（收件日期为锚）
    ├── mail_scan.py       # 批量主控 + Excel 报告
    ├── rename_arc.py      # M3 改名归档（dry-run + --do）
    └── report.py          # Excel 报告输出（过期标红/紧急标黄）
```

## 示例命令

```bash
# 批量解析 + 待办提取
python scripts/main.py scan 邮件目录 -o 邮件台账.xlsx

# 改名归档：先出计划，确认后执行（复制不移动）
python scripts/main.py archive 邮件目录 -o 归档计划.xlsx
python scripts/main.py archive 邮件目录 -o 归档计划.xlsx --do
```

## 与家族联动

- 邮件里夹着发票 → 交给「发票管家」（票据台账+查重）
- 邮件里躺着简历 → 交给「简历筛选官」（JD 硬性筛选）
- 外贸客户邮件里躺单证 → 交给「外贸单证通」（三单核对）

## 安全承诺

纯本地处理，零外部数据传输。邮件是商务机密——你的收件箱，不出你的电脑。
