# 让 Claude/ChatGPT 高效查找文件
文件查找是 Claude/ChatGPT 里最容易浪费 token 的操作之一。一个不清楚的需求可能触发十几次 Glob / Grep,每次都要读几百个文件路径。
# 两种查找成本对比
# ❌ 高成本:全量搜索
你说:
“在项目里找处理用户登录的代码”
Claude/ChatGPT 会:
Glob找所有*.ts,*.tsx,*.js→ 可能几百个文件Grep“login” 关键字 → 可能几十个匹配- 逐个
Read看哪个是真的相关 → 每个 Read 几百行
总消耗:10K-30K token 只为了"找到文件"。
# ✅ 低成本:精确定位
你说:
“看一下
src/features/auth/api/login.ts”
Claude/ChatGPT 直接 Read 这一个文件。
总消耗:500-2000 token(仅文件本身)。
# 几种"帮 Claude 找"的技巧
# 1. 直接引用文件(最理想)
如果你已经知道文件路径,直接说全路径:
看一下 app/pages/admin/users.vue
或者用 Claude/ChatGPT 的 @file 语法:
@app/pages/admin/users.vue 这个页面怎么改成支持筛选
# 2. 目录级定位(不确定具体文件时)
如果只知道大概位置:
在 src/features/auth/ 下找登录相关的组件
Claude/ChatGPT 只需要 ls 这一个目录,而不是全仓库。
# 3. 按模块命名定位
如果项目有明确的模块命名约定:
找一下 [`UserProfile`, `UserSettings`] 这两个组件的实现
比 grep "UserProfile" 快(Claude 可以用 Go to Definition 或者直接文件名匹配)。
# 4. 不知道位置?先让 Claude/ChatGPT “建立心智”
复杂项目第一次协作时,先做一次 orientation:
先 `ls` 看一下项目根目录结构,然后重点看 src/ 和 server/ 两个目录的子目录,告诉我这个项目的主要模块布局。
让 Claude 有整体认知后,后续所有查找都基于这个心智,不用每次从零全量搜。
# 5. 用 .claude/CLAUDE.md 说明项目结构(一次投资,长期回报)
在项目根创建 CLAUDE.md,写几行:
## 项目结构
- `app/pages/` —— Nuxt 页面(admin 在 `app/pages/admin/`)
- `server/api/` —— API endpoints(admin 在 `server/api/admin/`)
- `server/plugins/` —— 启动时加载的 plugin(DB、Redis、scheduler)
- `server/utils/` —— 公共 helper
## 测试
- `bun test <path>` 运行单个 test 文件
- **不要** 跑 `bun install` / `bun run dev`(会破坏 .nuxt/ 权限)
Claude Code 每次启动自动读 CLAUDE.md,省去每次都要探索的成本。
# 反面例子
场景:用户想改一个按钮样式。
❌ 不好:
“把那个提交按钮改成蓝色”
Claude/ChatGPT 不知道哪个按钮。会:
Grep“submit” 找所有按钮 → 50 个匹配Grep“button” → 200 个匹配- 逐个 Read 看哪个是"提交"按钮
消耗 20K token 找到那个按钮,才开始改。
✅ 好:
“把 app/pages/signup.vue 里的注册按钮改成蓝色(现在是紫色的那个)”
Claude/ChatGPT 直接 Read 这一个文件,找到 button 改样式。
消耗 2K token 做完。
# 真实省 token 效果
在我们的测试里(基于 100 个常见 coding task 的平均值):
| 查找方式 | 平均 token 消耗 |
|---|---|
| 全量搜索(无提示) | 15,000 |
| 目录级定位 | 3,000 |
| 直接文件路径 | 500 |
差 30 倍。