下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/user_a16c9d50--foxmail-ai-mail-assistant.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_a16c9d50/foxmail-ai-mail-assistant。本地零密码直读本机 Foxmail Outlook Thunderbird Apple Mail,把收件箱整理成待回复、需决策、待跟进、可归档四档的简洁日报,并生成多语言理清来龙去脉、带高情商润色的回复草稿。只写草稿绝不发送,只读不动收件箱,邮件不出本机。
阅读全文 (展开查看完整说明)
概述
把收件箱整理成一张行动清单:谁在等我回复、哪件事要截单,并为需要回复的邮件写好草稿。产出按发件人分组摘要 + 工作清单 + CSV + HTML 图表。本机客户端模式无需邮箱密码、纯本地零上传;只有网页邮箱也能用——跑一次 --setup 向导直连你的邮箱服务器(IMAP/SMTP)读邮件,并把回复草稿写回你的草稿箱。只写草稿、绝不自动发送。
支持六类数据源(自动发现,也用 --client 显式指定):
- Foxmail 7.2(仅 Windows):读本地
Mails/Index二进制索引,0 密码元数据模式。 - Outlook 桌面版(仅 Windows):PowerShell COM 读本地缓存(零密码、零 Python 依赖,含正文片段)。
- Thunderbird(Windows / macOS / Linux 跨平台):用 Python 标准库
mailbox读明文 mbox,零依赖、零配置。 - Apple Mail(仅 macOS):解析本地
.emlx明文(字节数+标准eml+plist),复用 .eml 管线。 - 通用 .eml(全平台):任意客户端(Outlook / WPS 邮件 / QQ 邮箱网页版等)导出的
.eml/.msg明文,作为所有客户端兜底。 - IMAP 直连(全平台):直连你的邮箱服务器读邮件、写草稿(
--client imap),需先--setup配置授权码;覆盖所有主流网页邮箱。
单日(昨天)是默认;周报、区间复盘用
--date-range/--last-week/--this-week。什么都没装?--demo先用虚构样本预览输出。
⏰ 定时日报(自动化)
本技能支持被调度器每日触发,主动巡检昨日邮件并产出日报——无需手动跑。在 WorkBuddy 里建一条每日自动化即可:
python scripts/run_daily.py --daily --client foxmail--daily:定时模式标记(等价于默认日报行为,向后兼容),由调度器每日固定时刻调用。- 典型场景:每天 09:30 自动跑昨日邮件,生成「四档行动清单 + 带原文溯源的回复草稿」,你上班即看结果。
- 配合
--lang出多语日报;配合--compose同时生成回复草稿进草稿箱(只写不发送)。
🚀 30 秒快速试跑(无需任何配置 / 不用真邮件)
第一次用,先看效果,一行命令:
python scripts/run_daily.py --demo--demo 会用内置虚构样本(demo@company.com 的 8 封邮件,包含催货、询价、质量投诉等典型场景)完整跑一遍,生成:
| 产物 | 说明 | 位置 |
|---|---|---|
| 📄 邮件工作摘要 Markdown | 按发件人分组 + 待办 + 截单提醒 | output/daily_email_summary_<日期>.md |
| 📊 邮件数卡片 HTML | 各文件夹收件数可视化 | output/<日期> demo邮箱收到邮件数.html |
| 📊 待办优先级 HTML | 高/中/低优先级柱状图 | output/<日期>待办优先级分布.html |
| 📋 工作清单 CSV | 可导入 Excel 的待办表 | output/<日期>_work_checklist.csv |
| 📈 邮件统计 CSV | 各文件夹收件数明细 | output/<日期>_email_count.csv |
想看真实效果但不想等?本技能
examples/目录附带一份完整的 2026-08-18 示例输出(Markdown 日报 + CSV + JSON 原始数据 + 2 张 HTML 图表),直接打开examples/daily_email_summary_2026-08-18.md即可预览最终交付物长什么样。
试完觉得不错,再跑 python scripts/run_daily.py --init 做本机客户端检测,AI 会告诉你下一步该怎么连。
何时使用(小白口语也能触发)
只要用户表达以下任一意思,就应使用本技能(不必出现"Foxmail"字样):
- 「帮我整理 / 理一下收件箱」「今天的邮件太多,帮我理一理」
- 「总结 / 汇总一下今天的邮件」「今天谁给我发邮件了」「这周谁找过我」
- 「每天自动给我出一份邮件日报 / 邮件摘要」「早上自动帮我看邮件」
- 「按发件人把邮件归归类」「谁在催我回复」「谁在等我跟进」
- 「帮我列个邮件待办清单」「哪些邮件要跟进 / 要回」
- 「邮件工作摘要」「生成邮件行动清单」「老板式日报」「总结这周邮件」
- 设定每日定时自动化(如每天 9 点自动跑昨日邮件)
⚠️ 边界:本技能读取本机邮件数据,不做任何云端读取或上传。
- Foxmail 7.2 与 Outlook 模式仅支持 Windows;Apple Mail 模式仅支持 macOS;Thunderbird 与 .eml 模式全平台。
- 网页邮箱(Gmail/QQ/163 web)不支持零密码直读——引导用户导出 .eml 或配置桌面客户端。
- 若用户机器无任何本地客户端也未导出 .eml,则无法跑真实数据——此时可用
--demo预览输出,并引导用户导出 .eml 走--client eml。
1 分钟上手
# 还没装过?先预览输出(虚构样本,非真实邮件)
python scripts/run_daily.py --demo
# 首次引导:建工作区 + 检测本机客户端 + 下一步清单
python scripts/run_daily.py --init
# 生成「昨天」的邮件日报(auto 自动发现客户端)
python scripts/run_daily.py --workspace ./output
# 指定客户端
python scripts/run_daily.py --workspace ./output --client thunderbird
python scripts/run_daily.py --workspace ./output --client apple # macOS
python scripts/run_daily.py --workspace ./output --client outlook # Windows 桌面版
python scripts/run_daily.py --workspace ./output --client eml --eml-dir ./output/eml_export/账号
# 9 语 + 巴西葡语 + 仅预览
python scripts/run_daily.py --workspace ./output --lang en
python scripts/run_daily.py --workspace ./output --lang pt-br
python scripts/run_daily.py --workspace ./output --dry-run
# 环境诊断 / 就绪度校验
python scripts/run_daily.py --diagnose --workspace ./output
python scripts/run_daily.py --verify --workspace ./output
# 多日 / 周汇总
python scripts/run_daily.py --workspace ./output --date-range 2026-08-18,2026-08-24
python scripts/run_daily.py --workspace ./output --last-week参数总表
| 参数 | 说明 | 默认值 |
|---|---|---|
--workspace | 输出工作区目录 | 必填(除 list/check/diagnose/demo/init) |
--target-date | 单日目标日:YYYY-MM-DD / today / 昨天 / N天前 | 今天-1 天 |
--client | 数据源:auto / foxmail / thunderbird / apple / outlook / eml | auto |
--index-path | Foxmail Index 文件路径 | 自动发现 |
--account | 邮箱账号(报告显示用) | 从路径推导 |
--storage-base | Foxmail 存储根(Temp 校验用) | 自动发现 |
--eml-dir | 通用模式:已导出的 .eml/.msg 目录(递归) | 无 |
--lang | 报告语言:zh/en/de/fr/es/pt/pt-br/ja/ko/ar | zh |
--dry-run | 仅解析+分组+清单预览,不写文件 | 关 |
--list-accounts | 列出本机各客户端 | 关 |
--check | 仅检查运行环境是否就绪 | 关 |
--diagnose | 逐项诊断数据源与输出目录 | 关 |
--demo | 演示模式(虚构样本,非真实邮件) | 关 |
--init | 首次引导:建工作区 + 检测客户端 + 下一步 | 关 |
--verify | 环境就绪度校验打分 | 关 |
--log-file | 警告/跳过明细写入日志文件 | 无 |
--safe-mode | 遇损坏文件仅记录跳过,绝不中断 | 关 |
--start-date / --end-date | 区间起始/结束日(含当日) | 无 |
--date-range | 日期区间,如 2026-08-18,2026-08-24 | 无 |
--last-week / --this-week | 上一周 / 本周汇总 | 关 |
客户端对比(用哪个?)
| 数据源 | 平台 | 前提 | 读取内容 | 优劣 |
|---|---|---|---|---|
| Foxmail 7.2 | 仅 Windows | 安装 Foxmail 7.2 并同步过邮件 | Index 元数据 | 一键发现;读不到正文 |
| Outlook 桌面版 | 仅 Windows | 安装 Outlook 并配置邮箱 | 本地缓存(含正文片段) | 企业标准、用户最多;首次可能弹授权提示 |
| Thunderbird | Win/Mac/Linux | 安装 Thunderbird 并同步过邮件 | mbox 明文 | 零依赖、跨平台、最稳 |
| Apple Mail | 仅 macOS | 使用 Apple Mail 同步过邮件 | .emlx 明文 | Mac 出厂自带;需完全磁盘访问权限 |
| 通用 .eml | 全平台 | 任意客户端导出 .eml/.msg | 完整明文(含正文与附件) | 所有客户端兜底 |
五选一即可。都没有先跑
--demo预览。网页邮箱不支持零密码直读,走 .eml 导出。
开箱即用(–demo / –init / –verify)
--demo:零依赖,用随包虚构样本 30 秒生成示例报告(报告顶部醒目标注「非真实邮件」),想先看输出再决定装不装就跑它。--init:首次引导——建工作区、检测本机有哪些客户端、给「下一步该敲哪条命令」清单。--verify:就绪度打分(如就绪度: 2/6+ READY / NOT_READY),快速确认能否跑。
多日 / 周汇总(v1.2.0 新增)
默认只处理单日(昨天)。需要周报、区间复盘时,用区间参数:
- 区间模式产出 两份合并 CSV + 两张图表 + 一份区间摘要:
output/<起始>_<结束>_邮件汇总.csv:逐日收件/业务/Teams/清单统计output/<起始>_<结束>_工作清单合并.csv:跨日工作清单(每条带日期列)output/<起始>_<结束>_每日趋势.html:每日收件数趋势图output/<起始>_<结束>_发件人统计.html:区间高频发件人 Top 图<起始>_<结束>_邮件区间摘要.md:区间汇总报告- 每日明细仍保留在
output/daily/<日期>/下
- 单日模式完全不变(文件仍在
--workspace根目录与output/),向后兼容。
环境诊断(–diagnose / –verify)
python scripts/run_daily.py --diagnose --workspace ./output # 逐项诊断 + 修复建议
python scripts/run_daily.py --verify --workspace ./output # 就绪度打分--diagnose 输出每类数据源(Foxmail/Outlook/Thunderbird/Apple Mail/.eml)与输出目录状态(通过/未安装/异常/未指定,状态词按 --lang 本地化),并针对异常项给出修复建议。
错误码速查表(出问题时对照)
脚本所有失败都会打印「错误码 + 原因 + 编号解决步骤」(错误码文案 9 语本地化):
| 错误码 | 含义 | 解决步骤(摘要) |
|---|---|---|
CLIENT_NONE | 未检测到任何邮件客户端 | ① 装任一客户端;② 导出 .eml 走 --client eml;③ 跑 --diagnose |
FOXMAIL_NOT_FOUND | 未找到 Foxmail 7.2 | ① 装 Foxmail 7.2 并同步;② 改用其它客户端;③ 导出 .eml |
INDEX_NOT_FOUND | 未找到 Foxmail Index | ① 确认已同步;② --index-path 指定;③ 加 --eml-dir |
INDEX_LOCKED | Index 被占用(文件锁) | ① 完全退出 Foxmail;② 等几秒重跑;③ 复制 Index 指向副本 |
THUNDERBIRD_NO_PROFILE | 未找到 Thunderbird 配置 | ① 装并同步;② 确认 profile 位置;③ 改 .eml |
APPLE_MAIL_NOT_FOUND | 未找到 Apple Mail(仅 macOS) | ① 确认已同步;② 授予终端完全磁盘访问权限;③ 改 Thunderbird/.eml |
OUTLOOK_NOT_FOUND | 未检测到 Outlook(仅 Windows) | ① 装 Outlook 并配置邮箱;② 授权弹窗选「允许」;③ 改 Foxmail/Thunderbird/.eml |
EML_DIR_MISSING | --eml-dir 不存在或为空 | ① 跑 export_eml_wizard.py;② 指向含 .eml 的目录;③ 确认扩展名 |
NO_WRITE_PERM | 输出目录不可写 | ① 换可写目录;② 以对应用户运行;③ 关闭占用程序 |
NO_MAIL_IN_RANGE | 日期范围内无收件邮件 | ① 确认日期范围;② 确认已同步;③ 跑 --diagnose |
核心约束(务必遵守)
- 筛选范围:仅整理「目标日 = 执行日之前一天」收到的邮件(
--target-date覆盖为任意日期;区间参数覆盖为多日)。 - 分组方式:先按发件人(邮箱)分组,组内按接收时间升序;同主题往来综合归纳。
- 工作清单:含应完成时间、内容、对接人、来源四要素。
- 邮件正文(正文模式):Foxmail 7.2 本地索引仅存元数据,正文加密存储,索引无法读取,也不应破解。用
export_eml_wizard.py引导导出 .eml 后加--eml-dir即可读正文;Outlook 模式 COM 可直接取正文片段。未导出时摘要基于元数据归纳并提示。
正文模式(看正文)— 合规路径
Foxmail 7.2 的本地邮件正文是加密存储的(实测 AES/RC4/XOR/TEA 均无法用本地密钥解开),这是客户端的安全设计。不破解、不逆向正文,而是走官方导出通道:
- 引导导出:运行
scripts/export_eml_wizard.py --workspace <WS>—— 检测 Foxmail 与账号、建导出目录、打印逐步中文导出指引。 - 校验:
export_eml_wizard.py --workspace <WS> --verify统计已导出 .eml 数量与日期覆盖。 - 读正文:
run_daily.py --workspace <WS> --eml-dir <WS>/eml_export/<账号>/—— 解析 .eml 的 RFC822,按 Date 头筛选目标日,提取正文,与 Index 元数据按"邮箱+主题"匹配补充。
正文模式是可选的:不导出也能跑(0 密码元数据模式);导出后跑一次即含正文。
数据源(路径自动发现)
- Foxmail 7.2:Index 文件
Foxmail 7.2Storage<账号>MailsIndex。按FOXMAIL_HOME环境变量、常见盘符/目录、PATH上Foxmail.exe、Windows 注册表、有界文件系统搜索自动定位;--account指定账号,--index-path可显式覆盖。 - Outlook:注册表
HKLM/HKCUSOFTWAREMicrosoftOffice<版本>OutlookInstallRoot探测(毫秒级,不启动 COM);读取用read_outlook.ps1(随包,PowerShell COM)。 - Thunderbird:profile 自动发现(Win
%APPDATA%ThunderbirdProfiles、mac~/Library/Thunderbird/Profiles、Linux~/.thunderbird);遍历Mail/与ImapMail/下 mbox 明文。 - Apple Mail:macOS
~/Library/Mail/V*(需终端「完全磁盘访问权限」);解析.emlx。 - 通用 .eml:
--eml-dir指定目录递归扫描.eml/.msg。 - auto 探测顺序:Foxmail → Outlook → Thunderbird → Apple Mail → .eml → IMAP(若已配置 mailbox_config.json,前四者毫秒级探测)。
模块结构(scripts/ 目录)
run_daily.py:入口 + 主流程 + 客户端调度 + 单日/多日管线 + IMAP 直连分支。lib_lang.py:9 语翻译框架(LANG 121 键 + T() 取词,含 pt-br 别名)。lib_errors.py:错误码系统(CURRENT_LANG / ERRORS / fail / friendly_exit)。lib_imap.py:IMAP/SMTP 直连模块:读邮件、写草稿(APPEND Draft)、–setup 向导、连接自测、本机配置读写。compose_reply.py:草拟回复草稿入口(–format imap/eml/outlook,默认只写草稿绝不自动发送)。reply_intel.py:回复情报卡引擎(v1.5.0,纯标准库):build_thread_index/extract_entities/classify_intent/build_all_cards/render_*把多封往来确定性聚合为「回复情报卡」(往来时间线+诉求+实体+待办+回复要点),零幻觉。kb_builder.py:v2 上下文引擎地基(纯标准库):全量扫描收件+已发+归档,产出mailbox_kb/{people.json, topics.json, index.db, last_scan.txt}——人物关系图谱 + 话题 dossier(三态当事人/关键事实/状态)+ 跨话题松耦合码关联 + 增量游标;--self-test合成数据实跑断言。详见下文「v2 上下文引擎」章。tone_engine.py:v2 高情商温度模型 + 行业注入(纯标准库):情绪检测(中英信号 + KB 历史基线对照)、温度谱(对抗→协作,目标拉到「可对话」非「讨好」)、接话三拍(接住→定调→给出口)、价格差距专项(承认→透明拆→给路径)、行业 profile 注入;绝不替公司认未经确认的责(liability 红线);--self-test实跑断言。industry_profile/:v2 行业数据层(纯 JSON 数据,零代码):内置预设 服装外贸/法律/技术/金融 + 中性专业默认;实体抽取优先级声明;KB 自动推断行业,不确定退中性专业。核心是行业无关的,行业只作可插拔数据层。draft_body.py:v1.7.1 回复正文生成器(纯标准库):消费 tone_engine(接话三拍/价格专项/护栏)+ 情报卡事实 + KB 上下文,在 LLM-off 默认路径生成「可直接微调发送的草稿正文」(填补只能产出 briefing 的缺口)。零外发双闸门(test_nosend_assert.py):内部提示/护栏剥离为 notes 绝不进正文、事实带溯源、裸码补全、绝不替写承诺。默认关,仅--draft-enhance开启,不破坏现有行为。llm_engine.py:可选一键端到端 LLM(v1.5.0,仅 urllib/json):load_llm_cfg/generate_reply调本机 ollama/openai 把卡片成文;默认关、异常优雅回退情报卡、密钥仅存本机。read_outlook.ps1:Outlook COM 读取脚本(Windows PowerShell)。export_eml_wizard.py:正文导出引导向导。
Foxmail 7.2 Index 逆向格式(已验证)
- Header = 512 字节;Record = 512 字节。Header offset 8:总记录数(uint32 LE)。
- 每条记录:
0mail_id(uint32,0=空跳过);8接收时间(OLE Date double);16发送时间;51文本区(双空 0x00 0x00 终止)。 - 文本区为紧凑格式:
发件人名+发件邮箱+收件人名+收件邮箱+主题直接拼接、字段间无分隔符;用 @ 锚点 + TLD 白名单截断解析。 - OLE Date → CST:
base=1899-12-30,CST = base + timedelta(days=ole) + 8h。 - 解码:先 utf-8,含
ufffd则 gbk fallback。
更完整的字段偏移、TLD 白名单与歧义示例见
references/foxmail_index_format.md。
执行流程(脚本已封装,直接调用)
使用技能自带脚本 scripts/run_daily.py(参数化、端到端)。命令模板:
PY="python" # 任意 Python 3.8+
SKILL="<技能目录>/scripts/run_daily.py"
WIZ="<技能目录>/scripts/export_eml_wizard.py"
WS="<输出工作区目录>"
# 默认(auto 自动发现客户端,仅元数据,0 密码)
"$PY" "$SKILL" --workspace "$WS" --target-date 2026-08-18
# 指定客户端
"$PY" "$SKILL" --workspace "$WS" --client thunderbird --target-date 2026-08-18
"$PY" "$SKILL" --workspace "$WS" --client apple # macOS
"$PY" "$SKILL" --workspace "$WS" --client outlook # Windows 桌面版
"$PY" "$SKILL" --workspace "$WS" --client eml --eml-dir "$WS/eml_export/<账号>"
# IMAP 直连(网页邮箱也能用):先 --setup 向导配置,再读邮件 / 草拟回复
"$PY" "$SKILL" --setup --workspace "$WS" # 一键向导:识别服务商→授权码→连接自测→存本机
"$PY" "$SKILL" --workspace "$WS" --client imap # 直连邮箱服务器生成日报
"$PY" "$SKILL" --workspace "$WS" --compose # 为需回复邮件写草稿到邮箱草稿箱(默认只写草稿)
"$PY" "$SKILL" --workspace "$WS" --compose --format eml # 或导出 .eml 草稿供任意客户端导入
"$PY" "$SKILL" --workspace "$WS" --compose --dry-run # 预览将生成的草稿,不写不发送
# 多日 / 周汇总 / 诊断 / 演示
"$PY" "$SKILL" --workspace "$WS" --date-range 2026-08-18,2026-08-24
"$PY" "$SKILL" --workspace "$WS" --last-week
"$PY" "$SKILL" --diagnose --workspace "$WS"
"$PY" "$SKILL" --demo
# 正文模式(Foxmail/Thunderbird 也可叠加 .eml 读完整正文)
"$PY" "$WIZ" --workspace "$WS"
"$PY" "$WIZ" --workspace "$WS" --verify
"$PY" "$SKILL" --workspace "$WS" --eml-dir "$WS/eml_export/<账号>" --target-date 2026-08-18
# 多语言 / 预览 / 容错
"$PY" "$SKILL" --workspace "$WS" --lang en
"$PY" "$SKILL" --workspace "$WS" --lang pt-br
"$PY" "$SKILL" --workspace "$WS" --dry-run
"$PY" "$SKILL" --workspace "$WS" --log-file run.log --safe-mode--target-date省略时默认 = 今天 – 1 天。区间参数启用多日汇总。- 错误处理:运行前自动检查环境并给出友好报错与修复建议;解析单条记录或文件异常时跳过并记录(收尾打印「容错摘要:跳过 N 个文件」),
--log-file可落盘。 - 输出前缀
PREFIX = augMMDD(如 aug0818)。
脚本自动完成:数据源解析 → Temp 交叉验证(Foxmail)→ 同步缺口检测 → 按发件人分组 → 工作清单 → 写 Markdown 报告 + CSV + HTML 图表(单日)/ 合并报表(多日)。
工作清单生成逻辑
- 有业务邮件:每个发件人组 = 一项跟进(含最新主题、收件时间、对接人);主题含 紧急/urgent/asap → 优先级"高",否则"中"。
- 无业务邮件 / 仅 Teams 通知:若工作区有
continuation_threads.json则按其内容输出固定待办;否则输出空清单(不臆造业务内容)。
多语言输出与 agent 翻译指引
脚本 --lang 负责把报告框架本地化:章节标题、表格表头、图表标签、优先级词、星期、清单模板、外贸模板片段(询盘确认 / PI 草稿 / 物流通知)全部切换为对应语言,阿拉伯语图表自动 RTL。pt-br 为巴西葡萄牙语别名。
脚本不调用任何外部翻译 API、零上传——邮件主题、发件人名、正文等动态内容保持原文。当用户要求「把日报翻译成英文 / 阿拉伯语发给我」时,由 WorkBuddy 本体(多语 LLM)在最后一步完成叙事翻译:
- 先以
--lang <目标语>运行脚本,得到框架已本地化的报告骨架(中文动态内容仍在)。 - agent 读取
daily_email_summary_{date}.md,把其中的动态叙述(往来摘要、工作清单说明、正文摘要)用目标语言重写,保留表格结构与数据。 - 对外发送时即为目标语言完整日报。
这样做到「9 语 + 巴葡输出」且守住「不上传、不依赖外部翻译服务」的信任底线。
已知坑点 & 回退方案
分步实操指导见 README 第 9 节「常见问题(FAQ)」。
| 现象 | 处理 |
|---|---|
| smart-charts 沙箱 pandas 异常 | 回退内置 HTML 图表生成器(纯 CSS 无依赖) |
Teams 通知(no-reply@teams.mail.microsoft.com) | 计入收件但标注"非业务邮件",不进业务清单 |
| 本地 Index 未同步最新邮件 | 报告标注同步缺口,提示点「接收」后重跑 |
| 邮件正文加密(缺 .eml) | 摘要仅基于元数据,不臆造正文;提示用 –eml-dir |
| 想看正文 | export_eml_wizard.py 导出 .eml 后 --eml-dir 重跑;Outlook 模式直接含正文片段 |
| Apple Mail 读不到 | 给终端「完全磁盘访问权限」(系统设置→隐私与安全性),或改用 Thunderbird/.eml |
| Outlook 报错 / 读不到 | 确认装的是桌面版 Outlook 并配置过账号;首次授权弹窗选「允许」;或改用其它客户端 |
| 紧凑格式人名 / 邮箱粘连 | @ 锚点 + TLD 白名单解析;少量字符残留以 raw_text 兜底 |
| 出问题不知道怎么排查 | 先 --diagnose;对照「错误码速查表」;--log-file run.log 记日志 |
| 想跑周报 / 区间复盘 | --date-range / --last-week / --this-week |
| 想输出外文报告 | --lang en/pt-br/...;动态叙事由 agent 最后翻译(见上节) |
--lang 给错值 | 仅接受 zh/en/de/fr/es/pt/pt-br/ja/ko/ar,argparse 拒绝并列出可选值 |
| 目标日格式写错 | 支持 today / 昨天 / N天前 / YYYY-M-D |
| IMAP 登录失败 | 用的是「授权码 / 客户端专用密码」不是登录密码;先 --setup 重测;确认网页版已开启 IMAP/SMTP |
| 没有 Foxmail/Outlook/Thunderbird | 用 --client imap(网页邮箱)或导出 .eml;或 --demo 先预览 |
| 想自动草拟回复 | --compose 写草稿到邮箱草稿箱(默认只写草稿);v1.5.0 可加 --emit-intel 先出「回复情报卡」、你写正文后 --from-replies 回填,或 --llm 本机 LLM 一键成文(默认关) |
| 换机 / 重装系统后连不上 | 授权码机器绑定加密存储(换机不可解密,属安全设计),重新跑 --setup 配一次即可 |
| 想自动发送邮件 | 默认只写草稿箱绝不自动发;--send 需二次确认(yes 或 --yes-I-confirm-send),每次发送留 send_audit.log 审计 |
| 生成的 CSV / 图表在哪看 | workspace 输出目录:CSV 用 Excel/WPS 打开,HTML 图表用浏览器打开 |
| 高级功能命令记不住 | 本表 + 「错误码速查表」+ README「参数总表」三处速查;先跑 --diagnose 自检 |
IMAP 直连模式(v1.4 新增)
面向「只有网页邮箱、没有也不想装桌面客户端」的用户——这是上次迭代的重大升级。
隐私边界(诚信、合法):IMAP 模式直连你自己的邮箱服务器,授权码仅存本机明文 mailbox_config.json(保存时 chmod 600,提示勿分享/上传),脚本不调用任何第三方中继、不上传任何邮件内容。发送边界:默认只把回复写进你的草稿箱(IMAP APPEND Draft),绝不自动发送;--send 是显式确认后才启用的可选 SMTP 发送。
首次配置(傻瓜化):
"$PY" "$SKILL" --setup --workspace "$WS"向导会:① 让你输入邮箱地址 → ② 自动识别服务商(qq/foxmail/163/126/gmail/outlook/sina/yahoo/icloud 等)并填好 IMAP/SMTP 主机端口 → ③ 打印该服务商「如何获取授权码」的中文指引 → ④ 连接自测(登录 + 列文件夹)→ ⑤ 自动定位草稿箱并保存配置。整个过程不到 2 分钟,小白也能完成。
日常使用:
"$PY" "$SKILL" --workspace "$WS" --client imap # 直连生成日报
"$PY" "$SKILL" --workspace "$WS" --compose # 为需回复邮件写草稿到邮箱草稿箱
"$PY" "$SKILL" --workspace "$WS" --compose --format eml # 导出 .eml 草稿(供任意客户端导入)草稿里已引用原邮件主题/发件人/时间/正文,你在邮箱里填好正式回复、点「发送」即可——技能调用人无需自己从零写、也无需把密码交给任何平台。
草拟回复升级:回复情报卡(v1.5.0,攻「空壳模板」)
v1.4 的 --compose 只是「框架 + 引用原文」空壳,不含真实回复内容(不结合上下文、不结合历史往来)。v1.5.0 改造成有含金量的情报聚合 + 灵活成文:
- 回复情报卡(零幻觉,脚本出卡):
--emit-intel把多封往来确定性聚合(非 LLM 编),产出reply_intel.json/.md:① 往来时间线(按Message-ID/In-Reply-To/References串线程,缺头部按 发件人+归一化主题 聚类);② 核心诉求(多语关键词打分分类);③ 提取实体(款号/数量/国家/金额/日期,跨整条线程聚合,早前事实带入最新一封);④ 待办 + 回复要点。卡片只呈现邮件里真实存在的事实。 - 两段式成文:
- 模式 A(默认推荐,零新依赖):
--emit-intel出卡 + 自动导出「回复正文模板」reply_slots.json→ 你用记事本把每封正文填进引号 →--from-replies reply_slots.json一键回填生成草稿。卡片当参谋,落笔权在你。 - 模式 B(可选一键端到端):
--llm调本机 LLM(ollamahttp://localhost:11434/ openai 自备base_url+api_key)把卡片成文写草稿。默认关:仅mailbox_config.json显式llm.enabled=true且有base_url/api_key才生效;任何异常自动回退情报卡,不报错、不裸奔;密钥仅存本机。
- 模式 A(默认推荐,零新依赖):
- 草稿正文优先级:
--from-replies回填 > LLM 成文(配置就绪)> 回复情报卡(默认)> 框架占位(旧版兼容)。 - 发送边界不变:无论哪种模式,都只写草稿箱(IMAP
APPEND Draft),绝不自动发送;--send仅显式确认后启用。
"$PY" "$SKILL" --workspace "$WS" --compose --emit-intel # 模式 A:先出卡 + 出正文模板
"$PY" "$SKILL" --workspace "$WS" --compose --from-replies "$WS/reply_slots.json" # 你填好正文后回填
"$PY" "$SKILL" --workspace "$WS" --compose --llm # 模式 B:本机 LLM 一键成文(需先开 llm.enabled)单日:
daily_email_summary_{date}.md— 完整报告{PREFIX}_emails.json— 邮件元数据{PREFIX}_work_checklist.csv— 工作清单{PREFIX}_work_priority.csv/{PREFIX}_email_count.csv— 图表数据output/{date}待办优先级分布.html+output/{date} {账号名}邮箱收到邮件数.html— 图表
多日 / 周汇总(额外):
{起始}_{结束}_邮件区间摘要.md— 区间汇总报告output/{起始}_{结束}_邮件汇总.csv/_工作清单合并.csv— 合并数据output/{起始}_{结束}_每日趋势.html/_发件人统计.html— 区间图表output/daily/<日期>/— 每日明细
生成后用 present_files 推送以上文件(HTML 自动预览)。
v2 上下文引擎:全量邮箱知识库 + 高情商 + 行业氛围(已接入默认草稿流)
把"理清来龙去脉、高情商回复"从单封应答升级为"话题全生命周期掌握",并保持零配置、本地零上传、绝不发送的三条信任支柱。已接入 run_compose 默认草稿流(首次运行自动静默建库,用户零参与;建库失败自动降级为旧版情报卡,不影响日常)。
- 纯标准库、本地零上传:不连外网、不装包、不写配置;产物全部落本机
mailbox_kb/。 - ① 全量邮箱知识库(kb_builder):一次性全量扫描,建成
people.json(人物节点+内外域角色+共现边+最后活跃)/topics.json(话题 dossier:三态当事人/关键事实带溯源/状态/悬而未决)/index.db(邮件↔话题索引)/last_scan.txt(增量游标)。 - ② 人物三态 + 话题状态机:在场 / 历史关联 / 潜在(潜在只提示不抄送);回复 = 把话题推向下一自然状态。
- ③ 高情商温度模型(tone_engine):情绪检测(文本信号 + KB 历史基线,温和客户突然发火才判"真升级");温度谱拉到「可对话 6」不讨好;接话三拍;价格差距不硬顶、透明拆、给路径。
- ④ 行业 profile 数据层(industry_profile/):核心行业无关,行业只作可插拔纯数据;内置 服装外贸/法律/技术/金融 + 中性专业默认;KB 自动推断,不确定退中性。
- ⑤ 内置正确性纪律:承诺闸门(不替写新承诺,需承诺处留【待你填】)、溯源锚(每条事实带发件人+日期+摘录)、原文/推断内联标注、冲突并陈——全部内化为生成逻辑,绝不让人逐项打勾。
- ⑥ 零配置 + 升级安全:升级不改旧行为;建库 opt-in(默认随首次草稿静默发生);终端用户不碰终端;唯一手势 = 认证,由技能导航到面前。
- ⑦ 回复正文生成器(draft_body,v1.7.1,默认关):LLM-off 默认路径原本只产出「情报卡 briefing」(把写回复甩回给人);
draft_body消费 tone_engine + KB 上下文 + 情报卡事实,生成「可直接微调发送的草稿正文」。默认关(--draft-enhance才开启),绝不改变现有默认 briefing 行为——升级向后兼容。内置:接话三拍(情绪档才显式承接,接情绪≠认错)、来龙去脉对齐、事实带溯源(裸款号/订单码自动从 KB 补全)、价格差距专项、出口留【待你填】绝不替写承诺;内部提示/护栏剥离为notes绝不进邮件正文;纯标准库、本地零上传、零外发双闸门(test_nosend_assert.py)。
python scripts/kb_builder.py --self-test # 地基 + 情绪 + 行业 合成数据实跑断言
python scripts/tone_engine.py --self-test # 高情商温度 + 行业注入 实跑断言
python scripts/test_nosend_assert.py # 零外发双闸门 + 草稿增强正确性断言
python scripts/draft_body.py # 静态自扫:确认无网络/发送 token状态(2026-10-15):① 全量建库 + ② 人物/话题 + ③ 高情商温度 + ④ 行业 profile + ⑤ 内置正确性注入(reply_intel 情报卡
kb_context/tone两节)+ ⑥ 接线 run_compose 默认流 + ⑦ draft_body 回复正文生成器(默认关),全部实现并通过合成数据自测。设计书见工作区邮件上下文引擎设计书.md。
自动化集成
可将该技能封装为每日定时自动化:每日固定时刻执行(目标日 = 前一日),执行后用 present_files 推送报告。每周一可用 --last-week 生成上周汇总。注意:本机 Foxmail 需保持运行并定期「接收」,否则索引未同步会出现同步缺口提示。