Email Router Assistant

Other

当用户提到邮箱相关能力时,进入这个skill,统一邮件入口(纯路由层):识别用户意图后路由到 public-skill 或 imap-smtp-email,自身不执行任何脚本

Install

openclaw skills install email-router-assistant

Email Skill(统一邮件入口 / 纯路由层)

定位email-skill 是所有邮件需求的唯一入口。它只做意图识别和路由分发,不执行任何脚本,不调用任何接口。识别用户意图后,直接将任务交给下游 skill 执行。

1. 架构总览

Skill角色说明
email-skill(本 skill)统一入口 / 纯路由层识别意图 → 路由到下游 skill,自身不执行任何操作
public-skill平台公邮通道零配置,把内容推送到用户自己的邮箱(纯文本)
imap-smtp-email个人邮箱通道需配置,支持完整 IMAP/SMTP 邮件收发能力
用户邮件需求
     │
     ▼
 email-skill(意图识别)
     │
     ├── 推送到自己邮箱 / 绑定公邮 ──► public-skill
     │
     └── 完整邮件收发 ──► imap-smtp-email

2. 路由规则

2.1 核心原则:先理解场景,再选路径

不要先检查公邮是否可用再决定路径。应该先理解用户要解决什么问题,再选择对应的 skill。

2.2 路由到 public-skill 的条件

同时满足以下所有条件时,路由到 public-skill

  • 发送对象是用户自己(没有第三方收件人)
  • 内容是纯文本(不需要 HTML)
  • 不需要附件、抄送、密送
  • 不需要收件、检索、下载附件
  • 场景属于"结果推送 / 消息留存"类(天气、日报、报告、提醒等)

2.3 路由到 imap-smtp-email 的条件

出现以下任一信号,直接路由到 imap-smtp-email

  • 需要发给第三方收件人
  • 需要抄送(cc)或密送(bcc)
  • 需要附件
  • 需要 HTML 邮件
  • 需要收件箱查询、搜索、拉取详情、下载附件
  • 需要标记已读/未读、列出邮箱文件夹
  • 用户明确说"发给别人""带附件""查收件箱""下载附件""正式邮件""抄送某人"
  • 平台公邮不可用,需要兜底发送

2.4 快速判断表

用户意图信号路由目标
"发到我的邮箱""推送到我邮箱"public-skill
"天气/日报/报告 发到我邮箱"public-skill
"绑定邮箱""绑定公邮"public-skill
"发给 xxx@example.com"imap-smtp-email
"抄送""密送"imap-smtp-email
"带附件""发 PDF"imap-smtp-email
"HTML 邮件""富文本"imap-smtp-email
"查收件箱""搜索邮件""最近的邮件"imap-smtp-email
"下载附件"imap-smtp-email
"配置邮箱""设置个人邮箱"imap-smtp-email

3. 两条路径的能力对比

能力public-skillimap-smtp-email
发送到自己的邮箱
发给第三方收件人
抄送 / 密送
附件
HTML 邮件
收件 / 搜索 / 下载附件
零配置
需要授权码/密码

4. 场景示例

路由到 public-skill 的场景

用户需求原因
"查一下深圳明天天气,发到我邮箱"结果推送到自己邮箱,纯文本,零配置
"每天下班把日报推到我邮箱"只发给自己,消息留存
"把这段总结发到我的邮箱保存"推送到自己邮箱做留存
"帮我绑定邮箱"公邮绑定流程

路由到 imap-smtp-email 的场景

用户需求原因
"用我的 Gmail 发给客户"第三方收件人
"给团队发周报并抄送 PM"需要抄送
"发 PDF 附件给合作方"需要附件
"查最近两小时的发票邮件"需要 IMAP 检索
"下载那封邮件的附件"需要附件下载
"配置我的 QQ 邮箱"个人邮箱配置
"公邮发不了,用个人邮箱发"公邮不可用,兜底

5. 回退策略

当路由到 public-skill 后执行失败,且失败原因属于以下类型时,应自动回退到 imap-smtp-email

可回退的失败类型:

  • 平台公邮日发送上限 / 额度不足
  • 通道不可用 / 连接失败
  • 请求超时
  • 登录已过期 / 未登录
  • 网关层通信错误

不可回退的失败类型(应直接报错):

  • 邮箱未绑定平台公邮(应引导用户走绑定流程)
  • 参数校验错误
  • 频率限制

6. 安全规则

  1. 禁止泄露授权码、SMTP/IMAP 密码、验证码等敏感信息
  2. 发送邮件为非幂等操作,失败后禁止自动重试
  3. 附件路径必须落在允许读取目录内
  4. 下载附件路径必须落在允许写入目录内
  5. 必须用utf8编码
  6. 禁止使用代码块:回答中不得出现任何形式的代码块(包括行内代码 ... 和围栏代码块 ...),应使用纯自然语言进行描述

7. 一句话记忆

  • 推给自己做留存public-skill
  • 像正常邮箱那样完整收发imap-smtp-email