这个 Skill 干什么? 一句话生成报告,一步发送邮件。
直接复制使用:
"帮我生成今天的日报:完成了用户模块,修复3个BUG,明天写测试"
"生成这周周报,从这份Excel里提取工作内容,用163发给我领导"
"把这份工作记录整理成月报PPT,发给张总zhang@company.com"
"帮我补写昨天的日报,昨天做了:..."
使用前准备(首次使用才需要):
| 能力 | 示例 |
|---|---|
| ------ | ------ |
| 日报生成 | "生成今天的日报" → 口述或上传工作内容,自动输出结构化日报 |
| 周报生成 | "生成这周周报" → 汇总本周工作,带数据图表 |
| 月/季/年报 | "生成本月月报" → 长篇结构化报告,含趋势分析和总结 |
| 文件解析 | 上传 Word/Excel/PDF → 自动提取工作内容索引 |
| 多格式导出 | 一次生成 Word + Markdown(默认),可选 Excel/PPT/PDF |
| 邮件发送 | 163/QQ/Outlook/Gmail 等 18 种邮箱,自动识别 SMTP 配置 |
| 历史归档 | 所有报告按年月归档,随时查询"上月第三周的周报" |
| 多账户切换 | 同时配置工作邮箱和个人邮箱,根据语境自动选择 |
| 能力 | 需要的素材 |
|---|---|
| ------ | ---------- |
| 生成特定格式报告 | 提供公司模板文件(存入 templates/custom/) |
| 发送给多人/群组 | 提供收件人列表(存入 recipients/xxx.md) |
| 含图表的 PPT 报告 | 提供原始数据表格(Excel/CSV),AI 自动生成图表 |
| 中英双语报告 | 提供英文翻译参考(部分专业术语需要确认) |
| 需求 | 替代方案 |
|---|---|
| ------ | ---------- |
| 创作型文字(如广告文案、新闻稿) | 使用其他写作类 Skill 或直接对话 |
| 数据分析与挖掘(如求增长率、预测) | 单独用 Python 或 Pandas 计算后,把结论喂给本 Skill |
| 飞书/钉钉消息推送 | v3.1 仅支持邮件;v5.0 计划实现;当前可导出文件手动上传 |
| 在线协作文档直出 | 导出 Markdown 后复制到腾讯文档/Notion/语雀 |
| 修改已发出的邮件内容 | 邮件协议不支持撤回/修改,请先确认后再发送 |
| 接收并自动处理他人发来的工作汇报 | 本 Skill 只生成和发送,不处理收件 |
cryptography.fernet 加密存储,KEY 文件单独存放于 config/.fernet_keyskill_data/ 目录,不自动上传到任何云端| 你想要什么 | 怎么触发 | AI 识别逻辑 |
|---|---|---|
| ----------- | --------- | ------------ |
| 生成日报 | 说"日报" / "今天的工作汇报" / "daily report" | 自动取今日日期,生成 300~500 字日报 |
| 生成周报 | 说"周报" / "本周总结" / "weekly report" | 自动取本周一~周日,生成 500~800 字周报 |
| 生成月报 | 说"月报" / "本月报告" / "monthly report" | 自动取本月1日~月末,生成 800~1500 字月报 |
| 生成季报 | 说"季报" / "Q2报告" / "quarterly report" | 自动取本季度范围,生成 1500~2500 字季报 |
| 生成年报 | 说"年报" / "年度总结" / "yearly report" | 自动取本年数据,生成 2000~3500 字年报 |
| 发送邮件 | 说"发给" / "发送给" / "用xx邮箱发" + 收件人 | 进入邮件发送流程,自动匹配 SMTP |
| 从文件生成 | 上传文件 + "帮我写报告" | 先调用 extract_content.py 解析,再生成 |
| 补写历史报告 | 说"补写昨天的日报" / "生成上周周报" | 日期自动调整到指定日期 |
| 配置邮箱 | 说"配置邮箱" / "设置发件邮箱" / "添加邮箱" | 进入 setup_email.py 交互式向导 |
当用户一句话同时包含多个意图时,按以下优先级处理:
当输入信息不足时,按以下策略降级处理,不挂起也不给空回复:
| 场景 | 降级方式 |
|---|---|
| ------ | --------- |
| 用户说"生成日报"但没给内容 | 回复"请告诉我今天的工作内容(可口述或上传文件),或者我为你生成一个空白模板你先填写?" |
| 文件解析失败 | 先报告"XX 文件解析失败(原因:文件加密/损坏),已跳过。报告基于其余内容生成,缺少的部分已标注",不中断流程 |
| 缺少邮箱配置 | 自动进入首次配置向导,同时展示当前生成好的报告预览(用户可先看报告,配置完邮箱后再发送) |
| 报告模板文件缺失 | 自动创建默认模板,告知用户"已自动生成默认模板:templates/xxx.md",不中断生成 |
| 多个功能并行请求 | 按"生成→展示→用户确认→发送"的顺序排队处理,每次只推进一个阶段 |
| 超出范围的能力请求 | 直接给出替代方案(参考"能力边界说明 → ❌超出范围"),不假装自己能做 |
| 网络问题导致发送失败 | 报告已生成并保存,展示本地路径,提示"邮件发送失败但报告已保存,可稍后重新发送或手动发送" |
所有面向用户的错误提示必须满足:
ImportError: No module named docx,而说"生成 Word 需要安装依赖,正在自动安装中..."检查 skill_data/report_generator/config/user_profile.md 是否存在
├─ 不存在 → 引导用户完成首次配置(姓名/部门/职位/常用收件人)
└─ 存在 → 读取用户档案,个性化报告
输入来源处理:
| 来源 | 处理方式 |
|---|---|
| ------ | --------- |
| 口述文本 | 直接提取工作事项,按优先级归类 |
| .docx / .doc | 调用 scripts/extract_content.py 解析正文 |
| .xlsx / .csv | 调用 scripts/extract_content.py 读取表格数据 |
调用 scripts/extract_content.py 提取文本 | |
| .txt / .md | 直接读取 |
| 混合 | 合并所有来源,去重后归类 |
抽取结构(标准化输出):
extracted_content:
completed_tasks: # 已完成工作(带成果描述)
in_progress_tasks: # 进行中工作(带进度百分比)
blocked_items: # 待解决问题/障碍
key_metrics: # 关键数据指标
next_plans: # 下阶段计划
highlights: # 亮点/成就(用于标题摘要)
加载 references/report_templates.md 获取模板规范。
自动填充规则:
[用户姓名][部门] YYYY年MM月DD日 [报告类型]根据用户指定格式或默认 Word+Markdown 双格式导出:
调用 scripts/generate_report.py
参数: report_type, content_dict, output_format, template_name, output_path
输出: 生成文件路径列表
存储路径:skill_data/report_generator/reports/YYYY/MM/{report_type}/YYYYMMDD_{report_type}.{ext}
4.1 读取邮箱配置:
读取 config/email_settings.md
├─ 无配置 → 进入"首次配置向导"(见邮箱配置模块)
├─ 有单账户 → 直接使用
└─ 有多账户 → 根据语境选择("工作"→company,"个人"→personal)
4.2 SMTP 自动识别:
提取发件邮箱后缀 → 查询 references/smtp_presets.md
├─ 命中预设 → 自动填充 host/port/ssl/auth_type
├─ 腾讯/阿里/网易企业邮箱 → 询问具体服务商
└─ 未命中 → 进入自定义 SMTP 配置
4.3 发送流程:
调用 scripts/send_email.py
参数: from_account, to, cc, bcc, subject, report_path, html_template
返回: success/error + 日志写入 logs/email_send_log.md
4.4 失败重试:自动重试 3 次(2s → 4s → 8s 指数退避),仍失败则保留草稿并告知用户。
将最终 Markdown 版报告追加写入 reports/YYYY/MM/{type}/index.md(月度汇总索引)。
1. 询问发件邮箱地址
2. 自动识别服务商 → 显示 SMTP 配置(host/port/ssl)
3. 根据 auth_type 给出授权码获取指引(见下表)
4. 测试发送(发至自身验证)
5. 保存至 config/email_settings.md
| 邮箱 | 步骤 |
|---|---|
| ------ | ------ |
| 163/126/yeah | 登录网页版 → 设置 → POP3/SMTP/IMAP → 开启 SMTP → 短信验证获取授权码 |
| QQ邮箱 | 登录网页版 → 设置 → 账户 → 开启 IMAP/SMTP → 安全验证生成授权码 |
| Foxmail | 同 QQ邮箱(使用 smtp.qq.com) |
| 腾讯企业邮箱 | 直接使用邮箱登录密码,无需授权码 |
| Outlook/Hotmail | 微软账户 → 安全 → 两步验证 → 应用密码(生成16位密码) |
| Gmail | Google账户 → 安全 → 两步验证 → 应用专用密码(16位,无空格) |
| iCloud | appleid.apple.com → 登录和安全 → 应用专用密码 → 生成密码 |
| 阿里云邮箱 | 邮箱网页版 → 设置 → 客户端授权密码 → 开启并生成 |
| 阿里企业邮箱 | 直接使用邮箱密码 |
| 新浪/搜狐/189/139 | 各自邮箱设置页面开启 SMTP 并生成授权码 |
| 用户语境 | 选择账户 |
|---|---|
| --------- | --------- |
| "发给领导"/"工作邮件"/"公司" | company_* 账户 |
| "个人"/"私人" | personal_* 账户 |
| "备用"/"另一个" | backup_* 账户 |
| 无特殊语境 | 使用 is_default: true 的账户 |
| 异常情况 | 处理策略 |
|---|---|
| --------- | --------- |
| 邮箱后缀未匹配预设 | 提示用户选择"自定义SMTP",引导填写 host/port/ssl |
| 授权码错误(SMTP 535) | 提示"密码或授权码错误",显示重新获取授权码的步骤 |
| 网络超时/连接失败 | 重试3次,仍失败则:保存草稿、提示检查网络、询问是否稍后重试 |
| Gmail/iCloud 在国内无法连接 | 提示:"Gmail 在中国大陆需配置代理,可切换至其他邮箱发送" |
| 附件超过 20MB | 自动转为本地路径链接,邮件正文末尾添加手动下载说明 |
| 收件人地址格式错误 | 正则校验 ^[\w.+-]+@[\w-]+\.[\w.]+$,提示修正后重试 |
| SSL 证书错误 | 尝试降级至 STARTTLS,失败则提示用户手动配置 |
| 无工作内容输入 | 提示用户提供今日/本周工作内容,可口述或上传文件 |
| 文件格式不支持 | 列出支持格式(docx/xlsx/pdf/txt/md),提示转换方案 |
| 依赖库缺失 | 自动执行 pip install -r scripts/requirements.txt,展示安装进度 |
skill_data/report_generator/
├── config/
│ ├── user_profile.md # 用户信息(姓名/部门/职位)
│ ├── email_settings.md # 多账户邮箱配置(加密密码)
│ └── skill_settings.md # 全局设置(默认报告类型/格式/语言)
├── templates/
│ ├── daily_default.md # 日报模板
│ ├── weekly_default.md # 周报模板
│ ├── monthly_default.md # 月报模板
│ ├── quarterly_default.md # 季报模板
│ ├── yearly_default.md # 年报模板
│ ├── email_html_default.html # HTML 邮件模板
│ └── custom/ # 用户自定义模板
├── recipients/
│ ├── leaders.md # 领导收件人列表
│ ├── team.md # 团队成员列表
│ └── all_company.md # 全公司发送列表
├── reports/
│ └── YYYY/MM/{type}/ # 按年/月/类型归档
├── logs/
│ ├── YYYY-MM-DD_actions.md # 操作日志
│ └── email_send_log.md # 邮件发送记录
└── outputs/
└── YYYY-MM-DD/ # 当日所有导出文件
示例1 - 快速日报:
> 用户:"帮我生成今天的日报:完成了用户模块开发,修复了3个BUG,明天继续写测试用例"
> → AI 自动抽取 → 生成日报 Word 文件 → 询问是否发送
示例2 - 上传文件生成周报:
> 用户:上传工作记录.xlsx → "帮我生成本周周报并发给张总"
> → 解析文件 → 生成周报 → 读取收件人配置(张总) → 发送邮件
示例3 - 首次使用 Gmail:
> 用户:"用我的 Gmail 发送报告"
> → 识别 Gmail → 提示需要应用专用密码 → 给出 Google 账户设置链接和步骤 → 引导输入16位密码 → 测试发送 → 保存配置
示例4 - 多账户切换:
> 用户:"用工作邮箱发给部门群"
> → 自动选择 company_exmail 账户 → 查询 team.md 获取收件人 → 发送
所有脚本位于 scripts/ 目录,调用前确认 Python 依赖已安装(见 scripts/requirements.txt):
| 脚本 | 用途 | 关键参数 |
|---|---|---|
| ------ | ------ | --------- |
extract_content.py | 从文件抽取工作内容 | --file <路径> --type |
generate_report.py | 生成报告文件 | --type <日报/周报> --format |
send_email.py | 发送邮件 | --from <账户名> --to <收件人> --subject <主题> --attach <附件路径> |
setup_email.py | 邮箱配置向导 | 交互式引导,无需参数 |
答:垃圾进垃圾出。提供工作内容时尽量包含"具体事项+量化数据+做了什么"。示例对比:
如果实在没时间整理,直接说"先给我一个假设版本",AI 会填入示例内容并标注待确认。
答:把公司模板 Markdown 文件放入 templates/custom/ 目录。使用时说"用我的 XX 模板生成周报"。HTML 邮件模板也可自定义(templates/custom/email_日报.html)。
答:用 WPS 或 Office 2016+ 打开(UTF-8 编码)。Excel 用"数据 → 自文本/CSV → UTF-8"导入。纯文本用 VS Code 查看。
答:可以。说"发给张总和李经理",用逗号分隔。需要抄送/密送时说"抄送给xx"或"密送给xx"。QQ 邮箱的每日发信限额请参考 QQ 邮箱官方说明。
答:保存在 skill_data/report_generator/reports/YYYY/MM/{type}/ 目录。说"查看上周的周报"或"打开上个月的月报汇总",AI 会定位并读取对应文件。
答:可以。说"帮我设置每天18:00自动生成日报并发给张总"。WorkBuddy 的自动化机制会在指定时间触发 Skill。
答:可以。说"按项目分组生成日报"或"单独生成项目A的进度报告"。AI 会从工作内容中识别项目标签并分组输出。
答:不会。HTML 邮件模板采用响应式设计,在手机邮件客户端(QQ邮箱APP / 网易邮箱大师 / Gmail APP)上均会自适应缩放到合适的阅读尺寸。
> 更多 FAQ(工具兼容、定制化、故障排查)见 references/faq-deep.md
| 用户类型 | 如何使用 |
|---|---|
| --------- | --------- |
| 个人上班族 | 直接说"生成日报",口述工作内容即可。默认 Word+Markdown 双格式输出 |
| 团队 Leader | 使用周报/月报功能汇总团队进展,设置定时发送给上级 |
| 项目经理 | 上传多份工作日志 Excel,批量解析生成汇总报告 |
| 自由职业者 | 配置个人邮箱和签名档,用专业格式向客户汇报进度 |
| HR/行政 | 生成部门级别周报/月报,汇总考勤、报销、招聘等数据 |
| 定制需求 | 操作方式 |
|---|---|
| --------- | --------- |
| 修改默认输出格式 | 在 config/skill_settings.md 中修改 default_format: word |
| 自定义报告署名 | 在 config/user_profile.md 中填写 signature 字段 |
| 添加公司 Logo | 将 logo 图片放入 assets/,在模板中引用 |
| 调整字数阈值 | 在 config/skill_settings.md 中修改 word_count.* 字段 |
| 常用收件人 | 在 recipients/leaders.md 或 team.md 中维护人员列表 |
| 固定发送时间 | 通过 WorkBuddy 自动化(automation)设置定时任务 |
references/smtp_presets.md:所有 18 种支持邮箱的 SMTP 完整配置references/report_templates.md:日/周/月/季/年报的 Markdown 模板规范references/email_html_template.md:HTML 邮件美化模板说明与 Jinja2 变量表references/anti-patterns.md:7 种常见错误用法 + 改进对比案例 + 禁忌清单references/faq-deep.md:18 道深度 FAQ(垂直领域/工具兼容/定制化/安全/故障排查)scripts/requirements.txt:Python 依赖清单(含可选依赖标注)assets/email_html_default.html:响应式 HTML 邮件默认模板共 1 个版本