dsh-plugin-mail-triage:IMAP 郵件分揀與安全清理

前言

在 DeepSeek Harness(DSH)裏處理郵箱,常見做法是直接讓模型連 IMAP 或寫腳本批量刪信。讀和寫混在同一條路徑裏時,一次誤判就可能永久丟信;憑證也常散落在對話或明文文件裏。下面介紹社區插件 dsh-plugin-mail-triage:先做只讀增量掃描與規則/可選本地模型分類,產出報告和帶內容哈希的 manifest,經顯式審批後再 MOVE 到 Trash——插件代碼裏不包含 expunge,讀寫工具也分屬不同代碼路徑。

這是什麼

dsh-plugin-mail-triage 由維護者 wth373737 發佈,分類爲 工作流。它面向 DSH 宿主環境,提供 IMAP 郵件分揀與安全清理:只讀增量掃描、硬保護規則層、可選本地 Ollama 分類、Markdown 分揀報告與哈希 manifest、審批卡片,最後纔將候選郵件移入廢紙簍。

處理流水線

官方 README 用下面這條鏈路概括整體行爲;首次運行只讀、打標籤,郵箱裏不會有任何改動。

IMAP (incremental, metadata + a short body snippet)
  → hard-protection rule layer (OTP, invoices, attachments, phishing, school/official, sent, whitelist)
  → optional local Ollama classification
  → green (delete candidate) / yellow (needs review) / red (never auto-deleted)
  → Markdown triage report + local label list
  → manifest with a content hash
  → approval card
  → MOVE to the Trash mailbox
  → audit log

規則層在實現上只能保護,不會單獨產生刪除動作;低置信度、模型 schema 無效、超時或缺少模型時,郵件落入 yellow 待人工複覈。

核心工具

插件通過 Cordis 暴露一組工具,讀寫權限分開:

工具 訪問 用途
mail_triage_accounts metadata list、import_thunderbird、set_secret、test、remove
mail_triage_scan 只讀 增量掃描、規則、本地模型、報告
mail_triage_review 本地 讀取 yellow 隊列 / 記錄裁決
mail_triage_plan 只讀 構建刪除列表與 manifest
mail_triage_apply 寫 審批通過後移入 Trash
mail_triage_audit 只讀 審計日誌、報告、manifest

依賴僅爲純 JavaScript 的 imapflow(^2.10.0),由 pnpm 安裝。運行環境要求 Node >= 22.5(DSH 捆綁的運行時滿足;更舊宿主會直接加載失敗而非降級)。

憑證與 Thunderbird

不必手敲郵箱密碼:插件在本地解密 Thunderbird 配置(key4.db + logins.json),用 node:sqlite 與 node:crypto 完成,無 Python、無 NSS DLL、無原生模塊;解密結果寫入 DSH Host 憑證存儲,不上傳,也不在工作區寫明文。若宿主沒有 credential 服務,保存密鑰會失敗並說明原因,不會退回到文件。

Gmail 若 Thunderbird 的 Google 授權無法刷新,資料建議用 set_secret 保存 16 位應用專用密碼。OAuth 過期時需在 Thunderbird 重新登錄後再執行 import_thunderbird。

安裝與啓用

在 DSH 界面打開 Plugins → + Add plugin,填入倉庫標識:

github:wth373737/dsh-plugin-mail-triage

安裝前請自行查看 GitHub 源碼與 MIT 許可證;插件以當前 dsh 進程權限 運行,能訪問的環境與憑證範圍取決於宿主配置。

修改插件代碼後,Host 可能仍緩存舊模塊:在 Plugins 面板 關閉再打開 該插件即可加載新代碼,無需整進程重啓。

典型用法(按工具順序)

下面步驟對應 README 中的工具劃分,可在對話裏讓 Harness 依次調用(具體提示語因會話而異,以工具名與參數爲準)。

  1. 賬戶:用 mail_triage_accounts 的 import_thunderbird 導入賬戶,或 list / test 校驗;必要時 set_secret。注意:set_secret 與 import_thunderbird 時輸入的主密碼會進入對話 transcript,已有 Thunderbird 密碼時優先 import_thunderbird。
  2. 掃描:調用只讀工具 mail_triage_scan 做增量 IMAP 掃描(默認只掃 INBOX,可配置;子文件夾默認不展開)。
  3. 複覈:對 yellow 隊列用 mail_triage_review 查看並記錄 verdicts。
  4. 計劃:mail_triage_plan 生成刪除列表與帶內容哈希的 manifest(執行前會再次校驗哈希)。
  5. 審批與執行:在 DSH 側完成 approval card 後,才用寫工具 mail_triage_apply 將郵件 MOVE 到 \Trash;若無法解析 Trash 郵箱,插件拒絕執行而非猜測路徑。
  6. 審計:用 mail_triage_audit 查看 audit、報告與 manifest。

工作區狀態落在 .mail-triage/:config.json、state.json(游標)、labels.jsonl、verdicts.jsonl、audit.jsonl、manifests/、reports/,均爲明文,可自行檢查或刪除。1.0.2 之前構建若留下 .mail-triage/secrets.json,下次運行 mail_triage_accounts 會嘗試遷入憑證存儲並刪除該文件;服務不可達則保留文件並提示手工刪除。

代碼層安全約束(資料原文要點)

  • OTP、發票、釣魚、附件、官方/學術/個人、已發送/草稿等類別 不會自動刪除。
  • 刪除僅爲 MOVE 到 Trash;每次移動寫入審計。
  • 密碼與 OAuth 只存在於 Host credential store;無 credential 服務則拒絕存讀,不寫明文文件到報告旁。

適用場景與限制

適合:希望在 DSH 工作流裏做郵箱減負,且能接受「先報告、後審批、再移 Trash」、並願意用 Thunderbird 或 Host 憑證管理賬戶的開發者。

已知限制(摘自 README):

  • 非 UTF-8 正文(如 windows-1256)在摘要裏可能亂碼,分類仍可進行。
  • 頭塊超過 8 KB 時可能二次拉取正文;仍不可用則摘要爲空。
  • Gmail / OAuth 相關問題見上文憑證節。
  • 離線冒煙測試:npm test(規則、決策矩陣、schema、解碼、store、報告等)。

SkillHub 上的社區目錄與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本插件是其中一條 工作流 向的郵件清理路徑。

結尾

dsh-plugin-mail-triage 把 IMAP 分揀拆成只讀掃描、規則與可選本地模型、顯式審批和 Trash 移動四段,讀寫分離且無 expunge,狀態與審計落在工作區 .mail-triage/。進一步瞭解可打開 SkillHub 目錄頁 與 GitHub 倉庫;簡體中文說明見倉庫內 README.zh.md。

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

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

小夜