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