【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Agent】【OpenCode】glob 工具提示词
分析了 Read 工具提供的参数内容:filePath(绝对路径,必填项)必填项,offset(偏移量),limit(读取限制,默认值 2000),接着分析了匹配查找工具 Glob,Glob 工具可以极速匹配文件名,找到文件位置,其本质是命令行中 glob 命令的 AI 封装版,专门用来根据文件名 Pattern 来快速定位文件,并介绍了 Glob 工具详细内容:无视代码库规模,Glob 工具都能稳定返回结果;支持标准 Glob 模式,支持通配符语法;结果按照时间戳排序,让 AI 在获取搜索结果的第一时间,优先关注到那些最活跃,最可能和当前任务相关的文件;接着提到了 Glob 工具与 Task 工具的边界界定:简单任务(知道文件名特征的),直接调用 Glob 工具;复杂任务(开放性质的搜索任务),用更高级的 Task 工具;鼓励饱和式的搜索,拒绝挤牙膏,鼓励 AI 预判性地去批量执行多个搜索任务,最大化搜索效率,下面继续分析
OpenCode
下面继续来看 Glob 工具的参数内容

pattern(搜索模式,必填项):结合之前的提示词,这里 AI 应该使用标准的 Glob 语法,通常一个 pattern 对应一种文件类型或路径模式,如果想要同时找多个类型文件,应该并发调用多次,而不是在一个字段里写复杂的正则path(搜索范围,可选项) :默认使用当前的工作目录进行搜索 ,这里提示词特意强调了,如果想在当前项目中搜索,直接忽略掉这个字段即可,并且警告不能使用undefined或者null这样的词填入该字段,直接忽略删掉该字段,使用默认值即可,除非 AI 知道目标文件在哪个具体路径下,那就填入路径,缩小搜索范围,提升速度,并且这个路径一定确保是有效的
一个聪明的 AI,应该知道目标文件可能会在哪些目录下,那么可以填入 path 字段缩小范围,精确查找,而不是让 Glob 工具去扫描 node_modules 或者 dist 这种目录,既浪费时间,又容易误报,另外,AI 还可以尝试由粗到细的筛选,比如
- 先用宽泛的 pattern(比如
*.py)找到所有候选文件 - 利用 Glob 工具返回的按修改时间排序特性,优先关注最近修改的文件
- 如果结果太多,收紧 path 范围,或者结合后续的 Grep 工具进行内容级别的二次筛选
总之,在无限的文件可能性和有限的计算资源之间,利用 Glob 工具建立一套精准的过滤网,是一门艺术,聪明的 AI 应该用最简练的通配符,配合最精准的路径,尽快捞出目标文件
OK,下面看下一个工具 Grep

这个工具和 Bash 里面的 grep 命令很像,其提示词路径在 opencode/packages/opencode/src/tool/grep.txt

下面来详细看下 Grep 工具的描述,作为极速的内容搜索工具,核心作用是按文件内容查找文件,其本质是 Bash 中 grep 命令的封装版,可以根据文件内容的正则表达式 Regex 来快速定位代码片段
- 无视代码库规模:这一点和前面介绍的 Glob 工具一样,不管多大的仓库也能用
支持完整的正则表达式,比如
log.*Error:匹配所有包含 log. 且后面跟着任意字符和 Error 的代码行function\s+\w+:匹配所有函数定义(function 后面跟着一个或者多个空白字符,再跟着一个或者多个单词字符)
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】grep 工具提示词