Search Tool
基于 Cursor 官方 Semantic & Agentic Search 文档解释 Instant Grep、semantic search、indexing、privacy 和 Explore subagent。
📖 本篇术语速查表
| 英文 / 缩写 | 中文 | 一句话解释 |
|---|---|---|
| Search Tool | 搜索工具 | Agent 在代码库里检索的能力。 |
| 精准检索 | precise | 用准确条件缩小范围。 |
| 上下文补充 | context | 检索结果补给 Agent。 |
不想读完?把下面这段提示词丢给 AI 帮你跑完——帮你用 Cursor 的搜索工具精准定位代码、补全上下文。
你是 Cursor 搜索工具使用顾问,帮我用搜索工具精准定位代码、给 Agent 补全相关上下文。
【角色】
你熟悉搜索工具怎么用准确条件检索、怎么把结果作为上下文补给 Agent、怎么避免噪音。
【输入】
- 我想找的代码 / 信息:___
- 已知的线索(文件 / 符号 / 关键词):___
- 代码库规模:___
- 找它要做什么:___
【工作流程】
1. 把需求转成精准检索条件
2. 缩小范围、过滤噪音
3. 把相关结果作为上下文
4. 给据结果推进的下一步
【输出规范】
▌一、检索条件
▌二、缩小范围的方法
▌三、结果作上下文的用法
▌四、下一步
【硬约束】
- 检索精准,不一次拉一堆无关结果
- 大库注意性能,分批检索
- 结果需对照确认,不盲信
- 不臆断代码意图
- 不确定的标注需进一步查
- 给的条件具体可用
- 给的每条结论都要落到具体可照做的步骤或示例,不停留在「建议」「考虑一下」这类没法直接执行的空泛表述Cursor Agent 的质量很大程度取决于它能不能找到正确上下文。官方 Search 文档说明,Agent 会组合多种 search tools:精确匹配用 Instant Grep,不知道名字时用 semantic search,复杂探索时连用搜索、读文件和追引用。
阅读目标:读完本章,你应该能判断什么时候给 Agent 精确符号,什么时候描述行为,并知道 indexing 和 .cursorignore 如何影响结果。
1. Instant Grep 与 Semantic Search
官方文档把搜索分成两类。
| 搜索方式 | 适合 | 例子 |
|---|---|---|
| Instant Grep | 已知函数名、变量名、错误字符串、regex pattern | PaymentFailedError、import.*PaymentService |
| Semantic Search | 不知道准确名字,只知道行为或概念 | “where do we handle authentication?” |
Instant Grep 支持 full regex 和 word-boundary matching。Semantic search 则依赖代码库 indexing(索引),把代码切成 chunks(语义片段),生成 vector embeddings(向量嵌入,把文本转成高维向量便于按相似度检索),再按语义匹配。
flowchart TD
Prompt["搜索需求"] --> Known{"知道精确符号或字符串"}
Known -->|是| Grep["Instant Grep"]
Known -->|否| Semantic["Semantic Search"]
Semantic --> Entry["找到入口"]
Entry --> Grep2["Grep 追引用"]
Grep --> Read["Read files"]
Grep2 --> Read
Read --> Context["形成上下文"]
2. Indexing 怎么工作
官方说明:
- 打开 workspace 后自动开始 indexing。
- Cursor 把代码切成 meaningful chunks。
- 每个 chunk 转成 vector embedding。
- Semantic search 在 80% completion 后可用。
- index 每 5 分钟自动同步一次,只处理 changed files。
变化处理:
| Change | Action |
|---|---|
| New files | 自动加入 index |
| Modified files | 删除旧 embeddings,创建新 embeddings |
| Deleted files | 从 index 移除 |
可以在 Cursor Settings > Indexing 查看状态或触发 re-index。Help Center 也说明可从 status bar 看进度,并通过 command palette 搜索 Reindex。
3. ignore files 会影响搜索质量
官方说明 Cursor indexes all files except ignore files,例如 .gitignore 和 .cursorignore。
为了提高搜索质量,应排除:
node_modulesdist- build artifacts
- generated files
- 大型内容文件
- 与任务无关的产物目录
如果 Agent 老是找到无关上下文,不一定是模型问题。先检查 index 状态和 .cursorignore。
4. 隐私和安全边界
官方 Search 文档说明:
- File paths 发送到 Cursor servers 前会加密。
- Code content 不以 plaintext 存储。
- Indexing 时 code content 在内存中使用,然后丢弃。
- Embeddings 创建时不存 filenames 或 source code。
- Agent 搜索时,Cursor 检索 embeddings,并在 client side 解密 chunks。
- 6 周不活动后 indexed codebases 会删除;重新打开项目会触发 re-indexing。
深读:为什么先搜索现有模式再改代码
真实项目里,很多 bug 来自“没找现有模式就新建一套”。Cursor 的 semantic search 和 grep 组合正是为了解决这个问题:先找到项目已有认证、错误处理、数据访问、UI 组件模式,再按本地约定改。
好的 prompt 不是“帮我做登录”,而是“先找现有登录、表单校验、API 请求、错误展示模式,再给最小实现计划”。
5. Explore subagent
官方文档说明,Agent 可以自动使用 Explore subagent。它在自己的 context window 中运行,使用更快模型执行大量并行搜索,只把相关 findings 返回主 conversation。
适合:
- 大代码库 broad search。
- 多模块影响面盘点。
- 找所有 validation、permission、billing、routing 入口。
- 不想把主上下文塞满 raw file contents 的场景。
你也可以直接要求:
Use a subagent to find all the places we validate user input.本章自检
完成本章后,用这 3 个问题检查自己是否真正理解:
- Instant Grep 和 semantic search 分别适合什么 prompt?
- Indexing 未完成或
.cursorignore不合理,会怎样影响 Agent? - Explore subagent 为什么能减少主 conversation 的上下文压力?
通过标准:你能写出一条先搜索现有模式、再计划、最后才修改的 Agent prompt。
官方来源
- Cursor Semantic & Agentic Search —— 官方说明 Instant Grep、semantic search、indexing、privacy、Explore subagent 和 search tips。
- Cursor Codebase Indexing Help —— Help Center 说明 indexing 状态、reindex 和
.cursorignore。