Comprehensive guide to using DeepSeek CLI for AI-powered development
Quick Start • Commands • Examples • Configuration • Advanced Usage • Troubleshooting
# Clone the repository
git clone https://github.com/fenwii/deepseek-cli.git
cd deepseek-cli
# Quick start (recommended)
./quickstart.sh
# Or manual installation
./install.shSet your DeepSeek API key:
deepseek config --set apiKey=YOUR_API_KEYdeepseek test# Interactive chat
deepseek chat
# Analyze codebase
deepseek analyze . --recursive
# Run workflows
deepseek workflow "Help me improve this code"Start an interactive chat session with DeepSeek AI.
deepseek chat-s, --system <prompt>: Set custom system prompt-f, --file <path>: Load context from file-m, --model <model>: Specify model (v3, r1, v3-32k, r1-32k)
# Basic chat
deepseek chat
# With custom system prompt
deepseek chat --system "You are a Python expert specializing in data science"
# With context file
deepseek chat --file context.txt --system "Analyze this codebase"
# Using specific model
deepseek chat --model r1 --system "Provide quick code reviews"exit: Exit the chat sessionmodel: Switch between available modelsclear: Clear chat historyhelp: Show available commands
Analyze codebases for insights, quality metrics, and recommendations.
deepseek analyze [path]-r, --recursive: Analyze subdirectories recursively-e, --extensions <extensions>: File extensions to include (comma-separated)-m, --model <model>: Specify model for AI analysis
# Analyze current directory
deepseek analyze
# Analyze specific path
deepseek analyze src/
# Recursive analysis
deepseek analyze . --recursive
# Focus on specific languages
deepseek analyze src/ --recursive --extensions ts,js,py
# Using specific model for analysis
deepseek analyze . --recursive --model v3-32kThe analysis provides:
- File Statistics: Number of files, total lines, language distribution
- Complexity Metrics: Average and maximum complexity scores
- AI Insights: AI-powered observations about code quality
- Recommendations: Actionable improvement suggestions
Execute AI-powered workflows for complex tasks.
deepseek workflow <task>-i, --interactive: Enable interactive mode-o, --output <format>: Output format (json, text, markdown)-m, --model <model>: Specify model for workflow execution
# Generate documentation
deepseek workflow "Create comprehensive documentation for this project"
# Security review
deepseek workflow "Review this codebase for security vulnerabilities" --interactive
# Code refactoring
deepseek workflow "Refactor complex functions for better maintainability"
# Generate tests
deepseek workflow "Create unit tests for all functions in src/"
# Performance optimization
deepseek workflow "Identify performance bottlenecks and suggest optimizations"When using --interactive, you can:
- Approve or reject workflow steps
- Modify step parameters
- Add custom steps
- Review results before proceeding
Manage DeepSeek CLI configuration settings.
# Set configuration value
deepseek config --set <key>=<value>
# Get configuration value
deepseek config --get <key>
# List all configuration
deepseek config --list
# Reset to defaults
deepseek config --reset# Set API key
deepseek config --set apiKey=YOUR_API_KEY
# Set default model
deepseek config --set defaultModel=v3
# Set theme
deepseek config --set theme=dark
# Set token limit
deepseek config --set maxTokens=8000
# View all settings
deepseek config --list
# Get specific value
deepseek config --get apiKeyView available DeepSeek models and their capabilities.
deepseek modelsTest DeepSeek API connection and view available models.
deepseek test# Full codebase analysis
deepseek analyze . --recursive
# Focus on specific file types
deepseek analyze src/ --extensions ts,js,py --recursive
# Generate detailed quality report
deepseek workflow "Analyze code quality and generate improvement recommendations"# TypeScript analysis
deepseek analyze src/ --extensions ts --recursive
# Python analysis
deepseek analyze . --extensions py --recursive
# JavaScript analysis
deepseek analyze . --extensions js,jsx --recursive# Identify performance issues
deepseek workflow "Analyze code for performance bottlenecks"
# Optimization suggestions
deepseek workflow "Suggest performance optimizations for this codebase"# Generate README
deepseek workflow "Create a professional README.md for this project"
# Generate API documentation
deepseek workflow "Generate API documentation for all TypeScript interfaces"
# Create user guides
deepseek workflow "Create user documentation and installation guides"# Add JSDoc comments
deepseek workflow "Add comprehensive JSDoc comments to all functions"
# Generate inline documentation
deepseek workflow "Add inline comments explaining complex logic"# JavaScript to TypeScript
deepseek workflow "Help migrate this JavaScript codebase to TypeScript"
# Python version upgrade
deepseek workflow "Update Python code to use modern syntax and features"# Refactor complex functions
deepseek workflow "Refactor high-complexity functions for better maintainability"
# Improve code structure
deepseek workflow "Restructure code for better organization and readability"# Update dependencies
deepseek workflow "Analyze package.json and suggest dependency updates"
# Security audit
deepseek workflow "Check for security vulnerabilities in dependencies"# Generate unit tests
deepseek workflow "Create comprehensive unit tests for all functions"
# Generate integration tests
deepseek workflow "Create integration tests for API endpoints"
# Generate test documentation
deepseek workflow "Create testing documentation and examples"# Code coverage analysis
deepseek workflow "Analyze test coverage and suggest improvements"
# Code style review
deepseek workflow "Review code style and suggest formatting improvements"
# Best practices check
deepseek workflow "Check code against industry best practices"# Generate CI/CD configuration
deepseek workflow "Create GitHub Actions workflow for this project"
# Docker configuration
deepseek workflow "Create Dockerfile and docker-compose.yml for this application"
# Deployment scripts
deepseek workflow "Create deployment scripts and documentation"# Add logging
deepseek workflow "Add comprehensive logging to all functions"
# Error handling
deepseek workflow "Improve error handling and add proper error messages"
# Monitoring setup
deepseek workflow "Suggest monitoring and alerting setup for this application"| Variable | Description | Default | Example |
|---|---|---|---|
DEEPSEEK_API_KEY |
Your DeepSeek API key | - | sk-1234567890abcdef |
DEEPSEEK_MODEL |
Default model | v3 | v3, r1, v3-32k, r1-32k |
DEEPSEEK_THEME |
Color theme | auto | light, dark, auto |
DEEPSEEK_MAX_TOKENS |
Max tokens per request | 4000 | 8000 |
DEEPSEEK_TEMPERATURE |
Response temperature | 0.7 | 0.5 |
DEEPSEEK_TIMEOUT |
Request timeout (ms) | 60000 | 120000 |
DEEPSEEK_LOG_LEVEL |
Logging level | info | debug, info, warn, error |
Located at ~/.deepseek-cli/config.json:
{
"apiKey": "your-api-key",
"defaultModel": "v3",
"theme": "auto",
"enableLogging": false,
"maxTokens": 4000,
"temperature": 0.7,
"timeout": 60000,
"autoSave": true,
"workspace": "./",
"customPrompts": {
"code_review": "You are an expert code reviewer. Analyze the code for bugs, performance issues, and best practices.",
"documentation": "You are a technical writer. Create clear, comprehensive documentation for the code.",
"testing": "You are a testing expert. Generate comprehensive test cases for the code.",
"security": "You are a security expert. Review code for security vulnerabilities and best practices.",
"performance": "You are a performance optimization expert. Analyze code for performance bottlenecks."
}
}You can define custom prompts for specific use cases:
# Set custom prompt
deepseek config --set customPrompts.code_review="You are a senior developer..."
# Use custom prompt in chat
deepseek chat --system "$(deepseek config --get customPrompts.code_review)"- Best for: Most general tasks, code analysis, documentation
- Performance: Balanced speed and quality
- Context: 4K tokens
- Use cases: Code review, documentation, general assistance
- Cost: Standard pricing
- Best for: Quick tasks, simple queries
- Performance: Fastest response times
- Context: 4K tokens
- Use cases: Quick questions, simple code analysis
- Cost: Lower pricing
- Best for: Large codebases, complex analysis
- Performance: Slower but more comprehensive
- Context: 32K tokens
- Use cases: Large file analysis, complex workflows
- Cost: Higher pricing
- Best for: Large codebases with quick responses
- Performance: Fast with long context
- Context: 32K tokens
- Use cases: Large codebases, quick analysis
- Cost: Higher pricing
| Task Type | Recommended Model | Reason |
|---|---|---|
| Quick questions | R1 | Fastest response |
| Code review | V3 | Best quality |
| Documentation | V3 | Comprehensive output |
| Large files | V3-32K | Long context needed |
| Simple analysis | R1 | Cost-effective |
| Complex workflows | V3-32K | Detailed processing |
Create and execute custom workflow templates:
# Save workflow to file
deepseek workflow "Generate API client" --output json > api-client-workflow.json
# Execute from file
deepseek workflow api-client-workflow.json
# Create reusable workflow
cat > my-workflow.json << EOF
{
"name": "Code Review Workflow",
"steps": [
{
"type": "ai_task",
"name": "Analyze Code Quality",
"description": "Review code for quality issues"
},
{
"type": "ai_task",
"name": "Generate Recommendations",
"description": "Create improvement suggestions"
}
]
}
EOF
deepseek workflow my-workflow.jsonname: Code Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install -g @fenwii/deepseek-cli
- run: |
deepseek config --set apiKey=${{ secrets.DEEPSEEK_API_KEY }}
deepseek analyze . --recursive --extensions js,tscode_analysis:
image: node:18
script:
- npm install -g @fenwii/deepseek-cli
- deepseek config --set apiKey=$DEEPSEEK_API_KEY
- deepseek analyze . --recursive#!/bin/bash
# automated-review.sh
echo "🔍 Starting automated code review..."
# Analyze codebase
deepseek analyze . --recursive > analysis-report.txt
# Generate recommendations
deepseek workflow "Review the analysis report and suggest improvements" \
--file analysis-report.txt > recommendations.txt
# Create summary
echo "📊 Code Review Summary" > summary.md
echo "=====================" >> summary.md
echo "" >> summary.md
echo "## Analysis Results" >> summary.md
cat analysis-report.txt >> summary.md
echo "" >> summary.md
echo "## Recommendations" >> summary.md
cat recommendations.txt >> summary.md
echo "✅ Code review completed! Check summary.md for results."#!/bin/bash
# batch-analyze.sh
for dir in */; do
if [ -d "$dir" ]; then
echo "Analyzing $dir..."
deepseek analyze "$dir" --recursive > "${dir%/}-analysis.txt"
fi
doneLoad context from various file types:
# Load from text file
deepseek chat --file context.txt
# Load from JSON file
deepseek chat --file config.json
# Load from code file
deepseek chat --file src/main.ts
# Load from multiple files
cat file1.txt file2.txt > combined.txt
deepseek chat --file combined.txt# Get structured data
deepseek analyze . --recursive --output json > analysis.json
# Process with jq
deepseek analyze . --recursive --output json | jq '.filesAnalyzed'# Generate markdown report
deepseek workflow "Create documentation" --output markdown > docs.md
# Include in README
deepseek workflow "Generate README section" --output markdown >> README.md# Check if API key is set
deepseek config --get apiKey
# Set API key
deepseek config --set apiKey=YOUR_API_KEY
# Test connection
deepseek test
# Verify API key format
# Should start with 'sk-' and be 32+ characters# Fix global installation permissions
sudo yarn global add .
# Or use local installation
yarn link
# Check file permissions
ls -la ~/.deepseek-cli/
# Fix configuration directory permissions
chmod 755 ~/.deepseek-cli/
chmod 600 ~/.deepseek-cli/config.json# Clean and rebuild
yarn clean
yarn install
yarn build
# Check Node.js version
node --version # Should be 18+
# Check TypeScript compilation
yarn tsc --noEmit
# Check for missing dependencies
yarn install --force# Test internet connection
curl -I https://api.deepseek.com
# Check proxy settings
echo $http_proxy
echo $https_proxy
# Test with verbose logging
deepseek test --verbose- Check your internet connection
- Verify API key is correct
- Check if DeepSeek API is accessible from your location
- Try with
--verboseflag for more details
- Verify file path is correct
- Check file permissions
- Use absolute paths if needed
- Check available models:
deepseek models - Verify model name spelling
- Try with default model:
deepseek config --set defaultModel=v3
- Increase timeout:
deepseek config --set timeout=120000 - Check network connection
- Try with smaller files or simpler requests
# Use faster model
deepseek config --set defaultModel=r1
# Reduce token limit
deepseek config --set maxTokens=2000
# Use local caching
deepseek config --set enableCaching=true# Analyze in chunks
deepseek analyze src/ --extensions ts
deepseek analyze src/ --extensions js
deepseek analyze src/ --extensions py
# Use 32K model for large files
deepseek analyze . --recursive --model v3-32k# General help
deepseek --help
# Command-specific help
deepseek chat --help
deepseek analyze --help
deepseek workflow --help
deepseek config --help# Enable verbose logging
deepseek config --set enableLogging=true
# Run with debug output
deepseek test --verbose
# Check logs
tail -f ~/.deepseek-cli/logs/deepseek.log- 📖 Documentation
- 🐛 Issues
- 💬 Discussions
- 📧 Email Support
- Use R1 for quick questions and simple tasks
- Use V3 for code review and documentation
- Use 32K variants for large files and complex analysis
- Consider cost vs. performance trade-offs
- Store API key securely (environment variables preferred)
- Use custom prompts for consistent results
- Set appropriate timeouts for your use case
- Enable logging for debugging
- Analyze specific directories rather than entire codebase
- Use file extensions to focus on relevant languages
- Review AI recommendations before implementing
- Combine with other static analysis tools
- Break complex tasks into smaller steps
- Use interactive mode for important decisions
- Save and reuse successful workflows
- Validate workflow outputs
- Never commit API keys to version control
- Use environment variables for sensitive data
- Regularly rotate API keys
- Monitor API usage and costs
- Use appropriate models for task complexity
- Cache frequently used results
- Batch similar requests when possible
- Monitor response times and optimize
- Plugin System: Extend functionality with custom plugins
- Team Collaboration: Share workflows and configurations
- Advanced Analytics: Detailed usage analytics and insights
- IDE Integration: Direct integration with popular IDEs
- Cloud Sync: Synchronize configurations across devices
We welcome contributions! See our Contributing Guide for details.
Need help? Open an Issue • Join Discussions
Author: samir.tan.it@gmail.com
Created: 2025-06-28
Last Updated: 2025-06-28
Version: 1.0.0