在 DeepSeek Harness(DSH)中直接读取邮件会消耗 token 并在会话中留下痕迹。dsh-email-board 通过直接调用 dsh-email 的 IMAP 连接池来展示未读邮件,避免了对大模型的调用。
是什么¶
这是 dsh-email-board 插件,由 Feizhaiqianqian 维护,采用 MIT 许可证。它的核心作用是将 dsh-email 各账号的未读邮件按账号汇总成卡片列表,并展示在 Web 界面右侧栏的「邮件看板」tab 里。
核心功能¶
- 只读模式:插件不会标记邮件已读,不会删除邮件,也不会发起发信请求。
- 不消耗 Token:数据直接取自
dsh-email的email_list实现(EmailPool.list(..., unreadOnly: true)),刷新不经过模型,不留痕迹。 - 手动刷新:页面加载后默认不轮询,需手动点击刷新按钮。
- 缓存机制:宿主侧有
cacheMs短路缓存,防止频繁点击 IMAP 导致连接被打爆。
安装¶
在安装前,请确认 dsh-email 已启用并配置好账号,看板插件会读取这些设置。
- 克隆本仓库到本地。
- 打开 DSH 的「插件」页面。
- 在安装框中粘贴该目录的绝对路径。
- 安装器会执行
pnpm add <路径>并将插件追加到 profile 的dsh.profile.bundles。 - 重启 DSH。
配置¶
在 profile 的 cordis.patch.yml 中,通过 id: email-board 覆盖插件的默认配置项:
- id: email-board
name: dsh-email-board
config:
accounts: [] # 空数组表示读取 dsh-email 配置的全部账号
folder: "" # 空字符串表示读取各账号的 inboxFolder
perAccountLimit: 20 # 每个账号最多展示的未读信封数量(1-100)
cacheMs: 20000 # 宿主侧结果缓存时间(毫秒)
timeoutMs: 25000 # 单账号 IMAP 超时时间(毫秒)
使用方法¶
- 打开右侧栏(点击会话 header 右上角的展开按钮或使用快捷键)。
- 在开始页点击「邮件看板」胶囊。
- 进入 tab 后,列表展示各账号的未读邮件卡片(包含发件人、主题、时间)。
- 点击右上角「刷新」按钮重新读取数据。
注意事项¶
- 只统计指定文件夹:目前只统计各账号的
inboxFolder(或folder指定的那一个),不遍历全部文件夹。 - 数量限制:当单账号未读数超过
perAccountLimit时,只显示最新若干封,并标注限制信息。 - 无定时轮询:插件当前没有定时自动刷新功能。
- 开发限制:
file:安装方式是快照,源码修改后需重启 DSH 才能生效;开发时建议使用link:方式。 - 隐私安全:未读邮件的标题和发件人是隐私数据,只读路由带有同源判定(
Sec-Fetch-Site检查),防止任意网页恶意读取。
总结¶
dsh-email-board 解决了 DSH 用户在不消耗 token 的情况下快速查看多账号未读邮件的需求。它依赖 dsh-email 的现有实现,通过 Web 界面提供轻量级的看板视图,适合需要在开发过程中快速确认邮件状态的场景。