dsh-im
xmanrui
通过扫码或机器人凭据把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord和WhatsApp)。 Connect IM bots to DeepSeek Harness via QR code or credentials (9 channels).
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:YiMlT/dsh-notify-yimit
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DeepSeek Harness 通知插件:在 任务完成 / 任务出错 / 运行中(实时活动)/ 等待审批 / 等待回答 时提醒用户。
--dsw-* 主题变量):session/title 事件到达后原地更新已弹浮窗的标题,
不再显示工作区目录名。show/text/title/move/close/shutdown),经 stdout 回传
pos/exit 报告;不再逐通知 spawn 进程,也没有 ctl/pos 文件轮询。#dsh-notify-yimit/session=<id>,客户端监听后切换;可用所选浏览器打开)。
桌面端(App)不显示该按钮——在桌面应用里再打开浏览器属于多余动作。ShowWindow(SW_RESTORE) + SetForegroundWindow)。之所以不用应用已注册的 dsh://open 协议:
应用只在 macOS 的 open-url 事件里处理该 URL,Windows 上协议 URL 是作为 argv 交给新进程的,
而它的 second-instance 处理器不读 argv、也不校验 URL —— 那条路在 Windows 上是死代码。
窗口挑选分三级(可见+有标题+非 owner → 有标题+非 owner → 有标题),因此最小化到托盘、
被其他窗口遮挡时同样能找到主窗口。宿主被点击的那一刻本就是前台进程,所以不受
"仅前台进程可抢占前台"的限制。点击后不关闭该通知,浮窗保留(与其他按钮不同);
定位不到窗口时静默无动作。命令行:在终端执行
dsh plugin --profile web add dsh-notify-yimit
桌面端 profile 把 web 换成 desktop 即可:
dsh plugin --profile desktop add dsh-notify-yimit
桌面端图形界面:打开 设置 → 插件(插件管理器),在添加插件的输入框中填入
dsh-notify-yimit,点击安装。
安装完成后重启 dsh(host 插件生效需重启),再到 设置 → 通知 开启即可。
dsh-notify-yimit/
├── package.json dsh.bundle.patch + dsh.client.platform: web(客户端 half 自动发现)
├── cordis.patch.yml 注册 host 行(id: dsh-notify-yimit)
├── lib/index.js host half:配置存储 + 会话状态机 + 通知事件队列 + notify 服务 + 桌面浮窗调度
├── lib/toast-host.ps1 常驻 PowerShell + WPF 浮窗宿主(stdin 命令 / stdout 报告,所有浮窗一个进程)
├── lib/typert.host.js Typert 宿主清单(getState / updateConfig / ackEvents)
└── lib/client.js client half:设置页「通知」+ 系统通知调度 + 会话深链接(hash)跳转
host: session/event(turn/start|assistant/chunk|tool/call|turn/end|session/title)
+ agent/status + approval/request
→ 每会话状态机 → 分发:
- custom(桌面浮窗):stdin 一行 JSON 命令 → 常驻宿主(show/text/move/close);
宿主 stdout 回传 pos/exit → host 自适应堆叠(真实高度 + 12px 间距)并重排;
运行中按 400ms 节流 + 活动文本变化原地 text 更新;最多 N 个同时显示;
审批/问答状态性通知免防抖(替换即更新,不吞通知);
载荷带 jumpEnabled(桌面端=false)→ 浮窗不创建「跳转会话」按钮
- system / off:未确认事件队列 → Typert 服务(客户端 250ms 轮询)
→ getState() 同时返回 desktop 标志(Electron 宿主=true)→ 设置页据此隐藏仅对浏览器有意义的项
client: 设置页「通知」配置 → 分发:
- system → Web Notification(tag 按 会话:类型 替换,onclick 跳转会话)
- custom → 只消费回执(不渲染页面内浮层;桌面浮窗由 host 负责)
- 会话深链接:监听 #dsh-notify-yimit/session=<id>(桌面浮窗"跳转会话"通道)→ ctx.sessions.open
- desktop=true 时:隐藏「跳转浏览器选择器」与通知方式说明文字
$DSH_HOME/storages/dsh-notify-yimit/config.json(原子写 + 防抖)。
127.0.0.1 属安全上下文,可直接申请。DeepSeek Harness.exe)判为桌面端,
普通 Node 判为 web 端;桌面端隐藏的只是与浏览器相关的入口,通知能力本身完全一致。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: notify。