Files
codewhale/README.md
T
2026-02-03 18:29:36 -06:00

275 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DeepSeek CLI 🤖
Your AI-powered terminal companion for DeepSeek models
[![CI](https://github.com/Hmbown/DeepSeek-TUI/actions/workflows/ci.yml/badge.svg)](https://github.com/Hmbown/DeepSeek-TUI/actions/workflows/ci.yml)
[![crates.io](https://img.shields.io/crates/v/deepseek-tui)](https://crates.io/crates/deepseek-tui)
Unofficial terminal UI (TUI) + CLI for the [DeepSeek platform](https://platform.deepseek.com) — chat with DeepSeek models and collaborate with AI assistants that can read, write, execute, and plan with approval-gated tool access.
**Not affiliated with DeepSeek Inc.**
## ✨ Features
- **Interactive TUI** with multiple modes (Normal, Plan, Agent, YOLO)
- **Comprehensive tool access** File operations, shell execution, task management, and sub-agent systems
- **File operations**: List directories, read/write/edit files, apply patches, search files with regex
- **Shell execution**: Run commands with timeout support, background execution with task management
- **Task management**: Todo lists, implementation plans, persistent notes
- **Sub-agent system**: Spawn, coordinate, and cancel background agents (including swarms)
- **User input prompts**: Ask structured, multiple-choice questions during tool flows
- **Web browsing**: `web.run` search/open/click/find/screenshot with citation-ready sources
- **Structured data tools**: weather, finance, sports, time, calculator
- **Multimodel support** DeepSeekReasoner, DeepSeekChat, and other DeepSeek models
- **Contextaware** loads projectspecific instructions from `AGENTS.md`
- **Session management** resume, fork, and search past conversations
- **Skills system** reusable workflows stored as `SKILL.md` directories
- **Model Context Protocol (MCP)** integrate external tool servers
- **Sandboxed execution** (macOS) for safe shell commands
- **Git integration** code review, patch application, diff analysis
- **Crossplatform** works on macOS, Linux, and Windows
## 🚀 Quick Start
1. **Get an API key** from [https://platform.deepseek.com](https://platform.deepseek.com)
2. **Install and run**:
```bash
# Install via Cargo
cargo install deepseek-tui --locked
# Set your API key
export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"
# Bootstrap MCP + skills templates (recommended)
deepseek setup
# Start chatting
deepseek
```
3. Press `F1` or type `/help` for the inapp command list.
If anything looks off, run `deepseek doctor` to diagnose configuration issues.
## 📦 Installation
### From crates.io
```bash
cargo install deepseek-tui --locked
```
### Build from source
```bash
git clone https://github.com/Hmbown/DeepSeek-TUI.git
cd DeepSeek-TUI
cargo build --release
./target/release/deepseek --help
```
### Direct download
Download a prebuilt binary from [GitHub Releases](https://github.com/Hmbown/DeepSeek-TUI/releases) and put it on your `PATH` as `deepseek`.
## ⚙️ Configuration
On first run, the TUI can prompt for your API key and save it to `~/.deepseek/config.toml`. You can also create the file manually:
```toml
# ~/.deepseek/config.toml
api_key = "YOUR_DEEPSEEK_API_KEY" # must be nonempty
default_text_model = "deepseek-reasoner" # optional
allow_shell = false # optional
max_subagents = 3 # optional (120)
```
Useful environment variables:
- `DEEPSEEK_API_KEY` (overrides `api_key`)
- `DEEPSEEK_BASE_URL` (default: `https://api.deepseek.com`; China users may use `https://api.deepseeki.com`)
- `DEEPSEEK_PROFILE` (selects `[profiles.<name>]` from the config; errors if missing)
- `DEEPSEEK_CONFIG_PATH` (override config path)
- `DEEPSEEK_MCP_CONFIG`, `DEEPSEEK_SKILLS_DIR`, `DEEPSEEK_NOTES_PATH`, `DEEPSEEK_MEMORY_PATH`, `DEEPSEEK_ALLOW_SHELL`, `DEEPSEEK_MAX_SUBAGENTS`
To bootstrap MCP and skills at their resolved locations, run `deepseek setup`. To
only create an MCP template, run `deepseek mcp init`.
See `config.example.toml` and `docs/CONFIGURATION.md` for a full reference.
## 🎮 Modes
In the TUI, press `Tab` to cycle modes: **Normal → Plan → Agent → YOLO → Normal**.
| Mode | Description | Approval Behavior |
|------|-------------|-------------------|
| **Normal** | Chat; asks before file writes or shell | Manual approval for writes & shell |
| **Plan** | Designfirst prompting; same approvals as Normal | Manual approval for writes & shell |
| **Agent** | Multistep tool use; asks before shell | Manual approval for shell, autoapprove file writes |
| **YOLO** | Enables shell + trust + autoapproves all tools (dangerous) | Autoapprove all tools |
Approval behavior is modedependent, but you can also override it at runtime with `/set approval_mode auto|suggest|never`.
## 🛠️ Tools
DeepSeek CLI exposes a comprehensive set of tools to the model across 5 categories, with 16+ individual tools available, all with approval gating based on the current mode.
### Tool Categories
#### File Operations
- **`list_dir`** List directory contents with file/directory metadata
- **`read_file`** Read UTF8 files from the workspace
- **`write_file`** Create or overwrite files
- **`edit_file`** Search and replace text in files
- **`apply_patch`** Apply unified diff patches with fuzzy matching
- **`grep_files`** Search files by regex pattern with context lines
- **`web.run`** Browse the web (search/open/click/find/screenshot) with ref_ids for citations
- **`web_search`** Quick web search (fallback when citations are not needed)
- **`request_user_input`** Ask the user short multiple-choice questions
- **`multi_tool_use.parallel`** Execute multiple read-only tools in parallel
#### Structured Data
- **`weather`** Daily weather forecast for a location
- **`finance`** Latest price for a stock, fund, index, or cryptocurrency
- **`sports`** Schedules or standings for a league
- **`time`** Current time for a UTC offset
- **`calculator`** Evaluate arithmetic expressions
#### Shell Execution
- **`exec_shell`** Run shell commands with timeout support
- **Background execution** Run commands in background with task ID return
#### Task Management
- **`todo_write`** Create and update todo lists with status tracking
- **`update_plan`** Manage structured implementation plans
- **`note`** Append persistent notes across sessions
#### SubAgents
- **`agent_spawn`** Create background subagents for focused tasks
- **`agent_swarm`** Launch a dependencyaware swarm of subagents
- **`agent_result`** Retrieve results from subagents
- **`agent_list`** List all active and completed agents
- **`agent_cancel`** Cancel running subagents
### System Behavior
- **Workspace boundary**: File tools are restricted to `--workspace` unless you enable `/trust` (YOLO enables trust automatically).
- **Approvals**: The TUI requests approval depending on mode and tool category (file writes, shell).
- **Web browsing**: `web.run` uses DuckDuckGo HTML results and is autoapproved.
- **Web search**: `web_search` is a quick fallback when citations are not needed.
- **Skills**: Reusable workflows stored as `SKILL.md` directories. The resolved skills dir prefers workspace-local `.agents/skills`, then `./skills`, then `~/.deepseek/skills`. Use `/skills` and `/skill <name>`. Bootstrap with `deepseek setup --skills` (add `--local` for `./skills`).
- **MCP**: Load external tool servers via `~/.deepseek/mcp.json` (supports `servers` and `mcpServers`). MCP tools currently execute without TUI approval prompts, so only enable servers you trust. See `docs/MCP.md`.
## 📚 Examples
### Interactive chat
```bash
deepseek
```
### Oneshot prompt (noninteractive)
```bash
deepseek -p "Write a haiku about Rust"
```
### Agentic execution with tool access
```bash
deepseek exec --auto "Fix lint errors in the current directory"
```
### Resume latest session
```bash
deepseek --continue
```
### Work on a specific project
```bash
deepseek --workspace /path/to/project
```
### Review staged git changes
```bash
deepseek review --staged
```
### Apply a patch file
```bash
deepseek apply patch.diff
```
### List saved sessions
```bash
deepseek sessions --limit 50
```
### Generate shell completions
```bash
deepseek completions zsh > _deepseek
deepseek completions bash > deepseek.bash
deepseek completions fish > deepseek.fish
```
## 🔧 Troubleshooting
### No API key
Set `DEEPSEEK_API_KEY` environment variable or run `deepseek` and complete onboarding.
### Config not found
Check `~/.deepseek/config.toml` (or `DEEPSEEK_CONFIG_PATH`).
### Wrong region / base URL
Set `DEEPSEEK_BASE_URL` to `https://api.deepseeki.com` (China).
### Session issues
Run `deepseek sessions` and try `deepseek --resume latest`.
### Skills missing
Run `deepseek setup --skills` to create a global skills directory, or add `--local`
to create `./skills` for the current workspace. If you want the preferred
workspace-local path, create `.agents/skills` manually. Then run `deepseek doctor`
to see which skills directory is selected.
### MCP tools missing
Run `deepseek mcp init` (or `deepseek setup --mcp`), then restart. `deepseek doctor`
now checks the MCP path resolved from your config/env overrides.
### Sandbox errors (macOS)
Run `deepseek doctor` to confirm sandbox availability. On macOS, ensure
`/usr/bin/sandbox-exec` exists. For other platforms, sandboxing is limited.
## 📖 Documentation
- `docs/CONFIGURATION.md` Complete configuration reference
- `docs/MCP.md` Model Context Protocol guide
- `docs/ARCHITECTURE.md` Project architecture
- `docs/MODES.md` Mode comparison and usage
- `CONTRIBUTING.md` How to contribute to the project
## 🧪 Development
```bash
cargo build
cargo test
cargo fmt
cargo clippy
```
See `CONTRIBUTING.md` for detailed guidelines.
## 📄 License
MIT
---
DeepSeek is a trademark of DeepSeek Inc. This is an unofficial project.