Deep Code is a terminal AI coding assistant optimized for the deepseek-v4 model, with support for deep thinking, reasoning effort control, Agent Skills, and MCP (Model Context Protocol) integration.
npm install -g @vegamo/deepcode-cliRun deepcode inside any project directory to get started.
Create ~/.deepcode/settings.json:
{
"env": {
"MODEL": "deepseek-v4-pro",
"BASE_URL": "https://api.deepseek.com",
"API_KEY": "sk-..."
},
"thinkingEnabled": true,
"reasoningEffort": "max"
}The configuration file is shared with the Deep Code VSCode extension — configure once, use everywhere.
For complete configuration details (multi-level priority, environment variables, etc.), see docs/configuration.md.
Deep Code CLI supports agent skills that allow you to extend the assistant's capabilities:
Skills are discovered from these locations, in priority order:
| Scope | Path | Purpose |
|---|---|---|
| Project | ./.deepcode/skills/ |
Deep Code's native location |
| Project | ./.agents/skills/ |
Cross-client interoperability |
| User | ~/.deepcode/skills/ |
Deep Code's native location |
| User | ~/.agents/skills/ |
Cross-client interoperability |
- Specifically tuned for DeepSeek model performance.
- Reduce costs by using Context Caching.
- Natively supports Thinking Mode and Effort Control.
| Slash Command | Action |
|---|---|
/ |
Open the skills / commands menu |
/new |
Start a fresh conversation |
/resume |
Choose a previous conversation to continue |
/fork |
Fork the current conversation |
/continue |
Continue the active conversation or pick one to resume |
/model |
Switch model, thinking mode, and reasoning effort |
/raw |
Toggle display mode (Normal / Lite / Raw scrollback) |
/init |
Initialize an AGENTS.md file (LLM project instructions) |
/skills |
List available skills |
/mcp |
View MCP server status and available tools |
/undo |
Restore code and/or conversation to a previous point |
/exit |
Quit (also Ctrl+D twice) |
| Key | Action |
|---|---|
Enter |
Send the prompt |
Shift+Enter |
Insert a newline (also Ctrl+J) |
Ctrl+V |
Paste an image from the clipboard |
Esc |
Interrupt the current model turn |
Ctrl+D twice |
Quit Deep Code |
← / → |
Move the cursor one character |
Alt+← / Alt+→ (or Ctrl+← / Ctrl+→) |
Move by word |
Home / End (or Ctrl+A / Ctrl+E) |
Jump to line start / end |
Ctrl+B / Ctrl+F |
Move left / right one character |
Alt+B / Alt+F |
Move back / forward by word |
Ctrl+W |
Delete the word before the cursor |
Alt+Backspace |
Delete the word before the cursor (macOS) |
Alt+D |
Delete the word after the cursor |
Ctrl+K |
Delete to the end of the line |
Ctrl+U |
Clear the input |
Backspace / Delete |
Delete the previous / next character |
These editing keys also apply to the "Other" free-text answer in AI question prompts.
Cmd (macOS) and Win (Windows) key combinations are reserved by the operating system and are never delivered to terminal apps — map them in your terminal emulator instead:
- Linux + Bash: use
Ctrl+A/Ctrl+EorHome/Endfor line start/end;Alt+B/Alt+ForCtrl+←/Ctrl+→for words. - macOS Terminal.app: use
Ctrl+A/Ctrl+Efor line start/end andFn+←/Fn+→as Home/End. Enable Settings → Profiles → Keyboard → Use Option as Meta key soOption+B/Option+Fmove by word. - macOS iTerm2: map
Cmd+←/Cmd+→under Settings → Profiles → Keys to send the Home/End escape sequences (ESC[H/ESC[F) or hex0x01/0x05(Ctrl+A/Ctrl+E). - Windows Terminal (PowerShell / WSL):
Win+←/Win+→is OS window snapping and cannot be used. UseHome/EndorCtrl+A/Ctrl+Efor line start/end, andCtrl+←/Ctrl+→for word movement.
deepseek-v4-prodeepseek-v4-flash(Recommended)deepseek-v4-flash-vision-exp- Any other OpenAI-compatible model
In "Better Models: Worse Tools", Armin Ronacher argues that tool schemas are not "neutral": models (LLMs) inherit tool-use habits formed during training and reinforcement learning, so they may perform well in one mainstream harness but become unstable with a different tool shape. This is the architectural starting point for Deep Code: it is tuned specifically for DeepSeek, so the harness itself can stay aligned with DeepSeek's behavior.
Deep Code's gains come from the combined effect of tool constraints, context management, Agent Skills, permission policy, and other architectural decisions. The deepcode-qrcode-benchmark project shows that on a real and challenging Python requirement, Deep Code + DeepSeek + /plan mode has an effectiveness advantage over Claude Code + DeepSeek.
See also: Deep Code Architecture
Yes. Deep Code offers a full-featured VSCode extension, available on the VSCode Marketplace. The extension shares the ~/.deepcode/settings.json configuration file with the CLI, so you can switch seamlessly between the terminal and the editor.
Yes. The deepseek-v4-flash-vision-exp model can read local images directly, or you can paste images from the clipboard with Ctrl+V, so the model can see the image content directly.
Non-multimodal models such as deepseek-v4-pro and deepseek-v4-flash continue to use the UnderstandImage image-understanding tool. Deep Code detects model capabilities automatically; you can also override the detection with the multimodal setting.
By default, images are sent inline as base64. With filesApiEnabled, Deep Code uploads images through the DeepSeek Files API and reuses the file_id in subsequent requests. See docs/configuration_en.md.
Write a shell notification script that calls a Slack webhook, then set the notify field in ~/.deepcode/settings.json to the full path of the script. For detailed steps, see docs/notify_en.md.
Deep Code now supports native web search through the DeepSeek Responses API. If you prefer to use a custom script for web search, set the webSearchTool field in ~/.deepcode/settings.json to the full path of your script. For detailed steps, refer to: https://github.com/qorzj/web_search_cli
Yes. Just set env.BASE_URL in ~/.deepcode/settings.json to an OpenAI-compatible API endpoint. Take Volcano Ark's Coding Plan as an example:
{
"env": {
"MODEL": "ark-code-latest",
"BASE_URL": "https://ark.cn-beijing.volces.com/api/coding/v3",
"API_KEY": "**************"
},
"thinkingEnabled": true
}Deep Code supports MCP (Model Context Protocol) to connect external services such as GitHub, browsers, databases, and more. Configure the mcpServers field in settings.json to enable it, then use the /mcp command to view MCP server status and available tools.
For detailed setup instructions, see: docs/mcp.md
When the AI assistant completes a task, Deep Code can automatically execute a notification script to send the task results to the specified channel (e.g., Slack, system notifications, etc.).
For detailed configuration instructions, see: docs/notify_en.md
No. Deep Code has a built-in fine-grained permission control mechanism that lets you confirm operations before the AI assistant executes shell commands, reads/writes files, accesses the network, and more. You can configure each permission scope's policy — always allow, always ask, or deny — via the permissions field in settings.json. See docs/permission.md for details.
Contributions are welcome! Here's how to get started:
# Clone the repository
git clone https://github.com/lessweb/deepcode-cli.git
cd deepcode-cli
# Install dependencies
npm install
# Local development (typecheck + lint + format check + bundle)
npm run build
# Run tests
npm test
# Link globally (local global install)
npm link- Make sure
npm run checkpasses before submitting a PR (typecheck + lint + format check) - We recommend running
npm run formatbefore building to avoid errors
- Report bugs or request features on GitHub Issues (https://github.com/lessweb/deepcode-cli/issues)
- MIT
If you find this tool helpful, please consider supporting us by:
- Giving us a Star on GitHub (https://github.com/lessweb/deepcode-cli)
- Submitting feedback and suggestions
- Sharing with your friends and colleagues
