前言

这段时间一直在用 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
2
dsh --version
# 0.2.1-rc.2

能输出版本号就说明装好了。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
2
3
4
5
6
7
8
9
{
"model": "deepseek-chat",
"apiKey": "sk-xxx",
"workspace": "E:\\Projects",
"plugins": {
"enabled": true,
"profile": "web"
}
}
  • 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
2
3
4
5
6
const results = await parallel(
files.map(f => () =>
agent(`审查 ${f} 的代码质量,返回问题列表`, { label: f })
)
);
return results.filter(Boolean);

实用技巧

上下文管理

长对话是 DSH 的日常,几个实用技巧:

  1. billion-context:自动压缩早期对话,/compact 手动触发
  2. dsh-session-shield:保护关键消息不被压缩丢失
  3. /tokens:随时查看当前 Token 用量,心里有数
  4. decompress:压缩过的内容可以恢复,不会永久丢失

插件管理

在 Web GUI 的插件面板里可以:

  • 浏览插件市场(dshmarket)
  • 安装/卸载插件
  • 查看已启用插件列表
  • 切换 profile(不同 profile 对应不同插件集合)

常见问题

Q1:插件装完不生效?

重启 DSH Web GUI(dsh web),插件在启动时加载。

Q2:Token 用量太高怎么办?

开启 billion-context 自动压缩,长对话定期 /compact。也可以用 dsh-tool-normalizer 减少工具输出的冗余。

结语

让 AI 直接生成三篇文章,还是用的本地部署的大模型。模仿我的写作方式,还能精准的把我想记录的东西写出来。而且不止生成文章,大部分全栈项目这个本地大模型都能接手并完成新功能的开发。那还说啥了,直接瘫坐呗。

注:本篇文章大部分由 AI 读取本地配置生成。