Youcoder for Visual Studio Code
YouCoder brings terminal-native AI coding assistance into your editor. Chat with LLMs from multiple providers, execute tools, review diffs, manage multi-step plans, and orchestrate sub-agents — all from within VSCode.
Ask • Act • Plan • YOLO
Table of Contents
Features
- 💬 AI Chat — Conversational coding assistant in the sidebar with streaming token-by-token output
- 🔧 Tool Execution — Read/write files, run shell commands, search the web, fetch URLs
- 📋 Plan Mode — Structured multi-step task planning and autonomous execution
- 🤖 Agent Orchestration — Define and run sub-agents for specialized tasks
- 📁 @File Mentions — Type
@ to fuzzy-search and reference workspace files
- 🔄 Diff Preview — Review, accept, or reject AI-generated file changes inline
- 📝 Session Management — Switch between conversation sessions, export to Markdown/JSON
- 🎨 VSCode Theme Aware — Respects your editor theme (light/dark)
- 🌐 Multi-Provider — Anthropic (Claude), OpenAI, DeepSeek, and OpenRouter with auto-detection
- ⚡ Perception Scope — Restrict AI file access to a specific directory
Requirements
- VSCode 1.85.0 or later
- An API key for one of the supported providers:
The YouCoder Rust sidecar binary is bundled with the extension — no separate installation needed.
Installation
From VSCode Marketplace
- Open VSCode
- Go to Extensions (
Ctrl+Shift+X / Cmd+Shift+X)
- Search for YouCoder
- Click Install
From .vsix (Manual)
- Download the
.vsix file from GitHub Releases
- In VSCode:
Extensions → ... menu → Install from VSIX...
- Select the downloaded file
Getting Started (5 minutes)
1. Set Your API Key
Open VSCode Settings (Cmd+,), search for youcoder.apiKey, and paste your API key.
Or set an environment variable:
# Anthropic (Claude)
export ANTHROPIC_API_KEY=sk-ant-...
# OpenAI
export OPENAI_API_KEY=sk-...
# DeepSeek
export DEEPSEEK_API_KEY=sk-...
# OpenRouter
export OPENROUTER_API_KEY=sk-or-...
2. Open the Chat
Click the YouCoder icon in the Activity Bar (left sidebar), or press:
- Windows/Linux:
Ctrl+Shift+L
- Mac:
Cmd+Shift+L
3. Start Chatting
Type a message and press Enter. Try:
- "Explain this file to me"
- "Refactor this function to be more readable"
- "Write a test for the UserService class"
- "Search the web for Rust async best practices"
4. Select Code & Ask
Select code in your editor, right-click, and choose YouCoder: Ask About Selection to inject the selected code into your chat.
Configuration
All settings are under File > Preferences > Settings > Extensions > YouCoder.
| Setting |
Default |
Description |
youcoder.apiKey |
"" |
API key for your LLM provider |
youcoder.provider |
auto |
Provider: auto, anthropic, openai, deepseek, openrouter |
youcoder.model |
claude-sonnet-4-20250514 |
Primary model name |
youcoder.maxTokens |
8192 |
Max tokens per response (256–32768) |
youcoder.baseUrl |
"" |
Custom API endpoint (proxies / self-hosted) |
youcoder.primaryModels |
[] |
Model pool — list of available models |
youcoder.primaryModelDefault |
"" |
Default model within the primary pool |
youcoder.secondaryProvider |
"" |
Secondary provider for sub-agents (e.g., deepseek) |
youcoder.secondaryApiKey |
"" |
API key for the secondary provider |
youcoder.secondaryModel |
"" |
Secondary model name (sub-agent default) |
youcoder.serverPath |
"" |
Custom path to youcoder-server binary |
youcoder.contextCompactThreshold |
0.8 |
Auto-compact when context usage hits this % |
youcoder.searchProvider |
duckduckgo |
Web search: duckduckgo or bing |
youcoder.proxyUrl |
"" |
HTTP proxy (e.g., http://127.0.0.1:7890) |
youcoder.chromePath |
"" |
Chrome/Chromium path for browser_fetch tool |
youcoder.autoStart |
true |
Auto-start sidecar when VSCode opens |
Interaction Modes
YouCoder has 4 modes that control how the AI interacts with your workspace:
| Mode |
Icon |
Behavior |
| Ask 🔍 |
ASK |
Read-only — AI can read files and answer questions, but cannot make changes |
| Act ✋ |
ACT |
Interactive — AI proposes actions, you approve or reject each one |
| YOLO ⚡ |
YOLO |
Auto-execute — AI runs tools without asking for approval |
| Plan 📋 |
PLAN |
Plan-first — AI creates a task plan for you to review before execution |
Cycle modes with Ctrl+Shift+M / Cmd+Shift+M or click the mode badge in the chat header.
Keybindings
| Command |
Windows/Linux |
Mac |
| Open Chat |
Ctrl+Shift+L |
Cmd+Shift+L |
| Toggle Mode |
Ctrl+Shift+M |
Cmd+Shift+M |
Commands
All commands are available via the Command Palette (Ctrl+Shift+P / Cmd+Shift+P):
| Command |
Description |
| YouCoder: Open Chat |
Open/focus the chat panel |
| YouCoder: Toggle Interaction Mode |
Cycle: Ask → Act → YOLO → Plan |
| YouCoder: Ask About Selection |
Inject selected code into chat |
| YouCoder: New Session |
Start a fresh conversation |
| YouCoder: Export Session as Markdown |
Save current session as .md or .json |
| YouCoder: Accept All File Changes |
Apply all pending AI-generated diffs |
| YouCoder: Reject All File Changes |
Revert all pending AI-generated diffs |
| YouCoder: Change Perception Scope |
Restrict AI file access to a directory |
| YouCoder: Open Settings |
Open extension settings |
Features Deep-Dive
Diff Preview
When the AI edits files, changes are shown as VSCode diff views:
- Hover over a change to see the original vs. proposed
- Use Accept All (
YouCoder: Accept All File Changes) to apply
- Use Reject All (
YouCoder: Reject All File Changes) to discard
- The Diff Manager tracks all pending changes per session
@File Mentions
Type @ in the chat input to trigger a fuzzy file search:
- Searches workspace files in real-time
- Select a file to inject it as context (
@file:relative/path)
- The AI automatically reads the referenced files
Session Management
- New Session (
+ button) — Start a fresh conversation
- Session List (
☰ button) — Browse and switch between past sessions
- Export (
YouCoder: Export Session as Markdown) — Save as .md or .json
Plan Panel
In Plan mode, the AI creates structured task plans:
- Tasks with statuses: Pending → In Progress → Completed → Skipped
- Real-time plan updates as tasks progress
- Click task status icons to manually adjust
Agent Panel
View and run sub-agents:
- List all available agents with descriptions
- Start agents manually
- Monitor agent status (running/completed/error)
Perception Scope
Restrict the AI's file access to a specific directory:
- Default: your workspace root
- Change via the folder icon in the status bar (bottom-left)
- Or use
YouCoder: Change Perception Scope command
- Requires an absolute path; validated before applying
Troubleshooting & FAQ
The chat panel is empty / not responding
- Check the status bar — if the sidecar is stopped, click the status bar icon to reconnect
- Run
YouCoder: Open Chat from the Command Palette
- Reload VSCode (
Cmd+Shift+P → Developer: Reload Window)
- Set
youcoder.apiKey in VSCode Settings, OR
- Set the appropriate environment variable (
ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY)
- Restart YouCoder when prompted after changing settings
Sidecar crashes on startup
- Check the VSCode Developer Tools console (
Help > Toggle Developer Tools) for error logs
- Ensure your API key is valid and has remaining quota
- If using a proxy, verify the proxy URL is correct and reachable
- Try setting a custom
youcoder.serverPath to a known-good binary
Changes don't appear after accepting diffs
The Diff Manager applies changes immediately on accept. If a file doesn't update:
- Ensure the file is not read-only
- Check for unsaved changes that might conflict
- Reload the editor window
How do I switch between providers?
Set youcoder.provider to anthropic, openai, deepseek, or openrouter. The default auto detects from your API key prefix:
sk-ant- → Anthropic
sk- (not ant) → OpenAI
sk-ds- → DeepSeek
sk-or- → OpenRouter
Can I use a self-hosted / proxy API?
Yes! Set youcoder.baseUrl to your API endpoint (e.g., https://api.your-proxy.com/v1). Set youcoder.proxyUrl for HTTP proxies.
Development
Prerequisites
- Node.js 20+
- Rust stable (1.80+)
- VSCode 1.85+
Project Structure
vscode-extension/
├── src/
│ ├── extension.ts # Extension entry point & activation
│ ├── config.ts # ConfigStore (VSCode settings + env + secrets)
│ └── rpc/
│ ├── sidecar.ts # Rust sidecar process manager
│ ├── channel.ts # JSON-RPC 2.0 channel (stdin/stdout)
│ ├── bridge.ts # Extension ↔ Webview message bridge
│ ├── diff.ts # Diff preview manager
│ ├── codec.ts # JSON-RPC frame codec
│ └── types.ts # TypeScript type definitions
├── webview/
│ └── src/
│ ├── app.tsx # Main chat UI (Preact)
│ ├── components/
│ │ ├── TurnCard.tsx # Chat message bubble
│ │ ├── SessionPanel.tsx
│ │ ├── PlanPanel.tsx
│ │ └── AgentPanel.tsx
│ └── styles.css
├── bin/
│ └── youcoder-server # Bundled Rust sidecar binary
├── build.mjs # esbuild config for extension host
└── package.json
Build
# Install dependencies
cd vscode-extension && npm ci
cd webview && npm ci && cd ..
# Build webview frontend
npm run build:webview
# Build extension host
npm run build
# Package .vsix
npm run package
Build Rust Sidecar
cargo build --release -p youcoder-server
cp target/release/youcoder-server vscode-extension/bin/
Run Tests
# Extension tests
npm test
# Rust tests
cargo test --workspace
License
MIT © YouCoder Contributors
Built with Rust 🦀 + TypeScript 💙 + ☕