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

会话档案流 YeqingTang/dsh-session-flow

DeepSeek Harnessv1.5.0
YeqingTang16 天前有提交已提供中文文档扫描:含敏感能力

DSH 会话信息流重设计插件:跨会话档案柜,折叠时间线、血缘树、检索、双模式摘要、ZIP 导出、实时跟踪。重新设计 DSH 会话信息流:跨会话归档,带折叠时间线、血缘树、检索、摘要、ZIP 导出和实时跟踪。

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-session-flow
npm 源 · dsh-session-flow 的发布者账号已校验与本仓库一致

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包dsh-session-flow @ 1.5.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 46 处,展示前 31 条)
  • 读取本地文件
    lib/host.js:249
    const disk = JSON.parse(readFileSync(cacheFile, 'utf8'))
  • 读取本地文件
    lib/host.js:273
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/host.js:273
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/host.js:274
    writeFile(cacheFile, JSON.stringify({
  • 读取本地文件
    lib/host.js:295
    files = readdirSync(td)
  • 读取本地文件
    lib/host.js:300
    try { st = statSync(p) } catch { return null }
  • 删除本地文件
    lib/host.js:312
    try { rmSync(f.p); removed += f.size } catch {}
  • 读取本地文件
    lib/host.js:840
    try { st = statSync(found.file) } catch { st = null }
  • 读取本地文件
    lib/host.js:895
    try { st = statSync(found.file) } catch { st = null }
  • 删除本地文件
    lib/host.js:1403
    rmSync(p)
  • 发起网络请求
    lib/client.js:3
    `);window.__ModuleLoader__.load({id:"dsh-session-flow",factory:je=>{var nt={exports:{}},Pn=nt.exports;let st=je("react"),{useState:S,useEffect:P,useMe
  • 读取本地文件
    lib/archive.js:186
    const buffer = readFileSync(file)
  • 读取本地文件
    lib/archive.js:191
    return readFileSync(file, 'utf8')
  • 读取本地文件
    lib/archive.js:371
    try { entries = readdirSync(sessionDir, { withFileTypes: true }) } catch { return null }
  • 读取本地文件
    lib/archive.js:399
    if (!existsSync(root)) return []
  • 读取本地文件
    lib/archive.js:401
    for (const name of readdirSync(root)) {
  • 读取本地文件
    lib/archive.js:404
    try { st = statSync(dir) } catch { continue }
  • 读取本地文件
    lib/index-store.js:38
    const raw = JSON.parse(readFileSync(workspaceIndexFile(home, wsName), 'utf8'))
  • 读取本地文件
    lib/index-store.js:48
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/index-store.js:48
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/index-store.js:51
    writeFileSync(tmp, JSON.stringify(index, null, 2))
  • 写入本地文件
    lib/index-store.js:52
    renameSync(tmp, file)
  • 读取本地文件
    lib/index-store.js:124
    if (!existsSync(root)) return null
  • 读取本地文件
    lib/index-store.js:125
    for (const wsName of readdirSync(root)) {
  • 读取本地文件
    lib/index-store.js:127
    try { if (!statSync(wsDir).isDirectory()) continue } catch { continue }
  • 读取本地文件
    lib/renames.js:26
    if (!existsSync(renamesFile(home))) return renames
  • 读取本地文件
    lib/renames.js:27
    const raw = JSON.parse(readFileSync(renamesFile(home), 'utf8'))
  • 读取本地文件
    lib/renames.js:45
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/renames.js:45
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
  • 写入本地文件
    lib/renames.js:48
    writeFileSync(tmp, JSON.stringify({ version: RENAMES_VERSION, items: Object.fromEntries(renames) }, null, 2))
  • 写入本地文件
    lib/renames.js:49
    renameSync(tmp, file)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

界面预览

6 张 · 点击查看大图

功能亮点

  • 跨会话档案柜
  • 折叠时间线
  • 检索与ZIP导出
v1.5.02026-10-18
P1-A 系列:会话变更清单 + 文件反查 + 差异级变更视图(用户验收通过)。 · 新增 · 会话变更清单:详情页新增折叠区——按文件生命周期语义分组「新建文件 / 编辑文件 / 执行命令」,各带回合号(点击展开并定位该回合) · 差异级变更视图:清单条目可展开 diff 卡——卡内固定文件头(路径 + 新建/覆盖/编辑徽标 + 回合号);edit 行级红删绿增(公共首尾各留 2 行上下文);write 显示「新建/覆盖 · N 行」 · 命令成败标记:执行命令按 tool 结果标红失败项(✗ + 划线) · 文件↔会话反查:总览新增「文件反查」——输入路径片段列出编辑过匹配路径的会话(按时间倒序、点击直达详情);多会话且时间窗重叠亮 ⚠ 强标记(并行改动风险),先后改动显示弱标记 ×N · 侧边栏入口对齐官方 panelRow 规范(min-height 36 / radius-md / label-primary / interactive-bg-hover / 图标 18px;挂载进官方 panelList 导航容器) · 变更 · 索引格式升级(INDEX_VERSION 6→9):changes(写入/修改/命令清单,含 failed / isNew)+ editedFiles 反查索引;升级后首开自动全量重扫一次 · 时间线磁盘缓存带格式版本(新增派生字段立即生效,不再按 mtime 命中旧缓存) 验证:全套 24 脚本绿;真机验收通过(变更清单/反查/侧栏对齐/冲突标记)。
v1.4.92026-10-18
修复 DSH STORE 目录里 dshReleases 全 unknown 的根因,并修正运行时兼容声明的解析方式。 · 修复 · dshReleases 全 unknown 的根因:商店扫描器会把每个声明的 release 再按 engines.dsh / @deepseek-ai/dsh-* peer 范围复核;此前 dsh peer 范围是 "*",商店的 parseDshRange 不支持 (仅 >= =0.1.2-rc.1 <0.3.0" 并把 dsh- peer 改为同一范围,商店将保留逐版本 dshReleases 的真实状态 · 运行时兼容判定改由 engines.dsh 单独决定(dsh 官方语义:有 engines.dsh 时忽略 dsh-* peer),对 0.1.2-rc.1 ~ 0.2.1-rc.2 行为不变 代码无功能改动;验证:设置模型 / 客户端 factory 回归通过。
v1.4.82026-10-18
纯文档版本:README 补齐 DSH STORE 提交自检所需的合规信息(中/英双份)。 · 文档 · 外部依赖与运行条件:运行环境与逐版本兼容声明位置、Node ≥ 22.19(内置 zstd)、唯一运行依赖 @deepseek-ai/schemastery、无生命周期脚本、Bundle Patch 只插入自身、第三方项目与命名空间声明 · 权限与数据边界:读 ~/.dsh/sessions 只读 / 只写插件私有目录 / 本机路由走宿主鉴权且不对外发请求 / 只读官方会话投影 / 可选宿主 llm 服务;不收集遥测,ZIP 本地导出,设置写入 profile patch · 已知限制与风险:存档代际演进、首扫性能、并入右栏的版本依赖、LLM 摘要前置条件、DOM 级增强随宿主 DOM 变化的适配风险、与官方 UI 的边界 代码无改动(v1.4.7 功能不变)。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-session-flow — DSH 会话回顾与归档插件 把 DSH 会话的原始消息流重构成「可折叠的信息流 + 会话级汇总」:每个会话变成一张档案卡,跨工作区回顾、检索、导出。官方会话视图(Trajectory / Chat)擅长正在发生的微观检查,本插件补足事后回顾 / 归档 / 洞察这一层。 界面一览 | 总览工作台 | 会话流标签页 | | 总览工作台 | 会话流标签页 | | 会话卡片墙:标题、状态、结论摘要行、首个任务;hover ✎ 行内重命名 | 原生会话页内嵌「会话流」标签:当前会话直接回顾 | | 轮次悬浮条 | 跨会话全文检索 | | 轮次悬浮条 | 跨会话全文检索 | | 对话页左侧轮次导航:收拢短横条 ⇄ 展开条目卡,一键跳转任意轮次 | 总览自由文本搜索触发全文模式:跨工作区召回,命中直达定位 | | 详情并入右栏 | 折叠详情页 | | 详情并入右栏 | 折叠详情页 | | 详情并入官方右侧面板:主对话与会话流并行,拖拽调宽 | 回合默认折叠,展开按真实时间序;右侧四标签导航 | 功能 | 能力 | 说明 | | 总览工作台 | 会话卡片(状态/错误/耗时)+ 结论摘要行;排序、筛选、工作区 tabs | | 结构化搜索 | tool: file: err: 前缀 + 自由文本 |
展开完整文档(README 剩余 1 节)
dsh-session-flow — DSH 会话回顾与归档插件

把 DSH 会话的原始消息流重构成「可折叠的信息流 + 会话级汇总」:每个会话变成一张档案卡,跨工作区回顾、检索、导出。官方会话视图(Trajectory / Chat)擅长正在发生的微观检查,本插件补足事后回顾 / 归档 / 洞察这一层。

界面一览

| 总览工作台 | 会话流标签页 |
| 总览工作台 | 会话流标签页 |
| 会话卡片墙:标题、状态、结论摘要行、首个任务;hover ✎ 行内重命名 | 原生会话页内嵌「会话流」标签:当前会话直接回顾 |

| 轮次悬浮条 | 跨会话全文检索 |
| 轮次悬浮条 | 跨会话全文检索 |
| 对话页左侧轮次导航:收拢短横条 ⇄ 展开条目卡,一键跳转任意轮次 | 总览自由文本搜索触发全文模式:跨工作区召回,命中直达定位 |

| 详情并入右栏 | 折叠详情页 |
| 详情并入右栏 | 折叠详情页 |
| 详情并入官方右侧面板:主对话与会话流并行,拖拽调宽 | 回合默认折叠,展开按真实时间序;右侧四标签导航 |

功能

| 能力 | 说明 |
| 总览工作台 | 会话卡片(状态/错误/耗时)+ 结论摘要行;排序、筛选、工作区 tabs |
| 结构化搜索 | tool: file: err: 前缀 + 自由文本 |
| 折叠详情页 | 回合折叠成「用户发言+结论」,展开按真实时间序;按需加载 |
| 四标签导航 | 用户发言 / 工具 / 错误 / 检索,点击定位高亮 |
| 血缘树 | 子代理派生关系树(离线档案 + 运行时实时双通道) |
| 双模式摘要 | 规则摘要(零开销实时组装)+ LLM 摘要(落盘复用、新对话提示重生成) |
| 实时跟踪 | 运行中会话 3 秒轮询,呼吸高亮 + 生成标志 |
| ZIP 导出 | 概览 + 时间线分卷 Markdown 报告 |
| 会话重命名 | 与官方标题同一数据源(log-backed),双向实时同步,随时改名 |
| 健康监控 | 活跃 / 工具执行中 / 静默中 / 疑似卡死四级分类;总览徽标 + 详情实时条 |
| 头部健康芯片 | 会话页顶栏模式标识右侧,竖条收拢 ⇄ 悬浮展开状态卡,点击直达详情 |
| 会话流标签页 | 原生会话页内嵌标签,与工作台互跳 |
| 轮次悬浮条 | 对话页左侧轮次跳转(仅对话页显示) |
| 跨会话全文检索 | 内容级召回,命中直达会话流标签页定位 |
| 详情并入右栏 | 与主对话双视角并行 |
| 缓存管理 | 索引/时间线缓存查看与清理(不影响 DSH 数据) |

安装

插件市场搜索 dsh-session-flow,或:
dsh plugin add dsh-session-flow
dsh plugin add github:YeqingTang/dsh-session-flow

安装后重启 DSH Web 服务并硬刷新浏览器(Ctrl+Shift+R),侧边栏出现「会话流」入口即成功。

环境要求:DSH Web GUI(最新稳定版);Node.js ≥ 22.19(内置 zstd 解码,零第三方依赖)。

使用

- 总览:侧边栏「会话流」→ 全部会话卡片。搜索支持 tool: / file: / err: 前缀;自由文本 ≥2 字符自动追加跨会话全文检索结果。
- 详情:点卡片进入。回合默认折叠,点回合头展开;右侧四标签导航定位;顶部可生成 LLM 摘要、导出 ZIP、并入右栏、查看血缘。
- 原生会话页:会话顶部「会话流」标签直接回顾当前会话;对话页左侧轮次悬浮条跳转任意轮次;标题 hover ✎ 重命名(与官方标题实时同步)。
- 健康状态:顶栏模式标识右侧的健康芯片(竖条:绿=活跃 / 黄=工具执行中 / 红=疑似卡死),悬浮展开看详情,点击直达会话流详情页;总览卡片与详情实时条同步显示徽标。
- 实时:运行中会话点「实时」,3 秒自动刷新。

外部依赖与运行条件

- 运行环境:DSH Web GUI(0.1.2-rc.1 ~ 0.2.1-rc.2,逐版本兼容声明见 package.json 的 dsh.compatibility.dshReleases);Node.js ≥ 22.19(使用 Node 内置 zstd 解码,无第三方解码库)。
- 运行依赖:仅 @deepseek-ai/schemastery(DSH 官方同源 schema 库;用于设置表单 schema 与 .volatile() 热更新)。
- 无生命周期脚本:不声明 preinstall / install / postinstall / prepare,安装过程不执行任何脚本。
- 以 Bundle Patch 方式挂载:cordis.patch.yml 只插入本插件自身条目,不禁用、替换或遮蔽任何官方组件。
- 独立第三方项目,非 DeepSeek 官方组件;包名不使用 @deepseek-ai/ 命名空间。

权限与数据边界

| 访问范围 | 用途 | 边界 |
| 读 ~/.dsh/sessions/ | 解析会话存档(zstd/JSONL)生成索引与时间线 | 只读,不修改、不删除会话文件 |
| 写 ~/.dsh/session-flow/* | 插件私有索引、时间线缓存、重命名映射 | 只写此目录;缓存管理面板只清理这里 |
| 本机 POST /api/session-flow | 索引 / 详情 / 检索 / 导出 / 健康检查 | 注册在 DSH 自带 webServer 上,沿用宿主登录鉴权;服务端不主动对外发起网络请求 |
| 读官方会话列表投影(sessions.list) | 列表标题、重命名同步 | 只读;不修改官方状态 |
| 宿主 llm 服务(可选) | LLM 摘要 | 只经宿主已配置的模型调用,不引入额外供应商 |

- 不收集遥测、不上报使用数据;ZIP 导出为本地文件。
设置保存写入 DSH profile patch(~/.dsh/profiles/<profile>/cordis.patch.yml),与官方设置同一存储。

已知限制与风险

- 会话存档是宿主实现细节:dsh 每次存档代际迁移(v1→v2→v3→v4)都可能改变读取口径。本插件按「代际号最大」自适应,并为 v4 的 isError 变化做了双口径兼容,但不保证未来全新格式零改动。
- 索引为增量缓存:首次安装 / 升级后首次打开会全量扫描一次;数百 MB 的超大会话首扫较慢,不影响宿主数据。
- 「详情并入右栏」依赖官方右栏标签页体系(dsh ≥ 0.1.5)或旧 details 列(≤ 0.1.4);自定义外壳两者都没有时,按钮会禁用并提示原因。
- LLM 摘要需要你已在 DSH 中配置可用模型;未配置时仅规则摘要可用。
- DOM 级增强(轮次悬浮条 / 官方 rail 增强 / 健康芯片)通过 DOM 观察实现(官方未提供扩展槽位);宿主大版本若调整 DOM 结构可能静默失效,需随版本适配。
- 不接管、不修改任何官方 UI 行为;与第三方皮肤 / 布局插件共存时,可能因布局差异需要额外适配。

致谢

- DeepSeek Harness (dsh) —— 运行基础。
- @deepseek-ai/dsh-session-persistence-jsonl —— zstd 多帧扫描算法(lib/archive.js 借鉴,MIT 许可)。
- dsh-web-ui(@linxin666 全家桶) —— 侧边栏入口与面板挂载模式参照,未复制代码。
- dsh-webui-market-plugin —— 插件市场机制与分发渠道。

本插件遵循 Apache-2.0 许可,使用第三方代码时保留其原始许可声明。

许可

Apache-2.0
预览分享卡片长什么样 ↓YeqingTang/dsh-session-flow
分享 · DeepSeek Harness Hub
YeqingTang/dsh-session-flow

DSH 会话信息流重设计插件:跨会话档案柜,折叠时间线、血缘树、检索、双模式摘要、ZIP 导出、实时跟踪。重新设计 DSH 会话信息流:跨会话归档,带折叠时间线、血缘树、检索、摘要、ZIP 导出和实时跟踪。

这是你的仓库?认领条目

回到顶部