
Security News
vlt 1.5.0 Adds Agent Skills Management
vlt 1.5.0 links skills from JavaScript dependencies to coding agents, with lockfile versioning and Socket data to filter out known malicious packages.
dsh-trace-compare
Advanced tools
Trace Compare for DeepSeek Harness: upload session logs or follow the live session and visualize the agent's exploration maze — main path, detours, and backtracks on one timeline
中文 | English
还被收录于:fendouai/awesome-deepseek-harness(独立介绍页)· Zhiyuan-Fan/Awesome-DeepSeek-Harness-Plugins · ZeroPointRepo/awesome-dsh-plugins · cccakeee/awesome-dsh-plugins
DeepSeek Harness 的执行轨迹可视化插件:把智能体真实的探索过程画出来——它坚持推进的主干、失败或扑空的支路、以及折返点,全部落在同一根时间轴上。
两个入口,一套视觉语言:


长会话也照样读得清——14 小时、8.6MB 的日志,字字可辨,⌘/Ctrl+滚轮扎进任意一段:

origin: 'subagent'),手动分支和 side-chat 侧聊不入图。依赖宿主「后台加载子会话历史」的能力,官方 rc 线暂缺该能力时自动静默隐藏。body[data-ds-dark-theme] 并 postMessage 进 iframe);独立打开时按系统偏好。时间轴的诚实规则:
⏸ 标注的细缝,标明省略了多久;活动段内的刻度仍显示真实墙钟时间。S15·47),多轮会话的支路不会挂错节点。assistant/message 的 usage(此前的「reasoning N tok」数的是流式段数,不是 token)。日志没有 usage 时标签诚实回退为「推理 N 段(日志未报 token 用量)」——中转站日志常缺推理 token 字段,与原厂日志并排时单位不同,标签自带原因(v0.5.1 起)。判定的诚实规则(v0.2.1 起):
src/client/verdict.js 的 VERDICT_RULES 常量里,可按项目语料调整;页面与实时两条渲染链路共用这一份实现(构建期注入)。按文件内容识别格式,文件名任意(macOS 复制出的「session.jsonl 2」也能直接选):
.jsonl(session 格式 v0 事件流)~/.dsh/sessions/ 下原样的 .jsonl.zstd——浏览器端直接解压(原生 DecompressionStream('zstd') 可用时优先,否则用内置的 fzstd)兼容性:已对官方 0.1.0-rc.6(构建 + 全量测试)与 rc.8(插槽/类型核对 + 实机验收)验证;peer 范围覆盖 rc.6 到当前 rc 线,且随官方每个新 rc 版本跟进复验。
npm install --global @deepseek-ai/dsh@0.1.0-rc.8
dsh plugin --profile web add dsh-trace-compare
dsh web
想钉住特定版本?每个 Release 也附 tgz:dsh plugin --profile web add https://github.com/lamost423/dsh-trace-compare/releases/download/v0.5.2/dsh-trace-compare-0.5.2.tgz
从源码安装:
git clone https://github.com/lamost423/dsh-trace-compare.git
cd dsh-trace-compare
corepack enable
pnpm install
pnpm build
dsh plugin --profile web add .
dsh web
重启 dsh web 后,侧边栏底部出现「Trace 对比」入口,每个会话视图多一个「实时迷宫」页签。
一步进主干还是支路,由这一步最坏的工具判定决定:成功/回答留在主干,失败(红 ✗)、扑空(灰 ·)、无效重试(灰 ↻)整步进支路。单个工具调用按四层判:
[status=Failed]、__EXIT__= 非零、[stderr] 后跟 Error / Traceback 这类包装器硬标记 → 失败。只扫输出开头 300 与末尾 1000 字符——真失败要么开头就报、要么是追加在末尾的 stderr 段,长文本中部引用的报错(git log 提交信息、源码字符串)不算;在此之上叠一层行为学检测:时间序上连续的「同工具 + 参数相似度 ≥0.6」调用簇、且簇内至少一次失败,非失败成员改判无效重试(借鉴 AgentLens 对 SWE-agent 轨迹浪费的确定性检测;不加失败约束会把「连续编辑同一文件」冤枉进去)。刻意不用输出长度、不调用 LLM;每个判定都带依据文本,悬停与详情面板可见。全部阈值在 src/client/verdict.js 的 VERDICT_RULES,可按语料调整;上传页与实时页签共用这一份实现。以上规则由四个真实会话(共 871 步)校准,依据与误报案例见下面各版本说明。
短会话被时间轴 460 秒的固定下限压扁在左侧、对齐标注挤成一团——下限退役,加载即贴合内容跨度。轮次对齐线的耗时口径从「会话开始算起的累计墙钟」改为「本轮耗时」(该轮起点 → 回答完成):两轮之间等用户输入的空闲不再污染两次运行的速度对比。无 usage 真值时的推理量标签改为自解释的「推理 N 段(日志未报 token 用量)」。Release
此前页面文案硬编码中文,英文用户只能对着猜。现在整页 UI 走 zh/en 双字典:嵌入宿主时由宿主组件经 postMessage 推送 dsh 的语言设置并实时跟随(照主题跟随的通道模式),独立打开时按浏览器语言兜底。判定依据从成品文案改为语言无关的结构化键值 {k, p}(verdict.js 只产键值,展示端集中渲染),切语言即时生效、已加载的会话数据无需重新解析。仓库 README 同步调换为中文默认、英文在 README.en.md。Release
模型调 subagent 工具派生的任务,此前在迷宫里只是一根不透明的长条;现在每个 dsh 子代理会话折成主干上分出的聚合支路节点——挂靠在派生它的那一步、共享父会话时间轴,节点子条是子代理全部已判定的工具调用(参数/返回/判定齐全),运行中的实时生长,点击跳回派生位置。入图有纪律:仅 origin: 'subagent' 且非临时会话(手动「在新对话分支」与 side-chat 不算),已结束且活动完全早于可见窗口的陈旧子代理按父会话 preWindow 同口径丢弃。子代理身份贯穿节点标签、悬停卡与详情面板("⤴ 由主干 SN 派生的子代理任务,完成后结果汇回主干"),不再套用失败探索的「此路不通」文案,内部步号不再暴露。依赖宿主 SessionFace.open(后台加载子会话历史)——官方 rc.6–rc.8 暂无此能力,插件自动静默降级、其余功能不受影响。Release

实时页签每当新步骤开始(模型推理中、还没发出第一个工具调用),整张迷宫会瞬间变透明,等工具调用出现才恢复。根因是 tier1 时代的老 bug:非回答节点的标签代码无保护地取 tools[0].name,而 in-flight 步在纯推理阶段 tools 为空——TypeError 把 build() 拦腰打断,所有元素停在初始透明度 0。零工具节点跳过工具标签即修复;用合成推送序列(推理期 → 工具出现 → 结算)实测全程可见。Release
此前一步内多次工具调用折叠成「bash +1」标签,各调用的起止/耗时/判定全被吃掉。现在每次调用画成步骤胶囊条下方的细小条(瀑布惯例):按真实起止摆位、判定色填充、悬停看单次调用详情(命令/返回/依据);泳道高度按该泳道最大并行数自适应(computeLayout 的 parH 区),下方支路弧线自动让位。实测语料:16 轮长会话有 36 个并行步、最大并行 5。Release

页面调色板收敛为 CSS 变量单真相源(SVG 属性色经 readPalette 同源取值),随宿主 dsh 明暗主题自动切换:宿主组件监听 body[data-ds-dark-theme](rc.6 的 ThemePresenter 机制)postMessage 进沙箱 iframe,独立打开按系统偏好兜底;导出 SVG/PNG 固定浅色底,暗色下导出前临时切浅色重建、导完切回。同版收紧页头布局:出数据后说明隐藏、上传区收成 31px 细条、泳道统计卡隐藏、图例压成一行,迷宫可视区多出约 250px。顺手把「无效重试」灰从 #b6c0d2 提到 #8892a6,浅色下一眼可辨。Release

双会话对比从「一条正则里程碑」升级成一套按轮次的对比语义:每轮回答节点自动互连对齐线(标注时差与该轮支路数差);「🔗 加锚点」手动钉任意两节点的对比线;「📋 支路盘点」按轮次列两边支路的步数/墙钟耗时/类别构成与差额,点行缩放该轮并高亮该轮支路。语料特定的「模型列表结果」正则里程碑(MODEL_LIKE/mlist)随之退役——判定 v2 清理长度阈值后的最后一个硬编码启发式。「探索期」红色背景带一并退役:它取首末支路的最小最大跨度,16 轮长会话上罩住 99% 的时间轴而支路真实耗时只占 1%,是虚假信号。Release

实时页签只画对话已加载的事件窗口——窗口边缘漏进来的更早轮次步骤此前被钳到 0 秒堆在左边缘,一份 18 小时、533 步的会话被画成「3 轮 · 39 步 · 71.4s」。现在陈旧步被丢弃并标注「⏮ 另有 N 步更早历史未加载」。同时修掉判定的「引用误报」:git log 提交信息里写的 "upstream returns HTTP 400"、源码里的 "not found in" 不再被当成命令自己失败——失败特征只扫输出开头与末尾窗口,且两条渲染链路统一在未截断全文上判定。Release

「reasoning N tok」此前数的是流式段数——本版从 session log 的 assistant/message 读真实 usage,步级与泳道级都显示真 token(无 usage 时诚实回退「N 段推理」)。新增过滤工具行(只看失败/重试、按工具过滤、全文搜索,未命中淡化到 15%)与当前视图的 SVG / 2x PNG 导出。Release

「结果 <60 字符 = 死路」退役,换成上面的分层判定 + 行为学重试检测。动机:校准发现长度阈值冤枉了 338 次调用中的 56 次(todo_write 的 57 字符成功确认全军覆没),反而漏掉藏在长输出里的真失败。判定逻辑同时收敛为单一真相源 src/client/verdict.js(上传页构建期注入、实时链路直接引入),镜像漂移永久消除。Release
pnpm install
pnpm check # 类型检查 + vitest + 构建
上传/可视化页面是一份自包含的 HTML(src/client/maze-upload.html),运行在沙箱化的 <iframe srcDoc> 里;解析与渲染全部在浏览器端完成,上传的日志内容不会到达宿主。
MIT。见 NOTICE——本项目包含源自 DeepSeek Harness 的衍生代码。
FAQs
Trace Compare for DeepSeek Harness: upload session logs or follow the live session and visualize the agent's exploration maze — main path, detours, and backtracks on one timeline
The npm package dsh-trace-compare receives a total of 0 weekly downloads. As such, dsh-trace-compare popularity was classified as not popular.
We found that dsh-trace-compare demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
vlt 1.5.0 links skills from JavaScript dependencies to coding agents, with lockfile versioning and Socket data to filter out known malicious packages.

Security News
Rust 1.100 will add opt-in dependency cooldowns to Cargo, giving security scanners and maintainers time to catch malicious crate releases.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.