有 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,否则 1,SIGINT 对应 130,SIGTERM 有五秒优雅关闭窗口),已经足够在 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
- 了解完整命令面:《DeepSeek Harness CLI 速查表》
- 脚本化一次性任务:《DeepSeek Harness Headless 模式》
- 不打开浏览器、从 Python 驱动 dsh:《DeepSeek Harness Python SDK》
- 比起 Web UI 更喜欢终端?浏览《DeepSeek Harness TUI 插件盘点》
- 完全没接触过 dsh?从《DeepSeek Harness 快速上手》开始