对话时间线横条:输入框上方按轮次聚合的时间线,悬停显示该轮用户提示词,点击直接跳转到对话中的对应位置。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-conversation-timeline
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:bycall/dsh-conversation-timeline
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness(dsh)对话时间线插件:把当前会话渲染成带时间节点的有序时间线(轮次、消息、工具调用、命令、压缩、重试、错误等交互节点),点击任意节点直接跳转到对话中的对应位置。
背景:dsh web 对话界面原本没有时间线/时间节点/点击跳转能力(内置 Trajectory 只是工具调用级时序账本,且明确「无锚点深链」)。本插件补上这一能力。
功能
| 能力 | 说明 |
|---|---|
| 嵌入对话流的 dock 横条 | 输入框上方的横向时间线导航条(conversation.input.dock 插槽,官方预留的"独占一行"位),左右边缘与文本显示宽度(--dsh-chat-content-width,748px)对齐:按轮次聚合为胶囊节点(状态圆点 + 轮号 + 起始时间,当前轮高亮、运行态绿色脉冲、出错红色),节点间细连接线串成时间链,鼠标悬停弹出该轮用户提示词气泡(portal 到页面根部,不受横向滚动容器裁剪);横向滚动,点击任意轮次直接跳转到该轮第一条消息。聊天时始终可见,不占视图切换位。 |
| 点击跳转 | 点击轮次胶囊 → 切回「对话」视图 → 平滑滚动到该轮第一条消息并短暂高亮。若目标在未加载的更早记录中,自动调用 loadOlder(最多 3 次)后重试。 |
| 实时刷新 | 基于会话快照驱动,新消息/新工具调用/轮次结束即时出现在时间线上。 |
安装
方式一:插件市场(发布后推荐)
插件收录进 awesome-dsh-plugin 后,在 DSH 的「设置 → 插件市场」搜索 dsh-conversation-timeline 一键安装。
方式二:本地开发安装
dsh plugin --profile web add file:/path/to/dsh-conversation-timeline
然后在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 数组中加入 "dsh-conversation-timeline",重启 DSH.app(或硬刷新浏览器窗口)生效。
卸载
dsh plugin --profile web remove dsh-conversation-timeline
工作原理
- 插槽注册(客户端):通过
ctx.slots注册一个会话级插槽——conversation.input.dock(idtimeline-dock):输入框上方的横向时间线导航条(dock 插槽的 owner share 直接提供session会话快照 +input状态,无需再订阅)。
- 数据来源:插槽组件拿到会话快照,读取
snapshot.chat.order/snapshot.chat.nodes(节点的key、kind、data、location)与snapshot.turnTimings(轮次起止时间)聚合为轮次胶囊;轮次提示词取该轮第一条用户消息(user/steering 节点可能不带 turn location,做了归属回退与 pending 挂载),无则回退首个有文本节点。 - 跳转机制:每条消息行 DOM 都带
data-chat-anchor-key="<Context key>"(dsh 聊天视图的内置语义锚点),跳转 = 找到该行 →scrollIntoView+ 高亮;dock 点击先按 label 点击[role="tab"]切回「对话」(中文「对话」/ 英文「Chat」,回退首个 Tab),再轮询等待目标行挂载后滚动(社区既有模式,参考 dsh-mnemon)。
目录结构
dsh-conversation-timeline/
├── package.json # dsh.bundle.patch + dsh.client + exports["./client"]
├── cordis.patch.yml # 挂载插件到 profile 层叠
├── lib/
│ ├── index.js # 服务端挂载入口(UI-only,最小实现)
│ └── client.js # 客户端 bundle(window.__ModuleLoader__.load 格式)
└── test/
└── smoke.cjs # 冒烟测试(mock ModuleLoader + ctx)
开发说明
- 纯手写客户端 bundle(仅依赖
react,零构建步骤),格式遵循 dsh web 的 lazy-CJS 模块表契约:window.__ModuleLoader__.load({ id, factory })。 dsh.client.inject声明了插件可用的客户端服务:slots/sessions/locale。- 校验:
node --check lib/client.js;冒烟测试node test/smoke.cjs(mock__ModuleLoader__与 cordis ctx,断言仅conversation.input.dock[timeline-dock]注册、其余会话插槽无占用)。 - 时间线条目数据提取为防御式(对节点
data形态差异做兜底),新节点种类默认归入「系统事件」。
License
MIT
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 8597
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 8597
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4424
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 4268
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4098
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1445
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。