dsh-mishu
DSH 小秘书:每 15 分钟按当前状态分诊 GitHub 未读通知(已解决的替你关掉),记住你交代的到期事项(账单、续费、证件、生日)到时提醒,只读盯着邮箱收件箱;密码只进系统钥匙串。
安装
dsh plugin --profile web add dsh-mishu
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-mishu









提醒 通知 待办 收件箱 秘书 GitHub 邮件 飞书 Telegram · reminder notifications todo inbox triage secretary
[中文](#中文) · [English](#english)
中文
DSH 小秘书,DeepSeek Harness(dsh)插件。替你盯着 GitHub 通知,也记住你交代的事(账单、续费、证件到期、生日)。它会查清楚哪些事已经结束、替你关掉,只把真要你处理的留给你。
支持 macOS / Windows / Linux,界面中英双语。设计见 [docs/调研与设计.md](docs/调研与设计.md),需求全景见 [docs/需求清单.md](docs/需求清单.md)。
能做什么
GitHub 通知:每 15 分钟拉一次全部未读通知,查对象现在的状态再判断,不看通知文字。
理由码 · 意思
merged / closed · PR 已合并,或 issue / PR 已关闭
recovered · 同一工作流在同一分支上后来通过了
superseded · 旧版本 tag 失败了,但后面的 main 或更新的 tag 已经通过
ref-gone · 失败的那个分支已经删了
fork-upstream-schedule · fork 没有自己的提交,却在跑上游的定时任务,失败通知全是噪音;合成一件事:关掉这个 fork 的 Actions
ci-failing · 最近一次还是失败,交给你
review-requested / mentioned / assigned / your-pr / commit-comment · 交给你
几十条通知会合并成"事项":同一工作流在同一分支上的失败算一件事,同一个 fork 的噪音也算一件事。
手动交代:在任何 DSH 对话里说一句,比如"护照 2027 年 3 月 10 日到期"或"每月 15 号交房租"。模型会整理出日期、重复方式和提前多久提醒,DSH 弹出审批卡片让你核对,你同意了才存。到了提醒那天,它出现在待处理里。你说办了,这一期就关闭,下一期按周期自动出现。
默认提前量:证件 90 天,账单 3 天,生日纪念日 7 天,续费续保 7 天,其他 1 天。
邮件:在设置页添加邮箱(QQ、163、126、Gmail、iCloud,或自己填 IMAP 服务器),小秘书定时看收件箱里最近的未读邮件。只读:以只读方式打开收件箱,只看发件人、收件人、标题和几个邮件头,不读正文,也不会把邮件标成已读。
理由码 · 意思
mail-to-you · 直接写给你、没有群发或自动发送标记的邮件,可能在等你回复
mail-invite · 会议或日程邀请,等你回应
mail-bill · 标题里有账单、还款、缴费、续费、发票之类的字眼(哪怕是群发的)
mail-newsletter / mail-automated · 群发邮件、系统自动邮件:折叠起来,不打扰你
mail-code / mail-github / mail-cc · 验证码、GitHub 通知邮件(GitHub 来源已经在管)、只是抄送你
同一封邮件的往来回复算一件事。你在邮件客户端里看过之后,对应的事项会自动关闭。
密码放在系统钥匙串:macOS 钥匙串、Windows 凭据管理器、Linux 密钥环(Secret Service)。密码只在设置页输入一次,直接交给钥匙串,不写进任何文件,接口也从不返回它。没有钥匙串的电脑(比如没有桌面的 Linux 服务器),密码和 token 存进记事本目录里的 secrets.json:权限 600,只有你的系统账号能读,但没有加密,设置页会写明这一点和原因。
添加邮箱:点"+ 添加邮箱"弹出向导。填了地址就自动选好服务商,显示去哪里开 IMAP、拿授权码,带"打开设置页";授权码位数不对会提醒;"测试并保存"连得上才保存。
用法
看板:点 DSH 左侧栏的"小秘书",打开整页看板。顶部是一句话总结和四个数字(要你处理、7 天内到期、今天替你关掉、待你核对),下面分三栏:
看板上方可以按来源筛选:全部、GitHub、邮件、交代。
- 要你处理:现在需要你的事。每张卡片写明是什么、问题在哪、怎么办(比如 CI 失败在哪个 job 的哪一步、上次成功是什么时候),主按钮直接打开该看的地方("看失败日志""去关掉 Actions""去审查"),还有办完了、明天再说、忽略。
- 我记着:说过"明天再说"的事,以及还没到提醒时间的交代。底部可以直接交代新的事,填写时会实时显示小秘书理解成了什么。
- 替你办了:最近 7 天关掉的事,按理由分组。点"怎么回事"能看到它是什么、为什么关掉(附证据链接)、小秘书做了什么、来自哪几条通知。判错了就点"恢复"。
+AI:看不明白就点彩色的"+AI"。它会开一个新对话,把这件事的说明、链接和相关通知放进输入框(不会自动发送),你看过、补上自己的问题再按发送。看板上的每张卡片、顶部总结、来源报错、设置页里各邮箱服务商的开通说明都有这个按钮。对话里的 AI 可以用 mishu_detail 查一件事的完整记录;要改状态时会先问你。
卡片可以拖动:拖到"替你办了"就是办完,拖到"我记着"就是明天再提醒,从"我记着"拖回"要你处理"就是现在处理。三栏之间的分隔条也能拖动调宽度,双击恢复等宽。
设置:点页面顶部的"设置":语言、各类别提前几天提醒、GitHub(开关、token 从哪来、测试连接、在 GitHub 上标已读的方式)、邮箱账户(添加、测试连接、现在收一次、编辑、删除)。飞书即将接入。
重启 DSH:页面顶部"设置"后面的按键。重装或升级插件后点它,桌面版会按正常方式退出(有任务在跑时会先问你),再自动打开。用 dsh-vps 装在服务器上的 DSH,由 dsh-gate 网关托管:点了之后 DSH 正常退出,网关几秒内把它重新拉起,页面断开一会儿后自动刷新。直接用 dsh 命令启动的 DSH 没法从页面重启(新的登录地址只会打印在那个终端里),按键会告诉你回终端按 Ctrl+C 再运行一次。Windows 和 Linux 桌面版的重启还没在真机上测过。
文字命令:
/mishu 简报:要处理的、快到了的、最近替你关掉了什么 /mishu 同步 立刻同步一次 GitHub /mishu 完成 12 把 #12 标为完成(还有:忽略 12、恢复 12) /mishu 已关闭 最近 3 天关掉的事项和理由 /mishu 交代 你交代过、还在进行的事 /mishu 停止 3 交代 #3 以后不再提醒
英文命令也能用:sync、done、dismiss、reopen、closed、series、stop、help。
agent 可用的工具:mishu_add(交代,需要你审批)、mishu_list、mishu_detail、mishu_update、mishu_stop。
不会做的事
- 默认不在 GitHub 上标已读。
markRead默认是shadow:只记下"如果打开,会把哪些通知标成已读",一条也不真标。核对过/mishu 已关闭后,再改成on。还在待处理里的事项,永远不会被标已读。 - 通知文字不会触发任何动作。只看查到的状态。
- 你改过的状态,不会被同样的证据改回去。只有来源出现更新的动态,才会重新判断。
- 你重新打开一件被规则关掉的事,算一次纠正。一条规则关掉的事项满 10 件、被纠正的比例超过 20%,这条规则就降级:之后它的结论只给你看,不再自动关闭。
- 不动你的邮箱。只读打开,不读正文,不标已读,不删不移,不发信。
GitHub token
按顺序取,token 不写进任何文件:
1. 环境变量(默认 GITHUB_TOKEN)
2. 在设置页"用 GitHub 登录"拿到的 token(GitHub 设备登录:显示一个登录码,你在 github.com/login/device 输入并授权,手机或别的电脑上都行),或者你粘贴的 token:先拿到 GitHub 上检查,再存进系统钥匙串(没钥匙串时存进 secrets.json)。要用 classic token,勾选 notifications(看私有仓库再勾 repo);GitHub 的通知接口不认 fine-grained token
3. gh auth token:装了 GitHub CLI,并运行过 gh auth login 就行。从 Dock、开始菜单启动的 DSH 拿到的 PATH 往往很短,所以小秘书除了 PATH,还会去 Homebrew、~/.local/bin、winget、Scoop 等常见安装位置找 gh
安装和配置
dsh plugin --profile <name> add dsh-mishu
在 profile 的 cordis.patch.yml 里可以覆盖配置:
- id: dsh-mishu
name: dsh-mishu
config:
home: ~/.mishu # 记事本目录,在 DSH 之外
language: auto # auto(跟系统语言)/ zh / en
github:
enabled: true
intervalMinutes: 15
tokenEnv: GITHUB_TOKEN
useGhCli: true
markRead: shadow # off / shadow / on
markReadReasons: [merged, closed, recovered, superseded, ref-gone]
leadDays: { document: 90, bill: 3, birthday: 7, renewal: 7, other: 1 }
upcomingDays: 30 # 简报里"快到了"往后看多少天
记事本是 ~/.mishu/mishu.db(SQLite),只存元数据和简短备注,不存邮件正文和 token。在 macOS / Linux 上,这个目录只有你本人能读写。卸载插件不会删它。
还没做
- 推送到手机(渠道还没定)。现在简报只能在 DSH 里看。
- 规则认不出的通知(`un
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:6,最后更新 2026-10-23