DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
S

dsh-session-notice

Session Notice

DSH session Bark notification plugin: a session-header button toggles the “notify” state, which is persisted across service restarts. When a round stops, it sends a Bark notification to the phone: the last text message on normal completion, or the complete error reason and necessary information on a

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:Dalcui/dsh-session-notice#76750769750a33a84c7badde8a5d3bb84f87f31b
READMECompatibilityVersions

Description

DSH session Bark notification plugin: a session-header button toggles the “notify” state, which is persisted across service restarts. When a round stops, it sends a Bark notification to the phone: the last text message on normal completion, or the complete error reason and necessary information on abnormal termination. No notification is sent when the user clicks Stop. Configure the Bark server/key on the plugin management page or this plugin’s details page, and use the three-step ping → push → register connectivity test (compatible with dsh 0.1.5–0.2.0).

Compatibility and provenance

Session Notice is published as dsh-session-notice and currently resolves to version 0.2.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/30/2026

Versions

0.2.1stable
9/30/2026
0.2.0stable
9/25/2026
0.1.0stable
9/12/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/30/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseRemote Bridge@linxin666/dsh-remote-bridgeDSH remote bridge: the host half serves protocol v1 over one exact /ios/v1 WebSocket route — session roster, history baseline, prompting, live turn increments with tool activity, interrupt, and in-process agent approval — to a device paired by a one-shot Im@xmanrui/dsh-im把微信、飞书、企微、钉钉、QQ、Telegram、WhatsApp、Slack、Discord、Matrix接入DSH。 Connect Telegram, WhatsApp, Slack, Discord, Matrix, WeChat, Feishu, WeCom, DingTalk, and QQ to DSH.Ds Botds-botDS Bot: a team of long-lived Bots for DeepSeek Harness, with Main Bots, Bot-to-Bot messages and group chats

README

dsh-session-notice

DSH(DeepSeek Harness)会话 Bark 通知插件:在会话界面点一个按钮切换「会通知」状态,该会话轮次停止时自动经 Bark 推送到手机。

  • 正常结束 → 推送最后一条文本消息(长文按「首段 + 末段」摘要)
  • 异常停止(出错 / 被阻塞 / Token 上限 / 崩溃遗留 / 钩子中止)→ 推送完整错误内容(不按正文那样摘要截取)与必要信息
  • 你主动点「停止」不通知(aborted 且 cause 为 user/parent/disposed 等中止链,含主会话停止时级联到 subagent 的 parent 中止)
  • 开关按会话独立、持久化(服务重启后保持),随时可切换
  • 插件管理页本插件详情页配置 Bark server / key,并提供 ping → push → register 三步连通测试(dsh ≥ 0.1.7;0.1.5 为「设置 → 插件配置区」卡片)

安装

版本要求:适配 dsh 0.1.5 – 0.2.0-rc.2。

  • dsh 0.2.0 起(本仓库 0.2.1 起):插件需在 peerDependencies 声明兼容的 dsh 运行时版本,否则启动时被跳过加载(Plugin ... is incompatible with dsh ...)。本仓库已声明 ^0.1.5-rc.1 || ^0.1.7-rc.1 || ^0.2.0-rc.1。dsh 0.2.0 运行时取消 cause 收敛为 user/parent/disposed/hook;持久化联合类型仍保留 legacy(无 cause 的 0.1.x 旧记录),本插件照常识别并归入「用户主动停止不通知」静默链。
  • dsh 0.1.7(0.1.7-rc.2 起可用):dsh-settings 重构(settings.register 移除,改为插件 Config 导出 + volatile 字段 + ctx.settings.describe/update;客户端设置入口从 settings.plugin.item 迁移到 plugins.bundle.config)。
  • dsh 0.1.5 及以下旧版请用本仓库 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 下是「安装时刻快照」,新增源文件不会同步到 .pnpm store,会导致 ERR_MODULE_NOT_FOUND 并使整个 profile 加载失败。

使用

  1. 配置密钥:插件管理 → 已安装 → 查看 dsh-session-notice → 展开设置,填写 Bark 服务器(默认官方 https://api.day.app)与设备密钥(Bark App 内查看)。密钥只存 Host 侧,界面仅显示末 4 位,不落浏览器、不进日志。
  2. 测试连通:点「测试推送」,三步独立状态:①服务器可达(GET /ping)②测试推送送达(POST /push,唯一「就绪」信号)③仅在失败时诊断 key 是否已注册(GET /register/<key>,不产生推送)。
  3. 开启通知:回到会话,点头部的铃铛按钮(单色图标,跟随主题,无文字)。鼠标悬浮显示操作说明,点击切换后短暂显示结果反馈;开启后该会话每次轮次停止都会推送。

设置项

字段默认说明
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;只有真正收尾才推一条汇总。
  • 用户主动停止不通知:aborted 且 cause 属 user/parent/disposed(含 cause 缺失的历史事件)保持沉默——停止是用户自己按的,通知只会打扰;主会话被停时其 subagent 收到的是 parent 级联中止,同样静默(防一次点击多条轰炸)。hook(自动化策略终止,附 reason 文案)保留推送。
  • 正文双层预算:
    • 展示层 —— 仅正常完成时对正文做默认 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 复刻原生观感( 主题变量、12px 圆角、34px 输入框、15/13 字号)。

0.2.0 适配说明

dsh 0.2.0-rc.2(本机实测,2026-09-30):

  • 插件 peerDependencies 版本门禁(唯一破坏面):dsh-app-boot 新增 evaluatePluginCompatibility,逐项检查插件 peerDependencies 中 @deepseek-ai/dsh / @deepseek-ai/dsh-* 是否 semver 满足运行时版本(includePrerelease;workspace:^|~|* 视为当前运行时)。不满足的插件整体跳过加载(组合树缺失、patch 报 entry not found、HTTP 路由 404)。解法:peerDeps 增加 ^0.2.0-rc.1 分支(或用 workspace:*,但二者不可混用——workspace: 前缀会使整条 range 恒不满足)。
  • 复核未变:ctx.settings.describe()/update() 契约、webServer.register({ kind:'exact' })、session/event 的 turn/end 六种 live reason 形状(blocked/max-tokens/interrupted/error/completed/aborted;0.2.0 另有 forked 种子标记,仅 fork 种子构建写入、运行时不发出,插件按未知 kind 沉默)、Session.snapshotEvents()、客户端 slots plugins.bundle.config(keyed,key=包名)与 conversation.session.header.utilities(list,standardProps 带 sessionId)、浏览器半 window.__ModuleLoader__.load({id, factory}) 懒 CJS 格式、schemastery .volatile()/.role('secret')。

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(100 用例:纯函数 + 有状态 mock + 假接线)
npm run typecheck

本地 typecheck 需把 @deepseek-ai/* 类型包软链进 node_modules(它们随 DSH 安装提供,不在公共 registry)。

许可

MIT

--dsw-alias-*
  • group 归一化:trim + 去控制字符 + ≤40 字节;归一后为空则省略字段(group:"" 会形成空名分组),超限回退 <basename> · <sha1(cwd) 前 6>。