dsh-dv-triage:把迴歸日誌收成帶證據的失敗簇

前言

數字驗證迴歸跑完後,常見情況是目錄裏躺着幾千條 *.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。

核心功能

掃描、聚類與排序

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 行爲直接相關)

  1. 編譯傳染標 blocked:同一 compile unit 下的 test 在編譯失敗時不再計爲 fail,減輕「一條編譯錯 → 數百條假失敗」。
  2. 證據優先:源碼指針會回讀文件校驗。
  3. 不碰波形解析:不解析 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 命令開始。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜