88、【Agent】【OpenCode】glob 工具提示词
【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除背景上篇 blog【Agent】【OpenCode】read 工具提示词分析了 Read 工具提示词的规则强制要求绝对路径工具默认只返回文件开头的 2000 行基于 offset 参数的翻页机制如果文件非常大则建议直接调用 Grep 工具去搜索特定内容精准定位不确定文件的具体路径的话就用 Glob 通配符模式查找文件位置如果读的是文件内容返回的每行都会带上行号格式为line: content如果读的是目录则会列出该目录下的所有条目并在子目录的末尾处加上/斜杠作为区分如果某一行超过 2000 个字符会被强制截断如果打算读多个文件就应该同时发出多个读请求避免多次请求只读 30 行这种小段落如果需要上下文一次性读一个大点的窗口当遇到如.jpg.png或.pdf这类多媒体文件时直接将这些多媒体文件作为文件附件返回下面继续分析OpenCode下面继续看 Read 工具提供的参数内容filePath绝对路径锚点必填项不能用相对路径offset偏移量limit读取限制默认值有 2000但建议显式写出这个数字让 AI 明确意识到它自己正在请求多少数据OK继续看下一个匹配查找工具 GlobGlob 工具提示词路径opencode/packages/opencode/src/tool/glob.txtGlob 工具可以极速匹配文件名找到文件位置其本质是命令行中glob模式注意不是命令也可以理解为语法的 AI 封装版专门用来根据文件名 Pattern 来快速定位文件下面来详细看下说明无视代码库规模提示词这里强调【works with any codebase size】意味着无论是在只有几个文件的小项目还是在拥有数十万文件的企业级仓库Glob 工具都能稳定返回结果不会因为文件太多而卡死支持标准 Glob 模式支持通配符语法比如**/*.js匹配当前目录下包括所有子目录中所有的.js文件src/**/*.ts只匹配 src 文件夹及其子文件夹下所有的.ts文件结果按照时间戳排序当 AI 搜索文件时通常最关心的是最近被改动过或者最新创建的文件而传统的文件搜索往往按字母排序而按修改时间排序可以让 AI 在获取搜索结果的第一时间优先关注到那些最活跃最可能和当前任务相关的文件Glob 工具与 Task 工具的边界界定这里是一条非常关键的分流指令决定了 AI 在面对不同难度任务时的思考路径简单任务如果知道文件名的特征可以直接调用 Glob 工具一步到位复杂任务如果是一个开放式的搜索任务比如【帮我找一下哪里定义了用户登录的逻辑并且看下有没有相关的测试文件】类似这样的开放性问题AI 可能需要先用 Glob 工具找文件再用 Grep 工具搜内容可能还要反复几轮执行那么这时候提示词要求 AI 应该用更高级的 Task 工具后面介绍Task 工具可以让 AI 自主规划多轮搜索而不是只跑一次 Glob 工具鼓励饱和式的搜索拒绝挤牙膏这里鼓励 AI speculatively预判性地去批量执行多个搜索任务最大化搜索效率反面例子先搜索*.js等结果回来再搜索*.ts再等结果回来再搜索*.json这种串行操作会浪费大量等待时间正面例子饱和式搜索当预判到可能需要查看多种类型的配置文件或代码文件时在同一个回复里同时发出 N 个 Glob 工具搜索请求此时 OpenCode 客户端会并行处理这些请求一次性把所有搜索结果传回给 AIOK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog