文件发现与分段读取
使用 Glob、Grep、ReadFile,处理结果截断、PDF 与旧多文件接口。
This page has not been translated into English yet. The original Chinese version is shown below.
先用路径模式或内容检索缩小范围,再读取相关文件。读取返回的截断信息也是结果的一部分,不能把前几千行的预览当作已看完整文件。
发现路径和匹配内容
| 工具 | 参数与结果 |
|---|---|
| glob | pattern 必填,path 默认当前目录;返回绝对路径,最近修改优先,最多一百个文件 |
| grep_search | pattern 必填,path 可为文件或目录,glob 过滤文件,limit 为可选正整数 |
| list_directory | path 为绝对目录,ignore 可排除 glob,respect_git_ignore 默认 true;目录排在文件前 |
glob 和 grep_search 默认尊重 .gitignore、.qwenignore 与配置的自定义忽略文件。Grep 当前实现加入 --ignore-case,因此默认不区分大小写;其 limit 限制结果行/条目,未设也仍有输出截断机制。
list_directory 默认关闭,因为多数列目录需求可由 glob 覆盖。设置 tools.listDirectory.enabled:true,或在 --core-tools / tools.core 中显式包含 list_directory,才启用它。
glob(pattern="src/**/*.ts")
grep_search(pattern="refreshToken", path="src", glob="*.ts", limit=40)文本读取
read_file 的 file_path 为绝对路径。offset 从零开始,使用它时同时提供 limit;返回的行号说明通常按读者习惯从一开始,应区分参数和展示。
read_file(file_path="/workspace/app/src/auth.ts", offset=100, limit=80)未设 limit 时工具使用默认读取上限或可容纳的全部内容,不能依赖“未限制”得到无限正文。长行和总行数都可能触发截断。文件路径还需满足工作区和权限配置;扫描忽略规则不能替代访问控制。
PDF 和媒体
模型支持对应模态时,图片、PDF、音频、视频可作为 inlineData 发送;不支持的媒体通常返回说明,普通二进制跳过。
PDF 的 pages 从一开始,接受单页或闭区间,例如 3、20-25,一次最多二十页。文本主模型先尝试提取文本;提取失败,或明确/实际单页仍超过 12K-token 文本预算时,可由已配置视觉桥接最多转写四页,从请求首面开始并在已知总页数处裁剪。
普通多页文本溢出会要求缩小 pages,不自动改成视觉读取。转写有损且被标为不可信机器内容,结果应披露实际页段、剩余页和已知视觉模型/端点。桥接失败时保留原提取错误,不能凭“尝试过视觉”称为读取成功。
多文件读取的当前入口
read_many_files 已不再向模型注册为独立工具。当前按 glob / grep_search 定位,再用 read_file 获取具体文件;其官方旧示例仅保留作内部实现参考。
旧多文件章节把目录路径描述为空结果,但当前 @目录已通过实现核验为目录结构,不递归注入所有正文。见交互引用,不要把旧内部接口行为套到今天的 @语法。