返回 Skill 列表
extension
分类: 开发与工程无需 API Key

smgrep

使用自然语言查询的语义代码搜索。当用户询问“X是在哪里实现的”,“Y是如何工作的”,“找到Z的逻辑”或者需要通过概念而不是确切文本定位代码时使用。返回带有行号和代码片段的文件路径。

person作者: jakexiaohubgithub

When to Use

Use this to find code by concept or behavior (e.g., "where is auth validated", "how are plugins loaded"). Note: This tool prioritizes finding the right files and locations in the code. Snippets are truncated (max 16 lines) and are often just previews.

Example:

smgrep "how are plugins loaded"
smgrep "how are plugins loaded" packages/transformers.js/src

Strategy for Different Query Types

For Architectural/System-Level Questions (auth, LSP integration, file watching)

  1. Search Broadly First: Use a conceptual query to map the landscape.
    • smgrep "authentication authorization checks"
  2. Survey the Results: Look for patterns across multiple files:
    • Are checks in middleware? Decorators? Multiple services?
    • Do file paths suggest different layers (gateway, handlers, utils)?
  3. Read Strategically: Pick 2-4 files that represent different aspects:
    • Read the main entry point
    • Read representative middleware/util files
    • Follow imports if architecture is unclear
  4. Refine with Specific Searches: If one aspect is unclear:
    • smgrep "session validation logic"
    • smgrep "API authentication middleware"

For Targeted Implementation Details (specific function, algorithm)

  1. Search Specifically: Ask about the precise logic.
    • smgrep "logic for merging user and default configuration"
  2. Evaluate the Semantic Match:
    • Does the snippet look relevant?
    • Crucial: If it ends in ... or cuts off mid-logic, read the file.
  3. One Search, One Read: Use smgrep to pinpoint the best file, then read it fully.

Output Format

Returns: path/to/file:line [Tags] Code Snippet

  • [Definition]: Semantic search detected a class/function here. High relevance.
  • ...: Truncation Marker. Snippet is incomplete—use read_file for full context.

Tips

  • Trust the Semantics: You don't need exact names. smgrep "how does the server start" works better than guessing smgrep "server.init".
  • Watch for Distributed Patterns: If results span 5+ files in different directories, the feature is likely architectural—survey before diving deep.
  • Scope When Possible: Use path constraints to focus: smgrep "auth" src/server/
  • Don't Over-Rely on Snippets: For architectural questions, snippets are signposts, not answers. Read the key files.
  • "Still Indexing...": If you see this, please stop, alert the user that the index is ongoing and ask them if they wish to proceed. Results will be partial until the index is complete.