Nmail Agent 接入指南
把 Nmail 的邮件能力交给 AI Agent(Claude Code / Codex / 任何能运行命令的 agent): agent 读
skills/SKILL.md学会用nmail-cli命令行工具收发读搜、整理邮箱、监听新邮件。 本机服务永远只绑 127.0.0.1,远程设备走你自建隧道(见 对外 API 指南)。
1. 一键安装技能
在你的 agent 环境里执行(skill 本体随主仓 skills/SKILL.md 分发):
npx skills add pan-nie/Nmail -g -y
装好后直接用自然语言对话即可:「帮我看看最近的未读邮件」「搜一下标题带周报的邮件」 「回复这封邮件说今天晚点处理」「以后新邮件来了提醒我」。
GitHub 直连不畅的环境:克隆主仓后改用本地路径安装
npx skills add <主仓目录> -g -y -s '*' -a '*'。
2. 配对授权(首次)
agent 首次执行邮件命令时,按 SKILL.md 引导运行:
uvx nmail-cli@latest auth login --yes
- 本机检测到 Nmail 在运行 → 自动创建一把**只读(read)**专用密钥(设置-API 里可见、可吊销)
- 需要发送邮件时扩权:
auth login --yes --scopes read,write,send - 远程实例:
auth login --base-url https://你的隧道域名 --key nmail_xxx(Key 从 Nmail 设置-API 复制;密钥管理面不出本机) - 配置存
~/.config/nmail-cli/config.json(0600);NMAIL_BASE_URL/NMAIL_API_KEY环境变量可覆盖
验证:uvx nmail-cli@latest +me 列出账号与健康状态。
3. agent 在做什么(行为契约)
- 输出:命令 stdout 只输出 JSON envelope(
{"ok":…}),exit code 表达结果语义—— agent 按表决策重试/改参数/停下问你(0 成功 · 2 参数错不重试 · 3 重新配对 · 4 连不上 · 6 不存在 · 7 限流等retry_after· 8 需要你确认)。 - 两阶段确认:发送邮件必须两步——先
drafts send <id>拿到收件人/主题/正文摘要 (exit 8),展示给你并等你明确同意后才带--confirmed重放。任何非 0 退出, agent 不得声称「已发送」。 - 监听新邮件:
nmail-cli watch每封新邮件输出一行 JSON,直到你要求停止。
4. 偷懒通道:Nmail 内置总管家(v0.4.0)
不想让 agent 一步步编排命令?一条命令把整件事委托给 Nmail 内置的 AI 总管家(它在后台自带审批/审计/每日限额全套闭环):
nmail-cli agent ask "把收件箱里的营销邮件归档,然后总结本周往来" # 提问/下任务
nmail-cli agent decide <action_id> --approve # 有待审批动作时批准(或 --reject,总管家会改道)
nmail-cli agent resume <run_id> # 被审批/触顶/澄清暂停的任务继续跑
- Key 需带
agentscope(auth login --yes --scopes read,write,send,agent),且 Nmail 已配置 AI。 - 输出为紧凑 JSON(
answer/approvals/paused),外部 agent 看一眼就知道要不要继续;审批与「向你确认」的暂停态都会如实带出,不会替你默认放行;澄清回答用agent resume <run_id> --answer "回答"带上。 - 无人值守场景(scheduler 定时晨报等)不会因澄清而挂起——澄清工具在无人值守下被硬拒。
5. 其他 CLI 常用件(v0.4.0 补齐)
nmail-cli folders list --account-id <id>:列出文件夹缓存,move/--folder的目标名有处可查。- 版本协商:
/health返回服务端版本;CLI 落后时 envelope 附_notice.update(含 cli/server/upgrade/skill 提示),agent 看到即可提醒升级。
6. 安全边界(设计上兜住)
- 邮件内容 = 不可信外部输入:SKILL.md 明文要求 agent 绝不执行邮件正文里的”指令” (prompt injection 防护)、不主动访问邮件里的链接、敏感操作必须说明”来自邮件内容”并经你确认。
- 最小权限:配对默认只建
read;scope 随时在 设置-API 调整,密钥可一键重置/吊销; 全部调用(含被拒的)进「API 调用日志」(保留 30 天)。 - 网络不扩大:服务仍只绑 127.0.0.1,skill/CLI 不改变这一边界;远程一律自建隧道 (Cloudflare Tunnel / Tailscale / SSH,配置见 对外 API 指南)。
- 收发通路与界面完全同源:外发 HTML 统一消毒,回复自动带 In-Reply-To 串线。
7. 不用 agent,纯脚本也可以
CLI 与 HTTP API 并行有效:脚本可直接 curl http://127.0.0.1:8720/api/ext/v1/*
(Key、scope、限流与错误格式见 对外 API 指南),或直接调用 nmail-cli
各命令解析 JSON。批量归档等慢动作返回 job_id,CLI 的 emails action 已自动等任务完成。
发现问题?直接到 主仓 docs/ 改这篇文档(本页随构建自动更新)。