前言¶
数字验证回归跑完后,常见情况是目录里躺着几千条 *.log,失败 test 数量一大,人就要在 UVM 报错、编译错误和 assertion 之间来回翻。按单条 test 修往往抓不住根因;同一处 RTL 或 TB 问题还会被算成几十条独立失败。DeepSeek Harness(DSH)里可以加插件,把「读目录、聚类、排序、出报告」做成可复用工具,会话里直接调用,而不是每次手写脚本。
下面介绍社区维护的 dsh-dv-triage(维护者 yyyyukari,分类:工作流):只读回归结果目录,不启动仿真器、不改 RTL、不替代 Verdi,目标是把大量日志压成少量带证据、可复现、排好序的失败簇。
这是什么¶
dsh-dv-triage 是 DSH 插件,bundle 包含 5 个工具、1 个技能,以及独立 CLI dv-triage。自述能力是:evidence-first regression triage for digital verification——把回归目录中的日志变成带排序的失败簇,并给出经过校验的源码指针(verified source pointers)。
与「逐 test 看 log」相比,它的工作单元是簇:一次修一个根因。与只靠大模型猜错因相比,解析、归一化、聚类、排序在确定性内核里完成并可单测;模型侧主要用于解释(技能 playbook),无证据则标 unknown。
- 目录页:SkillHub · dsh-dv-triage
- 源码与文档:GitHub · yyyyukari/dsh-dv-triage
- 许可证(package.json):MIT;当前版本 0.1.0;需 Node.js >= 20。
核心功能¶
扫描、聚类与排序¶
dv_scan 扫描回归根目录,解析日志、聚类、排序并落索引,返回 run_id 与排名靠前的簇。后续可用 dv_clusters、dv_cluster 翻页或查看单簇详情,包括证据日志行号、repro、fine 变体,以及重新读文件校验后的源码指针(行不存在或标识符对不上则标 unverified,不当事实展示)。
回归对比与报告¶
dv_diff 对比两次回归:新增失败、已修复、持续失败。dv_report 可按 md 或 html 输出报告。
日志与仿真器画像¶
支持自动探测;也可用 --profile 强制。README 列出的格式包括:
- VCS:
Error-[...]、"file.sv", 42: ...、UVM_ERROR/FATAL、assertion 失败块 - Questa:
# ** Error/Fatal、# UVM_*(去#前缀后解析) - Verilator:
%Error: file.sv:42: ... - Icarus:
file.v:42: error: ...
设计要点(与 triage 行为直接相关)¶
- 编译传染标
blocked:同一 compile unit 下的 test 在编译失败时不再计为 fail,减轻「一条编译错 → 数百条假失败」。 - 证据优先:源码指针会回读文件校验。
- 不碰波形解析:不解析 FSDB;若存在同名
.vcd/.fst/.fsdb仅记录路径,波形分析交给其他插件。
v0.1 已知限制¶
- 日志整文件读入,单文件上限 64 MiB;流式解析计划在 v0.2。
- 仅发现
*.log;manifest / results.xml 计划在 v0.2。 - 覆盖率关联(URG/LCOV/UCDB)计划在 v0.3。
- 排序中的
novel/known字段已预留,尚未接 baseline。
安装与启用¶
在 DSH 中安装(命令来自官方 README):
dsh plugin --profile web add github:yyyyukari/dsh-dv-triage
安装后需重启 dsh web 或桌面端,会话里可使用 dv_* 工具与 dv-triage 技能。
本地开发挂载目录时(README 示例为 Windows 路径,按本机改写):
dsh plugin --profile web add D:\DS插件\dsh-dv-triage
可先确认 profile 是否加载插件:
dsh --profile web --dump-config | findstr dv-triage
插件在当前 dsh 进程权限下运行,安装前请自行查看仓库源码与 MIT 许可证,确认可读路径范围符合团队安全要求。
典型用法¶
独立 CLI 快速体验¶
进入插件目录后执行 demo,会生成两天的合成回归(60 个 test)并打印摘要(README 示例输出如下):
cd dsh-dv-triage
node bin/dv-triage.js demo
示例控制台摘要形态:
60 tests | 27 pass | 21 fail | 12 blocked | 5 clusters | profile: vcs
c01 12 tests compile · SE · arbiter.sv:212 score=13.7 rtl/arbiter.sv:212 (verified)
c02 4 tests timeout · TIMEOUT · uvm_test_top.env.agent score=11.32 -
...
同时会写出 Markdown / HTML 报告,并演示 diff(例如新增 5 个失败、修复 1 个)。
DSH 工具与 CLI 子命令对照¶
| 工具 | 作用 |
|---|---|
dv_scan {root, profile?, top?} |
扫描回归目录,解析、聚类、排序,落索引 |
dv_clusters {root, run_id?, top?} |
读取已落盘的 run,列出簇 |
dv_cluster {root, cluster_id, run_id?} |
单簇详情 |
dv_diff {before, after} |
两次回归对比 |
dv_report {root, format: md\|html, out?} |
出报告 |
CLI 子命令:demo、scan、clusters、cluster、diff、report。
在 DSH 会话中,可结合 skills/dv-triage/ 下的 triage playbook,由智能体按「先 scan、再看 top 簇、拉 cluster 证据、必要时 diff」推进;具体参数以工具 schema 为准。
开发与自测¶
node --test # README 注明 15 个测试
node bin/dv-triage.js demo
主要代码路径:lib/core/parse.js(解析)、cluster.js(聚类与证据)、verify.js(源码校验)、bin/dv-triage.js(CLI)。
适用场景与注意¶
适合谁:经常跑 VCS / Questa / Verilator / Icarus 回归、需要在不打开 Verdi 的前提下先收敛失败面的验证工程师,或在 DSH 里编排「读 log → 分诊 → 出报告」工作流的智能体开发者。
不适合当作什么:不能替代仿真重跑、RTL 修改或波形 debug;也不能把未校验指针当成已证实根因。
生态说明:DSH 的理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文档事实以 GitHub 仓库 README 为准。
结尾¶
经过上面的步骤可以理解:dsh-dv-triage 把回归 triage 收成「簇 + 证据 + 排序 + 可选 diff/报告」,并嵌进 DSH 工具与会话技能。若要在本机试用,可从 node bin/dv-triage.js demo 或官方 dsh plugin --profile web add 命令开始。