在 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 插件生态提供了一套轻量级的模式观测工具。它通过正则搜索、统计面板和分页表格,帮助开发者量化分析模型行为,适合用于调试逻辑、分析停顿模式或验证特定指令的执行频率。