Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>DoIt — AI Coding AgentNew to Visual Studio Code? Get it now.
DoIt — AI Coding Agent

DoIt — AI Coding Agent

anuraghkp

|
11 installs
| (0) | Free
AI coding agent with chat, code actions, and diagnostics integration
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

DoIt — AI Coding Agent for VS Code

Install from the VS Code Marketplace

AI coding agent with chat, code actions, and diagnostics integration. Uses Qwen3-Coder-30B via an internal LiteLLM gateway.

Install

From the Marketplace (recommended):

code --install-extension anuraghkp.doit-vscode

Or open the Extensions view (Ctrl+Shift+X) and search for "DoIt".

From VSIX (GitLab releases):

Download the latest doit-vscode-*.vsix from the GitLab releases page and run:

code --install-extension doit-vscode-*.vsix

Or in VS Code: Ctrl+Shift+P → "Install from VSIX..."

What's New — v0.3.2

  • Live streaming terminal output with pulsing dot, ANSI colors, and "Move to background" escape hatch
  • Process-tree kill — dev servers are fully terminated, freeing ports properly
  • ApplyManager disk-corruption fix — auto-accept default prevents merged-state poisoning during multi-step agent flows
  • Thinking indicator — three-dot pulsing bar shows the agent is still working between events

Configure

Open VS Code Settings (Ctrl+,) → search "DoIt":

Setting Value
doit.baseUrl http://192.168.1.95:4000/v1
doit.apiKey Your personal API key
doit.model qwen3-coder-30B

Falls back to ~/.config/doit/config.json if VS Code settings are empty.

Features

  • Chat sidebar — DoIt icon in the activity bar opens the chat panel
  • Code actions — Right-click selected code → Explain / Fix / Ask DoIt (language-aware, includes diagnostics)
  • Inline permissions — Allow / Allow All / Deny for file edits and shell commands
  • Inline diff apply — Green decorations on added lines (auto-accept mode) or full Accept/Reject CodeLens per hunk
  • Live terminal streaming — Command output streams into the chat with pulsing status dot and ANSI colors
  • Move to background — Long-running dev servers can be detached to the bg_* registry mid-command
  • Keep/Undo bar — One-click revert for edited files
  • Status bar — Git branch, context tokens, indexing progress, mode indicator
  • Markdown rendering — Headings, lists, bold, italic, code blocks
  • Slash commands — /init, /new, /plan, /direct, /help

Development

# From monorepo root — build core first
cd packages/core && npx tsc
cd packages/vscode

# Build
npm run build          # One-shot esbuild
npm run watch          # Watch mode

# Package VSIX
npx @vscode/vsce package --no-dependencies

# Install locally
code --install-extension doit-vscode-*.vsix --force

Debug in VS Code

  1. Open the monorepo in VS Code
  2. Press F5 to launch Extension Development Host
  3. The extension loads from packages/vscode/dist/extension.js

Architecture

src/
├── extension.ts          # Entry point, command registration, webview provider
├── agent-bridge.ts       # Core agent wrapper (events, permissions, tool wrapping)
├── terminal.ts           # Streaming run_command tool with process-group kill
├── logger.ts             # Dual logger (output channel + file)
├── apply/
│   ├── ApplyManager.ts   # Inline diff apply (per-hunk accept/reject)
│   ├── decorations.ts    # Green/red TextEditorDecorationType
│   └── codeLens.ts       # Accept / Reject CodeLens per hunk
└── webview/
    ├── main.js           # Chat UI logic (messages, tool calls, permissions, status bar)
    ├── markdown.js       # Markdown renderer (headings, lists, code blocks)
    └── style.css         # VS Code-themed styles

Key Design Decisions

  • esbuild bundled — Single CJS file, native modules (LanceDB, ONNX) stubbed out via esbuild plugin
  • XML fragment filter — Strips raw <function=...> tags from streaming text (Qwen3-Coder parser artifacts)
  • structuredPatch diffs — Accurate +N -N stats using the diff library
  • Singleton output channel — Single "DoIt Commands" channel reused across all run_command calls
  • Abort-safe permissions — Pending permission dialogs resolve as denied on abort (no deadlock)
  • Session reset cleanup — /new clears messages, todos, memory, diff store, and project context cache
  • Context updates — Token count pushed to webview status bar via context-update events
  • Status bar polling — Git branch, indexing, mode refreshed every 3 seconds via extension → webview messages

Webview Communication

Extension → Webview:

  • text-delta — Streaming text chunk
  • tool-call — Tool execution started (now carries toolCallId)
  • tool-progress — Live partial output from a long-running tool (e.g. run_command)
  • tool-result — Tool execution complete (now carries toolCallId)
  • permission-request — Inline Allow/Deny prompt
  • done — Turn complete (with edited files for Keep/Undo)
  • error / info — Status messages
  • context-update — Token count
  • status-update — Git branch, cwd, indexing, mode
  • context — Active file indicator

Webview → Extension:

  • message — User chat message
  • abort — Stop current response
  • new-session — Reset conversation
  • set-mode — Switch plan/direct
  • permission-response — Allow/Deny/AllowAll
  • move-to-background — Detach a running command into the bg_* registry
  • undo-file — Revert file changes
  • init-context — Generate .doit/context.md
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft