插件目录 / Knowledge / dsh-tool-terminal-search
dsh-tool-terminal-search
已验证 · 实测可装 ystyle
功能简介
A terminal_search tool plugin for DeepSeek Harness (dsh)
可用 — 实测通过,早期项目
A terminal_search tool plugin for DeepSeek Harness (dsh) 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-tool-terminal-search
A terminal_search tool plugin for DeepSeek Harness (dsh): locate lines in large retained terminal scrollback by literal substring or regular expression, without paging backward blindly through tens of thousands of log lines.
The tool is composed only over the public ctx.terminals.read seam — no upstream package changes, so it runs on published dsh releases today.
Why
terminal_read pages retained scrollback by newest-relative offset/count. With backend log output running to tens of thousands of lines, a model cannot tell where the interesting lines are: it has to page backward from the newest output one page at a time, and totalLines alone does not locate a needle in the retained buffer. terminal_search closes that gap by finding lines by content.
Install
Install with the dsh CLI — it forwards pnpm into the profile directory — then add the package to the profile's bundles list. The bundle's own patch then contributes terminal_search automatically:
# Installs into the profile's node_modules (dsh plugin forwards to pnpm).
dsh plugin --profile web add dsh-tool-terminal-search
# Verify the install.
dsh plugin --profile web ls
// ~/.dsh/profiles/web/package.json
{
"dependencies": {
"@deepseek-ai/dsh-tool-terminal": "0.1.2-alpha.5",
"dsh-tool-terminal-search": "^0.3.0"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-tool-terminal-search"]
}
}
}
The official @deepseek-ai/dsh-tool-terminal plugin (and the dsh-terminal / dsh-terminal-bash services) must still be present for terminal_open / terminal_send / terminal_read.
Restart your dsh profile. The model gains terminal_search next to the official terminal_open / terminal_send / terminal_read tools.
Behavior
terminal_search(sessionId, pattern, regex?, offset?, limit?):
- Pages the whole retained scrollback (newest → oldest) through
terminal_readand matches each line. patternis a literal substring by default (grep-Fstyle) — no regex metacharacters to escape; passregex: trueto treat it as a JavaScript regular expression. Compiled regexes go through a process-wide bounded FIFO cache (oldest entries evicted first), so repeated patterns never recompile.- Returns matching lines newest first, each with a newest-relative
offsetthat is directly usable as aterminal_readoffset (jump to a match's context in one follow-up call). - Returns the exact
matchCount, the retainedtotalLines, andtruncated;offset/limitpage over matches. - Renders
[offset N] lineper match plus[search: X of Y matches, Z retained lines]; results are capped bymaxResultBytes(default262144).
Known limitations
- One search pages the bounded scrollback in memory (
scrollbackLines10 000 /scrollbackMaxBytes4 MiB by default), so it only sees retained lines — same contract asterminal_read. - A page whose bytes exceed the backend
maxReadBytesis reread with a smaller page size so line offsets stay exact; a single line larger thanmaxReadBytesdegrades to a truncated line and setstruncated. - No surrounding-context lines are returned; read around a match's offset for context.
- Requires the dsh
0.1.2-alpha.5release line (the package's peer range resolves@deepseek-ai/dsh-terminaland@deepseek-ai/dsh-toolsat^0.1.2-alpha.5, so it composes against newer 0.1.2-alpha.x builds of the same read contract).
Development
npm install
npm run typecheck # tsc --noEmit
npm test # vitest
npm run build # esbuild bundle + tsc declarations into lib/
Relationship to upstream
An equivalent native implementation (same tool name, schema, and coordinate space) is tracked upstream in deepseek-harness discussion #1025. This plugin lets deployments use the capability today; switching to the native backend later is transparent.
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-tool-terminal-search」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:ystyle/dsh-tool-terminal-search Headless(CLI)profile:
dsh plugin --profile headless add github:ystyle/dsh-tool-terminal-search 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。