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

话题线索悬浮窗 Celebrate-W/dsh-topic-trail

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

会话工作线索悬浮窗:把和 AI 的长对话实时提炼成可跳转的「线索」,并用 DeepSeek 生成话题、进度与阶段历程

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Celebrate-W/dsh-topic-trail
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-topic-trail(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 07:07:42

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 41 处,展示前 18 条)
  • 读取本地文件
    lib/index.js:493
    const parsed = JSON.parse(await readFile(tokenUsagePath(), 'utf8'))
  • 写入本地文件
    lib/index.js:513
    await mkdir(dataDir(), { recursive: true })
  • 写入本地文件
    lib/index.js:514
    await writeFile(tokenUsagePath(), JSON.stringify(tokenUsage, null, 2), 'utf8')
  • 读取本地文件
    lib/index.js:545
    const parsed = JSON.parse(await readFile(notesPath(), 'utf8'))
  • 写入本地文件
    lib/index.js:559
    await mkdir(dataDir(), { recursive: true })
  • 写入本地文件
    lib/index.js:560
    await writeFile(notesPath(), JSON.stringify(notesCache || {}, null, 2), 'utf8')
  • 写入本地文件
    lib/index.js:581
    await mkdir(dataDir(), { recursive: true })
  • 写入本地文件
    lib/index.js:582
    await writeFile(runtimeConfigPath(), JSON.stringify(obj, null, 2), 'utf8')
  • 读取本地文件
    lib/index.js:592
    const parsed = JSON.parse(readFileSync(runtimeConfigPath(), 'utf8'))
  • 读取本地文件
    lib/index.js:636
    const parsed = JSON.parse(readFileSync(workspaceProfilesPath(), 'utf8'))
  • 读取本地文件
    lib/index.js:781
    const text = await readFile(trailFile(sessionId), 'utf8')
  • 读取本地文件
    lib/index.js:2020
    const raw = readFileSync(join(home, 'storages', 'workspace.json'), 'utf8')
  • 发起网络请求
    lib/client.js:1081
    fetch('/plugins/topic-trail/notes', {
  • 发起网络请求
    lib/client.js:1097
    fetch('/plugins/topic-trail/notes', {
  • 发起网络请求
    lib/client.js:1137
    fetch('/plugins/topic-trail/notes', { headers: { Accept: 'application/json' } })
  • 发起网络请求
    lib/client.js:1485
    fetch('/plugins/topic-trail/bubble-quotes', {
  • 发起网络请求
    lib/client.js:1678
    fetch('/plugins/topic-trail/config', { headers: { Accept: 'application/json' } })
  • 发起网络请求
    lib/client.js:1801
    return fetch(url, { headers: { Accept: 'application/json' }, signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS) })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-llm
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 实时提炼对话线索
  • 线索可跳转
  • 生成话题进度阶段

README

由 DeepSeek 最新模型翻译生成
dsh-topic-trail 会话工作线索悬浮窗 —— 把和 AI 的每一次长对话,实时提炼成看得见的「线索」。 dsh-topic-trail 是 dsh(DeepSeek Harness)的插件。它在 Web UI 里挂一个可拖动的悬浮窗,一边对话一边把内容整理成话题(线索)→ 进度步骤 → 阶段历程,让你随时知道「这件事做到哪了」。 长会话最常见的困扰是「刚才那段结论在哪儿」。这个插件让线索自己浮出来,点一下就能跳回对话里的那一条。 界面预览 特性 线索组织 - 三级网络:全部工作区 → 工作区 → 会话 → 线索 → 步骤,逐层下钻 - AI 实时提炼:用 DeepSeek 把会话流总结成线索(标题 / 摘要 / 状态 / 阶段历程) - 规则模式兜底:不调用模型也能用;模型不可用时自动回退,零成本运行 - 阶段历程:每条线索自动标注演进阶段(提案 / 探索 / 受阻 / 突破 / 完成);没有 AI 历程时用步骤推断一个基础历程 - 手动整理:拖拽合并线索、重命名、锁定(锁定后自动总结不会改动它)、删除 交互 - 点击跳转:点线索 / 步骤 / 历程中的任意一条,打开对应对话并滚动定位、高亮那条消息 - 导航下拉 + 搜索:按工作区 / 会话筛选,或直接搜线索标题 - 悬浮窗:可拖动、可折叠;收起后是一个会眨眼的小球,大小可调
展开完整文档(README 剩余 1 节)
dsh-topic-trail

会话工作线索悬浮窗 —— 把和 AI 的每一次长对话,实时提炼成看得见的「线索」。

dsh-topic-trail 是 dsh(DeepSeek Harness)的插件。它在 Web UI 里挂一个可拖动的悬浮窗,一边对话一边把内容整理成话题(线索)→ 进度步骤 → 阶段历程,让你随时知道「这件事做到哪了」。

长会话最常见的困扰是「刚才那段结论在哪儿」。这个插件让线索自己浮出来,点一下就能跳回对话里的那一条。

界面预览

特性

线索组织

- 三级网络:全部工作区 → 工作区 → 会话 → 线索 → 步骤,逐层下钻
- AI 实时提炼:用 DeepSeek 把会话流总结成线索(标题 / 摘要 / 状态 / 阶段历程)
- 规则模式兜底:不调用模型也能用;模型不可用时自动回退,零成本运行
- 阶段历程:每条线索自动标注演进阶段(提案 / 探索 / 受阻 / 突破 / 完成);没有 AI 历程时用步骤推断一个基础历程
- 手动整理:拖拽合并线索、重命名、锁定(锁定后自动总结不会改动它)、删除

交互

- 点击跳转:点线索 / 步骤 / 历程中的任意一条,打开对应对话并滚动定位、高亮那条消息
- 导航下拉 + 搜索:按工作区 / 会话筛选,或直接搜线索标题
- 悬浮窗:可拖动、可折叠;收起后是一个会眨眼的小球,大小可调
- 主动展示:收起状态下偶尔冒出一句融合了最近线索的「碎碎念」气泡;间隔可在设置里调(默认 30 秒),话术会主动避开最近说过的内容
- 状态点三档:线索前的小圆点按最后活动时间着色——10 分钟内亮绿、一天内暗绿、更久变灰,避免停手不做的线索一直亮着绿灯
- 随手记:内置便签与画笔工具;画笔存的是笔画路径(非位图),支持撤销、缩放不糊,内容存在服务端而非仅浏览器
- 多皮肤:内置经典皮肤与 DeepSeek 主题,两套皮肤的头像、话术、气泡样式各自独立
- 跟随 dsh:在 dsh 里删除的工作区、归档的对话会自动从列表隐藏(可在设置里展示已删除项)

工程

- 零构建:client 半是纯 React + h(),直接由 dsh 提供,改完刷新即生效
- 快照缓存 + 分块折叠:会话很多时列表接口从数十秒降到毫秒级
- 子代理过滤:按血缘(origin / delegationDepth)识别并排除子代理会话,不与主会话混在一起
- 省 token:总结前先比对内容指纹跳过无变化的调用,并设最小间隔(默认 20 秒);可在设置里看估算用量(气泡与总结分开统计),并提供一键「轻简模式」

安装

指向你自己的 dsh 安装目录(下面用 $DSH_HOME 表示) $env:PATH = "$DSH_HOME\tools\node_modules\.bin;" + $env:PATH
dsh plugin --profile web add file:C:/path/to/dsh-topic-trail

然后重启 dsh。

也可以把本目录放进 $DSH_HOME/plugins/,再用 cordis.patch.yml 的 insert 段注册。

配置

设置页里的选项会持久化到 $DSH_HOME/data/topic-trail/config.json,覆盖 cordis.patch.yml 里的基线值。

| 键 | 说明 | 默认 |
| summarize | 总结方式:auto(优先 AI,失败回退规则)/ llm(强制 AI)/ rule(仅规则,不调模型) | auto |
| provider / model | 总结用的 provider 与模型,留空则自动探测 dsh 的当前配置 | 自动 |
| pollMs | 前端轮询间隔(毫秒) | 3000 |
| bufferSize | 送给模型的上下文窗口大小 | 40 |
| followSession | 切换对话时自动跟随到该对话 | true |
| learnFromModifications | 记住你手动合并 / 整理的习惯,后续总结时参考 | true |
| preserveTopics | 总结时保留已有线索,只追加新线索 | true |
| workspaceMemory | 记住每个工作区的项目结构与总结偏好 | true |
| workspaceViewMode | 工作区视图:merge(相似线索聚类)/ bySession(按对话分块) | bySession |
| skin | 皮肤:default(经典蓝球)/ deepseek(DeepSeek 娘) | default |
| ballScale | 收起小球的大小倍率(0.6 ~ 1.6) | 1 |
| bubbleIntervalSec | 主动展示气泡的间隔秒数(5 ~ 300,实际有 0.7~1.5 倍随机抖动) | 30 |
| showRemovedItems | 展示在 dsh 里已删除的工作区 / 已归档的对话(默认隐藏) | false |
| leanMode | 轻简模式(省 token):总结间隔拉到 90 秒、不喂推理内容、气泡间隔翻倍 | false |
| topicOrder | 线索排序:llm(AI 组织顺序)/ created(按创建时间倒序,最新在上) | llm |
| eyeAnimation | 收起小球跟随鼠标的数字瞳孔、眨眼动画 | false |
| proactiveDisplay | 主动展示气泡 | true |
| enabled | 插件总开关(关闭后隐藏悬浮窗、停止记录) | true |

使用

- 点线索标题:展开阶段历程;步骤收在「显示步骤(N 步)」按钮后面,避免上千步的流水账把脉络淹没
- 点历程 / 步骤:跳转到对话里的对应位置
- 右键线索:重命名 / 删除 / 合并
- 拖拽线索到另一条上:合并(可走 AI,也可走规则)
- 右键工作区:重新生成该工作区的全部线索
- Esc:逐层关闭浮层(右键菜单 → 画笔菜单 → 导航下拉 → 搜索 → 便签 → 展开的线索)

工作原理

1. host 半订阅 dsh 的会话事件流,把事件归一化成「步骤」,按规则即时聚成线索
2. 累积到一定量后把上下文交给 DeepSeek 总结,产出线索、阶段历程与摘要
3. client 半轮询快照渲染悬浮窗;步骤正文按需拉取(展开时才请求)

几个值得一提的实现细节:

- 事件序号是全局的:step.seq 跨会话递增(可到百万级),所以跳转定位必须用会话内的相对位置 (seq - min) / (max - min),不能拿步骤条数当分母
- 时间戳来自事件本身:每个 dsh 事件都带 time,host 直接采用它;若用「插件处理这一刻」代替,历史重放会让成千上万条步骤的时间挤在同一秒,定位就失效了
- 重新生成有保护:读不到事件日志时不清空;结果为空或缩水到不足原来的 1/3 时整体回滚;已锁定与手动合并过的线索重建后会放回

已知限制

- 旧线索的定位精度:早期版本生成的线索里,步骤时间记的是「导入时刻」而非真实时间,只能按事件序号比例估算位置(±几条消息)。重新生成该会话的线索即可修正
- 主动展示气泡依赖浏览器的定时器;标签页长时间后台时可能被节流,间隔会变长

开发

- lib/index.js — host 半:路由、事件处理、规则聚类、LLM 总结、持久化
- lib/client.js — client 半:悬浮窗 UI(零构建,纯 h())
- cordis.patch.yml — dsh 插件注册与基线配置

改完 host 需要重启 dsh;只改 client 的话刷新浏览器即可。

许可

代码采用 MIT 许可证。

内置的皮肤头像(DeepSeek 娘 / 鲸鱼娘)是社区二创作品,不随 MIT 授权,版权归各自权利人所有。
它源自「溟月」(作者:上善无形,以 CC BY-NC-SA 4.0 开放二创),DeepSeek 版由 B 站用户 ZipZipPipe 二次创作。
使用时请遵循 署名 / 非商用 / 相同方式共享 三条要求;商业用途需先取得权利人许可。

详见 第三方素材说明。

本项目由人机协作开发:需求、验收与产品判断由人类给出,实现与排查由 AI 完成。
预览分享卡片长什么样 ↓Celebrate-W/dsh-topic-trail
分享 · DeepSeek Harness Hub
Celebrate-W/dsh-topic-trail

会话工作线索悬浮窗:把和 AI 的长对话实时提炼成可跳转的「线索」,并用 DeepSeek 生成话题、进度与阶段历程

回到顶部