dsh-tool-terminal-search:在终端回溯中搜索

前言

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 工具。

  1. 执行安装命令:
dsh plugin --profile web add dsh-tool-terminal-search
  1. 验证安装:
dsh plugin --profile web ls
  1. 重启你的 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 或幻方无官方从属关系。插件开发过程包含类型检查、单元测试和打包构建。

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

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

小夜