在 DSH(DeepSeek Harness)環境中調試模型行爲時,通常需要了解模型在對話中是否產生了特定的措辭或模式。傳統的日誌查看往往缺乏聚合統計,難以快速量化某種行爲(例如模型是否頻繁使用“Actually, wait, let me…”作爲停頓語)。
dsh-pattern-search 插件提供了在當前會話中通過正則表達式進行模式搜索的能力。它通過一個客戶端浮窗和一個模型可調用的工具,讓開發者能夠統計匹配次數、查看命中詳情,並分析命中率。
安裝與啓用¶
該插件由 yzhangjy 維護,採用 MIT 許可證。
安裝步驟如下:
- 執行安裝命令:
dsh plugin --profile web add github:yzhangjy/dsh-pattern-search
- 重啓
dsh web服務。 - 在瀏覽器中硬刷新頁面(Cmd+Shift+R 或 Ctrl+Shift+R)。
核心功能¶
1. /pattern-search 命令¶
這是一個客戶端擁有的觸發源。輸入 /pattern-search 後會打開一個浮動窗口,整個過程不涉及主機往返,不會在會話日誌中留下記錄,模型無法感知該操作。
2. 正則表達式與搜索¶
支持標準的正則表達式標誌位:
* i (不區分大小寫)
* s (點號匹配換行)
* m (多行模式)
* g (全局匹配,始終開啓)
輸入過程中會實時校驗正則語法,若無效會顯示內聯錯誤。搜索按鈕是顯式的,輸入時不會自動觸發搜索。
3. 統計與數據展示¶
搜索結果包含以下統計指標:
* 總匹配數:符合模式的字符串總數。
* 去重匹配串:不區分大小寫的去重統計。
* 命中輪數 / 命中消息數:命中發生在哪些輪次或消息中。
* 命中率:基於消息數的計算,即命中消息數除以窗口內消息數。
* 來源與輪次細分:展示命中在用戶、助手、工具結果等不同來源中的分佈情況。
4. 分頁詳情表¶
結果以表格形式展示,支持分頁(每頁 10/20/50/100 行)。表格中高亮顯示匹配文本,並提供上下文預覽(匹配位置前後 ±60 個字符)。
5. 全局視圖與流式輸出¶
- Partial Toggle:開啓後,搜索將包含當前正在流式傳輸中的未完成輸出。
- Full Session:通過
loadOlder加載完整歷史記錄,結合主機投影,提供全會話的概覽數據。
6. 主題適配¶
窗口顏色系統完全來源於 DSH Web 的設計令牌(--dsw-alias-*),確保在不同主題下視覺一致。
使用方法¶
GUI 操作¶
在對話框中輸入 /pattern-search 並回車,窗口打開後:
1. 輸入正則表達式(例如 Actually,?\\s*wait,?\\s*let me\\b)。
2. 點擊 Search 按鈕。
3. 查看統計面板和分頁詳情。
模型工具調用¶
模型可以在會話中直接調用 pattern_search 工具進行自我觀察。示例參數如下:
{
"pattern": "Actually,?\\s*wait,?\\s*let me\\b",
"flags": "i",
"source": "assistant",
"context": 60,
"limit": 20
}
開發與更新¶
開發環境¶
插件採用 TypeScript 開發,依賴 @deepseek-ai/dsh-* 系列包。開發命令包括:
* npm install:安裝依賴。
* npm run build:構建宿主端和客戶端代碼。
* npm test:運行測試。
* npm run register:註冊插件。
更新插件¶
由於 pnpm up 不會重新解析 github: 依賴(會提示 “Already up to date”),更新該插件需要先移除再添加:
dsh plugin --profile web remove dsh-pattern-search
dsh plugin --profile web add github:yzhangjy/dsh-pattern-search
安裝後同樣需要重啓 dsh web 並硬刷新瀏覽器。對於客戶端代碼的修改,硬刷新通常已足夠;但涉及宿主端(如工具定義)的修改則需要重啓服務。
總結¶
dsh-pattern-search 爲 DSH 插件生態提供了一套輕量級的模式觀測工具。它通過正則搜索、統計面板和分頁表格,幫助開發者量化分析模型行爲,適合用於調試邏輯、分析停頓模式或驗證特定指令的執行頻率。