# 第 2 章:五分钟快速上手
> 本章目标:**跟着做,跑起来**。每一条命令都给出预期输出与常见错误解法。建议打开终端边看边做。
## TL;DR(本章核心,30 秒版)
1. **装**:`npx -y @deepseek-ai/dsh web` → http://127.0.0.1:3080
2. **两种常用模式**:web(对话 UI)/ headless(`dsh --profile headless "任务"`,CI 友好)——官方共四种运行模式(见 2.4.1 总览)
3. **推理档位**:off / low(关闭或弱思考/最快,官方 provider 用 `off`,网关用 `low`)/ high(默认)/ max(最强)——**工具链任务 90% 时间在思考,降档是最快提速**
4. **模型**:`deepseek-v4-flash`(默认,性价比)或 `deepseek-v4-pro`(旗舰)
5. **配置**:`~/.dsh/settings.yaml`(模型 + 推理档位)
本章导航
- [2.1 准备工作(30 秒检查)](#21-准备工作30-秒检查)
- [Node 版本红线(≥22.19)](#node-版本红线2219)
- [2.2 安装(三种方式)](#22-安装三种方式)
- [安装坑(社区真实踩过)](#安装坑社区真实踩过)
- [2.3 模式一:Web UI(`dsh web`)](#23-模式一web-uidsh-web)
- [2.4 模式二:Headless(一次性任务,适合脚本/CI)](#24-模式二headless一次性任务适合脚本ci)
- [2.4.1 官方四种运行模式总览](#241-官方四种运行模式总览)
- [2.5 你的第一个插件:给 web 加个 Git 面板](#25-你的第一个插件给-web-加个-git-面板)
- [2.6 配置与目录速查](#26-配置与目录速查)
- [2.7 命令速查](#27-命令速查)
- [2.8 排障速查](#28-排障速查)
## 2.1 准备工作(30 秒检查)
| 需要 | 检查命令 | 通过标准 |
|---|---|---|
| **Node.js ≥ 22.19** | `node --version` | `v22.19.0` 或更高(**红线**,见下) |
| npm(随 Node 附带) | `npm --version` | 有版本号即可 |
| 网络 | 能访问 npm registry | 能装包 |
| (可选)DeepSeek API Key | https://platform.deepseek.com | 用于真实对话 |
> 没有 API Key 也能启动 dsh(界面能开),但对话需要 Key。本白皮书示例假设已配置。
### Node 版本红线(≥22.19)
社区实测发现 **Node < 22.19 会触发两个致命缺失**:
| 缺失 API | 报错示例 | 触发帖号 |
|---|---|---|
| `node:zlib` 无 `createZstdDecompress` | `TypeError: zlib.createZstdDecompress is not a function` | [#100](https://github.com/deepseek-ai/deepseek-harness/discussions/100) |
| `AbortSignal.timeout` 未实现 | `AbortSignal.timeout is not a function` | [#311](https://github.com/deepseek-ai/deepseek-harness/discussions/311) |
**Workaround**:用 nvm/volta/fnm 切换到 `22.19.0+`。Node 24 早期版本(如 v24.15)也可能触发 `install-lefthook failed`——若遇此错,pin 到 `22.19.0` 最稳 ([#748](https://github.com/deepseek-ai/deepseek-harness/discussions/748))。
## 2.2 安装(三种方式)
**方式一:直接运行(推荐新手)**
```bash
npx -y @deepseek-ai/dsh --version
```
首次运行会下载 dsh(包体较大,含 40+ 插件模块,约 1-3 分钟)。看到版本号即成功:
```text
0.1.0-rc.6
```
**方式二:全局安装(推荐频繁使用)**
```bash
npm install -g @deepseek-ai/dsh
dsh --version
```
**方式三:免装 Node 的安装包(新手可选)**
不想装 Node?社区作者 codeAnqiang-ma([#380](https://github.com/deepseek-ai/deepseek-harness/discussions/380) 插件踩坑帖作者,已授权收录)提供了**免装 Node 的安装包**——mac DMG / Windows exe,底层官方 dsh 原样打包、自带 Node 运行时,零前置依赖:
> [dsh-installers](https://github.com/codeAnqiang-ma/dsh-installers)(非官方,随官方 rc 版本发布对应安装包,含 SHA256 校验)
适合「不想折腾 Node 环境、双击即用」的尝鲜用户;需要插件开发/频繁升级的话仍建议方式一或二。
### 安装坑(社区真实踩过)
| 坑 | 现象 | 解决 | 帖号 |
|---|---|---|---|
| **首次 npx 极慢(Windows)** | `npx dsh web` 首次在 Windows 上 8+ 分钟零反馈,npm 需下载 500+ 包 | 耐心等待;改用 `npm i -g @deepseek-ai/dsh` 后秒启 | [#176](https://github.com/deepseek-ai/deepseek-harness/discussions/176) |
| **pnpm dlx 404** | `pnpm dlx @deepseek-ai/dsh web` 报 `@deepseek-ai/dsh-pty@0.0.1-rc.2` 未发布 | 用 `npx` 或 `npm i -g` 替代 `pnpm dlx` | [#369](https://github.com/deepseek-ai/deepseek-harness/discussions/369) |
| **pnpm 全局装后找不到插件** | `pnpm add -g @deepseek-ai/dsh` 后启动报 `Cannot find package 'cordis-plugin-timer'` | pnpm 全局安装的依赖解析策略与 npm 不同;建议用 `npm i -g` 或 npx | [#55](https://github.com/deepseek-ai/deepseek-harness/discussions/55) |
| **WSL2 上 npx 装不上** | 在 WSL2(Ubuntu 等发行版)里 `npx -y @deepseek-ai/dsh` 安装失败 | 先确认 npm 代理配置;仍不行就**改用源码安装**(社区实测可行) | [#118](https://github.com/deepseek-ai/deepseek-harness/discussions/118) |
> **WSL2 安装注意**:社区在 [#118](https://github.com/deepseek-ai/deepseek-harness/discussions/118) 反映 WSL2 上 `npx` 安装可能失败(Windows 原生侧正常,见该帖"win 上都装好开始玩了"的对照)。排查顺序:① 确认 npm 代理/registry 配置;② 若 `npx` 仍装不上,**先试源码安装**(clone 官方仓库后 `pnpm install`,社区实测可行)。详见该帖评论区。
>
> 全局安装方式对比:**`npm i -g`** 最稳(社区验证最多);**`npx`** 适合尝鲜;**`pnpm dlx`** 暂不建议(rc 阶段 pty 包未发布到 pnpm 可见 registry)。
## 2.3 模式一:Web UI(`dsh web`)
### 启动
```bash
dsh web
```
预期输出:
```text
dsh web: http://127.0.0.1:3080
```
浏览器打开 http://127.0.0.1:3080。
### 界面认识(对照截图)

| 区域 | 内容 |
|---|---|
| 左栏 | 会话列表 / 工作区切换 / 新建会话 |
| 中栏 | 对话区:输入框、模型选择(`DeepSeek V4 Flash`)、推理等级(`High`) |
| 右侧/底部 | 插件侧边栏(默认空;安装社区插件后出现) |
| 右上 | Session log(会话日志)/ 轨迹(工具调用轨迹) |
### 第一次对话
1. 点「新建会话」
2. 输入框输入:`你好,请用一句话介绍你自己`
3. 回车发送
预期回复类似:
> 你好!我是 DeepSeek 驱动的 AI 编程助手,可以帮你写代码、调试问题、处理文件、搜索资料,以及完成各种开发和办公任务。
### 模型与推理档位
点输入框旁的「选择模型」,打开模型与推理档位选择器:

| 模型 | 定位 |
|---|---|
| `deepseek-v4-flash`(默认) | 性价比:快、便宜,日常够用 |
| `deepseek-v4-pro` | 旗舰:更强,更贵更慢 |
**推理等级**(思考模式三档,2026-08-13 起支持):
| 档位 | 速度 | 质量 | 建议场景 |
|---|---|---|---|
| `low` | 最快 | 够用 | 简单/确定性任务、批量、工具链廉价轮次 |
| `high`(默认) | 中等 | 好 | 日常 Agent 任务 |
| `max` | 最慢 | 最强 | 复杂推理、长链规划 |
> 💡 **性能关键认知**:模型在**每次工具调用前都会重新思考**。实测一个"创建文件"任务,思考占 ~90% 墙钟时间;50 步工具链任务思考累计可达数分钟到十几分钟。**调低推理档位是性价比最高的提速手段**(见第 6 章 + 示例提速插件)。
## 2.4 模式二:Headless(一次性任务,适合脚本/CI)
```bash
dsh --profile headless "你好,请用一句话介绍你自己"
```
预期输出(打印结果后进程退出):
```text
你好!我是 DeepSeek 驱动的 AI 编程助手,可以帮你写代码、调试问题、处理文件、搜索资料,以及完成各种开发和办公任务。
```
**Headless 的核心价值**:
- **自动化**:可进 CI、服务器、cron
- **脚本友好**:非零退出码 = 失败;输出可管道处理
- **会话隔离**:每次调用一个新鲜会话(`--resume` 可恢复,见 `dsh --profile headless --help`)
**实战**:写个脚本每天跑一次"生成日报":
```bash
dsh --profile headless "读取工作区今天的 git log,生成一份中文日报摘要" > daily-report.md
echo "exit=$?"
```
### 2.4.1 官方四种运行模式总览
> 来源:官方站点 https://deepseek.com/harness/ 与官方仓库 `docs/`(2026-08 快照)。前两节(web / headless)是白皮书实测详讲的;后两种模式官方已公布但白皮书暂未逐项实测。
| 模式 | 一句话 | 用途 | 白皮书覆盖 |
|---|---|---|---|
| **Standard mode**(标准) | 完整工具集 + 浏览器界面 | 日常对话/开发(`dsh web`) | ✅ 2.3 节实测 |
| **Minimal mode**(极简) | 仅 `bash` + `str_replace_editor` 两个工具 | 基准测试、最小攻击面 | ⚠️ 未实测,见官方 docs |
| **Code mode**(代码) | 模型写 TypeScript,在单次程序内编排多轮工具调用 | 长链路自动化、确定性执行 | ⚠️ 未实测,见官方 docs |
| **Creator mode**(创造) | 运行时自检 + 内存内测试 Cordis 插件 + 组合新模式 | 插件开发、快速原型 | ⚠️ 未实测,见官方 docs |
> 对新手:日常用 **Standard(web)**、脚本用 **Headless** 即可;Code/Creator 模式属于进阶能力,等官方文档稳定后再深挖。官方文档站(VitePress):https://deepseek-harness.github.io/deepseek-harness/
## 2.5 你的第一个插件:给 web 加个 Git 面板
dsh 的侧边栏默认是空的——安装社区插件 `dsh-better-sidebar` 体验"一切皆插件"(详细原理见第 3 章,这里先跑通):
```bash
# 1. 找到你的 web profile
# Windows: %USERPROFILE%\.dsh\profiles\web
# macOS/Linux: ~/.dsh/profiles/web
# 2. 在 package.json 的 dependencies 加一行(link: 指向插件源码)
# "dsh-better-sidebar": "link:C:\\path\\to\\DSH-better-sidebar"
# 3. 在 cordis.patch.yml 加挂载行
# - insert:
# - id: better-sidebar
# name: dsh-better-sidebar
# 4. 安装并重启
cd ~/.dsh/profiles/web && pnpm install
# (Windows cmd 下 `~` 不展开,请用:cd %USERPROFILE%\.dsh\profiles\web)
dsh web
```
重启后,右侧出现文件管理 / 终端 / **Git 面板** / 浏览器等标签:

> 图中「拉取远端 / 拉取合并 / 推送」按钮是社区 PR 实现的(见第 5 章案例)——**这就是"插件生态"的运转方式**。
## 2.6 配置与目录速查
首次运行后生成的目录:
```text
~/.dsh/
├── settings.yaml # 全局设置(模型、推理档位)
├── profiles/ # profile 目录
│ └── web/
│ ├── package.json # 插件依赖 + 清单
│ └── cordis.patch.yml # 补丁层(挂载插件)
├── sessions/ # 会话数据
└── storages/ # 持久化存储
```
`settings.yaml` 示例:
```yaml
agent-default-model:
model: deepseek-v4-flash
reasoningEffort: high
```
## 2.7 命令速查
| 命令 | 用途 |
|---|---|
| `dsh web` | 启动 Web UI(=`dsh --profile web`) |
| `dsh --profile headless "任务"` | 一次性任务,打印结果退出 |
| `dsh plugin --profile add ` | 给 profile 安装插件 |
| `dsh --dump-config` | 打印合成配置树 |
| `dsh --profile tui` | TUI 模式(需先安装 tui 插件,官方未内置) |
| `dsh --version` | 版本 |
## 2.8 排障速查
| 现象 | 原因与解法 |
|---|---|
| `dsh: profile "tui" does not exist` | tui profile 需插件创建(`dsh plugin --profile tui add `) |
| `npx` 极慢 | 首次下载包体大;`npm i -g` 后更快 |
| 浏览器打不开 3080 | 端口被占:`netstat -ano \| findstr 3080` → kill PID |
| 模型无响应 | 检查 `~/.dsh/settings.yaml` 模型配置 + API Key |
| 插件装不上(404) | **rc.1 依赖断裂**:确认依赖用 `^0.1.0-rc.6` 线(第 3 章常见坑 #1) |
| 升级后行为变了 | rc 阶段破坏性变更正常,看官方 changelog |
---
**下一章**:[第 3 章:profile 与插件系统](./03-profiles.md) —— 理解可定制骨架。
---
> **源码方式启动慢的根因(#1424 社区实测确认)**:`pnpm dsh web` 每次启动用 tsx/esbuild **现场转译整个 TS 源码图**(非全量构建),叠加机械盘/大文件数时冷启动可达数分钟。**实测计时**:tsx 热缓存 ~40s / 冷缓存 ~5min / 编译产物 `lib/bin.js` 版 ~12s(页面响应 5ms)。解决:① 启动命令改用 `node apps\cli\libin.js web`(走编译产物)② 或先 `pnpm build` 全量构建一次 ③ 或直接用 `npx @deepseek-ai/dsh web`(发布版)。
## 动手练习(10 分钟内完成)
1. **安装**:`npx -y @deepseek-ai/dsh --version` 确认版本
2. **Web 对话**:启动 `dsh web`,新会话发"你好",观察回复与界面布局
3. **Headless**:`dsh --profile headless "1+1 等于几"`,确认打印结果后退出
4. **推理档位实验**:把 settings.yaml 的 `reasoningEffort` 改为 `off`(官方 provider)或 `low`(第三方网关),重新跑一个简单任务,感受速度差异
5. **排障演练**:模拟"端口被占"(先起一个占用 3080 的服务),用 `netstat` 排查
> 全部通过后,进 [第 3 章](./03-profiles.md) 理解"为什么能这样改"。