用 dsh-email 給 DeepSeek Harness 智能體裝上郵箱

前言

DeepSeek Harness(下文簡稱 DSH)把模型、工具、會話和界面都做成插件。官方倉庫的定位是「Everything is a Plugin」:加能力改配置,不必改 Harness 源碼。智能體因此能寫代碼、查文件、跑終端,但郵箱這一層通常還得自己打開客戶端。

日常裏這類需求很具體:看一眼未讀、按主題搜一封合同、把附件落到工作區、起草回覆再發出去。自己複製粘貼當然可以,但會話一長就容易漏。社區插件 dsh-email 做的就是這件事:用標準 IMAP/SMTP 把收件箱接到 agent 的工具列表裏。

本文按 DSH 插件目錄 詳情頁和 GitHub 倉庫 STARDUSTLC666/dsh-email(README、package.json、許可證,覈對於 2026-08-18)整理:它是什麼、有哪些工具、怎麼安裝配置,以及發信審批和憑證該怎麼處理。目錄站點是社區維護的檢索入口,與 DeepSeek / 幻方沒有官方從屬關係;插件本身也在 README 裏寫明是社區項目,和官方無關。

這是什麼

dsh-email 是一款界面增強類插件,由 GitHub 用戶 STARDUSTLC666 維護,倉庫許可證爲 MIT。當前 npm 包版本是 0.6.2,主要語言 TypeScript,engines 字段要求 Node.js >= 20。GitHub 倉庫在 2026-08-18 顯示 5 星。

它給當前 DSH 進程裏的 agent 一組郵件工具:列收件箱、讀信、搜索、代發、看文件夾、收發附件。協議走 IMAP 收信、SMTP 發信,不依賴系統 shell,也沒有原生二進制;README 寫明 Windows / macOS / Linux 同一份 Node 代碼。

設置界面掛在 Web UI 上。package.jsondsh.client 聲明瞭 platform: web,並注入 @deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings。也就是說:郵件協議本身跨平臺,表單配置頁面向 dsh web

核心功能

六類工具

README 把能力收成六個工具,名稱和職責如下。

工具 作用
email_list 列出文件夾裏最新郵件,支持未讀過濾、分頁;默認只給摘要,不帶正文
email_read 按 uid 讀一封全文;HTML 會轉成純文本,超長按 maxBodyChars 截斷(默認 20000 字)
email_search 服務器端按關鍵詞搜主題 / 發件人 / 收件人 / 抄送;無結果時默認回退掃描最近 30 封正文
email_send 代發郵件,可帶附件;默認發信前彈確認,顯示收件人、主題和附件數
email_folders 列出 INBOX、已發送、垃圾郵件以及自定義文件夾,把 path 交給其他工具
email_attachment 按序號下載附件;默認落到會話工作區,單文件與總大小受 maxAttachmentBytes 限制(默認 20 MiB)

v0.6.2 的改動主要在搜索和列表順序:服務器搜索補上 cc;正文回退掃描也匹配 to / cc,單封解析失敗不會打斷整批;列表按 UID 降序,保證最新在前;email_send 的附件參數校驗爲路徑字符串數組。

倉庫 README 給的對話示例是:

幫我看下 QQ 郵箱最新的 10 封未讀,把要回復的列出來。

agent 會先走 email_list(未讀、最近 10 封),需要正文時再調 email_read。這是文檔裏的用法說明,不是實測記錄。

八種郵箱預設

provider 就會填好 IMAP/SMTP 地址,不必手寫主機名。目錄頁和 README 列出的八個預設一致:

provider IMAP SMTP
qq imap.qq.com:993(SSL) smtp.qq.com:465(SSL)
163 imap.163.com:993 smtp.163.com:465
126 imap.126.com:993 smtp.126.com:465
sina imap.sina.com:993 smtp.sina.com:465
aliyun imap.aliyun.com:993 smtp.aliyun.com:465
gmail imap.gmail.com:993 smtp.gmail.com:465
outlook outlook.office365.com:993 smtp.office365.com:587(STARTTLS)
icloud imap.mail.me.com:993 smtp.mail.me.com:587(STARTTLS)

沒有預設也可以手填任意 IMAP/SMTP。顯式寫的 host / port / secure 優先於預設。

各服務商都要求用授權碼或應用專用密碼,不要填網頁登錄密碼。README 裏的入口是:

  • QQ:設置 → 賬戶 → 開啓 IMAP/SMTP → 生成授權碼
  • 163 / 126:設置 → POP3/SMTP/IMAP → 開啓 → 新增授權碼
  • Gmail:先開兩步驗證,再到安全頁生成應用專用密碼
  • Outlook:微軟賬戶安全頁的應用密碼(部分賬號要先開兩步驗證)

多賬號與兩種配置入口

一個 tool-email 配置可以掛多個郵箱,調用工具時用 account 參數切換;defaultAccount 是省略該參數時的默認賬號。v0.1 的單賬號頂層字段(provider / user / password 等)仍可用,作爲各賬號的共享默認值。

配置有兩種,任選其一:

  1. 網頁設置(README 推薦):重啓 dsh web 後打開 設置 → 郵件 (dsh-email),填郵箱和授權碼,點「保存並應用」。頁面帶「測試連接」。保存值寫在 settings.yamldsh-email 命名空間,會覆蓋 YAML 裏的默認賬號;密碼字段標成 secret,不會進導出和診斷。
  2. YAML:在 profile 的 cordis.patch.yml 裏覆蓋 tool-email 這一行。設置頁的「多賬號(高級,YAML)」文本框也能填賬號映射,非空時覆蓋 accounts

插件自帶空配置,cordis.patch.yml 裏插入的是 config: {}。README 寫明這樣安裝不會把啓動弄崩;配置完成前調用任何 email_* 工具,會返回明確的配置提示。

安裝與啓用

目錄詳情頁給出的安裝命令是:

dsh plugin add github:STARDUSTLC666/dsh-email

需要可復現安裝時,按目錄頁說明固定 commit。2026-08-18 倉庫 main 最新提交爲 f24f1ffa6ce4a1369433a1a433fb8078d34b6683(提交於 2026-08-16):

dsh plugin add github:STARDUSTLC666/dsh-email#f24f1ffa6ce4a1369433a1a433fb8078d34b6683

倉庫 README 另外寫了帶 web profile 的裝法,和設置頁面向 dsh web 這一點一致:

dsh plugin --profile web add dsh-email

裝好後重啓 dsh web。單賬號 YAML 可以寫成:

- id: tool-email
  config:
    provider: qq
    user: you@qq.com
    password: 你的授權碼

README 更建議把密碼放到環境變量 DSH_EMAIL_PASSWORD,不要長期明文寫在配置文件裏。

沒有預設、直連公司郵箱時:

- id: tool-email
  config:
    user: you@corp.example
    password: 你的授權碼
    imap: { host: imap.corp.example, port: 993, secure: true }
    smtp: { host: smtp.corp.example, port: 465, secure: true }
    inboxFolder: INBOX

多賬號示例:

- id: tool-email
  config:
    accounts:
      work: { provider: qq, user: work@qq.com, password: 授權碼1 }
      home: { provider: '163', user: home@163.com, password: 授權碼2 }
    defaultAccount: work

downloadDir 可改附件落盤目錄;不寫的話,默認是會話工作區下的 .dsh-email-downloads,再回退到 $DSH_HOME/email-downloads

典型用法

配置完成後,可以直接用自然語言讓 agent 調工具,不必記參數名。和文檔一致的幾類任務包括:

  • 列出某文件夾最新未讀,只看摘要
  • 按 uid 打開一封,HTML 會變成純文本
  • 按主題、發件人或抄送搜索;服務器沒命中時,默認再掃最近 bodySearchLimit 封(默認 30)的正文
  • 列出文件夾路徑,再把 path 傳給 email_list / email_search
  • 按序號下載附件,讓模型在工作區裏讀文件
  • 起草回覆後走 email_send;默認會彈出確認,你批准才真正發出

發信審批是默認打開的(sendApproval: true)。每次發送會走 DSH 審批通道,提示類似「發送郵件給 xx,主題「xx」」。沒有審批通道的環境(例如無 UI 的 headless)會直接拒絕發信,這是文檔寫明的安全默認,不是故障。

還有一個容易踩的點:會話處於 Full Access(完全訪問) 時,Harness 的審批策略是 never(不彈確認)。此時 email_send 會被攔截並給出提示。README 給的兩條出路是:把訪問模式切回 Read Only / Write;或者在設置頁關掉「發信前確認」,等於明確接受風險。

適用場景與注意事項

比較適合已經在用 DSH Web、需要 agent 幫忙處理郵箱的人:掃未讀、檢索附件、起草並經你確認後發出。多賬號可以把工作和個人郵箱寫在同一行配置裏。企業郵局只要提供標準 IMAP/SMTP,也可以手填主機。

下面幾條是倉庫 README「已知限制」和「安全須知」裏已經寫明的,安裝前值得對照源碼看一遍。

不支持 OAuth2。 強制 OAuth 的企業環境(部分 Microsoft 365 / Google Workspace)目前用不了,只能走服務商的應用專用密碼或授權碼。

正文搜索是折中。 服務器端只搜 subject / from / to / cc。不少服務商(README 點名 QQ)的 IMAP TEXT / HEADER 搜索不可靠,所以無結果時會回退到客戶端掃描最近若干封,速度較慢;可以用 bodySearchFallback 關掉。

附件。 內嵌圖片暫不支持單獨下載;定位失敗會報錯,而不是下錯文件。默認大小上限 20 MiB,可在 1024 字節到 512 MiB 之間改 maxAttachmentBytes

憑證落盤。 授權碼就是郵箱鑰匙。設置頁保存的值以明文寫在本機 settings.yaml:secret 標記只保證不進日誌、導出和診斷,不做磁盤加密。不要把該文件交給不信任的人,也不要提交到 Git。更穩妥的做法是用 DSH_EMAIL_PASSWORD。插件不做聯網上報,憑證只在內存裏用來連接你的郵件服務器。

權限模型。 目錄頁的安裝提示寫得很清楚:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前應檢查源代碼倉庫和許可證。本插件許可證是 MIT;package.jsonprepare 腳本會跑 tsc 構建。

最後再強調一次歸屬:dsh-email 是社區插件,README 寫明與 DeepSeek 官方無關,@deepseek-ai/* 是官方保留命名空間。本文引用的目錄頁同樣是獨立站點,不是官方應用商店。

小結

dsh-email 把 IMAP/SMTP 收成六個工具,配上 QQ、163、Gmail 等八個預設,以及 Web 設置頁和發信審批。對已經在 DSH 裏幹活、又希望 agent 能碰郵箱的人,安裝成本和能力邊界都比較清楚:授權碼、審批開關、OAuth 缺口,文檔裏都寫了。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-email/

GitHub:https://github.com/STARDUSTLC666/dsh-email

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜