A highly flexible, customizable, and powerful extension for working with LLMs within Visual Studio Code.
Highlights:
settings.json
for any reason. There's a UI for everything.If you're using a local solution, you can skip setting an API key.
Otherwise, you need to configure API keys for whichever providers you plan to use by opening the command pallete (Windows: ⊞⇧P, macOS: ⌘⇧P) and running the command labeled: "Wingman: Set API key". Select the provider you want to use, enter your API key, and press enter.
There are three concepts that are crucial to understanding how Wingman operates.
It's really not that complicated.
A UI is included for prompt management.
Wingman makes your prompts dynamic with support for placeholders.
Current placeholders:
{{selection}}
is replaced with the selected text.{{ft}}
is replaced with the VSCode language identifier (go
, typescript
){{language}}
is replaced with a friendly language name (Go
, TypeScript
).{{file}}
is replaced with the contents of the active file.{{input}}
prompts for user input and replaces this placeholder with the response.{{:param:val}}
prompt-level completion param overrides (e.g. {{:top_k:0.1}}
).A UI is included for preset management.
A preset is a provider configuration. It defines the system message, the provider, the API URL, and completion parameters. You can create as many presets as you want and switch between them whenever.
A UI is included for preset management.
Modes enhance the prompt and preset management experience. A mode is a collection of presets and prompts. Three built-in modes are provided as examples: "Programming", "Creative writing", and "Technical writing", but you are encouraged to create your own.
Modes can have presets assigned to them. Here's why this is useful:
Switching between modes automatically activates the last preset used in that mode.
/webview
: npm run dev
. This is a Svelte project that outputs to /extension/dist
./extension
: npm run build:watch
{{language_instructions}}
.