dsh-session-attention

DSH PLUGIN会话与消息

仓库 renjianbuchai/dsh-session-attention

会话与消息 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件

为 DeepSeek Harness 提供浏览器端会话提醒:会话后台跑完或等待你回应时,触发系统通知、标签标题红点与 PWA 徽标。

一句话选型结论

按资料字段整理

dsh-session-attention 是会话与消息类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,列出 5 项功能,没有现成安装命令,需要按仓库 README 接入。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-09 创建于 2026-10-09
README 12.8 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-session-attention:为 DeepSeek Harness 补齐会话提醒的 DSH plugin

  • 回复完成时系统通知提醒
  • 标签标题红点标记未读
  • PWA 任务栏徽标计数
  • 仅窗口失焦时触发
  • 纯客户端,不改核心文件

上游标签

dsh-plugin

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 没有现成安装命令,要按仓库 README 手动接入。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-attention当前 未做沙盒验证 未标注 0 未标注 无
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方renjianbuchai仓库 dsh-session-attention · 默认分支 main
分类会话与消息session
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-09 · 2026-10-09最后推送 2026-10-09
本站收录2026-10-09首次进入本站目录的时间

README 全文

12.8 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-session-attention

English | 中文说明

Attention reminders for DeepSeek Harness —
a client-only plugin. No DSH core file is patched.

When a session needs you, three signals light up together:

Signal What it is
Desktop notification A real system notification — title 回复已完成 / Reply finished, body names the session
Tab-title dot ● prefixed to the browser tab title
PWA taskbar badge navigator.setAppBadge(n) — the app-icon badge of an installed PWA

It fires at exactly two moments, and only while the window is in the background
(document.hidden || !document.hasFocus()), so it never interrupts you while you are
already looking at the app:

  1. A reply finished — a session's running goes true → false.
  2. A session is waiting for you — a session's pendingInteraction appears:
    approval, plan-review or question.

All three signals clear the moment you return to the window. Subagent sessions are
skipped on purpose: they are not yours to answer.

Install

pnpm dsh plugin --profile web add github:renjianbuchai/dsh-session-attention

dsh plugin is a thin wrapper around pnpm, so any pnpm spec works — ` for a local checkout,github:/`, or the npm name once published. The command
writes the dependency and enables the plugin in the profile; there is nothing
else to toggle.

Once the plugin is listed in the awesome-dsh-plugin
catalog, it can also be installed from the DSH plugin market with one click.

Two things that will otherwise waste your time:

  • If pnpm refuses with ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION, add
    --config.minimumReleaseAge=0. That is a pnpm release-age policy knob and has
    nothing to do with this plugin — a branch or publish can simply be too recent for
    the configured window.
  • Grant the notification permission when the browser asks. Without it the tab dot
    and the badge still work, but the desktop notification stays silent by design
    (nothing is prompted from a background event, because a browser ignores a
    permission request that has no user gesture behind it).

Requirements

  • DSH >= 0.2.1-alpha.1 < 0.3.0-0 (developed and verified on 0.2.1-alpha.1)
  • Node >= 22.19.0 — DSH itself requires ^22.19.0 || >=24.0.0
  • A web profile in a browser. The desktop notification needs Notification; the
    taskbar badge needs navigator.setAppBadge (installed PWA, Chromium-based). Both
    are presence-guarded: where the API is missing, that one signal no-ops and the
    others keep working.

How it works

  • The client half subscribes to two public host observables — uiSession.sessionStatus
    and sessions.list — and derives the two edges above. Nothing else is read, and no
    DSH source file is modified.
  • The title dot is maintained by a MutationObserver on `. The shell ownsdocument.title` and rewrites it on every navigation, so the plugin never takes
    ownership — it only re-adds the mark while events are unseen, and removes it when
    the count returns to zero.
  • Notifications are de-duplicated by a stable per-session tag (done: /
    pending:). The previous notification carrying that tag is explicitly closed
    and renotify: true is set, so a repeat event re-alerts instead of being silently
    replaced; live Notification objects are retained until they close.
  • Every notification title carries a DSH · brand prefix and the icon the page
    itself declares. The app name shown above a toast is chosen by the browser
    (Chrome uses its own App User Model Id), so a page cannot set it — the prefix is
    the plugin's only way to make the toast unmistakably DSH.
  • The host half (lib/index.js) declares the plugin and does nothing else: it writes
    no files and opens no sockets.

Debug surface

With the plugin loaded, the browser console exposes:

__DSH_ATTENTION__.permission  // current Notification permission
__DSH_ATTENTION__.log         // recent decisions: notified / skipped / failed + reason
__DSH_ATTENTION__.test()      // fire one notification through the plugin's own path

test() is the quickest way to separate "the browser or the OS is blocking toasts"
from "the plugin never fired" — it uses the same code path as a real event.

Verification

Check Result
pnpm typecheck host + client halves, both --noEmit — 0 errors
pnpm selftest 45 / 45 assertions against the built lib/client.js, run both on the local artifact and on the exact bytes the DSH web server serves
pnpm e2e 17 / 17 against a real Chromium, a real running DSH instance and a real model turn: notification title/body/tag, ● in the title, setAppBadge(1), dot removal and clearAppBadge() on return, and that the document was not reloaded mid-wait (a reload would silently drop the test's background simulation and look like a plugin bug)

Limits, stated plainly:

  • The desktop toast is painted by the browser and the OS. A headless browser cannot
    assert that, so e2e verifies that the notification is constructed with the right
    arguments
    — not that Windows drew it.
  • Background state in e2e is a controlled document.hidden / hasFocus()
    simulation, because headless Chromium has no real tab focus.
  • Windows Focus Assist (Do Not Disturb) and the per-app notification switch can
    suppress toasts independently of any plugin. If __DSH_ATTENTION__.test() produces
    no toast while __DSH_ATTENTION__.log says notified, the block is on that side.

Provenance

The behavior is ported from DSH 0.1.x's built-in completion attention
(packages/client/ui-renderer/src/client/completion-attention.ts and
use-completion-attention.ts, commits 29d556d7b2, 3cb88b4aa5, 3e0553ed90) and
rebuilt as an installable plugin that uses only public platform APIs — the same
behavior on 0.2.x, without patching the renderer.

Development

DSH_HOME= DSH_CHECKOUT= pnpm prepare:links
pnpm typecheck && pnpm build && pnpm selftest

prepare:links mirrors the @deepseek-ai/* packages out of the profile's
node_modules (and the checkout's vendor/, where cordis and friends live) into
this project so tsc can see the host types. Those packages are pre-release and are
not reliably available from the public registry; at runtime the profile resolves them,
so the links only serve type-checking. Both paths come from environment variables —
the script intentionally hard-codes no machine-specific path.

pnpm e2e needs a running DSH web instance and takes its target from environment
variables (DSH_URL, DSH_WORKSPACE, DSH_TASK, PLAYWRIGHT_BROWSERS_PATH).

License

MIT — see LICENSE.


中文说明

给 DeepSeek Harness 的后台提醒
插件,纯客户端,不修改 DSH 核心任何文件。

会话需要你时,三处同时亮起:

信号 具体是什么
系统通知 真正的桌面通知 —— 标题带 DSH · 品牌前缀(如 DSH · 回复已完成;英文环境为 DSH · Reply completed),正文写出会话名,图标取页面自己声明的那个(气泡上方那行应用名由浏览器决定,网页改不了,所以用标题前缀来表明身份)
标题页红点 浏览器标签标题前加 ●
PWA 任务栏徽标 navigator.setAppBadge(n) —— 已安装 PWA 的应用图标角标

只在两个时刻触发,且只在你不在窗口时(document.hidden || !document.hasFocus())——
你正看着它的时候不会打扰你:

  1. 回复完成 —— 某个会话的 running 由 true 变 false。
  2. 会话在等你 —— 某个会话出现 pendingInteraction:审批、计划审阅或提问。

回到窗口时三处信号立刻清除。子代理会话按设计跳过 —— 它们不该由你回答。

安装

pnpm dsh plugin --profile web add github:renjianbuchai/dsh-session-attention

dsh plugin 是 pnpm 的薄封装,因此任何 pnpm 写法都可用 —— 本地目录 `、github:<用户>/<仓库>`、或将来发布后的 npm 包名。这条命令会同时写入依赖并在
profile 里启用插件,没有别的开关要动。

等本插件进入 awesome-dsh-plugin 精选目录后,
也可以直接在 DSH 插件市场里一键安装。

两个会浪费时间的地方,先说清:

  • 若 pnpm 报 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION,加上
    --config.minimumReleaseAge=0。那是 pnpm 的「发布冷却期」策略,与本插件无关 ——
    新分支或新发布可能刚好落在冷却窗口内。
  • 浏览器询问通知权限时请允许。 没授权时标题红点与徽标照常工作,但桌面通知
    会按设计保持静默(后台事件里不会去申请权限:浏览器会忽略没有用户手势的权限请求)。

环境要求

  • DSH &gt;= 0.2.1-alpha.1 &lt; 0.3.0-0(在 0.2.1-alpha.1 上开发与验证)
  • Node &gt;= 22.19.0 —— DSH 自身要求 ^22.19.0 || &gt;=24.0.0
  • 浏览器里的 web profile。系统通知需要 Notification;任务栏徽标需要
    navigator.setAppBadge(已安装 PWA、Chromium 系)。两者都做了存在性守卫:
    缺哪个 API,就那一项静默不生效,其余照常。

实现要点

  • 客户端半体只订阅两个公开的宿主可观察量 —— uiSession.sessionStatus 与
    sessions.list —— 由它们推出上面两个边沿;不读别的东西,也不改 DSH 源码。
  • 标题红点由 ` 上的MutationObserver维持。document.title` 归 shell 所有
    且每次导航都会被重写,所以插件从不抢占所有权:只在仍有未读事件时把标记补回去,
    未读数归零时摘掉。
  • 通知按会话固定标签去重(done: / pending:);同标签的旧通知会被显式
    关闭
    并设置 renotify: true,使重复事件重新提醒而不是被浏览器静默替换;
    活动的 Notification 对象会保留引用直到关闭。
  • 宿主半体(lib/index.js)只声明插件、不做别的:不写文件、不开端口。

排查入口

插件加载后,浏览器控制台可用:

__DSH_ATTENTION__.permission  // 当前通知权限
__DSH_ATTENTION__.log         // 最近的决策:notified / skipped / failed 及原因
__DSH_ATTENTION__.test()      // 走插件自己的代码路径发一条通知

test() 是区分「浏览器或系统这一侧被挡」与「插件根本没触发」最快的办法 ——
它与真实事件走同一条路径。

验证结果

项目 结果
pnpm typecheck 宿主 + 客户端两侧,均 --noEmit —— 0 错误
pnpm selftest 对构建产物 lib/client.js 的 45 / 45 项断言,既跑本地产物,也跑 DSH web 服务端实际下发的那份字节
pnpm e2e 真实 Chromium + 真实运行的 DSH + 真实模型回合:17 / 17 —— 通知的标题/正文/标签、标题红点、setAppBadge(1)、回窗后的摘红点与 clearAppBadge(),以及"等待期间文档没有被重新加载"(文档若被重载,测试的后台模拟会静默失效,看起来就像插件坏了)

如实说明局限:

  • 桌面气泡由浏览器与操作系统绘制,无头浏览器无法断言 —— 所以 e2e 验证的是
    通知以正确参数被构造,而不是 Windows 真的画出了气泡。
  • e2e 里的「后台」是受控的 document.hidden / hasFocus() 模拟,因为无头 Chromium
    没有真实的标签焦点。
  • Windows 的专注助手(免打扰)与应用级通知开关都可能在这插件之外压制气泡。
    如果 __DSH_ATTENTION__.test() 没冒出气泡、而 __DSH_ATTENTION__.log 显示
    notified,那么被挡的是那一侧。

来历

行为移植自 DSH 0.1.x 内置的完成提醒
(packages/client/ui-renderer/src/client/completion-attention.ts 与
use-completion-attention.ts,提交 29d556d7b2、3cb88b4aa5、3e0553ed90),
重做成可安装插件:只用公开平台 API,不补丁渲染器,在 0.2.x 上给出同一套行为。

开发

DSH_HOME= DSH_CHECKOUT= pnpm prepare:links
pnpm typecheck &amp;&amp; pnpm build &amp;&amp; pnpm selftest

prepare:links 把 profile node_modules 里的 @deepseek-ai/*(以及 checkout
vendor/ 下的 cordis 等未发布包)镜像进本项目,供 tsc 读取宿主类型;运行期由
profile 解析这些包,链接只服务类型检查。两个路径都来自环境变量 —— 脚本刻意不写死
任何本机路径。

pnpm e2e 需要一个正在运行的 DSH web 实例,目标由环境变量给出(DSH_URL、
DSH_WORKSPACE、DSH_TASK、PLAYWRIGHT_BROWSERS_PATH)。

许可

MIT —— 见 LICENSE。

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-session-attention 怎么安装?

本站没有抓到该条目的安装命令,请到仓库主页确认安装方式;这类条目多数是生态应用或尚未发布安装包的项目。

dsh-session-attention 的验证等级是什么意思?

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-session-attention 安全吗?

未标注。

dsh-session-attention 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-session-attention 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-session-attention 有哪些功能?

回复完成时系统通知提醒、标签标题红点标记未读、PWA 任务栏徽标计数、仅窗口失焦时触发、纯客户端,不改核心文件。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

2 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。