Appearance
依赖说明
使用这个 skill 前,请先让 Agent 跑依赖检查。依赖状态以子仓根目录的 verify_dependencies.py 输出为准;文档只说明它会检查什么。
让 Agent 先做什么
你可以直接这样说:
text
我要使用 send-qq-email,请先检查邮件发送依赖;如果 QQ 邮箱 SMTP 凭据或网络前置条件没有准备好,请提示我补齐。检查命令
在 workspace 根目录运行:
powershell
python skills/send-qq-email/verify_dependencies.py它会检查什么
| 类型 | 说明 |
|---|---|
| 必需:Python | 使用 Python 3.11 或更高版本。发送脚本使用 datetime.UTC;只依赖 Python 标准库,不需要额外安装 SMTP 或 YAML 包。依赖检查脚本本身不检查 Python 版本。 |
| 必需:SMTP 配置 | 检查 SMTP_USERNAME、SMTP_PASSWORD 和 SMTP_TO 是否存在;配置可来自环境变量、SEND_QQ_EMAIL_CONFIG 指向的文件或默认私有配置文件。 |
| 可选:SMTP 网络 | 仅在传入 --check-network 时,尝试连接配置的 SMTP 主机和端口;默认值是 smtp.qq.com:587。 |
配置检查器读取的是顶层 smtp: 的简单 YAML 字段,不处理发送脚本的 --config 或 --to 参数(传入也会被忽略),也不解析 JSON 配置。检查指定私有 YAML 时,先设置 SEND_QQ_EMAIL_CONFIG;临时用 --to 覆盖收件人发送的任务,检查器仍会要求默认 SMTP_TO,不能据此判定发送脚本无法使用。
它不会扫描仓库文件、编译发送脚本、生成 .eml、执行 dry-run smoke test,也不会验证邮箱地址格式、授权码有效性、SMTP 登录或邮件投递。它检查端口能否转成整数,但不验证端口范围、超时和 STARTTLS 设置。网络检查只反映 TCP 连接是否可建立。
缺失时怎么补齐
- 运行
python --version,确认 Python 至少为 3.11;如果版本过旧,从 Python 官方下载页 安装并重新打开终端。Windows 也可用py -3.11调用已安装版本。 - 打开 QQ 邮箱,登录后进入“设置 → 账户”,找到
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务区域。界面名称可能随 QQ 邮箱版本变化。 - 开启
POP3/SMTP或IMAP/SMTP,由用户完成人工手机或扫码验证,再复制生成的授权码。Agent 不代替用户登录、验证或生成授权码。 - 在仓库外创建
%USERPROFILE%\.send-qq-email\email.yaml,把邮箱地址填入username、授权码填入password、默认收件人填入to_address。不要把 QQ 登录密码填进password,也不要把授权码贴到公开对话或仓库。
yaml
# %USERPROFILE%\.send-qq-email\email.yaml,仅示意填入位置
smtp:
username: your-account@qq.com
password: paste-qq-mail-authorization-code-here
to_address: receiver@example.com上面的值都是占位符,不能用于真实发送。环境变量 SMTP_USERNAME、SMTP_PASSWORD、SMTP_TO 会覆盖对应文件字段;修改私有文件后若结果仍不符,应检查是否残留了环境变量覆盖。脚本不会自动加载项目的 .env 文件,使用 .env 的项目需先自行加载它。
- 重新运行默认依赖检查。若需要排查网络,再从 workspace 根目录运行:
powershell
python skills/send-qq-email/verify_dependencies.py --check-network网络检查失败时,核对私有配置的 host / port(默认 smtp.qq.com:587)以及本机网络、防火墙或代理是否允许该连接。TCP 可达后仍可能出现授权码错误或收件人被拒绝;这类结果由真实发送返回,不能用依赖检查通过代替投递成功证明。先按使用方式生成 dry-run 快照,确认内容和输出路径。
判断标准
默认依赖检查通过,表示三个必需 SMTP 配置项已提供;只有使用 --check-network 并通过时,才同时表示目标 SMTP 地址在检查时可建立 TCP 连接。真实发送前,还需要让 Agent 确认 SMTP 用户名、授权码、收件人和发送意图。
默认检查成功退出码为 0,缺少必需配置或整数端口无效时为 1。输出的 required 条目和 ok 布尔值用于定位缺项;不要把授权码值加入日志。配置文件格式错误、文件读取失败等异常未统一转换成结构化失败,因此遇到 traceback 时也不能视为依赖已通过。