DeepSeek-Harness 使用指南
前言
这段时间一直在用 DeepSeek-Harness(简称 DSH)写代码、查资料、管理任务,但从来没有系统地把「本地装了哪些东西、怎么配置、怎么用」记录下来。这篇文章,把 DSH 从安装到日常使用的完整流程整理一遍。
本文基于本地安装的
@deepseek-ai/dsh@0.2.1-rc.2(npm 全局安装),配置路径为C:\Users\32229\AppData\Roaming\npm\node_modules\@deepseek-ai\dsh。
文章里会尽量把「为什么这么做」也写出来,方便之后忘记时回来一看就懂。
安装与配置
安装
DSH 通过 npm 全局安装:
1 | npm install -g @deepseek-ai/dsh |
装完验证:
1 | dsh --version |
能输出版本号就说明装好了。DSH 的仓库地址是 github.com/deepseek-ai/deepseek-harness(实际目录 apps/cli)。
配置
DSH 的配置文件位于 %USERPROFILE%\.dsh(即 C:\Users\32229\.dsh),是一个 JSON 文件。主要配置项:
| 配置项 | 说明 |
|---|---|
model |
使用的模型,如 deepseek-chat |
apiKey |
DeepSeek API Key(也可用环境变量 DEEPSEEK_API_KEY) |
workspace |
默认工作目录 |
plugins |
启用的插件列表 |
建议把
apiKey放在环境变量里,不要直接写在配置文件中,避免泄露。
基本概念
DSH 是一个 AI 编码代理框架,核心概念:
| 概念 | 说明 |
|---|---|
| Agent | 一个独立的 AI 代理实例,有自己的上下文和工具集 |
| Subagent | 主 Agent 派生的子代理,用于并行或隔离的任务 |
| Tool | 代理可调用的工具(文件读写、shell、搜索等) |
| Plugin | 可插拔的功能模块,扩展 Agent 能力 |
| Skill | 任务专用的指令集,加载后 Agent 按特定流程工作 |
| Session | 一次完整的对话/工作会话 |
| Goal | 持久化目标,跨会话保持工作状态 |
简单记:Agent 是「人」,Tool 是「手」,Plugin 是「技能包」,Session 是「一次工作」。
本地插件配置
DSH 官方自带了一批基础功能模块(文件读写、Shell、子代理等),日常够用,但真正让我效率起飞的是从插件市场(dshmarket)里装的那些第三方插件。下面列出本地实际安装的 18 个市场插件,按用途分组:
上下文管理
这类插件解决「对话太长、上下文爆炸」的问题。
| 插件 | 版本 | 功能 |
|---|---|---|
billion-context |
0.1.201 | 长上下文压缩:自动把早期对话折叠成摘要,按需恢复,对话再长也不怕 |
dsh-context |
^0.73.0 | 上下文增强与注入 |
dsh-session-shield |
github | 会话保护,防止关键上下文被误压缩丢失 |
dsh-tool-normalizer |
^0.5.2 | 工具调用结果规范化,让不同工具的输出格式统一 |
billion-context是我最常用的插件之一。写博客时对话动辄几百条消息,没有它早就撑不住了。
网页与搜索
DSH 自带的 tool-web 只能做基础搜索,这几个插件把网页能力拉满了。
| 插件 | 版本 | 功能 |
|---|---|---|
dsh-free-search |
^0.9.1 | 免费搜索引擎聚合:接入 Exa、Tavily、SerpBase 等几十个引擎,自动降级,不花钱 |
dsh-read-url |
^1.9.2 | 网页正文提取,自动检测编码,支持 SPA 渲染、登录墙识别 |
@wxg-prc-cpg/browser-skill-dsh-plugin |
^0.3.3 | 浏览器技能:操控你已登录的 Chromium 读页面、填表单、抓数据 |
dsh-markitdown |
^0.2.0 | 文档转 Markdown:PDF、Word、Excel、PPT、网页 URL 一键转纯文本 |
dsh-office-tools |
^1.0.6 | Office 文档工具:创建/读取/更新 Word、Excel、PowerPoint |
@michengai/dsh-archive-manager |
^1.1.6 | 归档管理 |
dsh-free-search+dsh-read-url这对组合基本替代了我手动开浏览器查资料的习惯。browser-skill则用来处理需要登录态的页面。
Web 界面增强
DSH 的 Web GUI 默认是黑白极简风,这几个插件让它好看得多、也实用得多。
| 插件 | 版本 | 功能 |
|---|---|---|
dsh-better-sidebar |
^0.28.0 | 改进侧边栏:会话列表、标签、拖拽排序 |
dsh-web-mobile |
^3.1.0 | 移动端适配,手机上也能用 DSH 写代码 |
dsh-status-rotator |
^0.37.0 | 状态栏轮播:Token 用量、模型、沙箱模式一屏看全 |
dsh-whale-widget |
^0.4.2 | 鲸鱼小组件 |
dsh-skill-mcp-panel |
^2.1.5 | 技能与 MCP 面板:可视化管理已加载的 Skill 和 MCP 工具 |
dsh-ops |
^0.3.2 | 运维面板:查看会话、插件、网关状态 |
dsh-better-sidebar和dsh-status-rotator是颜值与实用兼备的两个,装上之后 Web 界面观感完全不同。
网络与连接
DSH 的 LAN Gateway 让局域网内的其他设备也能访问同一个 DSH 实例,远程协作或手机远程写代码都靠它。
| 插件 | 版本 | 功能 |
|---|---|---|
@riceawa/dsh-lan-gateway |
^0.7.1 | 局域网网关:让 DSH Web GUI 暴露在 LAN,支持密码登录、TLS、上游会话中继 |
市场入口
上面列的所有插件都从这里安装。
| 插件 | 版本 | 功能 |
|---|---|---|
dshmarket |
^1.66.14 | 插件市场本体:在 Web GUI 里浏览、搜索、安装、卸载插件 |
装新插件直接在 Web GUI 的插件面板里搜就行,不用手动改 package.json。
日常使用
启动与配置
启动 Web GUI
1 | dsh web |
默认监听 http://127.0.0.1:3080。
配置文件
配置文件位于 %USERPROFILE%\.dsh\config.json,核心字段:
1 | { |
- model:使用的 LLM 模型名
- apiKey:DeepSeek API 密钥
- workspace:默认工作目录
- plugins.profile:插件配置文件名,对应
~/.dsh/profiles/<name>/package.json
常用操作
| 操作 | 说明 |
|---|---|
| 新建会话 | Web GUI 侧边栏点「+」,或 dsh web --new |
| 切换工作目录 | 会话内输入 cd /path/to/dir,或用 working_directory 工具 |
| 压缩上下文 | 输入 /compact,或自动触发(billion-context 插件) |
| 查看 Token 用量 | dsh-status-rotator 状态栏,或输入 /tokens |
| 暂停/恢复 Goal | 输入 /goal pause / /goal resume |
子代理(Subagent)
DSH 支持把任务委派给子代理执行,不占用主对话上下文:
- subagent:全新上下文,适合独立任务(调研、分析、实现)
- subagent_fork:继承当前对话上下文,适合基于已有工作的后续任务
- workflow:脚本化编排多个子代理,适合大规模并行任务
工作流(Workflow)
用 JavaScript 脚本编排子代理,适合「对 N 个文件各做一遍 X」这类扇出任务:
1 | const results = await parallel( |
实用技巧
上下文管理
长对话是 DSH 的日常,几个实用技巧:
- billion-context:自动压缩早期对话,
/compact手动触发 - dsh-session-shield:保护关键消息不被压缩丢失
- /tokens:随时查看当前 Token 用量,心里有数
- decompress:压缩过的内容可以恢复,不会永久丢失
插件管理
在 Web GUI 的插件面板里可以:
- 浏览插件市场(dshmarket)
- 安装/卸载插件
- 查看已启用插件列表
- 切换 profile(不同 profile 对应不同插件集合)
常见问题
Q1:插件装完不生效?
重启 DSH Web GUI(dsh web),插件在启动时加载。
Q2:Token 用量太高怎么办?
开启 billion-context 自动压缩,长对话定期 /compact。也可以用 dsh-tool-normalizer 减少工具输出的冗余。
结语
让 AI 直接生成三篇文章,还是用的本地部署的大模型。模仿我的写作方式,还能精准的把我想记录的东西写出来。而且不止生成文章,大部分全栈项目这个本地大模型都能接手并完成新功能的开发。那还说啥了,直接瘫坐呗。
注:本篇文章大部分由 AI 读取本地配置生成。