跳过主要内容
全部文章
指南

有 DeepSeek CLI 吗?dsh 的 CLI 与 Headless 模式

DeepSeek 官方的 CLI 路径就是 DeepSeek Harness(dsh)——涵盖 dsh 命令、headless 一次性模式、Python/TypeScript SDK,以及社区终端 UI 插件。

有——最接近官方"DeepSeek CLI"的东西就是 dsh,也就是 DeepSeek Harness 的命令行入口。并不存在一个和这个 harness 分离、单独叫作"DeepSeek CLI"的产品;dsh 是一个 launcher 二进制程序,带有 headless 一次性模式,DeepSeek 还发布了 Python 和 TypeScript SDK,可以完全不带任何 GUI 地以编程方式调用。

为什么大家会搜"DeepSeek CLI"

如果你是从 OpenAI Codex CLI 或 Claude Code 这类工具过来的——这两者都常被直接称为"CLI"——很自然会想找一个对应的"DeepSeek CLI"。不过 DeepSeek 官方的 agent 产品并不主要以 CLI 的身份来营销自己——它最显眼的入口是 npx @deepseek-ai/dsh web,会启动一个基于浏览器的 Web UI,地址是 http://127.0.0.1:3080。但这条命令背后的 dsh 二进制程序其实是一个完整的 CLI launcher,一个 CLI 优先的工具能做的事它都能做,包括完全不打开浏览器地运行。

dsh CLI 速览

dsh 有四种入口模式:

命令作用
dsh --profile <name>启动 $DSH_HOME/profiles/<name> 下的 profile
dsh --profile headless "任务文本"一次性、非交互式任务运行
dsh web--profile web 的硬编码别名
dsh plugin --profile <name> <pnpm 参数...>插件管理,直接转发给 pnpm

--patch <path>(叠加一层 YAML 配置 patch)、--dump-config(打印组合后的配置树而不启动)、-V/--version 这类 launcher 自身的 flag,必须出现在任何 app 专属参数之前。完整参考见《DeepSeek Harness CLI 速查表》

Headless 模式:真正"无 GUI"的 CLI 体验

行为最接近传统 CLI 工具的是 headless 模式:

dsh --profile headless "修复这个仓库里失败的测试"

这会新建一个持久化 session,把任务跑完,打印最终回答,然后退出——completed 对应退出码 0,其他情况对应 1。关键在于:headless profile 不挂载 ApiProxy、Host、HTTP server、web runtime 或浏览器 client——完全没有监听端口,真正适合脚本和 CI 流水线,而不是浏览器优先的 Web UI。退出码、SIGTERM 行为、脚本化示例见《DeepSeek Harness Headless 模式》

编程式访问:Python 与 TypeScript SDK

如果你想要的是"完全不要 CLI 外壳,直接从代码里调用",DeepSeek 发布了官方 Python SDK:

python -m pip install deepseek-harness-sdk
from deepseek_harness import DeepSeekHarness

with DeepSeekHarness(
    provider="deepseek-official",
    model="deepseek-v4-flash",
    max_tokens=49_152,
    cwd=str(workspace),
    session_root=str(sessions),
) as harness:
    result = harness.run("Inspect the repository and fix the failing tests.")
print(result.final_response)

它要求 Python 3.10+,文档列出的支持平台是 Linux x64、Linux arm64、macOS 14+(arm64)——明显不包含 Windows。这个 SDK 内置打包好的运行时,不需要系统装 Node.js。它底层驱动的是与 TypeScript SDK(dsh-sdk-client)、以及 dsh 面向外部 GUI/编排系统集成的 ACP(Agent Client Protocol)server 相同的一套 stdio JSON-RPC 协议。目前没有公开的 REST/HTTP API——SDK 和 ACP 是官方文档记录的、以编程方式驱动 dsh 的方式。完整说明见《DeepSeek Harness Python SDK》,包括官方示例里那条 danger-full-access 警告。

"DeepSeek CLI" 对比单纯从终端调 DeepSeek API

有必要把大家说的"DeepSeek CLI"拆成两件不同的事。一种是一个能从命令行驱动的 agent harness——一个管理工具调用循环、文件编辑、审批、session 状态的工具,这正是 dsh 所做的事。另一种是单纯调用 DeepSeek 的 chat API,完全没有 agent 循环——比如用 curl 直接打 DeepSeek 那个 OpenAI 兼容的 chat-completions 端点,或者用任意通用的 OpenAI 兼容客户端库。第二种用法根本不需要 dsh(或任何 harness);它就是一次普通的 API 调用。如果你真正想要的是一个能读你的仓库、跑命令、做修改的 agent——而不只是一次聊天补全——那么 dsh(或者其他指向 DeepSeek 的 agent harness,见《DeepSeek V4 最佳 Harness》)才是相关的工具,而不是一个裸的 API 客户端。

用于 CLI 和 CI 场景的有用环境变量

如果你是从脚本或 CI 而不是交互式地驱动 dsh,有几个环境变量特别相关:

export DSH_HOME=/custom/path        # harness home 目录,默认 ~/.dsh
export DSH_PERMISSION_MODE=workspace-write   # 覆盖进程级权限预设
export DSH_TOOLS_MODE=native        # native | code | both——原生工具调用 vs "Code Mode"
export DSH_TELEMETRY_DISABLED=1     # 硬性关闭遥测,优先级最高

配合 headless 模式简洁的退出码语义(completed 对应 0,否则 1SIGINT 对应 130SIGTERM 有五秒优雅关闭窗口),已经足够在 CI 任务里脚本化调用 dsh --profile headless,完全不需要碰 Web UI。完整的环境变量表见《DeepSeek Harness CLI 速查表》

如果你想要终端 UI,而不只是 headless 输出

Headless 模式在设计上就是一次性、非交互式的——它不是一个持久化的、聊天式的终端会话。如果你真正想要的是一个类似其他 CLI 优先 agent 工具那样的交互式终端体验,这不属于 dsh 默认安装的一部分,但作为叠加在 dsh Web UI 优先架构之上的社区插件是存在的。dsh-TUI 是一个 Claude Code 风格的全屏终端 UI 插件,dsh-tianshu-tui 是另一个终端 UI 选项——如果 Web UI 不是你偏好的界面,更完整的列表见《DeepSeek Harness TUI 插件盘点》

FAQ

真的存在一个字面意义上叫"DeepSeek CLI"的官方产品吗?

没有作为独立产品名存在的这样一个东西。DeepSeek Harness 的 CLI 入口就是 dsh 二进制程序本身,它支持交互式 profile 启动、一次性 headless 任务、以及插件管理命令。

我该怎么从脚本或 CI 流水线里跑一次性的 DeepSeek Harness 任务?

用 headless 模式:dsh --profile headless "任务文本"。它运行时不带任何监听端口,打印最终回答,并以反映完成状态的退出码退出。见《DeepSeek Harness Headless 模式》

我能完全不装 Node.js 就用 dsh 吗?

标准的 npx @deepseek-ai/dsh 路径不行,它需要 Node.js ^22.19.0 || >=24.0.0。如果你特别想避免系统装 Node.js,Python SDK(deepseek-harness-sdk)内置打包了自己的运行时——但目前仅限 Linux x64/arm64 和 macOS 14+ arm64,文档没有说明支持 Windows。

dsh 有像 TUI 那样的实时交互式终端聊天模式吗?

默认没有内置——dsh 的默认界面是 Web UI,headless 模式是一次性而非交互式的。dsh-TUI 这类社区插件能在 dsh 之上加一层持久化的终端界面。

有没有我能直接调用的 REST API,而不是 CLI 或 SDK?

没有。dsh 的文档没有描述一个面向第三方集成的公开 REST/HTTP API。官方支持的编程接入路径是 Python 和 TypeScript SDK(底层是 stdio JSON-RPC),以及面向外部编排工具的 ACP server。

Next steps