dsh-trace-compare

41Star2Fork2Issue0Watching

为 DSH 智能体执行轨迹画时间轴迷宫:主干路径、失败探路、盲目重试一目了然;支持上传日志单/双会话对比与会话实时跟随,无需配置。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
HTML
License
MIT
分支
main
agent-observabilityagent-trajectoryai-agentsdeepseek-harnessdshdsh-pluginllm-agentsobservability

安装

$ dsh plugin --profile web add github:lamost423/dsh-trace-compare

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 lamost423/dsh-trace-compare:先查看仓库 https://github.com/lamost423/dsh-trace-compare.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

把 DSH 智能体真实的执行轨迹画成一张时间轴迷宫:它坚持推进的主干、失败或扑空的支路、折返点都落在同一根时间上,肉眼判断「为什么跑成这个结果」。

核心能力

  • 上传 1 个 session log 画单次运行的迷宫时间轴(支持 .jsonl 与 .jsonl.zstd,浏览器端解压)
  • 上传 2 个 session log 做同轴对比:按轮次自动对齐回答节点、可手动锚点、按轮次盘点支路差额
  • 实时迷宫页签随当前会话执行生长,工具结果一旦落定,支路立刻显现
  • 每步失败/扑空/盲目重试都有判定依据(错误标志 → 强失败特征 → 弱失败特征 → 按工具分类的四层规则 + 行为学重试簇)
  • 节点长度 = 步骤真实耗时(并行工具调用按瀑布行分行),悬停预览、点击打开详情面板、滚轮缩放、拖拽平移
  • 一键导出当前视图为 SVG 或 2x PNG(浅色底),输入框支持「只看失败/重试」+ 按工具过滤 + 全文搜索

技术实现

  • 语言: TypeScript + 内嵌 JS(迷宫页面跑在自包含 HTML 里)
  • 关键依赖: @deepseek-ai/cordis、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots、fzstd
  • 架构模式: Cordis 客户端插件,通过 slots 注入 sidebar.footer.action(入口按钮)+ shell.overlay(上传对比浮层)+ conversation.view(实时迷宫页签);可视化页面用 sandbox iframe(srcDoc)渲染,主机只通过 postMessage 同步主题与语言
  • 入口文件: src/client/index.ts(插件装配)、src/client/maze-upload.html(自包含可视化页面,构建时由 tsdown 注入 fzstd UMD)

适用场景

调试 DSH 智能体为什么跑出某个结果——回看整次运行的主干和支路;当同任务用不同模型/不同参数跑出差异时,把两份 log 叠在一起对比哪一步走偏了;边跑边盯实时页签,看到当前模型在哪一步犹豫、哪一步失败、是否在重复同一件事。

前置依赖与兼容性

依赖最低版本说明
DSH0.1.0-rc.6+已对 rc.6 全量验证、rc.8 实机验收,peer 范围覆盖 rc.6 到当前 rc 线
Node^22.19.0 或 >=24.0.0engines 声明
平台跨平台纯前端插件,不依赖原生模块
原生模块zstd 在浏览器内用 JS 软解压(fzstd)或原生 DecompressionStream

安装方式

dsh plugin --profile web add github:lamost423/dsh-trace-compare

配置项

本插件无需额外配置。

常见问题

Q: 安装后要做任何配置吗?

A: 不需要。安装并重启 dsh web 后,侧边栏底部自动出现「Trace 对比」入口,每个会话视图也会多一个「实时迷宫」页签,立即可用。

Q: 上传的 session log 内容会发到服务器吗?

A: 不会。整个解析、判定、可视化都跑在 iframe srcDoc 沙箱里,浏览器端完成;日志内容不会到达宿主或任何外部服务。

Q: 支持哪些 session log 格式?

A: 支持纯文本 .jsonl,以及 ~/.dsh/sessions/ 目录下的 .jsonl.zstd。zstd 在浏览器里直接解压(原生 DecompressionStream 优先,否则用内置 fzstd 软解压)。按内容识别格式,文件名任意(如 macOS 副本「session.jsonl 2」也能直接选)。

Q: 实时迷宫页签能看历史更早的步骤吗?

A: 不能。实时页签只画当前对话已加载的事件窗口,窗口外的陈旧步会被丢弃并标注「另有 N 步更早历史未加载」。要看完全量历史,可以下载 log 后用「Trace 对比」上传。

Q: 导出的图是什么主题?

A: 固定浅色底,与页面当前是明是暗无关——专门为分享场景设计。

Q: 子代理任务会出现在迷宫里吗?

A: 在具备后台加载子会话历史(SessionFace.open)能力的宿主上会。官方 0.1.0-rc.6 至 rc.8 暂缺此能力,插件自动静默隐藏,不会报错,其余功能不受影响。

Q: 判定工具调用成功还是失败用的什么方法?

A: 纯规则,不调用 LLM——四层判定:错误标志 → 强失败特征(开头与末尾窗口)→ 弱失败特征(仅开头 300 字符)→ 按工具分类。配上行为学盲目重试簇检测(参数相似 + 簇内含失败)。阈值都在 src/client/verdict.js 的 VERDICT_RULES。

Q: 怎么卸载?

A: 通过 dsh 的标准插件命令移除,然后重启 dsh web 即可。

上手难度

入门 — 安装即用,没有任何配置项;上传或切到实时页签就能看到结果。

已知问题与限制

  • 子代理支路依赖宿主 SessionFace.open 能力,官方 rc.6–rc.8 暂缺,插件自动静默降级为不显示子代理(CHANGELOG.md:5-15 / src/client/subagent-lanes.ts:84-102)
  • 实时页签只画对话已加载的事件窗口,窗口外陈旧步被丢弃并标注「⏮ 另有 N 步更早历史未加载」(README.md:43-46)
  • 上传 2 个 session log 时,最多支持 2 个;多于 2 个会被页面拒绝(maze-upload.html:275)
  • 导出的 SVG/PNG 固定浅色底,与页面当前主题无关(README.md:35)
  • 双会话对比的「轮次对齐线」只连两边都有的轮次,单边独有的轮次在支路盘点里以「—」显示(README.md:32-34)

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/lamost423/dsh-trace-compare)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录