前言¶
DeepSeek Harness (dsh) 的 terminal_read 工具通过 offset 和 count 分页读取保留的终端滚动缓冲区。当后端日志输出达到数万行时,模型难以通过分页定位感兴趣的内容,只能从最新的输出开始逐页向后翻阅。dsh-tool-terminal-search 插件通过内容匹配解决了这个问题,允许模型通过子串或正则表达式直接检索保留的日志行。
简介¶
这是一个为 DeepSeek Harness (dsh) 提供的 terminal_search 工具插件,由 ystyle 维护。它属于“联网工具”类别,开源协议为 MIT。该插件不修改上游包,而是基于公开的 ctx.terminals.read 接口构建,旨在让模型在庞大的保留日志中快速定位目标信息。
安装与启用¶
使用 dsh CLI 安装插件,它会将 pnpm 命令转发到配置文件目录。安装后,需要重启 dsh 配置文件,模型才能获得 terminal_search 工具。
- 执行安装命令:
dsh plugin --profile web add dsh-tool-terminal-search
- 验证安装:
dsh plugin --profile web ls
- 重启你的 dsh 配置文件。安装完成后,模型将获得
terminal_search工具,它与官方的terminal_open、terminal_send和terminal_read工具并列。
前置依赖:
- 需要安装官方的 @deepseek-ai/dsh-tool-terminal 插件。
- 需要运行 dsh-terminal 或 dsh-terminal-bash 服务以支持 terminal_open、terminal_send 和 terminal_read。
核心功能¶
terminal_search 的行为如下:
- 匹配模式:默认使用字面量子串匹配(类似
grep -F),无需转义正则符号。若需正则表达式匹配,需传入regex: true参数。 - 检索范围:插件会分页读取整个保留的滚动缓冲区(从最新到最旧),并在内存中匹配每一行。
- 返回顺序:匹配到的行按时间倒序(最新优先)返回。
- 返回数据:
- 匹配的行内容。
- 每一行相对于最新的
offset,可直接用于后续的terminal_read调用。 - 精确的
matchCount(匹配数)、totalLines(保留总数)和truncated(是否被截断)状态。
- 性能机制:编译后的正则表达式会经过一个全局的 FIFO 缓存,重复的模式不会重新编译。
注意事项¶
- 版本要求:该插件依赖 dsh 0.1.2-alpha.5 发行版线。
- 数据范围:搜索仅限于当前进程保留的滚动缓冲区(默认保留 10,000 行或 4MiB),与
terminal_read的行为一致。 - 截断处理:如果某一行读取的字节数超过后端的
maxReadBytes,系统会减小分页大小重试,以确保行偏移量准确。若单行超过阈值,该行会被截断并标记truncated。 - 无上下文:插件仅返回匹配的行本身,不返回上下文行。若需上下文,需在获取匹配行的
offset后,调用terminal_read读取邻近行。
生态背景¶
DeepSeek Harness 遵循“一切皆插件”的理念。本插件由社区开发者维护,收录在独立目录中,与 DeepSeek 或幻方无官方从属关系。插件开发过程包含类型检查、单元测试和打包构建。
- 目录地址:dsh-tool-terminal-search
- 源码地址:GitHub