前言¶
跑 DeepSeek Harness(DSH)時,agent 可能在後臺長時間執行,或在 ask_user_question、工具授權處掛起等你操作。若人不在終端前,很容易錯過回合結束或待辦。常見做法是另開監控腳本或第三方推送,SMTP 郵件則往往還要單獨裝庫、把授權碼寫進配置文件。下面介紹社區插件 dsh-notify-email(維護者 HeIIoAgain):在任務結束、等待回答或授權時自動發信,並提供 send_email 工具與附件能力;實現上只用 Node 內置模塊,無額外運行時依賴。
這是什麼¶
dsh-notify-email 是面向 DeepSeek Harness 的 Cordis 插件,分類爲聯網工具。它通過 SMTP 把提醒和摘要發到你的郵箱,並註冊 send_email 供 agent 主動發信。SMTP 密碼不進 YAML,而是獨立文件或環境變量,每次發送實時讀取。
核心功能¶
| 觸發方式 | 說明 |
|---|---|
send_email 工具 |
你對 agent 說「把結果發我郵箱」,或定時任務到點後由 agent 調用;可帶附件 |
| 等待回答時 | 出現需要你選擇或補充信息時自動發提醒(notifyOnQuestion,默認開啓) |
| 等待授權時 | 工具權限確認掛起時自動發提醒(notifyOnApproval,默認開啓) |
| 回合結束摘要(可選) | notifyOnTurnEnd: true 時,每輪結束把最終回覆摘要發到郵箱 |
自動通知爲 fire-and-forget,不阻塞 DSH 流程;發送失敗只寫 Host 日誌,不影響任務。
附件方面:支持 multipart/mixed、中文文件名(RFC 2231),按擴展名推斷 Content-Type;默認單文件 ≤ 20MB、每封 ≤ 10 個,可通過 maxAttachmentBytes、maxAttachments 調整。自動提醒(提問 / 授權 / 回合結束)不帶附件。
安裝與啓用¶
需要 Node.js ≥ 22 和可用的 DSH(插件開發時基於 @deepseek-ai/dsh 0.2.1)。安裝命令以倉庫 README 爲準:
# 從 npm(發佈後)
dsh plugin --profile web add dsh-notify-email
# 從 GitHub(commit 固定,推薦)
dsh plugin --profile web add github:HeIIoAgain/dsh-notify-email#<commit-sha>
# 本地目錄(開發調試)
dsh plugin --profile web add link:/path/to/dsh-notify-email
安裝後插件會加入該 profile 的 dsh.profile.bundles。把 web 換成你實際使用的 profile 名即可。
配置¶
配置寫在 profile 的 patch 層($DSH_HOME/profiles/<profile>/cordis.patch.yml)。config 按 id 覆蓋時需寫全所需字段:
- id: notify-email
name: 'dsh-notify-email'
config:
smtpHost: smtp.qq.com
smtpPort: 465
secure: true
user: you@qq.com # 發件郵箱(= SMTP 登錄賬號)
from: you@qq.com # 發件人地址,一般與 user 相同
to: you@qq.com # 收件郵箱,多個用逗號分隔
subjectPrefix: '' # 標題前綴,留空則不加
notifyOnQuestion: true
notifyOnApproval: true
notifyOnTurnEnd: false
發件地址必須與 SMTP 登錄賬號一致,否則 QQ / 163 等常見郵箱會拒信;收件地址可以是任意郵箱。
授權碼¶
SMTP 密碼不要寫進 YAML。推薦獨立文件(改完無需重啓 DSH):
mkdir -p ~/.dsh/notify-email
printf '%s' '你的SMTP授權碼' > ~/.dsh/notify-email/password
chmod 600 ~/.dsh/notify-email/password
也可用 passwordFile 指定路徑,或在啓動 dsh 前 export DSH_SMTP_PASSWORD(對應配置項 passwordEnv)。
常見郵箱參數(節選)¶
| 郵箱 | smtpHost | 端口 / secure | 密碼 |
|---|---|---|---|
smtp.qq.com |
465 / true |
開啓 SMTP 後的授權碼 | |
| 163 | smtp.163.com |
465 / true |
客戶端授權碼 |
| Gmail | smtp.gmail.com |
465 / true(或 587 / false) |
應用專用密碼 |
| Outlook / Microsoft 365 | smtp.office365.com |
587 / false |
賬戶或應用密碼 |
587 端口需 secure: false,插件會 STARTTLS;雲環境一般不宜使用 25 端口。
典型用法¶
- 直接對 agent 說:「把剛纔的結果發到我郵箱」 → 調用
send_email。 - 帶附件:「把 report.pdf 和 run.log 作爲附件發我郵箱」 → agent 傳
attachments(絕對路徑,或相對會話工作目錄)。 - 定時:用 DSH 自帶
schedule_create建提醒,prompt 寫明「把結果發到郵箱」,到點觸發的回合裏 agent 會調send_email。 - 每輪結束都要摘要:將
notifyOnTurnEnd設爲true。 - 自動通知未觸發時診斷:將
debugLog設爲true,日誌寫入$DSH_HOME/notify-email/debug.log。
適用場景與注意¶
適合需要「手機郵箱收 DSH 待辦」、又不想爲 SMTP 再拉一堆 npm 依賴的開發者。插件以當前 dsh 進程權限 運行,附件路徑由調用方給出;安裝前請閱讀 GitHub 源碼 與 MIT 許可證,自行評估敏感內容經郵箱服務商轉發的風險。插件未聲明 Config schema,DSH 設置面板不渲染表單,配置走 patch + 授權碼文件是預期行爲。
若出現 535 authentication failed,優先覈對:客戶端授權碼、SMTP 已開啓、from/user 一致、授權碼未過期。user 或 to 爲空時自動通知不會註冊;手動 send_email 能發而自動提醒不能發時,可對照 README 中的 waterfall 事件說明排查。
結尾¶
dsh-notify-email 把 DSH 的等待態與可選回合摘要接到任意 SMTP 郵箱,並用零依賴 SMTP 客戶端支持 send_email 與附件。社區目錄頁:SkillHub - dsh-notify-email;源碼與完整配置表:GitHub - HeIIoAgain/dsh-notify-email。