在鱼骨时间线上查看会话血缘并双击跳转
31.1/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add columforge/dsh-session-timeline该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 26 处,展示前 16 条)
- 发起网络请求src/client/index.ts:209
return fetch(API_BASE + '/' + action, { - 发起网络请求src/client/index.ts:221
return fetch(API_BASE + '/workspaces', { signal: ctrl.signal }) - 发起网络请求src/client/index.ts:237
fetch(listUrl(workspace, sessionId), { signal: ctrl.signal }) - 发起网络请求src/client/index.ts:467
fetch(API_BASE + '/turns?' + q.toString(), { signal: ctrl.signal }) - 发起网络请求src/client/index.ts:490
fetch(API_BASE + '/turns?' + q.toString(), { signal: ctrl.signal }) - 发起网络请求src/client/index.ts:1181
fetch(listUrl(workspace, sessionId), { signal: ctrl.signal }) - 读取本地文件src/index.ts:190
if (!existsSync(file)) return { doc: { version: 1, links: [] }, fail: null } - 读取本地文件src/index.ts:191
const parsed = JSON.parse(readFileSync(file, 'utf8')) as Partial<Doc> - 写入本地文件src/index.ts:201
mkdirSync(root, { recursive: true }) - 写入本地文件src/index.ts:204
writeFileSync(tmp, JSON.stringify(doc, null, 2) + '\n', 'utf8') - 写入本地文件src/index.ts:205
renameSync(tmp, file) - 写入本地文件src/index.ts:217
mkdirSync(root, { recursive: true }) - 读取本地文件src/index.ts:231
const st = statSync(archiveFile) - 读取本地文件src/index.ts:233
const parsed = JSON.parse(readFileSync(archiveFile, 'utf8')) as { global?: { archivedSessionIds?: unknown } } - 读取本地文件src/index.ts:255
for (const ent of readdirSync(sessionsRoot, { withFileTypes: true })) { - 读取本地文件src/index.ts:257
if (existsSync(join(sessionsRoot, ent.name, sessionId))) {
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 插件:鱼骨式会话时间线,支持交接谱系与手动关联
README
由 DeepSeek 最新模型翻译生成dsh-session-timeline
DSH(DeepSeek Harness)插件:在右侧边栏新增「会话时间线」页签,把一个工作区的全部会话画成一条鱼骨时间线——原生 handoff 血缘、手工拖拽衔接、分支扇出一图全览,双击即达任意历史会话。
会话时间线总览
功能一览
| 能力 | 说明 |
| 鱼骨时间线 | 中央水平主轴 + 日期刻度,会话节点在轴上下交替排布,鱼刺连轴 |
| 血缘可视化 | 蓝实线 = handoff 衔接(父单子),紫实线 = 分支(扇出,父带 ⑂N 徽章),虚线橙 = 手工衔接 |
| 手工衔接 | 节点间拖拽即可补记「这个会话接着那个会话」,与原生血缘合并计算语义 |
| handoff 待接提示 | 紫框 = 调用过 handoff skill 且无前驱(待接前驱);金框 = 出现过 handoff 调用且无后继(待接后继) |
| 归档会话显示 | 头部切换「显示全部会话(默认,归档框虚线 + 归档标签)/ 隐藏归档会话」,归档状态来自工作区注册表归档集 |
| 详情区 + 轮次条 | 点击节点查看会话详情;一排轮次横条翻看完整对话,handoff 调用轮金色高亮 |
| 工作区切换 | 顶部下拉切换会话桶,「当前会话工作区」自动跟随;页签计数实时显示顶层会话数 |
展开完整文档(README 剩余 1 节)
dsh-session-timeline
DSH(DeepSeek Harness)插件:在右侧边栏新增「会话时间线」页签,把一个工作区的全部会话画成一条鱼骨时间线——原生 handoff 血缘、手工拖拽衔接、分支扇出一图全览,双击即达任意历史会话。
会话时间线总览
功能一览
| 能力 | 说明 |
| 鱼骨时间线 | 中央水平主轴 + 日期刻度,会话节点在轴上下交替排布,鱼刺连轴 |
| 血缘可视化 | 蓝实线 = handoff 衔接(父单子),紫实线 = 分支(扇出,父带 ⑂N 徽章),虚线橙 = 手工衔接 |
| 手工衔接 | 节点间拖拽即可补记「这个会话接着那个会话」,与原生血缘合并计算语义 |
| handoff 待接提示 | 紫框 = 调用过 handoff skill 且无前驱(待接前驱);金框 = 出现过 handoff 调用且无后继(待接后继) |
| 归档会话显示 | 头部切换「显示全部会话(默认,归档框虚线 + 归档标签)/ 隐藏归档会话」,归档状态来自工作区注册表归档集 |
| 详情区 + 轮次条 | 点击节点查看会话详情;一排轮次横条翻看完整对话,handoff 调用轮金色高亮 |
| 工作区切换 | 顶部下拉切换会话桶,「当前会话工作区」自动跟随;页签计数实时显示顶层会话数 |
| 一键跳转 | 双击节点(或详情区按钮)直接切换到该会话,跨工作区生效 |
| 界面语言 | 跟随 DSH 设置的语言(中文 / English / 日本語 / Español / Français / Deutsch / Русский / Português)即时切换 |
安装
前置:已安装并运行 DSH(DeepSeek Harness)。
打开 DSH 的插件页 → 添加插件,按下列任一方式安装:
1. npm 包名(推荐,待发布):填 @dsh-external/session-timeline(npm 发布后可用,见 发布渠道)
2. Release 压缩包(立即可用):从 GitHub Releases 下载 .tgz,解压后填入解压目录的本地路径
3. 源码构建(开发者):
git clone https://github.com/columforge/dsh-session-timeline.git
cd dsh-session-timeline
npm run build # 需 DSH_CHECKOUT 指向 DSH 源码 checkout(见下)
然后把本目录填入「添加插件」的本地路径。
使用指南
时间语义
- 时间线定位 / 轴刻度 / 节点框内时间 = 最后活动时间(lastAt)
- 创建时间 = 首条真实用户消息的时间(仅详情区显示);两者不同时详情区会标注「日志创建」,用于识别"打开过但很久才开始对话"的空壳会话
画布交互
- 缩放:左上角 − N% + 控件(±10%,10%~300%,围绕视口中心锚定;点击 N% 复位 100%)
- 滚轮:浏览器原生滚动(上下/左右),面板不拦截;Ctrl+滚轮 = 浏览器整体缩放
- 平移:画布空白处按住左键拖拽(grab → grabbing);在节点上拖拽 = 建立手工衔接连线
排序与方向
- 头部下拉切换排序键:按创建时间(默认)/ 按最后活动
- 方向:从新到老(默认)/ 从老到新;从新到老时主轴箭头在左端
归档会话
- 头部下拉切换:显示全部会话(默认)/ 隐藏归档会话;归档状态来自工作区注册表的归档集(即 DSH 侧边栏「归档」动作写入的数据)
- 显示全部模式下,归档会话框为虚线边框 + 「归档」标签,详情区标注「已归档」;隐藏模式下归档会话从时间线移除(触及它们的连线一并消失)
- 头部统计在有归档会话时追加归档数;页签计数跟随所选模式
血缘链
- 节点 = 工作区的顶层会话(session- 前缀;subagent 会话不入线)
- 独立会话在鱼骨层(主轴上下交替);handoff 链子会话用血缘深度行向轴外侧叠行,分支子与父同侧扇出
- 连线走正交避障路由(A* + 拥挤代价错开平行走线),绝不出斜线、不穿会话框
- 血缘链 = 原生边 ∪ 手工边:出入度、⑂N 徽章、分支判定、详情区叙述全部按合并链计算——父已有原生单子再补一条手工后继时,单子边也显形为紫色分支线
- 「handoff」标签 = 会话实际调用过 handoff skill 或以 handoff 种子开场(不按消息文字匹配)
- 手工条目自带「断开」按钮,删改即时生效
详情区
会话详情与轮次条
- 选中节点显示:标题、创建/最后活动时间、血缘叙述、衔接列表
- 轮次条:每轮一根横条(首/末轮较大,handoff 调用轮金色),点击查看该轮完整对话(用户消息 + 助手回复,各截断 4000 字符);详情外框滚轮 = 上一轮/下一轮
- 「切换到该会话」按钮一键跳转
数据与隐私
- 只读扫描 ~/.dsh/sessions/<bucket>/<sessionId>/session.v4.jsonl.zstd(header、标题、首条用户消息时间、末事件时间、handoff 调用明细;zstd 多帧解码 + mtime/size 缓存)
- 归档状态同样只读:读工作区注册表归档集(服务镜像,兜底 ~/.dsh/storages/workspace.json 的 global.archivedSessionIds)
- 唯一写入:手工衔接落 ~/.dsh/session-timeline/<bucket>.json(按工作区隔离)
- 不上传任何数据,不改动会话存储
API(webserver 前缀路由 /session-timeline/api)
| 端点 | 说明 |
| GET /workspaces | 工作区清单 { ok, workspaces: [{bucket, cwd, sessions, newest}] } |
| GET /list?workspace=<桶\|__global__>&session=<id> | 节点(含 archived 标记)+ 原生边 + 手工衔接清单 |
| GET /turns?session=<id>&workspace=<桶>&turn=N | 轮次明细(&turn=N 单轮按需取) |
| POST /link {workspace?, session?, from, to} | 建立手工衔接(按创建时间归一定向,幂等) |
| POST /unlink {workspace?, session?, from, to} | 删除手工衔接(双向匹配) |
错误响应统一带 { ok: false, error, code, params? }:error 是中文原文(兼容旧客户端/日志),code 为稳定机器码,界面按当前语言翻译(如 workspaceMissing、nativeHandoff、storageWrite)。/turns 的轮次对象附带 userClipped / assistantClipped / assistantReasoning 标志位,截断与推理标记由前端按语言渲染。
开发
npm run build # tsc host + tsdown client(借 DSH checkout 工具链)
npm test # pretest 自动 build,再跑全部单测
- src/index.ts:host——会话桶扫描 + API 路由
- src/parse.ts:纯函数会话日志解析(无插件依赖)
- src/geometry/layout.ts:纯函数布局(版面常量与坐标计算)
- src/geometry/lineage.ts:纯函数血缘链合并语义
- src/geometry/routing.ts:纯函数正交避障路由
- src/client/index.ts:UI——组件、拖拽、详情、渲染
- test/.test.mjs:单测(node:test,导入 lib/ 构建产物)
构建依赖 DSH 源码 checkout 的 tsc/tsdown:export DSH_CHECKOUT=<dsh 源码目录>(build.sh 会自动探测 ~/dsh-harness 等常见路径)。
改 A/布局几何时先读 src/geometry/*.ts 顶部「三个历史坑」注释;验证 = npm test 全绿后再浏览器 DOM 采样(SVG path 的 V/H 是单坐标指令,按 x,y 成对解析会误报)。
发布渠道
- GitHub Releases:每个版本附 npm pack 产出的 tgz(含构建好的 lib/)
- npm(规划中):所有 peer 依赖(@deepseek-ai/dsh-host-webserver 等)均在公共 npm,具备直接发布条件
- 插件市场索引:market-index.json 提供市场格式 1 索引,npm 发布后在 DSH「发现」页添加本仓库 raw URL 即可浏览安装
许可证
BSD-3-Clause预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
columforge/dsh-session-timeline
在鱼骨时间线上查看会话血缘并双击跳转
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目