dsh-pattern-search:对话中的正则模式观测工具

在 DSH(DeepSeek Harness)环境中调试模型行为时,通常需要了解模型在对话中是否产生了特定的措辞或模式。传统的日志查看往往缺乏聚合统计,难以快速量化某种行为(例如模型是否频繁使用“Actually, wait, let me…”作为停顿语)。

dsh-pattern-search 插件提供了在当前会话中通过正则表达式进行模式搜索的能力。它通过一个客户端浮窗和一个模型可调用的工具,让开发者能够统计匹配次数、查看命中详情,并分析命中率。

安装与启用

该插件由 yzhangjy 维护,采用 MIT 许可证。

安装步骤如下:

  1. 执行安装命令:
    dsh plugin --profile web add github:yzhangjy/dsh-pattern-search
  1. 重启 dsh web 服务。
  2. 在浏览器中硬刷新页面(Cmd+Shift+R 或 Ctrl+Shift+R)。

核心功能

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

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

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

小夜