跳到主要内容
知仓学习社ZHICANG

hive.terminal-tools-fs-search

Use terminal_rg / terminal_glob for all filesystem search — your project tree as well as system configs, /var/log, /etc, archive contents. Teaches t…

不碰外部(只输出文字)无严重或高危命中aden-hive/hive

它会碰到什么

扫了多少3 个文本文件,10 KB
它会碰到什么不碰外部(只输出文字)
命中总数2 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Filesystem search

terminal-tools provides two structured search tools: terminal_rg (ripgrep for content) and terminal_glob (find files by name/glob). Predicate queries (mtime/size/type) and everything else (tree, stat, du) are just terminal_exec.

When to use what

| Task | Tool |

|---|---|

| Find code/text matching a pattern (project tree or any path) | terminal_rg (gitignore-aware; defaults to your session workdir) |

| Find files by name/glob (any path) | terminal_glob |

| Find files by mtime/size/type predicate | terminal_exec("find ...") (see references/find_predicates.md) |

| List a directory | terminal_exec("ls -la /path") |

| Tree view | terminal_exec("tree -L 2 /path") |

| Single-path stat | terminal_exec("stat /path") |

| Disk usage | terminal_exec("du -sh /path") or terminal_exec("du -h --max-depth=2 /") |

| Count matching lines in returned results | terminal_rg(...).total (check truncated before treating it as complete) |

terminal_rg — content search

ripgrep is fast, gitignore-aware, and has a deep flag surface. The structured wrapper exposes common search flags directly; extra_args accepts additional flags compatible with JSON output. Output modes such as --count and --files-with-matches are not compatible with this structured interface; use the CLI when that output is needed.

Quickstart installs and verifies ripgrep. Existing installations can be repaired with uv run scripts/ensure_ripgrep.py --install from the repository root. The runtime also checks Windows package-manager locations and current registry PATH entries; HIVE_RIPGREP_PATH can select an absolute executable path. Startup logs report the executable and version, or instructions to fix the missing dependency.

If ripgrep is unavailable, terminal_rg returns code="ripgrep_required" without searching by default. For an approximate search, explicitly set allow_fallback=True: this uses Python regex, a limited filetype table, and basename globs, and does not honor .gitignore. Even with opt-in, context, extra_args, unknown filetypes and complex globs require ripgrep and return an error. Inspect fallback_limitations; do not treat approximate results as a gitignore-aware inventory.

With context=N, surrounding lines are returned in context, separate from matches. Both contain path, line, and text; total counts only match entries.

Common patterns

# All Python files containing "TODO"
terminal_rg(pattern="TODO", path=".", type_filter="py")

# Case-insensitive, with context
terminal_rg(pattern="error", path="/var/log", ignore_case=True, context=2)

# Search hidden files (rg ignores them by default)
terminal_rg(pattern="api_key", path="~", hidden=True)

# Don't respect .gitignore (find files git would ignore)
terminal_rg(pattern="generated", path=".", no_ignore=True)

# Multi-line pattern (e.g., function definitions spanning lines)
terminal_rg(pattern=r"def\s+\w+\(.*\n.*\n", path="src", extra_args=["--multiline"])

# Specific filename glob
terminal_rg(pattern="version", path=".", glob="*.toml")

rg flag idioms

| Flag | Effect |

|---|---|

| -tpy (type_filter="py") | Only Python files |

| -uu | Don't respect any ignores (incl. .git/) |

| --multiline (extra_args) | Allow regex spanning lines |

| --max-count (max_count) | Stop after N matches per file |

| --max-depth (max_depth) | Limit recursion |

| -w (extra_args) | Whole word match |

| -F (extra_args) | Fixed string (no regex) |

See references/ripgrep_cheatsheet.md for the long form.

terminal_glob — find files by name

Lists files matching a glob, gitignore-aware (backed by rg --files). The pattern is widened for you so a bare stem Just Works — the actual glob run is returned as expanded_pattern:

  • lk_scan_post_reactors → matched as **/lk_scan_post_reactors (recursive substring)
  • .py → matched as */*.py (recursive by default)
  • src/**/*.py → used verbatim

If rg is unavailable, filename search retains a best-effort walk with fallback="python-walk" and a note that .gitignore is not honored.

# Find a file by stem anywhere under a tree
terminal_glob(pattern="lk_scan_post_reactors", path="core/framework/skills")

# All YAML configs under /etc
terminal_glob(pattern="*.yaml", path="/etc")

# Include .gitignored / hidden / build-cache files
terminal_glob(pattern="*.log", path=".", include_ignored=True)

For predicate queries (modified in last N days, larger than N MB, only dirs/symlinks), terminal_glob is the wrong tool — drop to terminal_exec("find ..."). See references/find_predicates.md.

Output truncation

Both tools return truncated: true when output exceeded the inline cap. For terminal_rg, matches were dropped (refine the pattern or narrow the path); for terminal_glob, results past max_results (default 1000) were dropped — the search stops early at the cap, so narrow the pattern rather than raising it. terminal_glob also returns timed_out: true (with the partial results it gathered) when the walk exceeded its deadline.

Anti-patterns

  • terminal_rg is the project search tool — gitignore-aware and returns structured matches; use it for in-project search as well as raw paths.
  • Don't reach for terminal_glob to list one directoryterminal_exec("ls -la /path") is shorter.
  • Don't use terminal_exec("grep ...") when terminal_rg exists — rg is faster, gitignore-aware, and returns structured matches.
  • Don't hand-roll terminal_exec("find ... -name ...") for a plain name search — use terminal_glob. Reserve terminal_exec("find ...") for mtime/size/type predicates.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 11,048
本站分层T1
该仓技能数24
原文件路径core/framework/skills/_preset_skills/terminal-tools-fs-search/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 24 个技能