
tgrep serve使用指南一条命令让大型仓库搜索常驻可用新手必读【免费下载链接】tgrepTrigram-indexed grep with a client/server architecture for fast regex search in large codebases locally项目地址: https://gitcode.com/gh_mirrors/tg/tgreptgrep是一个基于Trigram 索引的 grep 工具采用客户端/服务器client/server架构专为在大型代码库中实现快速正则搜索而设计。其中tgrep serve命令可以让搜索服务常驻后台它自动构建索引、监听文件变化、让后续每一次搜索都在毫秒级返回是新手让大型仓库搜索一次启动、长期受益的最优解。 先建立正确心智模型tgrep 到底是什么tgrep 可以理解为带着预构建索引和可选常驻服务器的 ripgrep。一次搜索的查找顺序如下顺序来源速度说明1️⃣正在运行的tgrep serve服务器⚡ 最快通过 TCP 查询文件监听器保持索引与文件系统接近一致2️⃣磁盘上的索引.tgrep/⚡ 快无服务器时直接读取但只反映上次构建时的状态3️⃣无索引全量扫描 慢正确但慢tgrep 会在 stderr 给出警告关键点在于无论你启动没启动服务器搜索命令都一样tgrep -- pattern .工具会自动选择合适的来源。这也正是tgrep serve的价值所在——你只需要多敲一条命令就能让后续所有搜索走最快的第 1 条路径。完整的原理说明见 README.md 与面向编码代理的精简指南 AGENTS.md。 三步上手让大型仓库搜索常驻可用第一步安装 tgrep最省事的方式是用 Homebrew支持 Linux / macOSbrew install tgrep如果你手上有源码仓库也可以用 Cargo 从本地安装cargo install --path tgrep-cli --locked第二步启动常驻服务器在仓库根目录执行只需一条命令tgrep serve .它会在后台自动构建索引如果不存在边构建边响应查询并写一份.tgrep/serve.json记录 PID 与端口供客户端发现。⚠️ 记得把.tgrep/目录加入.gitignore不要提交它。 想让它在后台跑可以直接tgrep serve . 服务器会在前台持续监听文件变化保持索引温热。第三步在另一个终端里搜索tgrep -- fn main . # 自动连接到服务器毫秒级返回 tgrep status . # 查看索引与刷新状态就这样搜索已经常驻可用了。整个流程的详细示例可参考 AGENTS.md 的 Setup 章节。⚙️ tgrep serve 常用参数速查表以下调优参数只对tgrep serve生效按需使用即可参数默认值作用--index-path DIR.tgrep/自定义索引存放位置--exclude DIR无从索引中排除目录可重复--max-memory MB50% 内存512 MiB–16 GiB部分构建恢复 / 回退内存构建的刷新阈值--max-cpu PERCENT50按逻辑核心占比设定工作线程池至少 1 个--auto-save-mutations N5000触发后台保存的待处理内容变更数--watcher-queue-cap N16384缓冲的文件系统事件数溢出会触发对账常用启动示例tgrep serve . # 自动构建索引 tgrep serve . --index-path /tmp/idx # 自定义索引位置 tgrep serve . --exclude node_modules # 排除依赖目录 tgrep serve . --no-watch # 关闭所有自动刷新 文件监听auto 还是 polltgrep serve通过文件监听保持索引新鲜有两种模式参数默认作用--watch-mode auto\|pollauto优先用原生通知失败回退轮询或仅用轮询--poll-interval SECONDS120每次轮询对账完成后的等待秒数1–86400--watch-budget N8192进程级原生监听上限1–4294967295--no-watch关关闭所有自动刷新原生监听、轮询、定期都对账tgrep serve . --watch-mode poll # 不用原生订阅仅轮询 tgrep serve . --poll-interval 60 # 回退到轮询后的节奏 tgrep serve . --watch-budget 4096 # 降低本进程的原生监听上限在auto模式下一旦监听预算或原生注册失败服务器会释放监听并切换到轮询直到重启tgrep status会报告原因。显式指定poll模式则不会创建任何原生订阅。✅ 用 tgrep status 确认常驻服务器健康在服务器运行期间随时用状态命令体检tgrep status .典型输出Server status for /src/my-monorepo PID: 37980 Port: 51043 Files: 152 Trigrams: 12265 Cache: 2/50000 Watcher: active Watch mode: native (requested: auto) Indexing: complete Hidden coverage: completeIndexing: complete和Hidden coverage: complete描述的是索引就绪而非新鲜度。Watcher: active指原生通知轮询模式下通常显示 inactive。无服务器时status会展示磁盘上的元数据。 最佳实践让 index、serve、search 保持步调一致有些参数描述的是索引本身index、serve和每次搜索必须保持一致否则客户端可能找不到服务器或静默地搜索了不同的文件集合。# 索引、服务器、搜索 用同一套策略 tgrep index . --max-filesize 8M --exclude vendor tgrep serve . --max-filesize 8M --exclude vendor tgrep --max-filesize 8M --exclude vendor -- pattern .需要保持一致的参数--index-path、--max-filesize/--no-max-filesize、--no-require-git三者都要一致。--exclude DIR只在index和serve上提供两处用同样的值。⚠️ 例如用--no-max-filesize建了索引却用默认的 64 MiB 上限去搜索就会漏掉所有大文件的匹配。其他新手要点 把.tgrep/加入.gitignore。 索引可能滞后于文件系统变化服务器异步更新没有服务器时改完记得重跑tgrep index .。 需要读此刻的真实文件内容时加--no-index会绕过索引直接扫盘大仓库上较慢请谨慎使用。️ 新手排错速查表症状原因解决warning: no index at ...搜索查找的路径下没有索引若服务器/索引用了--index-path搜索也传同一个值否则运行tgrep index .或tgrep serve .Server unreachable, falling back to local index服务器挂了或serve.json过期重启tgrep serve .有服务器却搜不到新文件首次构建还在进行或监听事件还在排队稍等或本次搜索加--no-index有服务器但搜索仍慢某个参数绕过了索引如--no-ignore、-a去掉该参数或用-g/-t收窄范围 延伸阅读与源码完整文档与所有命令行参数README.md面向编码代理AI的接入指南AGENTS.mdAgent 集成安装说明MCP 工具 会话预热scripts/agent/README.md性能基准与方法论BENCHMARKS.md服务器核心实现TCP JSON-RPC 文件监听serve.rs混合索引内存映射 可写覆盖层tgrep-core/src/hybrid.rstgrep serve用一条命令换来常驻可用的搜索体验启动后自动建索引、自动跟文件变化、多客户端并发查询。掌握上面三步与参数速查表你已经在大型仓库里拥有了毫秒级的正则搜索能力。【免费下载链接】tgrepTrigram-indexed grep with a client/server architecture for fast regex search in large codebases locally项目地址: https://gitcode.com/gh_mirrors/tg/tgrep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考