AI Coding Assistant
A production-quality VS Code extension that adds an AI-powered coding assistant to your editor — similar to GitHub Copilot — with support for OpenAI, Anthropic Claude, Groq, and Amazon Bedrock.
Features
| Feature |
Description |
| Sidebar Chat |
Copilot-style chat panel in the Activity Bar. Sends your code context automatically. |
| Inline Suggestions |
Ghost-text completions triggered as you type (TAB to accept). |
| Multi-Provider |
Switch between OpenAI, Claude, Groq, and Bedrock with a single command. |
| Secure Key Storage |
API keys stored in VS Code's encrypted SecretStorage, never in plain text. |
| Prompt Cache |
In-memory LRU cache avoids redundant API calls for repeated prompts. |
| Debug Logging |
Dedicated Output Channel (AI Coding Assistant) for tracing all activity. |
Prerequisites
- Node.js ≥ 18
- VS Code ≥ 1.85
- An API key for your chosen provider (see Providers)
Quick Start
1. Clone & install
git clone https://github.com/your-org/ai-coding-assistant
cd ai-coding-assistant
npm install
2. Compile
npm run compile
# or watch mode during development:
npm run watch
3. Launch in Extension Development Host
Press F5 in VS Code (or use Run → Run Extension).
A new VS Code window opens with the extension loaded.
4. Set your API key
Open the Command Palette (Cmd/Ctrl+Shift+P) and run:
AI Assistant: Select AI Provider
AI Assistant: Set API Key
These tools are used to scaffold and package VS Code extensions:
npm install -g yo generator-code # Yeoman scaffolder for new extensions
npm install -g @vscode/vsce # VS Code Extension CLI (packaging & publishing)
# Scaffold a new extension (not needed for this project)
yo code
Providers
OpenAI
- Get a key at https://platform.openai.com/api-keys
- Select provider
openai, paste key when prompted
- Default model:
gpt-4o
Anthropic Claude (default)
- Get a key at https://console.anthropic.com
- Select provider
claude, paste key when prompted
- Default model:
claude-sonnet-4-5
Groq
- Get a key at https://console.groq.com
- Select provider
groq, paste key when prompted
- Default model:
llama-3.3-70b-versatile
Amazon Bedrock
Uses the standard AWS credential chain (env vars → ~/.aws/credentials → IAM role).
Optionally supply explicit credentials via AI Assistant: Set API Key.
// settings.json
"aiAssistant.bedrock.region": "us-east-1",
"aiAssistant.bedrock.modelId": "anthropic.claude-3-sonnet-20240229-v1:0"
Settings Reference
| Setting |
Default |
Description |
aiAssistant.provider |
claude |
Active provider |
aiAssistant.model |
"" |
Model override (empty = provider default) |
aiAssistant.inlineSuggestionsEnabled |
true |
Toggle ghost-text completions |
aiAssistant.debounceDelay |
300 |
Typing pause (ms) before triggering inline suggestion |
aiAssistant.maxTokens |
256 |
Max tokens for inline completions |
aiAssistant.temperature |
0.2 |
Sampling temperature (0–1) |
aiAssistant.bedrock.region |
us-east-1 |
AWS region |
aiAssistant.bedrock.modelId |
anthropic.claude-3-sonnet-20240229-v1:0 |
Bedrock model ID |
Commands
| Command |
Description |
AI Assistant: Set API Key |
Store API key in SecretStorage |
AI Assistant: Select AI Provider |
Switch active provider via QuickPick |
AI Assistant: Toggle Inline Suggestions |
Enable / disable ghost text |
AI Assistant: Clear Prompt Cache |
Flush the in-memory response cache |
Packaging into a .vsix
# Install vsce if you haven't already
npm install -g @vscode/vsce
# Compile first
npm run compile
# Package
vsce package
# → ai-coding-assistant-1.0.0.vsix
Install the .vsix locally
code --install-extension ai-coding-assistant-1.0.0.vsix
Or: Extensions panel → ··· menu → Install from VSIX…
Project Structure
ai-coding-assistant/
├── resources/
│ └── sidebar-icon.svg # Activity Bar icon
├── src/
│ ├── aiProviders/
│ │ ├── types.ts # Shared AIProvider interface
│ │ ├── openai.ts
│ │ ├── claude.ts
│ │ ├── groq.ts
│ │ ├── bedrock.ts
│ │ └── index.ts # Provider factory
│ ├── utils/
│ │ ├── logger.ts # Output Channel logger
│ │ └── cache.ts # LRU + TTL prompt cache
│ ├── webview/
│ │ └── chat.html # Sidebar chat UI
│ ├── extension.ts # Activation entry point
│ ├── inlineCompletionProvider.ts
│ ├── settingsManager.ts
│ └── sidebarProvider.ts
├── .vscode/
│ ├── launch.json
│ └── tasks.json
├── package.json
├── tsconfig.json
├── README.md
└── SYSTEM_DESIGN.md
Development Tips
npm run watch recompiles on every save — keep it running in a terminal.
- Open the Output panel → select
AI Coding Assistant for debug logs.
- The Extension Development Host reloads automatically when you restart the debugger.
- Use
Cmd/Ctrl+Shift+P → Developer: Reload Window to hot-reload the webview.