1. Windows 下 AI 编程代理为什么总在“找文件”这一步卡住
如果你在 Windows 上用 Claude Code 这类 AI 编程代理做过稍微大一点的项目,大概率遇到过这种场景:你让它“把 src 目录下所有调用旧接口的地方找出来改掉”,它吭哧吭哧遍历目录,等了半天,最后漏了几个文件,或者干脆告诉你“找不到相关文件”。问题不在模型智商,而在检索链路——AI 代理默认的文件搜索是逐层遍历目录树,Windows 的 NTFS 加上 node_modules 这种深坑,遍历一次成本极高,路径和索引完全脱节。
Everything 是 Windows 上老牌的秒级文件检索工具,它靠读取 NTFS 的 USN 日志建立索引,搜索几乎是瞬时的。ECC(Everything Claude Code)做的事情,就是把 Everything 的检索能力接到 Claude Code 的代理流程里,让 AI 在“找文件”这一步不再靠蛮力遍历,而是直接查索引。这篇就聚焦入门场景:怎么在 Windows 上把 Everything 的 HTTP 服务开起来,怎么配 Claude Code 侧的 settings.json,最后跑通一次从提问到定位文件的完整链路。
适合谁看:已经在 Windows 上用 Claude Code 或准备上手 AI 编程代理、项目文件数量超过几千个、被文件检索拖慢过节奏的开发者。下面所有配置都可以直接复制,我尽量把每一步的“为什么”也讲清楚,避免你配完了不知道哪一环在起作用。
2. 前置准备:Everything HTTP 服务与 TaoToken 接入
2.1 Everything 侧:开启 HTTP 服务
Everything 默认是 GUI 工具,但 ECC 需要的是它的 HTTP 接口。打开 Everything,进入“工具 → 选项 → HTTP 服务器”,勾选“启用 HTTP 服务器”。默认端口是 80,但 80 在 Windows 上经常被占用,建议改成 8080 或 18080。同时勾选“允许从本地主机访问”,如果你只在本地用,不要开外网访问。
配置完成后,浏览器访问http://127.0.0.1:8080/?search=test&json=1,如果返回一段 JSON 结果,说明 HTTP 服务通了。这个json=1参数很关键,ECC 解析的就是这个 JSON 结构。如果返回的是 HTML 页面,检查一下是不是没带json=1,或者端口被别的服务占了。
2.2 TaoToken 侧:拿到 API Key
Claude Code 本身需要模型服务,这里用 TaoToken 做接入。打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后在控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,API Key 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。API 基础地址是 https://taotoken.net/api ,注意这个地址不带 UTM 参数,配置时直接用。
拿到 Key 之后先别急着写进配置,用 curl 验证一下能不能通:
curl https://taotoken.net/api/v1/models \ -H "Authorization: Bearer sk-你的Key"返回模型列表就说明 Key 有效。这一步能省掉后面很多“到底是 Key 错了还是配置错了”的排查时间。
3. 可复制配置:settings.json 骨架与 Everything 对接
3.1 Claude Code 的 settings.json 骨架
Claude Code 的配置分两层:全局配置在用户目录,项目配置在项目根目录的.claude/settings.json。入门阶段建议先用项目级配置,避免污染全局。下面是一个可直接复制的骨架:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的Key" }, "permissions": { "allow": ["read", "write", "run", "search"], "deny": ["delete"] }, "tools": { "everything": { "enabled": true, "endpoint": "http://127.0.0.1:8080/", "defaultParams": { "json": "1", "path": "C:/你的项目根目录", "maxResults": 200 } } } }几个参数说明一下。ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,这样 Claude Code 的请求会走 TaoToken 而不是官方端点。permissions.allow里开了 search,代理才能调用检索工具;deny里禁掉 delete,防止误删。tools.everything.endpoint就是刚才 Everything HTTP 服务的地址,端口要和你设的一致。defaultParams.path限定默认搜索范围,避免全盘搜索返回一堆无关结果。
3.2 Everything 检索语法在配置里的映射
Everything 原生支持一套搜索语法,ECC 会把它透传给 HTTP 接口。常用的几个:
| 语法 | 作用 | 示例 |
|---|---|---|
ext: | 按扩展名过滤 | ext:ts |
path: | 限定路径 | path:/src/ |
content: | 搜索文件内容 | content:axios |
size: | 按大小过滤 | size:<1M |
date: | 按修改日期 | date:today |
这些语法可以直接写在给代理的自然语言指令里,比如“用 Everything 搜索 ext:ts content:axios,列出所有调用 axios 的文件”。代理会把它转成 HTTP 请求发给 Everything。你不需要手动拼 URL,但知道底层语法能帮你写出更精准的指令。
4. 验证请求:跑通一次从提问到定位文件的链路
配置写完之后,重启 Claude Code,让它重新加载 settings.json。然后做一次最小验证:在项目根目录启动 Claude Code,输入一条检索指令。
claude进入交互后输入:
用 Everything 搜索 ext:ts content:fetch,列出所有包含 fetch 调用的文件,输出文件路径和匹配行如果配置正确,你会看到代理先调用 Everything 的 HTTP 接口,返回一批文件路径,然后它再逐个读取匹配行。整个过程应该在几秒内完成,而不是像默认遍历那样等十几秒甚至更久。
验证成功的标志有三个:一是返回的文件路径都在你设定的defaultParams.path范围内;二是结果里包含content:匹配到的行内容;三是没有出现“搜索超时”或“无法连接检索服务”的报错。如果三个都满足,说明 Everything 的索引和 Claude Code 的代理链路已经打通。
再补一个稍微复杂点的验证,确认批量操作也能走通:
用 Everything 搜索 path:/src/ ext:ts,把其中所有 console.log 替换为 logger.info,修改前先输出 diff 预览这条指令会触发“检索 → 读取 → 修改预览”的完整流程。如果代理能正确列出待修改文件并给出 diff,说明检索链路和写入权限都正常。
5. 本篇常见错排查
5.1 Everything HTTP 返回 404 或连接被拒
最常见的原因是端口没对上。Everything 选项里设的端口,和 settings.json 里endpoint的端口必须一致。另一个原因是 Everything 没以管理员权限运行,HTTP 服务在某些 Windows 版本上需要管理员权限才能绑定端口。右键 Everything 图标,选择“以管理员身份运行”再试。
5.2 代理说“找不到检索工具”
检查 settings.json 里tools.everything.enabled是不是 true,以及permissions.allow里有没有search。有些版本的 Claude Code 需要显式声明工具权限,缺了就会静默忽略。另外确认配置文件放对了位置——项目级配置在.claude/settings.json,不是根目录的settings.json。
5.3 搜索结果为空但文件确实存在
Everything 的索引有延迟,新建的文件可能还没进索引。在 Everything GUI 里按 F5 强制刷新索引,或者等几秒再试。另一个可能是defaultParams.path写成了反斜杠C:\project,Everything 的 HTTP 接口对路径分隔符敏感,统一用正斜杠C:/project更稳。
5.4 API 请求报 401 或 403
先确认 API Key 有没有复制完整,有没有多余空格。然后用第 2.2 节的 curl 命令单独验证 Key。如果 curl 能通但 Claude Code 报错,检查ANTHROPIC_BASE_URL是不是写成了https://taotoken.net/api/带了尾部斜杠,有些客户端对尾部斜杠处理不一致,去掉更保险。
6. 接入文档与后续路径
检索链路跑通之后,下一步可以按你的使用场景分流。如果你主要是在排障和接入阶段,建议先把 API Keys 和接入文档过一遍:API Keys 在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。文档里有不同客户端的配置示例,比对着改比盲试快。
如果你想先验证模型对话效果,可以直接用模型对话页面 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 试几条指令,确认模型响应正常再回到本地配置。如果你打算长期用 Claude Code 做编码和 Agent 任务,Coding Plan 页面 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 里有针对编码场景的额度说明,比按量计费更适合高频使用。
最后提一个实际经验:Everything 的索引范围默认是全盘,如果你项目在 D 盘而系统盘文件很多,可以在 Everything 选项里把索引范围限定到项目所在盘符,这样 HTTP 查询返回更快,代理处理的结果也更聚焦。这个设置不影响功能,但能明显减少无关结果对代理上下文的干扰。