87、【Agent】【OpenCode】read 工具提示词
【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除背景上篇 blog【Agent】【OpenCode】bash 工具提示词完结分析了bash工具的参数说明该提示词规定了 AI 在调用 bash 工具时必须遵守的数据格式规范并详细分析了其中的 4 个核心字段command核心指令AI 必须在这里填入一条标准的 Linux Bash 命令description人类可读的摘要这是给人看的不是给机器看的也是必填项意味着 AI 不能只写命令而不写解释workdir工作目录环境上下文用来解决路径依赖问题AI 可以通过workdir参数设定命令执行目录而不能在 bash 工具里使用cd命令随意改变工作目录timeout超时机制AI 需要判断任务的轻重缓急来设定超时时间防止任务无限期挂起这套参数设计可以让整个自动化流程变得可审计可追踪可解释用户看到的是一个带有自然语言解释的操作日志下面继续分析OpenCode下面继续看下一个 Read 工具其路径位于opencode/packages/opencode/src/tool/read.txtRead 工具可以读取文件或目录如果路径不存在的话返回错误下面来看下使用说明强制要求绝对路径提示词明确要求 AI 提供的 filePath 必须是绝对路径比如/home/admin/test.txt而不是./test.txt这意味着 AI 在读取文件之前必须先明确知道文件在硬盘上的完整坐标不能依赖相对路径容易产生模糊性以保证文件定位的绝对准确性工具默认只返回文件开头的 2000 行如果文件超过 2000 行后面的内容将被截断基于 offset偏移量的翻页机制如果 AI 需要看文件后面的内容必须再次调用工具并传入 offset 参数从第几行开始读1-indexed 表示从 1 开始计数善用 Grep 工具如果文件非常大比如几十万行的日志提示词这里就建议 AI 不要再用 offset 去一页页翻了而是直接调用 Grep 工具去搜索特定内容通过 Grep 工具去精准定位如果 AI 不确定文件的具体路径比如只知道一个叫config.json的文件但不知道在哪个文件夹下这里提示词提示应该先用 Glob 工具通配符模式查找文件来下限定位文件的位置再读取文件内容锚点机制如果读的是文件内容返回的不是纯文本而是每行都带上了行号格式为line: content而如果读的是目录也就是文件夹则会列出该目录下的所有条目并在子目录的末尾处加上/斜杠作为区分超长行截断保护如果某一行超过 2000 个字符会被强制截断防止某些被压缩过没有换行符的巨型日志或乱码文件瞬间撑爆 OpenCode 的上下文窗口导致系统崩溃或响应变慢并行读取如果 AI 准备读 ABC 三个文件应该同时发出三个去读请求而不是读完 A 再读 B这是最大化执行效率的关键避免挤牙膏式的读取这里提示词特意强调避免每次只读 30 行这种小段落如果每次只读一点点那读完一个 2000 行的文件就要调用 60 多次工具会极大地浪费系统资源并拖慢速度所以如果需要上下文就应该一次性读一个大点的窗口比如一次读 500 行或 1000 行多媒体文件读取当遇到如.jpg.png或.pdf文件时OpenCode 不会尝试将它们当作文本去解析那样只会得到一堆乱码而是会直接将这些多媒体文件作为文件附件返回这意味着 AI 具备了看到图片和 PDF 内容的能力可以通过多模态视觉模型来识别这套读取规则可以让 AI 在处理本地代码库或文档时既能保证速度又能精准命中用户需要的信息OK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog【Agent】【OpenCode】glob 工具提示词