Luban

A side-bar coding agent for VS Code and VSCodium. Describe what you want — it edits files in your workspace, runs a script or the build to verify, then tells you what changed. No patched editor, no takeover of the native chat: a normal extension that installs from the Marketplace.
中文简介:装在侧边栏里的编码 agent。说人话 → 它改文件、跑命令、自己验证,然后告诉你改了什么。零源码补丁,可从 VS Code 市场 / Open VSX / VSIX 安装,也能用脚本装成 App 的内置扩展。完整中文说明 →
Highlights
- Plan first, execute after you approve — Plan mode is read-only by construction (write tools are not registered, commands are checked). The plan is saved as a Markdown file you can edit; executing it re-reads that file.
- Review in the editor, not in chat — every write opens a real diff: accept or reject hunk by hunk from CodeLens or the diff title bar.
- Context without ceremony —
@file, @folder/, #selection, plus automatic context from the editor around your cursor; a local BM25 index backs search_code.
- Any OpenAI-compatible provider — DeepSeek, Ollama, llama.cpp, vLLM and friends via
~/.luban/providers.json. API keys go to SecretStorage, never to disk.
- Sessions that survive a reload — history on disk, several concurrent tabs, a message queue while a turn is running, opt-in multi-turn memory.
- Built for cheap multi-turn — message layout is aligned to token prefix caching (typically 95%+ cache hits after the second turn); each turn shows input / output / cache / context usage, and a local ledger feeds a token dashboard.
- Extensible — local stdio MCP servers and
SKILL.md skills join the same tool loop; Plan mode only sees tools declared read-only.
- Optional tab completion — DeepSeek FIM completion, off by default.
Install
| Where |
How |
| VS Code |
Extensions panel → search Luban → install, or use the Marketplace page |
| VSCodium / Open VSX |
Extensions panel → search Luban → install |
| VSIX |
Download luban-v*.vsix from Releases, then ⋯ → Install from VSIX… |
| Built-in extension |
./install-into-vscodium.sh — installs Luban as an app-level extension (VSCodium only, re-run after every app upgrade) |
Requirements: VS Code / VSCodium 1.100+, plus at least one provider with an API key.
Quick start
- Configure a provider — click ⚙ at the bottom of the panel (or run
Provider settings), fill in base URL, models and API key, then hit Test connection.
- Open the panel — Luban icon in the activity bar, or
Cmd+Shift+L.
- Ask for something — e.g.
新建 utils.js,导出 debounce(fn, ms) 和 throttle(fn, ms),然后用 node 测一下两者行为.
Editing ~/.luban/providers.json by hand works too (run Reload providers.json after):
{
"defaultModel": "deepseek::deepseek-flash",
"providers": [
{
"id": "deepseek",
"name": "DeepSeek",
"baseUrl": "https://api.deepseek.com/v1",
"apiKeyEnv": "DEEPSEEK_API_KEY",
"models": [
{ "id": "deepseek-flash", "name": "DeepSeek Flash",
"maxInputTokens": 65536, "maxOutputTokens": 8192, "toolCalling": true }
]
}
]
}
Modes
| Mode |
What it can do |
| Agent |
Read / write files and run commands, then verify the result. |
| Plan |
Read-only investigation; produces a plan file and touches nothing until you press Execute. |
| Chat |
Plain Q&A, no file access. Add @web to search first. |
Documentation
The Marketplace only renders this page, so the details live on GitHub:
|
|
| Usage and features |
Shortcuts, three modes, plan files, @ # references, web search |
| Tools, MCP and skills |
Every built-in tool, stdio MCP servers, SKILL.md |
| Reviewing changes |
Editor diff, per-hunk accept / reject |
| Sessions and memory |
History layout, tabs, multi-turn memory, message queue |
| How it works |
Request flow, tool-loop budgets, prefix caching, usage, dashboard |
| Configuration |
Provider panel, providers.json, all settings, code layout |
| Known limitations |
What is deliberately not supported |
| Troubleshooting |
Symptom → cause → fix |
| Verification |
Test results per release |
| Debugging and release |
Headless op channel, release pipeline |
| Changelog |
Per-version changes |
Safety
run_command executes in your own shell — there is no OS-level sandbox. Plan mode adds a heuristic read-only check on commands, and file tools may touch paths outside the workspace (luban.fs.allowOutsideWorkspace=false restricts them). MCP servers run as child processes with your user's permissions: only configure servers you trust. See known limitations.
License
Apache-2.0 © 2026 eppen (liuhualiang). See LICENSE and NOTICE.
The Luban name and icon are not licensed under Apache-2.0.
| |