前言¶
在 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 即可啓用。