An AI code assistant for VS Code with style — ask about your code, have it edited for you, run agentic tasks, drive your screen or a browser, and keep AI-classified notes, tasks and reminders. Bring your own LLM: ASKII Cloud, Ollama, LM Studio, OpenAI, Anthropic, or opencode Go.
Install: VS Code Marketplace · Open VSX · CLI on npm
- Install ASKII from the VS Code Marketplace — or build it from source (see Development)
- Run ASKII: Open Setup (
Ctrl+Alt+K S/Cmd+Alt+K S) — a short wizard that walks you through provider, models, options and wiki setup - Select some code and run Ask ASKII (
Ctrl+Alt+K A)
| Command | Keybinding | What it does |
|---|---|---|
| Ask ASKII | Ctrl+Alt+K A |
Ask about the selected code (or anything) — answers stream into a markdown panel with follow-ups and a history view |
| ASKII Edit | Ctrl+Alt+K E |
Replace the selection with an AI-edited version; review the diff and undo if needed |
| ASKII Do | Ctrl+Alt+K D |
Agentic workspace agent — explores, creates, modifies, renames and deletes files over multiple rounds |
| ASKII Control | Ctrl+Alt+K C |
Screen or browser agent — screenshot-driven mouse/keyboard control, or Puppeteer web automation |
| ASKII Note | Ctrl+Alt+K N |
Notes / tasks / reminders panel with search and screenshots |
| ASKII: Reload Wiki | Ctrl+Alt+K W |
Rebuild the wiki RAG index |
| ASKII: Clear Cache | Ctrl+Alt+K X |
Clear cached inline explanations and completions |
| ASKII: Open Setup | Ctrl+Alt+K S |
Re-run the setup wizard |
On macOS swap Ctrl for Cmd. The (⌐■_■) status-bar button opens a quick-access menu for all of these.
Select some code and ask about it, or ask a general question with nothing selected — the file name, language and selection are included as context automatically (plus matching wiki chunks when wiki RAG is on). Answers stream into the markdown panel with syntax-highlighted code blocks, and the panel header gives you copy, follow-up (previous questions and answers are kept as conversation context) and a history view to re-read the whole session.
File citations are clickable: when the answer references a file or code location, references like src/app.ts:42 render as links — click one to open the file in the editor at exactly that line (ranges like src/app.ts:10-20 select the whole span). Works for workspace code and docs-wiki files alike.
Describe the change you want and ASKII rewrites your selection — or the whole file if nothing is selected, using the full file as context either way. The edit is applied immediately, then a side-by-side diff of original vs. proposed code opens beside it so you can review it, with a one-click Undo offer to revert. Optional askii.formatAfterEdit formats the document after the edit.
Describe a task — ASKII prints the top-level workspace structure, then loops until the task is done or askii.doMaxRounds (default 20) is reached. Read-only actions (list, view, search, wiki_search) run freely; write actions (create, write, modify, rename, copy, mkdir, delete) and shell run ask for confirmation (skip with askii.doAutoConfirm). Files are backed up before destructive changes, and the whole run can be undone with one click when it finishes.
Pick Screen or Browser, then describe the task. ASKII screenshots the current state each round and proposes the next action with its reasoning:
- Screen —
mouse_move,mouse_left_click,mouse_right_click,keyboard_input,DONE - Browser —
goto,click,type,wait_for,back,forward,DONE(Puppeteer)
Requires a vision-capable model (e.g. llava, moondream2). Browser mode auto-detects Chrome / Edge / Chromium / Brave (or set askii.chromePath) and is visible by default (askii.browserHeadless hides it); the browser closes when the loop ends. Screen control uses shell commands — Linux needs xdotool.
Type free text — the AI classifies it as a note, a task (low / medium / high priority) or a reminder (with a due time), and asks a clarifying question when the intent or time is ambiguous. Entries are stored globally, tagged by workspace, full-text searchable, and grouped by age (Pinned, Today, Yesterday, This week, Earlier). Hover an entry to pin, edit (with AI re-classify), mark done, snooze / dismiss, or delete it.
- Time triggers — a wide range of phrases resolve locally, right in the composer:
in 30 minutes,in 1h30m,in half an hour,in two hours,in a couple of hours,in a few minutes,20 minutes from now,an hour from now,at 5pm,at noon,tomorrow at noon,at 9 in the morning,half past 5,quarter to 6,later today,tonight at 8,tomorrow morning,day after tomorrow,this time tomorrow,first thing in the morning,on friday,friday evening,by tuesday at 5pm,next monday,friday next week,next week on wednesday,this weekend,end of day,end of month,end of year,on the 15th,by the 1st of next month,july 8th,2026-07-08 14:30, … - Recurring triggers —
every day at 9am,daily,every morning,every weekday at 9,every monday at 10,every monday and wednesday at 6pm,every mon, wed, fri,weekly on friday at 5pm,every weekend,every 2 hours,every hour,every half hour,every other day,biweekly,quarterly,every month,every month on the 15th,every year on july 8— the entry re-arms itself after each firing and shows a repeat badge - Event triggers — fire on editor events instead of a clock time:
when I open VS Code,on startup,when I open this workspace,when I open package.json,every time I save .env,when I open a ts file,when I save this file, or barewhen I save. One-shot triggers fire once (shown with a ⚡ badge),every time/whenevertriggers re-arm on each matching event - Task deadlines & recurring tasks — tasks accept due times too (
fix the login bug by friday) and can repeat (water the plants every 3 days); when a deadline passes you get a task-due notification with Open / Done / Snooze, and un-completing a done task re-arms it - Reminders fire as VS Code notifications with a sound while VS Code is running; ones missed while it was closed re-fire on the next startup
- Screenshots — toggle the camera icon to attach a full-screen capture to the entry
askii.inlineCompletionEnabled— Copilot-style ghost text; Tab accepts, Esc dismisses. Tune the trigger withaskii.inlineCompletionEagerness(low1200 ms /medium500 ms /high200 ms). Suggestions are cached per context, and matching context from your enabled wikis is injected into the promptaskii.inlineHelperMode— adds a kaomoji decoration after the current line:helpful,funny, orwiki(explanations enriched by matching context from your enabled wikis — docs and code). Example:
const sum = a + b; (◕‿◕) Adds two variables; prefer const for variables that won't be reassigned.- Point
askii.wikiPathat a folder of.mddocs - Run ASKII: Reload Wikis — chunks the docs by heading and builds a vector index (embeddings run locally via embeddinggemma2)
- Enable
askii.wikiEnabled— matching chunks are injected into Ask / Edit / Do as context - Optional:
askii.wikiAutoReloadrebuilds the index on startup
A vector index over your workspace code (code files only — no .md, .txt, .json, markup, or images) used as retrieval context for Ask / Edit / Do:
- Run ASKII: Reload Wikis (or
askii wiki-reload --use-code-wiki) — walks the workspace (respecting root.gitignoreand skippingnode_modules/build dirs), chunks code into overlapping 60-line windows, and embeds them - Enable
askii.codeWikiEnabled— relevant code chunks are injected into Ask / Edit as context, and the Do agent gets acode_searchaction for semantic lookup - Optional:
askii.codeWikiAutoReloadrebuilds the index on startup
Both wikis run embeddinggemma2 fully locally in JavaScript (Transformers.js + ONNX WASM — no API keys, no external services). The model downloads once (~314 MB) to ~/.askii/models on first use and is shared by the CLI and the extension. Rebuilds are incremental (unchanged files keep their vectors) and the index is memory-optimized: Int8-quantized vectors (~¼ the RAM of Float32), metadata packed as typed arrays, and chunk text stays on disk — only the top hits are read back. Indexes live in .askii/code-wiki/ (workspace) and .askii-wiki-index/ (wiki folder).
A ✦ button in the Source Control view toolbar generates a commit message from your staged (or working-tree) diff straight into the input box. It styles the message after your repo's last 10 commits, honors askii.commitMessageStyle (oneliner / brief / descriptive), and appends your own rules from the .md file in askii.commitMessageInstructions. While it runs, the button turns into a ■ stop button that cancels it.
The Code Review Uncommitted Changes button (checklist icon) in the Source Control toolbar sends all uncommitted changes (staged, unstaged and untracked files) to the Ask / Edit / Do model. It opens a review panel that lists each problem with its severity, a file:line link and a recommendation. While the review runs, the button turns into a ■ stop button that cancels it.
- Auto Fix asks the model to fix that one problem and applies the fix to the file as an unsaved edit (
Ctrl+Zundoes it) - Fixed It marks a problem you fixed yourself; Reopen undoes the mark
- Show fixed hides or shows the problems that are already fixed
| Platform | Type | Setup |
|---|---|---|
| ASKII Cloud (default) | Cloud | API key in askii.askiicloudApiKey — base URL is fixed to https://api.askii.dev/v1 |
| Ollama | Local | Install + pull a model (e.g. gemma4:e4b), runs at http://localhost:11434 |
| LM Studio | Local | Enable the local server (ws://localhost:1234) and load a model |
| OpenAI or compatible | Cloud | askii.openaiApiKey; set askii.openaiUrl for Azure etc. (empty = api.openai.com) |
| Anthropic | Cloud | askii.anthropicApiKey |
| opencode Go | Cloud | askii.opencodegoApiKey |
Each feature group picks its own platform and model, so you can mix providers:
| Feature group | Platform | Model | Default model |
|---|---|---|---|
| Ask / Edit / Do, code review | askii.llmPlatform |
askii.llmModel |
askii-smart |
| Inline suggestions, completion, commit messages | askii.llmInlinePlatform |
askii.llmInlineModel |
askii-fast |
| Control / Note (vision) | askii.llmVisionPlatform |
askii.llmVisionModel |
askii-smart |
API keys and server URLs are shared per provider across all groups.
All settings live in VS Code Settings under the askii.* namespace.
Notes & reminders
| Setting | Default | Description |
|---|---|---|
askii.noteReminderSound |
true |
Play a sound when a reminder fires |
askii.noteSnoozeMinutes |
10 |
Minutes added by Snooze |
Agents & browser
| Setting | Default | Description |
|---|---|---|
askii.doMaxRounds |
20 |
Max rounds for Do / Control |
askii.doAutoConfirm |
false |
Skip write confirmations |
askii.formatAfterEdit |
false |
Format files after Edit / Do |
askii.browserHeadless |
false |
Hide the Puppeteer browser window |
askii.chromePath |
(empty) | Browser executable (empty = auto-detect) |
Git
| Setting | Default | Description |
|---|---|---|
askii.commitMessageStyle |
oneliner |
Generated message style |
askii.commitMessageInstructions |
(empty) | .md file with extra commit rules |
Wiki RAG
| Setting | Default | Description |
|---|---|---|
askii.wikiEnabled |
false |
Inject docs wiki context into Ask / Edit / Do |
askii.wikiPath |
(empty) | Folder of .md docs |
askii.wikiAutoReload |
false |
Rebuild docs wiki on startup |
askii.codeWikiEnabled |
false |
Inject code wiki context into Ask / Edit / Do |
askii.codeWikiAutoReload |
false |
Rebuild code wiki on startup |
Embeddings for both wikis run locally (embeddinggemma2) — no embedding settings required.
ASKII also ships as a terminal CLI with an interactive REPL and the same ask / edit / do / control / browse / note commands:
npm install -g askii-cliSee cli/README.md.
- VS Code 1.108+
- Control requires a vision-capable model; screen control needs
xdotoolon Linux; browser mode needs a Chromium-based browser
git clone https://github.com/danisss9/ASKII.git
cd ASKII && npm install
npm run watch # tsc + esbuild watchers — then F5 to launch the extension
npm run compile # type-check + lint + bundle
npm run package # production bundle (for vsce)
npm test # integration tests (@vscode/test-electron)src/— extension host codecommon/— pure Node code shared with the CLI (never importsvscode)cli/— the CLI package (npm run build/npm run dev)