deepseekcode

module
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2026 License: MIT

README

deepseekcode

Release Go Reference Go Report Card Go Version

English · 简体中文

deepseekcode is a terminal coding agent for DeepSeek models and OpenAI-compatible chat-completions endpoints. It ships as a single Go binary named dsc, with an interactive TUI, one-shot CLI mode, repository tools, SQLite-backed sessions, and a conservative permission model.

Features

  • Interactive Bubble Tea TUI and scriptable dsc -p "prompt" mode.
  • DeepSeek-first runtime with thinking, reasoning_effort control, long context, prefix-cache metrics, and deepseek-v4-flash / deepseek-v4-pro support.
  • OpenAI-compatible provider configuration for alternate chat-completions endpoints.
  • Repository tools for file reads/edits, patches, shell commands, git, grep, LSP queries, web fetch/search, and user questions.
  • Persistent project sessions with resume, branching, scrollback export, and /undo for recent edit steps.
  • Extensibility through custom slash commands, SKILL.md discovery, MCP tools, subagents, and isolated git worktrees.
  • Safety controls for read-only mode, ask-before-tool mode, auto-approve mode, secret path checks, bash allowlists, optional sandboxing, and Pro validation for destructive operations.

Installation

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/amemiya02/deepseekcode/main/install.sh | sh

Homebrew:

brew install amemiya02/deepseekcode/deepseekcode

Scoop:

scoop bucket add deepseekcode https://github.com/amemiya02/deepseekcode-scoop
scoop install deepseekcode

Go:

go install github.com/amemiya02/deepseekcode/cmd/dsc@latest

From source:

git clone https://github.com/amemiya02/deepseekcode
cd deepseekcode
make build
./bin/dsc -version

Requirements:

  • Go version matching go.mod or newer when building from source.
  • DEEPSEEK_API_KEY, or another provider key configured in .deepseek/config.toml.
  • Git and language servers are optional, but enable richer repository context.

Quick Start

export DEEPSEEK_API_KEY=sk-...

dsc                              # open the TUI
dsc -p "summarize this repo"     # run one prompt and exit
dsc --read-only                  # inspect without write/edit/bash tools
dsc init                         # create starter project config
dsc doctor                       # check local setup

Session shortcuts:

dsc -c                 # continue the latest session in this project
dsc -r <session-id>    # resume a specific session
dsc -new               # force a new session

Configuration

Configuration is layered from built-in defaults, user config, project config, and CLI flags. Project config lives at ./.deepseek/config.toml; user config lives at ~/.deepseek/config.toml.

Minimal DeepSeek config:

[active]
provider = "deepseek"

[providers.deepseek]
type = "deepseek"
base_url = "https://api.deepseek.com"
env_var = "DEEPSEEK_API_KEY"
first_token_timeout_ms = 45000
chunk_stall_timeout_ms = 20000

[defaults]
model = "deepseek-v4-flash"
thinking = true

OpenAI-compatible endpoint:

[active]
provider = "openai"

[providers.openai]
type = "openai-compat"
base_url = "https://api.openai.com"
env_var = "OPENAI_API_KEY"
default_model = "gpt-4o"

See docs/config.md and docs/PROVIDERS.md for the full reference.

Documentation

Development

make build       # build ./bin/dsc
make test        # go test ./...
make test-race   # go test -race ./...
make lint        # go vet ./...
make fmt         # gofmt -s -w .
make run         # build and launch the TUI

Before opening a pull request:

make fmt
make lint
make test

Contributing

Issues and pull requests are welcome. Keep README changes synchronized between README.md and README.zh-CN.md with matching ## structure. Document only features that are implemented and testable in this repository.

License

MIT

Directories

Path Synopsis
bench
cmd/benchrunner command
benchrunner is a black-box benchmark harness that compares coding agents by running them against a set of tasks and collecting structured traces.
benchrunner is a black-box benchmark harness that compares coding agents by running them against a set of tasks and collecting structured traces.
cmd
dsc command
Command dsc is the deepseekcode CLI entrypoint.
Command dsc is the deepseekcode CLI entrypoint.
internal
agent
compact.go owns session compaction: when the live message list grows past CompactionConfig.AutoCompactInputTokens the agent collapses the older portion into a synthetic summary message, preserving a configurable tail of recent turns.
compact.go owns session compaction: when the live message list grows past CompactionConfig.AutoCompactInputTokens the agent collapses the older portion into a synthetic summary message, preserving a configurable tail of recent turns.
config
Package config loads deepseekcode configuration from TOML with precedence: CLI flags > project ./.deepseek/config.toml > user ~/.deepseek/config.toml > built-in defaults.
Package config loads deepseekcode configuration from TOML with precedence: CLI flags > project ./.deepseek/config.toml > user ~/.deepseek/config.toml > built-in defaults.
gitctx
Package gitctx reads a cwd's git state for the prompt builder's dynamic context section.
Package gitctx reads a cwd's git state for the prompt builder's dynamic context section.
hooks
Package hooks provides an extensible hook system for deepseekcode.
Package hooks provides an extensible hook system for deepseekcode.
llm
Package llm is a hand-rolled DeepSeek API client.
Package llm is a hand-rolled DeepSeek API client.
llmtest
Package llmtest provides a deterministic, offline mock DeepSeek server for exercising the agent loop and the llm client end-to-end without a network connection or API credentials.
Package llmtest provides a deterministic, offline mock DeepSeek server for exercising the agent loop and the llm client end-to-end without a network connection or API credentials.
logging
Package logging provides structured logging for deepseekcode.
Package logging provides structured logging for deepseekcode.
lsp
Package lsp implements a lightweight LSP (Language Server Protocol) client.
Package lsp implements a lightweight LSP (Language Server Protocol) client.
mcp
Package mcp implements the Model Context Protocol (MCP) client for stdio transport.
Package mcp implements the Model Context Protocol (MCP) client for stdio transport.
permissions
Package permissions implements the tiered approval model described in docs/design.md §8.
Package permissions implements the tiered approval model described in docs/design.md §8.
prompt
Package prompt assembles the cache-stable system prompt for the agent.
Package prompt assembles the cache-stable system prompt for the agent.
repair
Package repair provides tool-call repair utilities for DeepSeek reliability.
Package repair provides tool-call repair utilities for DeepSeek reliability.
session
Package session implements the SQLite-backed conversation store.
Package session implements the SQLite-backed conversation store.
skills
Package skills implements a cache-stable skill metadata index.
Package skills implements a cache-stable skill metadata index.
snapshots
Package snapshots implements pre-edit file rollback per docs/design.md §8.4.
Package snapshots implements pre-edit file rollback per docs/design.md §8.4.
tools
Package tools implements deepseekcode's built-in tool surface.
Package tools implements deepseekcode's built-in tool surface.
traceschema
Package traceschema is the single source of truth for an agent trace record — one JSONL line emitted by internal/agent, read by internal/traceinspect, and read by the benchmark harness (bench/cmd/benchrunner).
Package traceschema is the single source of truth for an agent trace record — one JSONL line emitted by internal/agent, read by internal/traceinspect, and read by the benchmark harness (bench/cmd/benchrunner).
tui
chrome.go renders the live activity band between the scrollback and the status line, and owns the redraw-ticker lifecycle that drives it.
chrome.go renders the live activity band between the scrollback and the status line, and owns the redraw-ticker lifecycle that drives it.
version
Package version exposes build-time identifiers stamped via -ldflags.
Package version exposes build-time identifiers stamped via -ldflags.
worktree
Package worktree provides git-worktree management via shell commands.
Package worktree provides git-worktree management via shell commands.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL