dsh-mishu:帮你盯通知、记到期的 DSH 小秘书

前言

在 DSH(DeepSeek Harness)里做智能体,总有些杂事要盯着:GitHub 通知里哪些已经合并、哪些还在失败;账单、续费、证件到期、生日这些到期事项,会不会忘记处理。如果手动看,容易漏;如果全交 AI,又容易被噪音淹没。dsh-mishu 在 DSH 里当个“小秘书”,它定期拉 GitHub 通知,根据对象当前状态判断是否已解决,自动关闭;你口头交代的事项,它帮你整理成提醒,到期时进入待处理。密码只进系统钥匙串,不写进任何文件。

核心功能

GitHub 通知分诊

每 15 分钟拉一次全部未读通知,不看通知文字,只查对象现在的状态。几十条通知会合并成少数几件事,同一工作流在同一分支上的失败算一件事,同一个 fork 的定时任务失败噪音也合并成一件事。判断规则(reason)如下:

理由码 含义
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 交给你

手动交代事项

在任何 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,只有你的系统账号能读,但没有加密,设置页会写明这一点和原因。

看板与操作

点 DSH 左侧栏的“小秘书”,打开整页看板。顶部是一句话总结和四个数字(要你处理、7 天内到期、今天替你关掉、待你核对),下面分三栏:

  • 要你处理:现在需要你的事。每张卡片写明是什么、问题在哪、怎么办(比如 CI 失败在哪个 job 的哪一步、上次成功是什么时候),主按钮直接打开该看的地方(“看失败日志”“去关掉 Actions”“去审查”),还有办完了、明天再说、忽略。
  • 我记着:说过“明天再说”的事,以及还没到提醒时间的交代。底部可以直接交代新的事,填写时会实时显示小秘书理解成了什么。
  • 替你办了:最近 7 天关掉的事,按理由分组。点“怎么回事”能看到它是什么、为什么关掉(附证据链接)、小秘书做了什么、来自哪几条通知。判错了就点“恢复”。

卡片可以拖动:拖到“替你办了”就是办完,拖到“我记着”就是明天再提醒,从“我记着”拖回“要你处理”就是现在处理。三栏之间的分隔条也能拖动调宽度,双击恢复等宽。

看板上方可以按来源筛选:全部、GitHub、邮件、交代。

+AI 与文字命令

看不明白就点彩色的“+AI”。它会开一个新对话,把这件事的说明、链接和相关通知放进输入框(不会自动发送),你看过、补上自己的问题再按发送。看板上的每张卡片、顶部总结、来源报错、设置页里各邮箱服务商的开通说明都有这个按钮。对话里的 AI 可以用 mishu_detail 查一件事的完整记录;要改状态时会先问你。

文字命令(中文与英文均可):

/mishu                 简报:要处理的、快到了的、最近替你关掉了什么
/mishu sync            立刻同步一次 GitHub
/mishu 完成 12         把 #12 标为完成(还有:忽略 12、恢复 12)
/mishu 已关闭          最近 3 天关掉的事项和理由
/mishu 交代            你交代过、还在进行的事
/mishu 停止 3          交代 #3 以后不再提醒

agent 可用的工具:mishu_add(交代,需要你审批)、mishu_list、mishu_detail、mishu_update、mishu_stop。

设置与 GitHub token

点页面顶部的“设置”:语言、各类别提前几天提醒、GitHub(开关、token 从哪来、测试连接、在 GitHub 上标已读的方式)、邮箱账户(添加、测试连接、现在收一次、编辑、删除)。页面顶部“设置”后面的按键可以重启 DSH(桌面版会正常退出再自动打开;用 dsh-vps 装在服务器上的 DSH 由 dsh-gate 托管;直接用 dsh 命令启动的 DSH 需要在终端里 Ctrl+C 再运行一次)。

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 上,这个目录只有你本人能读写。卸载插件不会删它。

不会做的事

  • 默认不在 GitHub 上标已读。markRead 默认是 shadow:只记下“如果打开,会把哪些通知标成已读”,一条也不真标。核对过 /mishu 已关闭 后,再改成 on。还在待处理里的事项,永远不会被标已读。
  • 通知文字不会触发任何动作。只看查到的状态。
  • 你改过的状态,不会被同样的证据改回去。只有来源出现更新的动态,才会重新判断。
  • 你重新打开一件被规则关掉的事,算一次纠正。一条规则关掉的事项满 10 件、被纠正的比例超过 20%,这条规则就降级:之后它的结论只给你看,不再自动关闭。
  • 不动你的邮箱。只读打开,不读正文,不标已读,不删不移,不发信。

适用场景与注意

适合需要持续盯着 GitHub 通知、批量到期事项提醒的开发者或团队。插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证(MIT)。目前飞书尚未接入;Windows 和 Linux 的钥匙串实现已按各自系统的方式实现,但还没在真机上测过。

结尾

dsh-mishu 把 GitHub 通知分诊、到期事项提醒和只读邮件收件箱整合进 DSH,帮你过滤噪音、自动关闭已解决的事项,只留下需要你处理的事。如果你在 DSH 里做智能体,又常被通知和到期事项打扰,可以试试这个小秘书。目录页与源码见下:

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

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

Xiaoye