前言¶
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.json 的 dsh.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 等)仍可用,作为各账号的共享默认值。
配置有两种,任选其一:
- 网页设置(README 推荐):重启
dsh web后打开 设置 → 邮件 (dsh-email),填邮箱和授权码,点「保存并应用」。页面带「测试连接」。保存值写在settings.yaml的dsh-email命名空间,会覆盖 YAML 里的默认账号;密码字段标成 secret,不会进导出和诊断。 - 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.json 的 prepare 脚本会跑 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