Skip to content

About

WTF Commit is a minimalist VS Code extension that uses AI to generate concise and meaningful Git commit messages from your staged changes

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Repository files navigation

English | 简体中文

WTF Commit ✨

Visual Studio Marketplace Version Visual Studio Marketplace Installs Open VSX Downloads License

Links: GitHub · VS Marketplace · Open VSX · Website

One keystroke. Clean commits, straight to git.

WTF Commit reads your git diff, streams a conventional commit message into Source Control, and commits on the spot. Turn on Auto Push to ship upstream in the same stroke. Zero boilerplate, zero context switching.

Pipeline: git diff → ✨ shortcut → stream message → auto commit → (optional) push

Feature Highlight
Zero friction Paste an API key once. DeepSeek by default — direct access, pay-as-you-go, no subscription
Full pipeline Auto Commit on by default; enable Auto Push to generate, commit, and push in a single stroke
No lock-in Bring your own key: DeepSeek, OpenCode Go, Gemini, OpenAI, OpenRouter, or local Ollama
Dual allowances Pay per commit (~$0.0008 each) or draw from your OpenCode Go subscription allowance
Cross-editor Works on VS Code, Cursor, and VSCodium. Open source, MIT licensed, settings roam freely

Already installed? Skip ahead: ① Configure AI (~1 min) → ② Daily use.

Install

Editor How to install Updates
VS Code Extensions → search WTF Commit → Install (Marketplace page) Auto-update from Microsoft Marketplace
Cursor / VSCodium Extensions → search WTF Commit → Install (Open VSX) Auto-update from Open VSX

VSIX (optional / offline): download from GitHub Releases or the marketplaces above, then Extensions → ⋯ → Install from VSIX…, or drag the .vsix onto the Installed list. Manual VSIX installs do not auto-update — prefer the marketplace install when you can.

① Configure AI (once)

Defaults are enough: Provider = DeepSeek. You only need a key.

  1. Install — search WTF Commit in your editor’s Extensions view (VS Code or Cursor).
  2. Set API Key — Command Palette → WTF Commit: Set API Key, then:
    • The first entry is your current provider (it shows whether a key is already stored); pick Choose another provider… to switch.
    • First-time setup shows a small wizard: press Enter on Paste API Key now, or pick Open {provider} key page — the wizard stays open while the browser opens, so you can come back and paste once you have a key.
    • Pasting is masked with live paste-error checks; on success the status bar echoes the masked key (e.g. sk-ab••••wxyz) so you can verify what was stored.
    • A key saved for another provider asks whether to Switch Provider.
  3. Get an API key: DeepSeek API keys (also accessible directly inside the extension).

Switch providers anytime: run Set API Key and pick Choose another provider…, or change Provider in Settings. Leave Model empty to use provider defaults.

② Daily use (every commit)

Execution flow: Prefers staged changes (staged). If the index is clean and Auto Commit is enabled, automatically stages modified files → generates conventional commit → commits locally (default) → stays local (Auto Push is off by default).

  1. Make your code changes (staging target files beforehand is recommended).
  2. Press the shortcut — your commit message streams in live and commits automatically.
  3. Push to remote when ready — Auto Push is off by default.

Default shortcut: Cmd+Alt+G (Mac) / Ctrl+Alt+G (Windows/Linux).

Custom shortcut — The keybinding is completely customizable. A favorite among Cursor users is a double tap on Cmd+G / Ctrl+G:

  1. Open Keyboard Shortcuts (Cmd+K Cmd+S / Ctrl+K Ctrl+S).
  2. Search for WTF Commit: Generate.
  3. Double-click the entry → press Cmd+G twice (or Ctrl+G twice on Windows/Linux) → press Enter.

Zero-dialog power pipeline (optional): Enable Auto Push in Settings. Keep Confirm Before Push turned on initially; turn it off when you're ready for an uninterrupted generate → commit → push flow.

Other triggers: ✨ in the Source Control title bar, or Command Palette → WTF Commit: Generate.

Want to review before committing? Turn off Auto Commit — the message will stay in the input box for manual edits.

🆕 Latest (v1.20.3)

  • Docs accuracy: OpenCode Go now defaults to the documented /inference/go/openai/v1 path, its allowance is stated as $100/mo of DeepSeek V4.1 Flash on the $10 plan (the 4× promo is retired), Gemini's free tier is 15 RPM / 500 requests per day, and Settings shows OpenAI's gpt-6-luna default.
  • README refresh: This page was rewritten around the single-keystroke workflow, with a labeled comparison table and scenario-first model guidance instead of an icon list.

See CHANGELOG for full history.

🚀 Features

  • Conventional Commits — feat / fix / docs / … with optional local format fix + automatic AI repair.
  • Smart diffing — Prefers staged changes; with Auto Commit, stages the working tree when nothing is staged.
  • Intent-aware — Text already in the SCM input is used as a generation hint (no extra prompt UI).
  • Streaming preview — Watch the message appear live while the model runs.
  • Auto Commit & Push — Optional one-keystroke pipeline with a push confirmation.
  • Multi-language messages — English, 简体/繁体中文, Japanese, Classical Chinese, or Custom.
  • Bring your own endpoint — Built-in providers plus Custom (Ollama, proxies, etc.).
  • Keyboard shortcut — Default Cmd+Alt+G / Ctrl+Alt+G; rebind freely (e.g. double Cmd+G).

🛠️ Advanced Tutorial

1. Plugin Settings

Open VS Code Settings (Cmd+,) and search for WTF Commit. Settings are split into WTF Commit (basics) and WTF Commit › Advanced.

Basics — what most people need:

Setting Description
Commit Message Language Language for generated commit messages.
Provider AI backend (default DeepSeek).
Auto Commit Default on — commit after generate. Off = message only in Source Control.
Auto Push Default off — enable for push after commit. Requires Auto Commit.
Confirm Before Push Default on — ask before auto-push. Power users can disable it for a fully hands-off shortcut.

Advanced — Custom Base URL/Model, Provider Overrides, ignore paths, status bar toggle.

Extension UI language follows VS Code (vscode.env.language): zh* → 中文, otherwise English. Power-user overrides live in settings.json only: wtfCommit.prompt, and when Commit Message Language is Custom, wtfCommit.customCommitMessageLanguage.

2. Custom Model & Endpoints

You can use any OpenAI-compatible model (like local models via Ollama):

  1. In Settings, set Provider to Custom.
  2. Under WTF Commit › Advanced, enter the Base URL (e.g., http://localhost:11434/v1).
  3. Enter the Model name (e.g., llama3).

To override a built-in provider's endpoint/model, use Provider Overrides (not the global Base URL / Model fields).

3. Custom Commit Language

If you want the AI to use a specific language (e.g., French, Cantonese, or Emoji-only):

  1. Set Commit Message Language to Custom.
  2. In settings.json, set the target language, for example:
{
  "wtfCommit.commitMessageLanguage": "Custom",
  "wtfCommit.customCommitMessageLanguage": "Emoji only"
}

ℹ️ Supported Providers & Models

How defaults work (three separate concepts):

Term Meaning
Default Provider DeepSeek — used on first install until you change Provider in settings. Pure pay-as-you-go: no subscription needed, and it is reachable directly from mainland China (Alipay / WeChat Pay top-up).
Provider default Each built-in provider has its own default Model and Base URL (table below). Applies when that provider is selected and no Provider Overrides (or Custom Base URL/Model) are set.
Our recommendation Our picks for commit-message generation (see Choosing a model) — DeepSeek and OpenCode Go are both recommended; this is not the same as the extension default provider.

Provider defaults — when Base URL and Model are left empty:

Provider Default Model Default Base URL
DeepSeek deepseek-flash https://api.deepseek.com
OpenCode Go deepseek-v4.1-flash https://opencode.ai/inference/go/openai/v1
Gemini gemini-3.5-flash-lite https://generativelanguage.googleapis.com/v1beta
OpenAI gpt-6-luna https://api.openai.com/v1
OpenRouter openrouter/free https://openrouter.ai/api/v1
Custom - -

Get API Keys

Provider Get API Key
DeepSeek platform.deepseek.com/api_keys
OpenCode Go Subscribe / get key · pricing docs
Gemini aistudio.google.com/api-keys
OpenAI platform.openai.com/api-keys
OpenRouter openrouter.ai/keys

Other OpenAI-compatible APIs (MiMo, GLM, Z.AI, NVIDIA NIM, proxies): set Provider to Custom and fill Base URL + Model under Advanced — or route through OpenRouter.

Choosing a model for commit messages

Commit message generation prioritizes rapid response times and consistent formatting — lightweight models deliver the sharpest experience:

  • Direct Access · Zero Friction (Default) → DeepSeek (deepseek-flash)
    • Default provider: pay-as-you-go with no subscription requirement (~$0.0008 per commit).
    • Extended thinking is disabled out of the box for fast, accurate conventional commit output.
  • Subscription Quota · Global Routing → OpenCode Go (deepseek-v4.1-flash)
    • Ideal for developers already on an OpenCode Go subscription.
    • Low-latency global endpoints; commits draw from your Go monthly allowance ($10 plan includes $100/mo Flash allowance).
  • Free Quota · Official API → Gemini (gemini-3.5-flash-lite)
    • Google AI Studio provides 15 RPM / 500 requests per day for free; native Interactions REST API ensures instant responses.
  • OpenAI Key Holders · Minimal Latency → OpenAI (gpt-6-luna)
    • Uses OpenAI's official endpoint with reasoning effort set to none, keeping token usage and latency low.
  • Self-Hosted · Custom Gateway → Custom or OpenRouter
    • Seamless integration with local Ollama, LAN endpoints, or risk-free testing via openrouter/free.

DeepSeek vs OpenCode Go (same model): DeepSeek uses deepseek-flash; Go documents deepseek-v4.1-flash. Both select V4.1 Flash and list the same rates (off-peak: $0.15 input / $0.60 output; peak: $0.30 input / $1.20 output per 1M tokens). Go costs $10/mo and includes a $100/mo DeepSeek V4.1 Flash allowance (Go Plus $40/mo → $200/mo), roughly 10× the subscription price in list-rate usage (see Go pricing; allowances can change). For light use, note that DeepSeek needs no subscription at all and is reachable directly from mainland China, while Go is subscription-only and aimed at international users; compare pay-as-you-go prices when you do not already pay for Go, and if you do, commits draw from its allowance.

Pricing comparison (USD per 1M tokens, cache-miss input; sources linked below):

Provider Model Input Output ~Cost / generation† Notes
OpenRouter openrouter/free $0 $0 ~$0 Zero-cost trials; quality/latency vary
DeepSeek deepseek-flash $0.15 / $0.30* $0.60 / $1.20* ~$0.0008 / ~$0.0017* Default — V4.1 Flash pay-as-you-go; 50% off during off-peak
OpenCode Go deepseek-v4.1-flash $0.15‡ / $0.30*‡ $0.60‡ / $1.20*‡ ~$0.0008‡ / ~$0 in quota Recommended with Go sub — same list rates; $100/mo V4.1 Flash allowance on the $10 plan
OpenAI gpt-6-luna $0.10 $0.50 ~$0.0006 OpenAI provider default; reasoning disabled
Gemini gemini-3.5-flash-lite $0.30 $2.50 ~$0.0019 Alternative; generous free tier
  • DeepSeek & OpenCode Go peak rates apply 01:00–04:00 and 06:00–10:00 UTC (Mon–Fri, excluding Chinese public holidays); all other times are off-peak (50% discount).

† Rough estimate for ~5K input + 150 output tokens (typical diff + commit message), no prompt cache. Actual cost depends on diff size, tokenization, and model output length.

‡ OpenCode Go meters its monthly allowance using the same Flash list rates as DeepSeek (Go pricing). On the $10 Go plan the allowance is $100/mo of DeepSeek V4.1 Flash (Go Plus: $200/mo); within it, marginal cost for commits is effectively ~$0 until you hit Go limits.

Official pricing pages: DeepSeek · OpenCode Go · Gemini · OpenAI · OpenRouter

OpenRouter provider default is openrouter/free. Free routes are rate-limited (≈20 RPM; ~50 requests/day, ~1,000/day after a one-time $10 credit purchase) and the underlying model rotates.

Gemini uses Google's native Interactions REST API (/v1beta/interactions), authenticates with the x-goog-api-key header, and uses the minimal thinking level to reduce latency for commit-message generation.

Upgrading from an older build that used MiMo / GLM / Z.AI / NVIDIA NIM: the extension migrates that Provider setting to Custom and fills Base URL / Model automatically.

Important

Claude Support: Native Claude format is not supported yet. Please use a proxy service that provides an OpenAI-compatible endpoint.

🕹️ Other entry points

  • Source Control title bar ✨ · Command Palette WTF Commit: Generate · rebindable shortcut (see Daily use).
  • Rotate keys anytime with WTF Commit: Set API Key.

💬 Feedback

Using WTF Commit and finding it useful? A GitHub star, an Open VSX review, or a short issue (bugs or ideas) all help more people discover it — and help us keep improving.

📄 License

MIT License.

About

WTF Commit is a minimalist VS Code extension that uses AI to generate concise and meaningful Git commit messages from your staged changes

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages