Windsurf’s context engine builds a deep understanding of your codebase, past actions, and next intent. Historically, code-generation approaches focused on fine-tuning large language models (LLMs) on a codebase, which is difficult to scale to the needs of every individual user. A more recent and popular approach leverages retrieval-augmented generation (RAG), which focuses on techniques to construct highly relevant, context-rich prompts to elicit accurate answers from an LLM. We’ve implemented an optimized RAG approach to codebase context, which produces higher quality suggestions and fewer hallucinations.Documentation Index
Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
Use this file to discover all available pages before exploring further.
Windsurf offers full fine-tuning for enterprises, and the best solution
combines fine-tuning with RAG.
Default Context
Out of the box, Windsurf takes multiple relevant sources of context into consideration.- The current file and other open files in your IDE, which are often very relevant to the code you are currently writing.
- The entire local codebase is then indexed (including files that are not open), and relevant code snippets are sourced by Windsurf’s retrieval engine as you write code, ask questions, or invoke commands.
- For Pro users, we offer expanded context lengths increased indexing limits, and higher limits on custom context and pinned context items.
- For Teams and Enterprise users, Windsurf can also index remote repositories. This is useful for companies whose development organization works across multiple repositories.
Knowledge Base (Beta)
Only available for Teams and Enterprise customers.
Knowledge Base
Configure knowledge base settings for your team. This page will only be visible with admin privileges.
Best Practices
Context Pinning is great when your task in your current file depends on information from other files. Try to pin only what you need. Pinning too much may slow down or negatively impact model performance. Here are some ideas for effective context pinning:- Module Definitions: pinning class/struct definition files that are inside your repo but in a module separate from your currently active file.
- Internal Frameworks/Libraries: pinning directories with code examples for using frameworks/libraries.
- Specific Tasks: pinning a file or folder defining a particular interface (e.g.,
.protofiles, abstract class files, config templates). - Current Focus Area: pinning the “lowest common denominator” directory containing the majority of files needed for your current coding session.
- Testing: pinning a particular file with the class you are writing unit tests for.