I've been sharing details on Twitter for the last month (summarized here: https://twitter.com/NateSesti/status/1763264142163808279), covering the following:
- A specific type of debouncing, and strategy for re-using streamed requests
- How we use the Language Server Protocol to surgically include important context
- Using tree-sitter to calculate the "AST Path", an abstraction with many uses
- Truncation: how we decide to stop early, complete multiple lines, and generally avoid mistaken artifacts
- Jaccard similarity as a method of searching over and ranking recently edited ranges / files
I will continue to share as we improve, so feel free to follow along. I'll also be compiling all of this into a more well-formatted blog post in the future!
Inspired by the "Copilot Internals" post from a year ago (https://news.ycombinator.com/item?id=34032872), I’ll be sharing live updates, clear explanations, and non-obfuscated code.
---
...and one more thing: we've exposed a handful of options that let you customize your experience. You can alter:
- the model - stop words - all numerical parameters / thresholds used for retrieval and prompt construction - the prompt template - whether to complete multiple lines, or only one at a time - and a bit more (https://github.com/continuedev/continue/blob/0445b489408f0e7...)
This lets each individual make their own preferred trade-off between speed, accuracy, and other factors.