dsh-session-notice
Manifest validDSH Session Bark Notification Plugin: Toggle the "Will Notify" status via the session header button (persistent, maintained after service restart); push to your phone via Bark when a round stops — on a normal end, push the last text message; on an abnormal stop, push the complete error reason and necessary information. Configure the Bark server/key in the Settings → Plugin Configuration interface, and provides a three-step connectivity test: ping → push → register.
dsh-session-notice
DSH(DeepSeek Harness)会话 Bark 通知插件:在会话界面点一个按钮切换「会通知」状态,该会话轮次停止时自动经 Bark 推送到手机。
- 正常结束 → 推送最后一条文本消息(长文按「首段 + 末段」摘要)
- 异常停止(出错 / 中止 / 被阻塞 / Token 上限 / 中断)→ 推送完整错误内容(不按正文那样摘要截取)与必要信息
- 开关按会话独立、持久化(服务重启后保持),随时可切换
- 插件管理页本插件详情页配置 Bark
server/key,并提供 ping → push → register 三步连通测试(dsh ≥ 0.1.7;0.1.5 为「设置 → 插件配置区」卡片)
安装
版本要求:适配 dsh 0.1.7-rc.2(dsh-settings 0.1.7 重构:
settings.register移除,改为插件Config导出 + volatile 字段 +ctx.settings.describe/update;客户端设置入口从settings.plugin.item迁移到plugins.bundle.config)。0.1.5 及以下旧版 dsh 请用本仓库 0.1.5 时代的历史提交。
# 推荐:link 安装(符号链接,改动源码后无需重装)
dsh plugin --profile web add link:/path/to/dsh-session-notice
# 或从 GitHub 安装
dsh plugin --profile web add github:Dalcui/dsh-session-notice
安装后若插件行未自动生效,重启 web profile:launchctl kickstart -k gui/$(id -u)/io.deepseek.dsh-web
注意:请使用
link:或github:协议。file:协议在 pnpm 下是「安装时刻快照」,新增源文件不会同步到.pnpmstore,会导致ERR_MODULE_NOT_FOUND并使整个 profile 加载失败。
使用
- 配置密钥:插件管理 → 已安装 → 查看 dsh-session-notice → 展开设置,填写 Bark 服务器(默认官方
https://api.day.app)与设备密钥(Bark App 内查看)。密钥只存 Host 侧,界面仅显示末 4 位,不落浏览器、不进日志。 - 测试连通:点「测试推送」,三步独立状态:①服务器可达(
GET /ping)②测试推送送达(POST /push,唯一「就绪」信号)③仅在失败时诊断 key 是否已注册(GET /register/<key>,不产生推送)。 - 开启通知:回到会话,点头部的铃铛按钮(单色图标,跟随主题,无文字)。鼠标悬浮显示操作说明,点击切换后短暂显示结果反馈;开启后该会话每次轮次停止都会推送。
设置项
| 字段 | 默认 | 说明 |
|---|---|---|
| Bark 服务器 | https://api.day.app | 官方或自建;可带路径前缀;Basic Auth 用 user:pass@host 形式 |
| 设备密钥 | 空 | Bark App 内查看;role('secret'),只回显末 4 位 |
| 分组(group) | 空 = 按工作区 | 手机通知按项目聚合、支持按分组静音 |
| 正文摘要字数 | 200 | 通知只显示约 4 行,超出按「首段 + 末段」摘要并标注总字数;范围 40–1000 |
实现要点
- 回合结束监听:Host 侧
ctx.on('session/event')按event.type === 'turn/end'分派,完整区分六种停止原因(agent/turn-stopping只自然收尾触发、会漏异常路径,故不采用)。主会话等待 subagent 返回时不会误通知——subagent 调用是未完成的工具调用,回合不结束即不写turn/end;只有真正收尾才推一条汇总。 - 正文双层预算:
- 展示层 —— 仅正常完成时对正文做默认 200 字摘要(方案 C:首段 + 末段,跳过代码块,按码点不劈 emoji),超出缀「(共 N 字)」。因为 iOS 横幅约 4 行(≈80–120 中文字),全量塞入既看不全又笨重。异常停止不做展示层摘要,错误内容完整保留(仅协议层字节闸门兜底)。
- 协议层 —— 整包 JSON ≤ 3900 字节(同时满足 nginx 8192B 与 APNs 4096B),
truncateByBytes按码点兜底。
- 折叠 id:
id = sha1(sessionId|turn)前 16 位 hex(≤64B ASCII,服务端当apns-collapse-id);UA 固定dsh-bark-notify/<ver>;超时 8s 且默认不自动重试(服务端 3s timeout < APNs 往返,超时=结果不确定)。 - 失败分类:网络 / 鉴权(418 纯文本,不按 401 判)/ 体积(413 HTML)/ 密钥错误(
device token,熔断不重试)/ 上游 5xx / 格式错;403/429 属运维层,不归密钥错。 /register安全红线:只允许GET {server}/register/<key>,key 为空禁止发请求、永不带 query/body(裸/register是写接口,会覆盖设备 token)。- 直连传输(绕开环境代理劫持):发送/探测默认走
directFetch(node:http/https+agent:false,不读取HTTP(S)_PROXY/NODE_USE_ENV_PROXY)。原因:Node ≥ 24 在进程环境携带NODE_USE_ENV_PROXY=1与代理变量(如 launchd plist 注入 Clash Verge 的127.0.0.1:7897)时,全局fetch会被劫持到代理,代理不可达时推送全部fetch failed、无任何日志。若自建 Bark 服务器必须在代理网络内才可达(罕见),可用环境变量BARK_USE_FETCH=1显式回退全局 fetch。 - HTTP 路由而非 connection.rpc:
ctx.connection.rpc.handle在本机 0.1.5-rc.1 上会用调用者 fiber 访问ctx.webServer而抛cannot get property "webServer" without inject,导致整个 profile 崩溃循环。因此改用与dsh-codebuddy-cli相同的写法:ctx.inject(['webServer'], webCtx => webCtx.webServer.register({ kind: 'exact', path: '/plugins/dsh-session-notice/*' })),客户端直接fetch。4 个路由逐个 try/catch(dsh 0.1.7 对重复路由注册直接 throw,防止极端 HMR 时序下全部路由丢失)。 - 卡片样式:
dsh-client-ui-settings-plugins不导出PluginCard(跨插件值导入被纯度门禁禁止),故自写 CSS 复刻原生观感(--dsw-alias-*主题变量、12px 圆角、34px 输入框、15/13 字号)。 - group 归一化:trim + 去控制字符 + ≤40 字节;归一后为空则省略字段(
group:""会形成空名分组),超限回退<basename> · <sha1(cwd) 前 6>。
0.1.7 适配
dsh-settings 0.1.7 重构了插件设置契约(本机 0.1.7-rc.2 实测):
- 旧:
ctx.settings.register(ns, schema, { base, applies })→ scope 的get()/update() - 新:插件导出
Config(schemastery schema,字段标.volatile()才允许写入且 live 生效),读写走ctx.settings.describe()(Host 侧不带redactSecrets时value含完整 secret)与ctx.settings.update(ns, patch, expectedRevision?)(merge 写入 profile patch,cordis.patch.yml可见config:节) - 客户端设置入口从
settings.plugin.item(0.1.7 已删除)迁移到plugins.bundle.config(keyed,key = npm 包名dsh-session-notice,owner 以view: 'page'渲染) - volatile 字段经 cosmokit
Volatile<T>包装,读取需解包;启动时用组合层解析值兜底,激活后以 describe 为准(300ms TTL 缓存) - 会话开关
enabledSessions持久化在 profile patch;toggle 进程内串行化防并发覆盖
切换到 0.1.7 后首次需重新填写 Bark key(旧 0.1.5 设置存储不自动迁移;dsh 0.1.7 只迁移旧 settings.yaml 的已知 section,第三方 namespace 不在其列)。
开发
npm install --legacy-peer-deps # 类型检查所需 @deepseek-ai/* 从本机 DSH/profile 链接
npm run build # tsc(Host 半)+ esbuild(浏览器半 → lib/client.js)
npm test # node:test(81 用例:纯函数 + 有状态 mock + 假接线)
npm run typecheck
本地 typecheck 需把
@deepseek-ai/*类型包软链进node_modules(它们随 DSH 安装提供,不在公共 registry)。
许可
MIT
Comments
Loading…
From the same category
by zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 8.2k
↓ 134/wk
Apache-2.0
TypeScript
Oct 1, 2026
dsh plugin --profile web add dsh-webby ccch1mneyyy
DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol
★ 3.9k
↓ 11.6k/wk
MIT
TypeScript
Oct 1, 2026
dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tuiby YuJunZhiXue
DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐
★ 2.8k
MIT
JavaScript
Sep 30, 2026
dsh plugin --profile web add dsh-purgeby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 1.7k
↓ 32k/wk
Apache-2.0
TypeScript
Sep 30, 2026
dsh plugin --profile web add dsh-contextby agentrq
AgentRQ: Human-in-loop realtime conversational task manager for AI Agents. Self-hosted! Control your own agents from wherever you want Mobile, Web, Desktop. Designed to work well with your own Claude
★ 1.1k
↓ 56/wk
Apache-2.0
JavaScript
Oct 1, 2026
dsh plugin --profile web add @agentrq/dsh-plugin-agentrqby vshulcz
One memory shared by Claude Code, Codex, Cursor, Copilot CLI, OpenClaw and 20 more coding agents, built from the session history already on disk. A fix found in one agent comes back in any of them, in
★ 1.1k
↓ 1.2k/wk
MIT
Go
Sep 30, 2026
dsh plugin --profile web add dsh-deja