1. 为什么你的 AI Agent 需要一个独立邮箱
先说一个我踩过的坑。去年我让一个本地跑的 Agent 帮我处理报销,图省事直接授权了个人邮箱的 IMAP 权限。结果它把「发票」关键词匹配得太宽,连银行对账单和私人信件一起打包下载,还差点把一封内部邮件转发到外部地址。那次之后我就明白:Agent 要干活,但绝不能碰你的私人收件箱。
Agently Mail 就是解决这个问题的——它是 QQ 邮箱团队推出的 AI 专属邮箱服务,核心定位是给 Agent 一个完全隔离的独立身份。你的个人邮箱数据它看不到,它只能读写自己那个专属邮箱里的内容。开通需要微信扫码实名认证,防止被滥用发垃圾邮件。
它和 MCP 的关系值得单独说一句。MCP(Model Context Protocol)是让 Agent 统一调用外部工具的标准协议,你可以把 Agently Mail 理解成邮箱领域的 MCP Server——通过 MCP 协议暴露收发、搜索、附件处理能力,所以 Codex、Claude Code、Cursor、豆包超能模式、Kimi Work 这些平台都能直接调用,底层走同一套协议,不需要为每个平台单独适配。
那为什么还要扯上 TaoToken?因为 Agent 处理邮件不是单纯收发了事。它要读邮件正文、判断意图、提取附件字段、生成摘要、决定下一步动作——每一步都是模型调用。如果你用多个平台、多个模型,Key 管理会变成噩梦。TaoToken 提供统一 Key 和 API 通道,把模型调用收敛到一个入口,配合 Agently Mail 的邮箱能力,整条链路才真正跑得顺。
这篇面向的是:本地用 Node.js 和 CLI 折腾 Agent 的开发者,想让 Agent 拥有独立邮箱身份,同时用统一 Key 管理模型调用。下面从环境准备到连通性验证,一步步来。
2. TaoToken 前置准备与 Agently Mail CLI 环境搭建
在接入 Agently Mail 之前,先把模型调用通道理清楚。Agently Mail 负责邮箱收发,TaoToken 负责模型推理,两者配合才能让 Agent 真正「看懂邮件再行动」。
2.1 获取 TaoToken 统一 Key
访问 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册后,进入控制台创建 API Key。这个 Key 就是你所有模型调用的统一凭证,后面配置环境变量时用得上。
控制台地址:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
API Key 管理页:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
创建时建议给 Key 起个能识别的名字,比如agently-mail-agent,方便后续排查是哪个 Agent 在调用。Key 只显示一次,复制后立刻存到安全的地方。
2.2 确认 Node.js 环境
Agently Mail CLI 依赖 npm,本地需要 Node.js 18 以上。先验证:
node -v npm -v如果版本低于 18,去 Node.js 官网下载 LTS 版本覆盖安装。Windows 用户注意安装时勾选「Add to PATH」,否则命令行找不到 node。
2.3 配置环境变量模板
在项目根目录创建.env文件,把 TaoToken 的 Key 和 API 地址写进去:
# TaoToken 统一模型调用通道 TAOTOKEN_API_KEY=sk-你的实际Key TAOTOKEN_BASE_URL=https://taotoken.net/api # Agently Mail 相关(CLI 安装后自动写入,此处仅作占位) AGENTLY_MAIL_HOME=~/.agently-mail注意TAOTOKEN_BASE_URL后面不要加/v1,TaoToken 的 API 入口就是https://taotoken.net/api,具体路径由 SDK 或请求库拼接。这一点和某些平台不一样,写错了会报 404。
2.4 安装 Agently Mail CLI
官方推荐的方式是让 Agent 自己读文档安装。在 Codex 或 Claude Code 的对话窗口里直接发:
请阅读 https://agent.qq.com/doc/cli-setup.md 文档,按照步骤为我安装并配置 Agently Mail CLI。Agent 会自动拉取文档、执行安装命令、引导你完成微信扫码授权。如果你更习惯手动操作,也可以自己跑 npm 安装:
npm install -g @agently/mail-cli agently-mail initinit会启动一个本地授权流程,弹出微信扫码页面。用微信扫一下完成实名认证,CLI 会把凭证写入~/.agently-mail/config.json。
这里有个容易忽略的点:如果你本地设置了HTTP_PROXY或HTTPS_PROXY环境变量,扫码页面可能打不开,因为agent.qq.com是国内域名。临时清除代理变量再试:
unset HTTP_PROXY HTTPS_PROXY agently-mail init授权完成后验证 CLI 是否可用:
agently-mail status正常会返回你的专属邮箱地址和授权状态。看到active就说明邮箱侧准备好了。
3. 可复制配置:MCP 片段、环境变量与模型参数
这一节是整篇的核心,所有配置都可以直接复制。重点是把 Agently Mail 的 MCP Server 和 TaoToken 的模型通道串起来。
3.1 MCP 配置片段(Claude Code / Cline 通用)
如果你用 Claude Code 或 Cline,MCP 配置通常放在~/.claude/claude_desktop_config.json或项目级的.mcp.json。加入 Agently Mail 的 Server 定义:
{ "mcpServers": { "agently-mail": { "command": "npx", "args": ["-y", "@agently/mail-mcp"], "env": { "AGENTLY_MAIL_HOME": "/Users/你的用户名/.agently-mail", "TAOTOKEN_API_KEY": "sk-你的实际Key", "TAOTOKEN_BASE_URL": "https://taotoken.net/api" } } } }三个关键字段缺一不可:command指定启动方式,args拉取 MCP Server 包,env把 TaoToken 的 Key 和 Base URL 注入进去。Agently Mail 的 MCP Server 在处理邮件时需要调用模型做意图识别,所以必须能拿到模型凭证。
3.2 Codex 的 auth.json 配置
如果你用 Codex,模型凭证走~/.codex/auth.json。这个文件同时管理模型通道和 MCP 工具授权:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的实际Key", "model": "claude-sonnet-4-20250514", "mcp_servers": { "agently-mail": { "command": "npx", "args": ["-y", "@agently/mail-mcp"], "env": { "AGENTLY_MAIL_HOME": "/Users/你的用户名/.agently-mail" } } } }注意base_url和api_key是 Codex 调用模型的全局配置,MCP Server 的env里不用重复写,Codex 会自动继承。Model ID 按你实际用的填,TaoToken 支持主流模型,具体列表在文档里查。
3.3 环境变量完整模板
把下面这段存成.env,放在项目根目录:
# ===== TaoToken 统一模型通道 ===== TAOTOKEN_API_KEY=sk-你的实际Key TAOTOKEN_BASE_URL=https://taotoken.net/api TAOTOKEN_MODEL=claude-sonnet-4-20250514 # ===== Agently Mail ===== AGENTLY_MAIL_HOME=/Users/你的用户名/.agently-mail AGENTLY_MAIL_MCP_CMD=npx AGENTLY_MAIL_MCP_ARGS=-y @agently/mail-mcp # ===== 可选:调试日志 ===== DEBUG=agently-mail:*TAOTOKEN_MODEL这个变量不是所有工具都认,但自己写脚本调用时很有用,统一从环境变量读,换模型不用改代码。
3.4 参数对照表
| 参数 | 作用 | 常见错误值 | 正确写法 |
|---|---|---|---|
| TAOTOKEN_BASE_URL | 模型 API 入口 | 带/v1后缀 | https://taotoken.net/api |
| TAOTOKEN_API_KEY | 统一调用凭证 | 复制时带空格 | sk-开头完整串 |
| AGENTLY_MAIL_HOME | CLI 凭证目录 | 用相对路径 | 绝对路径 |
| MCP command | 启动命令 | 写node但没装包 | npx+-y |
| Model ID | 模型标识 | 用平台别名 | 官方完整 ID |
配置写完后,别急着跑。先做一次语法检查,JSON 文件用jq验证:
jq . ~/.claude/claude_desktop_config.json没报错说明格式没问题。有报错就按提示的行号改,多半是少了逗号或引号。
4. 验证请求:从连通性测试到真实收发邮件
配置写完只是纸面功夫,得跑通才算数。这一节从模型连通性开始,一路验证到邮件收发。
4.1 验证 TaoToken 模型通道
先用 curl 直接打 TaoToken 的 API,确认 Key 和 Base URL 没问题:
curl -X POST https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: $TAOTOKEN_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'正常返回里会有content字段,文本是OK。如果返回 401,说明 Key 不对;返回 404,检查 Base URL 是不是多写了/v1——注意上面这个例子路径是/api/v1/messages,Base URL 本身是https://taotoken.net/api,/v1/messages是接口路径。
4.2 验证 Agently Mail CLI 连通性
CLI 装好后,先看状态:
agently-mail status返回里应该有你的专属邮箱地址、授权状态、以及 MCP Server 的版本号。如果显示unauthorized,重新跑agently-mail init扫码。
再测一下发信能力,给自己发一封:
agently-mail send \ --to 你的专属邮箱地址 \ --subject "连通性测试" \ --body "这是一封来自 CLI 的测试邮件"然后查收件箱:
agently-mail list --limit 5能看到刚才那封就说明收发链路通了。
4.3 验证 MCP 工具在 Agent 里可用
重启 Claude Code 或 Codex,让 MCP 配置生效。然后在对话里问:
列出当前可用的 MCP 工具返回列表里应该出现agently-mail相关的工具,比如send_email、list_emails、search_emails、download_attachment。看到这些就说明 Agent 已经能调用邮箱能力了。
接着做一次端到端测试,直接对 Agent 说:
帮我给 test@example.com 发一封邮件,主题是「Agent 测试」,正文写「这是一封由 AI Agent 自动发送的测试邮件」。Agent 会调用send_email工具,走 Agently Mail 的通道把邮件发出去。你可以在 CLI 里用agently-mail list --sent确认发件记录。
4.4 验证模型与邮箱的联动
真正体现 TaoToken 价值的地方在这里:让 Agent 读一封邮件并做判断。先往专属邮箱发一封带附件的邮件,然后对 Agent 说:
检查我的 Agently 邮箱,找出最近一封带 PDF 附件的邮件,把附件下载到 ~/Downloads,并总结邮件正文的核心内容。Agent 会依次调用list_emails、download_attachment,然后用 TaoToken 通道调用模型总结正文。整个过程你能在日志里看到模型请求打到https://taotoken.net/api,说明统一 Key 生效了。
如果这一步卡住,多半是 MCP Server 的env里没传TAOTOKEN_API_KEY,导致它调模型时拿不到凭证。回到 §3.1 检查配置。
5. 常见报错排查:401、local proxy failed 与 OAuth 问题
配置过程中最容易撞的几个坑,我按报错原文整理出来,对照着改。
5.1 401 Unauthorized
报错长这样:
Error: 401 Unauthorized {"error":{"type":"authentication_error","message":"invalid x-api-key"}}三个可能原因。第一,Key 复制时带了首尾空格,用echo $TAOTOKEN_API_KEY | cat -A看结尾有没有$之外的字符。第二,环境变量没生效,source .env或重启终端。第三,MCP 配置里env字段的 Key 名写错了,必须是TAOTOKEN_API_KEY,大小写敏感。
5.2 local proxy failed / ECONNREFUSED
Error: local proxy failed: connect ECONNREFUSED 127.0.0.1:7890这是本地代理变量在捣乱。Agently Mail 的授权页面和部分接口走国内域名,代理会把请求转发到不存在的本地端口。临时清除:
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY然后重新跑agently-mail init。如果你确实需要代理访问某些资源,建议用NO_PROXY把agent.qq.com和taotoken.net排除:
export NO_PROXY=agent.qq.com,taotoken.net,localhost,127.0.0.15.3 reading 'choices' of undefined
TypeError: Cannot read properties of undefined (reading 'choices')这个报错通常出现在自己写脚本调模型时。原因是响应结构和你预期的不一样——TaoToken 的 Anthropic 兼容接口返回的是content数组,不是 OpenAI 格式的choices。如果你用的是 OpenAI SDK,把 Base URL 指向 TaoToken 的 OpenAI 兼容端点,或者改用 Anthropic SDK。检查你的请求路径:/api/v1/messages对应 Anthropic 格式,/api/v1/chat/completions对应 OpenAI 格式,别混用。
5.4 OAuth 授权失败 / 扫码无响应
Error: OAuth flow timeout微信扫码页面打不开或超时,先确认网络能访问agent.qq.com。如果用了代理,按 §5.2 处理。另外注意,同一个微信号在多个终端重复授权可能触发风控,等几分钟再试。如果 CLI 卡在waiting for authorization,Ctrl+C 中断后删掉~/.agently-mail/config.json重新init。
5.5 MCP Server 启动失败
MCP error -32000: Connection closed多半是npx拉包失败或 Node 版本太低。手动跑一次看详细报错:
npx -y @agently/mail-mcp如果提示找不到包,检查 npm 源;如果提示语法错误,升级 Node 到 18+。还有一种情况是AGENTLY_MAIL_HOME路径写错,MCP Server 找不到凭证文件直接退出。用绝对路径,别用~。
5.6 邮件发出但对方收不到
CLI 显示发送成功,但收件人没收到。先查垃圾邮件箱,Agently Mail 作为新域名,首次发信容易被判垃圾。然后在 CLI 里查发件记录:
agently-mail list --sent --limit 10如果状态是queued而不是sent,说明还在队列里,等几分钟。如果状态是bounced,看退信原因,多半是收件地址不存在或对方拒收。
6. 把邮箱能力接进你的 Agent 工作流
配置跑通之后,真正的价值在于让 Agent 自己管理邮件流程。这里给几个可以直接用的模式。
6.1 用 TaoToken 统一管理多模型调用
Agently Mail 的 MCP Server 在处理邮件时会调用模型做意图识别和内容提取。如果你同时用 Claude Code 和 Codex,两边的模型凭证都指向 TaoToken,Key 只需要维护一份。换模型时改TAOTOKEN_MODEL环境变量,所有 Agent 同步生效,不用逐个平台改配置。
模型对话入口可以在这里试:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
6.2 长期编码与 Agent 任务用 Coding Plan
如果你打算让 Agent 长期跑邮件自动化任务,比如每天定时整理订阅邮件、自动归档发票,建议用 Coding Plan 管理调用额度,避免按次计费带来的成本波动:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
6.3 接入文档与 API 参考
MCP 配置的完整参数、模型 ID 列表、错误码对照,都在接入文档里:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
API 入口(不加 UTM,方便你直接写进配置):
https://taotoken.net/api
6.4 一个真实的工作流示例
最后给一个我实际在用的配置。让 Agent 每天早上检查 Agently 邮箱,把订阅类邮件整理成摘要,发到个人邮箱。在 Claude Code 里直接说:
帮我设计一个工作流: 1. 每天早上 9 点检查 Agently 邮箱 2. 把订阅类邮件提取出来,整理成摘要 3. 把摘要发到我的个人邮箱Agent 会自己写脚本、配定时任务。它调模型做邮件分类时走 TaoToken 通道,发摘要时走 Agently Mail 的 MCP 工具。整条链路你只需要维护一个 Key,剩下的交给 Agent。
踩过的坑提醒一句:定时任务里的环境变量不会自动继承你终端里的配置,记得在脚本开头显式source你的.env文件,否则模型调用会报 401。