OpenCode 用 Glob 搜文件没反应TaoToken 通道排查 /v1 是否多填在 OpenCode 里让 Agent 用 Glob 工具找文件pattern 明明写了**/*.ts结果它要么返回空列表要么工具调用直接失败甚至干脆不调用 Glob改用 Bash find 去猜。很多人第一反应是 pattern 语法写错了或者 path 填得不对。但排障多了会发现有一类“没反应”根本不是 Glob 工具本身的问题而是模型通道地址配错在 TaoToken 的 API 地址https://taotoken.net/api后面多填了/v1。TaoToken 官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob 先在那里创建 Key然后把 OpenCode 的 Base URL 填成https://taotoken.net/api不要带/v1。TaoToken 在整条排查链路里只负责提供正确的模型通道Glob 的工具逻辑仍然按 OpenCode 原来的 pattern/path 提示词走。通道配通之后Agent 才能正常发起工具调用Glob 也才能把文件列表稳定返回。下面按排障顺序把现象、前置、配置、验证和常见错因拆开讲。原问题与场景OpenCode Glob 工具“没反应”的三种表现OpenCode 的 Glob 工具本质上是一个文件名匹配器它按 pattern 去匹配文件路径返回结果会按时间戳排序让 Agent 优先看到最近修改的文件。它不负责读文件内容内容级搜索应该交给 Grep。也正因为 Glob 是本地工具很多人会误以为“它不依赖网络所以没反应肯定是 pattern 写错了”。这个判断只对了一半Glob 执行确实在本地但是否发起 Glob 调用、用什么参数调用是由模型决定的。如果模型通道不通Agent 在第一步就失败了后面根本走不到 Glob 执行。实际排障时OpenCode 用 Glob 搜文件没反应通常有三种表现。第一种Agent 回复“没有找到文件”工具返回空数组。文件明明在项目里但 Glob 就是搜不出来。这时要分两种情况如果模型请求正常Glob 也真的执行了那多半是 pattern 或 path 的问题如果模型请求本身就报错或者工具调用日志里根本没有glob这个工具名那就要先查通道。第二种工具调用直接报错日志里出现 404、invalid endpoint、not found 之类的信息。这类报错最典型的原因就是 Base URL 多填了/v1。TaoToken 的 API 地址是https://taotoken.net/api如果再拼上/v1请求路径就变成了https://taotoken.net/api/v1/...和实际端点不匹配模型请求会先失败。OpenCode 的 Agent 拿不到模型返回自然不会继续调用 Glob。第三种Agent 不调用 Glob改用 Bash 的 find、ls或者直接猜路径。这种情况不一定是通道坏了也可能是模型没有正确理解工具提示词。OpenCode 给 Glob 的提示词里强调pattern 必填使用标准 Glob 语法path 可选默认当前工作目录不要给 path 填undefined或null想缩小范围时再填具体路径。如果模型没按这个提示词走它可能会绕过 Glob。但排障顺序仍然建议先确认通道再调提示词和参数因为通道问题会放大所有工具调用的不确定性。本篇聚焦的场景很明确OpenCode 里 Glob 搜文件没反应怀疑模型通道地址多填了/v1。先把 Base URL 改回https://taotoken.net/api再去看 pattern 和 path能少走很多弯路。TaoToken 前置先拿 Key再确认 API 地址与 opencode.json排障的第一步不是改 pattern而是确认模型通道的入口。到 TaoToken 官网创建 Key地址是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob创建完成后你会拿到一个 API Key。本文里统一用YOUR_API_KEY表示实际配置时替换成你自己的 Key。Key 不要提交到 Git 仓库也不要用截图发到公开渠道。接着确认两个地址官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-globAPI 地址https://taotoken.net/api注意 API 地址后面不要加/v1。这是本篇最关键的检查点。很多 OpenAI 兼容工具的习惯是 Base URL 填https://api.openai.com/v1所以有人会顺手把 TaoToken 的地址也写成https://taotoken.net/api/v1。但 TaoToken 的兼容层已经处理了路径Base URL 应该是https://taotoken.net/api。多填/v1后底层 SDK 再拼上/chat/completions就会变成/api/v1/chat/completions请求自然失败。还要确认模型 ID。OpenCode 需要知道调用哪个模型MODEL_ID要换成 TaoToken 当前支持的模型标识。模型 ID 写错时常见表现是 400 或 404而不是 Glob 本身报错。所以排障时要区分404 可能是地址多填/v1也可能是模型 ID 不存在401 多半是 Key 无效403 可能是权限或余额问题。先看报错类型再决定改哪里。如果你使用 Claude Code对应的是settings.json和ANTHROPIC_*环境变量如果使用 Codex对应的是config.toml。OpenCode 的配置入口通常是opencode.json下面给出可复制版本。不同 OpenCode 版本字段可能有差异最终以接入文档为准。可复制配置opencode.json 里 Base URL 不要带 /v1OpenCode 的配置可以放在项目根目录的opencode.json也可以放在全局配置目录。排障时建议先用项目级配置减少全局环境变量干扰。下面是一个 OpenAI 兼容 provider 的示例{ $schema: https://opencode.ai/config.json, provider: { taotoken: { npm: ai-sdk/openai-compatible, name: TaoToken, options: { baseURL: https://taotoken.net/api, apiKey: YOUR_API_KEY }, models: { MODEL_ID: { name: MODEL_ID } } } }, model: taotoken/MODEL_ID }这段配置里baseURL必须是https://taotoken.net/api末尾没有/v1也没有多余的斜杠。apiKey换成你的真实 Key。MODEL_ID换成你能用的模型标识两处保持一致。保存后重启 OpenCode因为配置通常在启动时加载。如果你不想改 JSON也可以用环境变量做一次快速验证export OPENAI_BASE_URLhttps://taotoken.net/api export OPENAI_API_KEYYOUR_API_KEY注意不同 OpenCode 版本读取的环境变量名可能不同有些版本会从 provider 配置里读取有些会走底层 SDK 的默认变量。环境变量只适合临时排查长期使用还是建议写进opencode.json避免和系统里旧的OPENAI_BASE_URL冲突。如果你已经安装了 TaoToken CLI也可以用命令行快速确认通道是否可用npm i -g taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m MODEL_ID这条命令的作用是验证 Key、API 地址和模型 ID 是否匹配。它不替代 OpenCode 的 Glob 工具只是帮你把“模型通道”和“工具参数”这两层问题分开。通道验证通过后再回到 OpenCode 里测 Glob思路会清晰很多。配置完成后检查一下有没有旧配置覆盖。比如项目里存在多个opencode.json或者全局配置里还有一份旧的 providerOpenCode 可能会读到旧地址。排障时可以把旧的 provider 临时注释掉只保留 TaoToken 这一份。验证请求让 Agent 再跑一次 Glob 并检查返回配置改好并重启 OpenCode 后不要直接丢一个模糊任务而是给 Agent 一个明确的 Glob 指令。比如在项目根目录启动 OpenCode然后输入请用 Glob 工具搜索 **/*.mdpath 省略不要用 Bash find。这条指令同时约束了三件事使用 Glob 工具、给出 pattern、明确 path 省略。接下来观察 OpenCode 的工具调用日志。如果通道正常你会看到类似这样的调用tool: glob pattern: **/*.md path: (empty)如果返回结果里列出了文件并且顺序和修改时间有关说明模型通道和 Glob 工具都通了。此时如果结果不符合预期再去调 pattern 和 path。如果日志里出现 404 或 invalid endpoint优先检查baseURL是不是写成了https://taotoken.net/api/v1。把它改回https://taotoken.net/api重启 OpenCode 再试。如果出现 401 或 403检查 Key 是否复制完整、是否已经替换YOUR_API_KEY、账户是否有可用权限。如果出现 400检查模型 ID 是否正确。如果通道验证通过但 Glob 返回空可以按下面的顺序排查pattern 是否用了标准 Glob 语法。Glob 支持通配符但不要把完整正则塞进 pattern。多个文件类型建议并发调用多次而不是在一个 pattern 里写复杂表达式。path 是否误填了undefined或null。Glob 提示词明确警告不要这样填想用默认工作目录就直接省略该字段。当前工作目录是否就是项目根目录。如果 OpenCode 从别的目录启动Glob 的默认搜索范围也会变。是否把搜索范围放得太大扫进了node_modules或dist。这类目录文件多、噪声大建议用 path 缩小范围。是否应该用 Grep。Glob 按文件名找文件Grep 按文件内容找代码。想搜log.*Error这类内容应该换 Grep。你也可以用模型对话页面单独验证模型通道排除 OpenCode 配置本身的干扰https://taotoken.net/console/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob在对话页面发一条简单消息如果正常返回说明 Key 和 API 地址没问题。再回到 OpenCode 里测 Glob问题范围就缩小到工具参数或提示词上了。本篇常见错排查/v1、模型 ID、Key 与代理变量第一个高频错误Base URL 多填/v1。这是本篇标题对应的核心问题。正确写法是https://taotoken.net/api不是https://taotoken.net/api/v1。改完必须重启 OpenCode。第二个错误Key 没有替换。配置文件里还留着YOUR_API_KEY或者复制时少了字符。检查 Key 时不要用眼睛数直接重新复制一次。第三个错误模型 ID 写错。MODEL_ID只是占位符必须换成实际支持的模型标识。模型 ID 错误时Glob 可能还没执行模型请求就先返回 400 或 404。第四个错误环境变量冲突。系统里可能还存在旧的OPENAI_BASE_URL、OPENAI_API_KEY或者 Claude Code 的ANTHROPIC_BASE_URL。这些变量可能覆盖opencode.json里的配置。排障时先清掉无关变量或者用env | grep -i openai、env | grep -i anthropic检查一遍。第五个错误配置层级冲突。项目级opencode.json、全局配置、环境变量可能同时存在。OpenCode 读取顺序不同最终生效的地址可能不是你以为的那个。建议先用一份最小配置验证通过后再合并。第六个错误path 填了null或undefined。Glob 提示词里专门强调过想用默认工作目录就省略该字段不要填这两个词。填了之后工具行为可能不符合预期。第七个错误pattern 写成复杂正则。Glob 是文件名匹配工具不是内容正则工具。function\s\w这类应该交给 GrepGlob 只负责用**/*.ts、src/**/*.md这样的通配符找文件。第八个错误在node_modules、dist、.git里大面积搜索。Glob 虽然能扛住大仓库但搜索结果会被噪声淹没。更合理的做法是先用宽泛 pattern 找候选再用 path 缩小范围最后用 Grep 做内容级筛选。第九个错误Agent 不调用 Glob。如果通道正常、参数也正常但模型就是不调用 Glob可以在指令里明确写“使用 Glob 工具”“不要用 Bash find”“path 省略”。OpenCode 的 Glob 提示词本身鼓励饱和式搜索和批量调用但模型是否遵循还取决于模型能力和上下文。排障顺序建议固定为先验证模型通道再验证 Glob 参数最后看工作目录和搜索范围。这样不会把通道 404 误判成 pattern 写错。语义一致 CTA通道对了Glob 才有结果OpenCode 用 Glob 搜文件没反应排障时不要一上来就改 pattern。先确认 TaoToken 的 Base URL 是不是https://taotoken.net/api有没有多填/v1再确认 Key 是否替换、模型 ID 是否有效最后才去调 pattern、path 和工作目录。TaoToken 在这条链路里提供的是模型通道Glob 的工具逻辑仍然由 OpenCode 的提示词和参数控制。两层分开排查问题会清楚很多。如果你需要创建或管理 Key可以走 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob如果你需要核对 OpenCode、OpenAI 兼容 provider、Base URL 的完整写法可以看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob如果你只是想先验证模型通道是否可用可以去模型对话页面发一条消息https://taotoken.net/console/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob如果你准备长期用 OpenCode 做编码和 Agent 任务可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopencode-glob把 Base URL 末尾的/v1去掉Key 和模型 ID 核对好再让 Agent 用 Glob 搜一次通常就能看到文件列表。通道通了Glob 的 pattern 和 path 才有意义。
