前言¶
在 DeepSeek Harness(DSH)里跑智能体时,发邮件、读收件箱、批量个性化投递往往要单独写脚本或接各家 API。dsh-mail 把发送、定时队列、CSV 批量、域名列表和(部分后端的)收件读信收进同一套插件:宿主侧暴露 Agent 工具,Web 侧提供 Mail 侧边栏,并支持 Lettermint、AgentMail、Resend、OVH SMTP、手动 SMTP、本地自建 SMTP 六种传输后端。下面介绍它是什么、能做什么,以及如何按官方 README 安装与配置。
这是什么¶
dsh-mail 是维护者 lucagiftzek(Loukas “Luca” Tzekos)发布的 DSH 插件,归类为联网工具。当前 package.json 版本为 0.1.0,许可证 MIT;要求 Node.js >= 22.5,DSH 引擎 >= 0.1.1-rc.1。插件在宿主侧实现工具、设置与路由,在浏览器侧通过 dsh-better-sidebar 注入 Mail 标签页(顺序 91),供人工发测试信、看队列、配凭证,同时让智能体通过工具调用完成邮件相关任务。
多后端与能力边界¶
README 用表格列出了六种 Provider,认证方式与是否支持收件读信如下(OVH / smtp / local 的 IMAP 读信标注为 planned):
| ID | 后端 | 认证 | 收件读信 |
|---|---|---|---|
| lettermint | Lettermint API | x-lettermint-token | 否 |
| agentmail | AgentMail API | Bearer | 是 |
| resend | Resend API | Bearer | 否 |
| ovh | OVH SMTP | 用户名/密码 | IMAP(计划中) |
| smtp | 手动 SMTP | 用户名/密码 | IMAP(计划中) |
| local | 自建 SMTP | 用户名/密码 | IMAP(计划中) |
凭证不会硬编码在仓库里,而是在调用时从配置与 estate 文件合并读取;settings 里非空字段优先于自动发现的凭证。
Agent 工具¶
智能体可调用的工具包括:
- mail_send — 发送单封邮件
- mail_mass_send — 基于 CSV 的个性化批量发送,支持邮件间隔
- mail_send_later — 将邮件加入未来发送的定时队列
- mail_read — 读取近期收件(AgentMail)
- mail_fetch — 按 ID 拉取单条消息
- mail_domains — 列出可用发信域名/收件箱
- mail_list_queue — 列出队列条目
- mail_cancel — 取消已排队或已调度的邮件
此外插件支持队列管理与 CSV 解析、模板个性化(见架构中的 staging 模块),以及可人工审核的排队发送流程(README 摘要中的 queue emails for manual review)。
Mail 侧边栏¶
Mail 标签页包含:
- Overview:各 Provider 状态、队列数量概览
- Queue:待发送、已发送、失败、已取消条目,支持立即发送 / 取消
- Send:撰写并发送测试邮件
- Settings:配置各 Provider 凭证与限制
安装与启用¶
官方 README 的安装方式是从源码目录构建并挂到 web profile,而不是简单的 dsh plugin add 一行命令。先做依赖安装与前端打包,再改 profile 的 package.json。
在插件目录执行:
cd /opt/stacks/llm/plugins/dsh-mail
pnpm install # dev deps (esbuild)
pnpm build # bundle src/client.jsx → lib/client.js
在 ~/.dsh/profiles/web/package.json 中增加依赖与 bundle 条目:
# In ~/.dsh/profiles/web/package.json, add to dependencies:
" \"dsh-mail\": \"file:/opt/stacks/llm/plugins/dsh-mail\","
# And to the bundles array:
" \"dsh-mail\","
然后在 web profile 目录安装依赖:
pnpm install --dir ~/.dsh/profiles/web
完成后需重启 dsh-web 才能挂载插件。若当前会话本身运行在 dsh-web 内,重启前应先与用户确认。
设置与凭证发现¶
配置写在 ~/.dsh/settings.yaml 的 dsh-mail 命名空间下。首次使用时,插件会从 estate 文件自动填充部分凭证,例如:
- Lettermint:
~/.config/lettermint/credentials(LETTERMINT_API_KEY) - AgentMail:
~/.config/agentmail/credentials(AGENTMAIL_API_KEY、AGENTMAIL_TEST_INBOX)
README 强调凭证仅在调用时读取并与 settings 合并,仓库与 settings 中不应写入密钥明文。
禁用插件¶
需要临时关闭时,可设置环境变量 DSH_MAIL_DISABLE=1,或在 cordis 中设置 disabled: true。
代码结构(便于审阅)¶
lib/index.js host half — tools, settings, routes, timer
lib/providers.js multi-provider transport layer
lib/staging.js queue management, CSV parsing, template personalisation
lib/security.js 4-layer route security (loopback, trust fence, capability, cookie)
src/client.jsx browser half — sidebar tab UI
scripts/build.mjs esbuild bundler
更完整的设计说明见仓库内 docs/DESIGN.md。
适用场景与注意¶
适合需要在 DSH Web 界面与 Agent 工具链中统一处理发信、批量个性化、定时队列和(AgentMail)读收件的场景,且已具备或愿意配置上述某一后端凭证的开发者。
插件以当前 dsh 进程权限运行,安装前应自行阅读源码与 MIT 许可证,确认路由安全层(loopback、trust fence、capability、cookie)是否符合你的部署边界。社区插件目录站点 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;星标与生态数据以各页面当时展示为准(GitHub 上该仓库当前为 0 star)。
链接¶
- 目录页:https://www.skillhub.cn/plugins/lucagiftzek/dsh-mail
- 源码与 README:https://github.com/lucagiftzek/dsh-mail
dsh-mail 把多 Provider 邮件能力收敛成 DSH 插件:工具供智能体调用,侧边栏供运维与测试,队列与 CSV 批量则覆盖常见自动化发信路径;按 README 构建并挂入 web profile 即可启用。