90、【Agent】【OpenCode】grep 工具提示词
【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除背景上篇 blog【Agent】【OpenCode】glob 工具提示词参数内容分析了 Glob 工具的参数内容其中pattern搜索模式是必填项path搜索范围是可选项默认使用当前的工作目录进行搜索如果想在当前项目中搜索直接忽略删掉该字段使用默认值即可不要填入undefine或者null这样的字段如果 AI 知道目标文件在哪个具体路径下则鼓励填入路径缩小搜索范围以提升速度接着介绍了 Grep 工具Grep 作为极速的内容搜索工具核心作用是按文件内容查找文件其本质是 Bash 中grep命令的封装版支持完整的正则表达式可以根据文件内容的正则表达式 Regex 来快速定位代码片段下面继续分析OpenCode下面继续看 Grep 工具剩下的提示词提示可以通过 Glob 通配符模式搜索指定文件比如*.js*.{ts,tsx}等返回结果按修改时间排序并且内容自带行号和前面介绍的 Read 工具一样让 AI 能精准定位到代码的具体位置和之前 Glob 工具一样这里对 Grep 和 Task 工具做了边界界定简单任务如果知道文件里有什么特殊的内容用 Grep 工具可以直接找出带有这些内容的文件一步到位复杂任务如果是一个开放式的问题AI 需要先用 Glob 搜索文件名再用 Grep 工具找内容可能还要反复几轮就应该用 Task 工具和之前一样这里提到了 Glob 和 Grep 工具的配合下面说下它们之间的关系做个比喻就像一个学生在图书馆里找书其中 Glob 工具是看书名和目录而 Grep 工具则是翻开书去读书里面的文字这两个工具的分工完全不同缺一不可Glob 工具找的是外壳文件名Glob 能识别文件叫什么名字是什么后缀在哪个文件夹里比如想找所有的 Vue 组件可以用 Glob 搜索**/*.vue但 Glob 根本不知道这些*.vue文件里面写的是什么内容是登录逻辑还是注销逻辑Grep 找的是文件内容Grep 能钻进文件里看里面的代码文字具体写了什么比如想找哪里定义了用户登录的函数可以先用 Grep 去搜索function login但 Grep 搜索非常消耗资源如果直接用 Grep 漫无目的地去翻遍整个硬盘则速度会非常慢所以此时就需要组合使用 Grep 和 Glob在复杂的变成任务中AI 经常需要找同时满足名字和内容两个条件的文件此时单靠一个工具是搞不定的比如用户提了个需求查找所有关于用户注册的测试文件此时如果只用 Grep 工具搜 register注册那能找出一堆包含【register】关键词的文件但是这些可能是后端代码也可能是前端页面甚至是一个文档无法精准筛选出那些是测试文件如果只用 Glob 工具搜**/*.test.js测试文件那可能会找出几百个测试文件但 AI 不知道哪些才是写用户注册逻辑的所以正确的执行逻辑一定是先用 Glob 工具圈地快速低成本地筛选出目标文件比如src/**/*.js瞬间把搜索范围从几万个文件缩小到几百个源文件然后再用 Grep 工具深挖在 Glob 工具划定的范围里快速完成内容检索在真实的 Linux 命令行中也经常会看到这种先 Glob 后 Grep 的组合比如先 Glob 定范围再 Grep 找内容find . -name “*.js” -exec grep “register” {} 用更现代的rg命令ripgrep下面的-g参数就是先做 Glob 过滤rg “register” -g “*.js”而不是类似下面这种全盘扫描慢且危险会把一些构建目录中几万行无关代码页翻出来grep -r “register” .OK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog