🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话未读标记 yangyizhu8/dsh-unread-mark

DeepSeek Harness
yangyizhu853 天前有提交已提供中文文档扫描:含敏感能力

在会话菜单标记未读,红点常驻直到手动清除

29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yangyizhu8/dsh-unread-mark
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 53 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-external/dsh-unread-mark(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 02:03:41

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    lib/index.js:30
    const raw = await readFile(STATE_FILE, 'utf8');
  • 写入本地文件
    lib/index.js:41
    await mkdir(dirname(STATE_FILE), { recursive: true });
  • 写入本地文件
    lib/index.js:43
    await writeFile(tmp, JSON.stringify(state, null, 2), 'utf8');
  • 写入本地文件
    lib/index.js:44
    await rename(tmp, STATE_FILE);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 会话菜单标记未读
  • 红点常驻刷新不消失
  • 手动清除标记

README

由 DeepSeek 最新模型翻译生成
dsh-unread-mark — 会话行「标记未读 / 取消标记」 在 dsh Web 会话行的 "..." 菜单追加两项,用用户主动的红点钉住「还没处理完」的会话,与系统绿点(跑完未点开)区分。需求对齐定稿:2026-09-12。 功能 | 会话状态 | 圆点 | 标记未读 | 取消标记 | | 绿点(系统「跑完未点开」) | 绿点 | 置灰 | 置灰 | | 无标记 | — | 可点 | 置灰 | | 红点(用户主动标记) | 红点 | 置灰 | 可点 | - 红点语义:会话标题前 8px 红色圆点(#D64545),与系统绿点 slot 同位异色。 - 红点不随刷新/点开消失——这是它与绿点的本质区别:只有手动「取消标记」才消失。 - 绿点存在时两项都禁用(用户明确要求);置灰为菜单项半透明 + aria-disabled + 原生 disabled。 原理(合同依据,dsh 0.1.1-rc.2 实证) - 绿点判定:SessionSummary.completed === true 且非运行中、无待交互(ui-workspace/tree.ts:30 注释原文:"Finished running while not selected and not yet opened (the green 'done' reminder dot)")。
展开完整文档(README 剩余 1 节)
dsh-unread-mark — 会话行「标记未读 / 取消标记」

在 dsh Web 会话行的 "..." 菜单追加两项,用用户主动的红点钉住「还没处理完」的会话,与系统绿点(跑完未点开)区分。需求对齐定稿:2026-09-12。

功能

| 会话状态 | 圆点 | 标记未读 | 取消标记 |
| 绿点(系统「跑完未点开」) | 绿点 | 置灰 | 置灰 |
| 无标记 | — | 可点 | 置灰 |
| 红点(用户主动标记) | 红点 | 置灰 | 可点 |

- 红点语义:会话标题前 8px 红色圆点(#D64545),与系统绿点 slot 同位异色。
- 红点不随刷新/点开消失——这是它与绿点的本质区别:只有手动「取消标记」才消失。
- 绿点存在时两项都禁用(用户明确要求);置灰为菜单项半透明 + aria-disabled + 原生 disabled。

原理(合同依据,dsh 0.1.1-rc.2 实证)

- 绿点判定:SessionSummary.completed === true 且非运行中、无待交互(ui-workspace/tree.ts:30 注释原文:"Finished running while not selected and not yet opened (the green 'done' reminder dot)")。从 ctx.sessions.list.getSnapshot().byId[id] 读取,无需 DOM 探测。
- 菜单注入:轮询 [role=menu] + 语义锚(归档会话/分叉会话)→ 克隆末项 wrapper 追加两项(沿用 dsh-session-handoff 的 MenuInjector 模式;锚点不匹配即 fail-soft 缺席)。
- 会话身份:React fiber 精确路径(fiberSessionIdOf)→ aria 标题匹配兜底。
- 持久化:host 半 loopback RPC(channel /dsh-unread-mark)+ ~/.dsh/dsh-unread-mark-state.json (原子写:临时文件 + rename)。端点 list / set / clear。
- 红点渲染:每 1.2s 巡检会话行(div[role=treeitem])→ 按 host 集合增删红点(幂等)。
拉取失败时本轮不动红点,避免「读失败 = 清空红点」的误删。

安装 / 卸载

安装(开发期热注入;正式转正走 bundles 需停机窗口,同 dsh-session-handoff 工艺)
dsh plugin --profile web add "D:\deepseek-harness\plugins\dsh-unread-mark"

卸载
dsh plugin --profile web remove @dsh-external/dsh-unread-mark
状态文件(如需清空标记):删除 ~/.dsh/dsh-unread-mark-state.json

准入自检:node scripts/check-plugin-ready.mjs plugins/dsh-unread-mark 全 PASS。

验收证据(2026-09-12,无头 CDP 实测)

- 红点:dotCount=1,位于被标记会话行,background=rgb(214,69,69)、width=8px。
- 菜单注入:六项 = 重命名 / 分叉会话 / 归档会话 / 标记未读 / 取消标记 / 移交会话。
- 状态机(未标记会话):标记未读可点、取消标记置灰 → 点「标记未读」→ host 集合新增该 id、页面红点 1→2 → 再开菜单:标记未读置灰、取消标记可点 → 点「取消标记」→ 集合移除、红点 2→1。
- 状态机(已标记会话):标记未读置灰、取消标记可点。
- 持久化:~/.dsh/dsh-unread-mark-state.json 内容随 set/clear 实时更新;list 端点回读一致。
- 回归:页面 Console 零报错(client 轮询 RPC 全程无 transport 失败)。

已知边界

- 绿点分支未在本机实测(验收时无 completed=true 的会话):逻辑为 isGreen() 读 SessionSummary.completed(剔除运行中/待交互),与官方 tree.ts 的绿点条件一致;遇到绿点会话时应表现「两项都置灰」。
- 注入锚点依赖宿主菜单语义(归档会话/分叉会话)与行结构(div[role=treeitem] + fiber node.id);宿主升级改结构时 fail-soft 降级为「菜单项缺席 / 红点不渲染」,不抛错、不拖死宿主。
- 红点是浏览器可见态,不写入会话日志;多浏览器/多设备共享同一 host 状态文件(同 ~/.dsh)。
预览分享卡片长什么样 ↓yangyizhu8/dsh-unread-mark
分享 · DeepSeek Harness Hub
yangyizhu8/dsh-unread-mark

在会话菜单标记未读,红点常驻直到手动清除

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部