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:SeverusZh/dsh-notify-windows
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DeepSeek Harness(DSH)插件:当 Agent 需要你关注时,向 Windows 发送系统桌面通知。
任务完成 ✅ | 等待审批 🔐 | 等待回答 ❓ —— 离开屏幕也不错过任何需要你处理的事。
兼容性:v0.7.8 支持 DSH 0.1.2-alpha.4+,已在 0.1.5-rc.1 / 0.1.5-rc.2 / 0.1.6-alpha.2 / 0.1.7-rc.1 / 0.1.7-rc.2 / 0.2.0-rc.1 上核对
snapshotEvents()契约并通过真实-Cordis 探针(15/15;peer@deepseek-ai/cordis ^4.0.2)。历史读取同时兼容旧版session.events(DSH ≤ 0.1.2-alpha.3)与新版snapshotEvents()(DSH 0.1.2-alpha.4 起该属性已不存在),升级到 0.7.5 后摘要 //goal轮次 / 审批策略恢复正常。收到过「重启后所有通知静默」问题的请升级到 0.7.3+(见 FAQ)。0.1.7-rc.1 说明:该版本起
snapshotEvents()被标记为@deprecated("新调用被禁止,现有未迁移逻辑可暂时保留")。本插件的历史读取属既有逻辑,按官方 Agent Note 的延期口径暂不迁移——DSH 仍在内存保留完整事件序列,通知摘要与/goal轮次检查照常工作;待 DSH 提供异步分页读取替代后再迁移。
turn/end 事件,任务完成 / 出错 / 输出超限时立即弹窗,标题自动使用会话标题,正文显示原因与轮次;approval/asked 事件,有操作等待你的审批时立即提醒;会话审批策略为 never 时自动跳过(此时没有东西在等你);ask_user_question 向你提问时提醒;本部署下所有工具都经 run_code 调用,插件会扫描 run_code 程序源码中的 tools.ask_user_question( 调用并提取问题文本;%TEMP%\dsh-notify\notify.log)与 debug 事件日志。项目通过 dsh.bundle 机制安装:npm 包自带的 cordis.patch.yml 会在
dsh plugin add 后自动挂载 dsh-notify 入口,不需要再手动 - insert:。
dsh plugin --profile web add dsh-notify-windows
重启 DSH 并刷新浏览器后生效:
dsh --profile web
注意:不要再用
- insert:手动添加dsh-notify,否则启动会报duplicate loader entry id: dsh-notify。想调整配置,在 profile 的cordis.patch.yml里按 id 覆盖即可(见下节)。
dsh plugin --profile web update dsh-notify-windows
dsh plugin --profile web remove dsh-notify-windows
更新后需重启 DSH 宿主(新增 bundle 层需要重新启动)。
插件行 config 全字段可选,未填按默认值。需要调整时,在
$DSH_HOME/profiles/web/cordis.patch.yml 里按 id 覆盖主条目即可
(该文件被运行中的 DSH 热监视,改动立即生效,无需重启):
- id: dsh-notify
name: dsh-notify-windows
config:
enabled: true
reasons: [completed, error, max-tokens]
notifyOnStart: true
notifyOnApproval: true
log: true
| 配置 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
总开关 |
reasons |
[completed, error, max-tokens] |
需要提醒的回合结束原因(可选 aborted / interrupted / blocked) |
includeSubagents |
false |
是否也提醒子代理会话 |
notifyOnStart |
false |
插件加载时发一条「已激活」通知 |
notifyOnApproval |
true |
审批请求提醒(策略 never 时自动跳过) |
notifyOnAskUser |
true |
Agent 提问等待回答时提醒 |
notifyOnGoalRounds |
false |
/goal 自动推进回合不提醒(目标完成/阻塞的最终回合除外) |
excerpt |
true |
通知正文附带 Agent 最后回复的摘要 |
excerptMaxChars |
80 |
摘要最大字符数 |
appName |
DeepSeek Harness |
通知来源显示名与兜底标题 |
aumid |
DeepSeekHarness.Notify |
通知 AppUserModelId |
log |
true |
写日志到 %TEMP%\dsh-notify\notify.log |
debug |
false |
把所有会话事件写入日志(排查用,量大) |
openOnClick |
true |
任务完成 / 审批 / 提问 toast 是否可点击(false 回退为旧的无点击 toast) |
preferExisting |
true |
true 走 launcher 优先聚焦已开 DSH 窗口;false 直接用默认浏览器打开 URL |
webUrl |
'' |
覆盖自动发现的基地址(如 http://192.168.1.5:4000),留空自动发现(默认 http://127.0.0.1:3080) |
| 场景 | 会话事件 | 通知示例 |
|---|---|---|
| 任务完成 | turn/end |
「任务已完成(第 N 轮)」 |
| 任务出错 / 超限 | turn/end |
「任务出错」/「输出达到 token 上限」 |
| 等待审批 | approval/asked |
「DeepSeek Harness · 需要审批 / 工具 pwsh:…」 |
| 等待回答 | tool/call(含 run_code 检测) |
「DeepSeek Harness · 需要回答 / 是否继续?」 |
任务完成 / 等待审批 / 等待回答的 toast 可点击 → 打开 DSH Web GUI。优先聚焦已打开的
DSH 浏览器标签或 Chrome Application 窗口;没有已开窗口时在默认浏览器新开标签并打开 GUI。
目标 URL 带 ?session=<id> 参数(rc.8 前端暂不消费,为未来深链预留)。
配置:
openOnClick(默认 true,false 则关闭可点击,回退为旧的无点击 toast);preferExisting(默认 true,true 走 launcher 优先复用已开窗口;false 直接用默认浏览器打开 URL);webUrl(可选,覆盖自动发现的基地址,如 http://192.168.1.5:4000,留空自动发现 / 默认 http://127.0.0.1:3080)。注意事项: 首次点击会自动注册 dshnotify:// 协议处理器(HKCU,无需管理员);故障会静默降级为「默认浏览器打开」。
说明:DSH 0.1.0-rc.8 前端暂不支持按 URL 直达单个会话;点击后打开的是 DSH 界面(首页/会话列表)并聚焦已有窗口,目标会话需在列表中选择。未来 DSH 前端支持深链后
?session=<id>将直接定位。
node scripts\smoke-test.mjs
独立进程内用 cordis Context 模拟会话事件:应弹出任务完成 / 审批 / 提问三条测试通知,并断言日志记录与过滤行为(子代理、never 策略、无关调用均被过滤)。
powershell.exe 与 notify.ps1 是否可达),通道不可用会在 DSH 日志中立即告警;每次发送失败也会记录详细原因到 %TEMP%\dsh-notify\notify.log。wslpath -w 把脚本路径转成 \\wsl.localhost\... UNC 路径,并优先通过 /mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe 调用 PowerShell(不依赖 PATH,systemd / cron 等最小环境也能工作)。若仍失败,查看 %TEMP%\dsh-notify\notify.log 中的 error 条目。notifyOnGoalRounds 设为 true。never 时审批会被自动拒绝、不会等待,插件会跳过提醒;策略为 ask 时才提醒。delegationDepth !== undefined,会把每次 dsh web 重启后带 delegationDepth: 0 的主会话误判为子代理并静默过滤。该缺陷已在 0.7.3 修复(判定改为 (delegationDepth ?? 0) > 0):请把插件升级到 0.7.3 及以上(推荐 0.7.5),执行 dsh plugin --profile web update dsh-notify-windows 后重启 DSH 宿主。/goal 中间回合开始提醒、never 策略仍提醒? 插件读取的 session.events 属性自 DSH 0.1.2-alpha.4 起就不存在(历史读取改为 snapshotEvents();0.1.2-alpha.3 及更早才有该属性),0.7.4 及更早读取该属性会拿到 undefined 后静默降级,出现上述三种症状。请升级到 0.7.5 及以上(历史读取已同时兼容两种 API;若升级后 %TEMP%\dsh-notify\notify.log 仍出现 history-unavailable 条目,请附日志反馈)。dsh plugin --profile web update dsh-notify-windows 后重启 DSH 宿主。MIT © 2026 SeverusZh
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: notifications。