Glob 工具用于使用模式匹配查找文件。
Glob 工具允许 AI 助手在文件系统中搜索文件。它支持:
- Unix shell 风格模式匹配
- 递归目录搜索
- 排除特定模式
packages/opencode/src/tool/glob.tspackages/opencode/src/tool/glob.txt
| 参数名 | 类型 | 必填 | 说明 |
|---|
pattern | string | 是 | 文件匹配模式(如 **/*.ts) |
export type GlobInput = {
pattern: string
}
export type GlobOutput = {
title: string
output: string
metadata: {
count: number
}
}
const pattern = params.pattern
const files = await fs.readdir(".", { recursive: true })
const matches = files.filter((file) => {
return minimatch(file, pattern, {
dot: true,
nocase: true,
})
})
const result = matches.join("\n")
return {
title: ".",
output: result,
metadata: {
count: matches.length,
},
}
await GlobTool.execute(
{
pattern: "**/*.ts",
},
ctx,
)
src / app.ts
src / utils / helpers.ts
src / components / Button.ts
await GlobTool.execute(
{
pattern: "src/**/*.json",
},
ctx,
)
src / config.json
src / subconfig / config.json
src / data / users.json
await GlobTool.execute(
{
pattern: "src/*.ts",
},
ctx,
)
await GlobTool.execute(
{
pattern: "*.{js,ts}",
},
ctx,
)
| 模式 | 说明 | 示例 |
|---|
* | 匹配任意字符 | *.ts |
? | 匹配单个字符 | file?.js |
[] | 匹配字符集合 | *.[js,ts] |
{} | 匹配嵌套模式(递归) | **/*.ts |
** | 匹配任意层级目录 | src/**/config.json |
! | 排除模式 | !node_modules/** |
output: ""
metadata: {
count: 0
}
- 默认从当前工作目录搜索
- 支持递归搜索(使用
** 模式) - 包含隐藏文件(以
. 开头)
- 大型目录可能需要较长时间
- 考虑使用更具体的模式减少匹配数量
await GlobTool.execute(
{
pattern: "src/components/**/*.tsx",
},
ctx,
)
await GlobTool.execute(
{
pattern: "**",
},
ctx,
)
场景: 先找到文件,再读取
Glob (查找配置文件) → Read (读取内容)
await GlobTool.execute(
{
pattern: "src/**/*.ts",
},
ctx,
)