🟡 进阶

DeepSeek Harness(dsh)怎么用

一条命令起一个网页界面,让 AI 自己读文件、跑命令、改到对为止;难点不在装,在于知道它动手时你在哪里刹车

📅 更新于 2026-09-13

本文校对于 @deepseek-ai/dsh @ 0.1.5-rc.1(npm——Node 的官方软件仓库——上标着 latest 的那个版本,2026-09-10 发布)· 官方源:github.com/deepseek-ai/deepseek-harness

1
行命令就能启动
4
内置模式(preset=工具套餐)
3080
默认网页端口
3
档沙箱权限(能写哪里的围栏)

0030 秒速览:三句话 + 按处境直接用

读完这篇你能做到一件事:在自己的电脑上把 DeepSeek Harness(一款开源的「智能体框架」,下面都叫它 dsh)跑起来,给它一个真实的小任务,并且在它动手之前就知道它会碰到哪些文件、花的是谁的钱、错了怎么回退。不需要你会写代码——但你要愿意在终端(那个能打字下命令的黑窗口)里复制粘贴几条命令。

⚠️ 先记住三句话(后面全是细节)

① 它自己不聪明——真正「思考」的是一个模型(就是聊天框背后那个会写字的大脑),你得给它一把 API Key(一串像密码的凭证,按用量扣钱)才能干活。
② 它只能动你划给它的那个文件夹——这个范围叫工作区(Workspace)。工作区没选好,输入框根本打不了字。
③ 它是开发者预览版——官方原文说「未来将出现破坏兼容性的变更」。命令记不准就跑 dsh --help,以你本机为准。

按你的处境,直接用这个

你现在的状态直接做什么去哪一节
还不知道它跟我平时用的 ChatGPT / DeepSeek 网页版有啥不一样先读三分钟:它会自己动手改文件,聊天框只会给你文字01 它到底是什么
想今天就跑起来,别的先不管照「一条可执行的上手路径」走完四步04 装它要几步
装完了,但输入框是灰的没选工作区:点「选择工作区」挑一个文件夹07
能聊了,但一让它动手就报错 / 提示鉴权失败回「设置 → 模型」核对 Key、API 地址、模型 ID05
怕它乱改我的文件三层刹车:小工作区 + 只读沙箱 + 逐条审批;动手前先做一次 Git 快照(=先存一个还原点)09
它干完了,但结果不对,说不清哪不对打开 Trajectory(轨迹)看它最后几步调用了什么10
想让它每天自动干一件活用 dsh --profile headless "任务" 跑一次性任务(headless=不开界面)11
想让它多会一点(比如按公司规范写提交说明)装插件,或把固定流程固化成自己的 preset12

一条可执行的上手路径(四步,约 20 分钟)

1
装 Node.js,确认版本够新

Node.js 是「让电脑能跑 JavaScript 程序的引擎」,dsh 本身就是用 JavaScript 写的。先看有没有(下面这些命令要敲在终端里——Mac 上按 Command + 空格,输入「终端」回车就能打开):

node -v

能打印 v22.x 之类就够用。没有就去 nodejs.org 下 LTS 版(长期支持版)安装包,双击一路「继续」。

2
拿一把 API Key

去 DeepSeek 开放平台(platform.deepseek.com)注册登录,在「API Keys」里创建一个,形如 sk-...。它一般只完整显示一次,先复制存好。

3
给 AI 划一块试验田,然后启动

在桌面新建一个空文件夹当试验田,让它在里面折腾:

mkdir -p ~/Desktop/dsh-playground
cd ~/Desktop/dsh-playground
npx @deepseek-ai/dsh web

npx 的意思是「临时下载来用一次,不长期装在电脑里」。第一次运行会下载依赖,稍等片刻。

4
在浏览器里选工作区、填 Key、发一句话

浏览器会自动打开 http://127.0.0.1:3080(3080 是它在本机开的「房间号」,术语叫端口;127.0.0.1 永远指「你这台电脑自己」,别人进不来)。点「选择工作区」选中刚才那个文件夹 →「设置 → 模型」粘贴 Key → 回对话框发任务。

读完你应该能

01它到底是什么(先把四件容易混的事分开)

先说名字:「Harness」这个词到底指什么

Harness 直译是「马具、套具」——套在马身上、把马的力量接到马车上的那套东西。这个比喻正好是它的定位:模型是马,harness 是马具。马会跑(会思考、会写字),但马自己拖不动车;马具本身不会跑,可它让马的力气变成了真正的位移——读你硬盘里的文件、敲命令、上网查、跑错了再改,直到事情干完。

这个类比到这里就不准了:马具不会替马决定去哪儿,而 dsh 会替你拆解任务、安排先后、在危险动作前拦你一下。它更像「马具 + 车夫」的合体。

官方把这件事写成一句公式:Agent = Model + Harness(智能体 = 模型 + 马具)。仓库首页的副标题更直接:Everything is a Plugin(一切皆插件)。

正式一点的定义:DeepSeek Harness(命令名 dsh)是 DeepSeek 开源的一个「智能体框架」(智能体=会自己动手干活的 AI)——MIT 协议开源,驱动它的是 Cordis 这个插件内核。你可以把它理解成一套「把只会说话的大模型接上手脚」的架子;官方顺手用这套架子拼了一个完整的编程助手,所以你也能拿它当一款 AI 编程工具直接用。

它不是什么(四个最容易搞混的错想)

你可能以为它是…实际不是为什么重要 / 别当什么用
另一个聊天框(像 DeepSeek 网页版那样问一句答一句)它默认带一整套「动手」能力:读写文件、执行命令、检索代码、联网查资料别把它当顾问用——让它做事比让它说话更能体现差别
DeepSeek 网页版的新客户端两条独立的产品线:网页版是「会说话的大脑」,dsh 是「把大脑装上干活的架子」两者账号与 Key 互不相通;别以为登录了网页版 dsh 就有模型可用
自带智能的成品软件它自己不思考:没配模型和 Key,它就是个空壳界面「它变笨了」九成是模型或模式选错了,不是框架的问题(见 05)
跟 Claude Code 一类的东西完全一样那类是「马 + 马具」出厂一体;dsh 是可拆卸的架子,马(模型)能换、零件(插件)能换只求省心选成品;想换模型、想研究智能体怎么拼才选 dsh

它替你把哪一段接上了

你
说人话下需求
→
dsh
拆解、调度、把关
→
模型
每一步怎么想
→
工具
读文件 / 跑命令 / 上网
→
产物
改好的文件与结果

记住这条分工,后面所有概念都能对号入座:凡是「思考」,都是模型的活;凡是「动手」,都是 harness 通过工具干的。它们之间那个「读文件 → 想 → 改 → 跑命令验证 → 再想」的小循环,官方文档里叫 agent loop(智能体循环)。

它和成品编程助手差在哪:一张表看完

工具形态能做什么一句话定位
DeepSeek 网页 / App(DeepSeek Chat)聊天框问答、写文字、给你代码片段会说话的「大脑」,手要你自己动
Claude Code / Codex 一类成品编程助手直接读写你的项目、跑命令、把代码改动推给仓库审阅出厂就是「马 + 马具」整体,省心但不好拆
DeepSeek Harness开源智能体框架自带一套完整编程配置,也能自由重组:换模型、换工具、换界面一套可拆卸的马具,马可以随便换

「一切皆插件」落到使用上是什么意思

官方文档的原话是:模型、工具、技能、会话、沙箱、存储、循环、调度、界面……全部由插件(可以理解成「随时能装卸的能力包」)提供,由 Cordis 这个插件内核负责装载与依赖管理。想换掉某一块,改配置即可,不必改它的源码。

听起来抽象,但你平时只接触最外面那一层——网页界面里能切换的那几个模式(Mode)。每个模式本质就是「一套挑好的插件组合」,也就是一份 preset(预置套餐)。这就是为什么同一句任务,切个模式结果可能不一样:不是模型变了,是它手上有哪些工具变了。

🎯 一句话定位

dsh = 一套能拼装出智能体的开源框架;官方顺手把它拼成了一个能直接用的编程助手。所以你既能「开箱即用」,也能「拆开改装」。

02没有它会怎样:搬砖的那一段到底是谁在干

同一件事,两种干法

❌ 手动搬运的一天(只有聊天 AI)
  • 你:帮我把这个脚本改成读 CSV
  • AI:给你一段代码
  • 你:复制、粘贴、存文件
  • 你:跑 → 报错「缺少 pandas 这个库」
  • 你:装库再跑 → 又报错「列名对不上」
  • 你:把报错复制回去问……(循环五轮)
  • 每一轮都在你和 AI 之间人工搬砖
✅ 交给 dsh 的一天
  • 你:请在这个目录里把脚本改成读 CSV,跑通为止
  • dsh:读文件 → 发现缺 pandas → 自己装
  • dsh:改脚本 → 跑 → 报错列名 → 读 CSV 表头再改
  • dsh:再跑 → 通过 → 把结果汇报给你
  • 中途只在「要装库 / 删文件」这类节点停下来问你
  • 搬砖的活全部自动化

它省掉的到底是哪一段

省掉的不是「思考」,是「在你和 AI 之间来回搬运」。上面右边那一列里,读文件、跑命令、看报错、再改,全都发生在同一台电脑上、同一个循环里,不需要你把报错复制回去。对完全不会编程的人,这一点的价值更实在:你不需要看懂报错——它自己看、自己改、自己重跑。你要提供的只是「想做成什么样」和「边界在哪里」。

它解决不了什么(这半屏很值钱)

⚠️ 先打好心理预期

本文所有命令都以你本机 dsh --help 显示的为准。预览版迭代很快,如果你看到的界面文字或参数跟我写的不一样,不是你看错了——是版本变了。15 教了你一条排障命令。

03什么场景该用它、什么时候别用

四类真值得上手的场景

场景为什么合适典型一句话需求
重复的机械劳动步骤固定、判断标准清楚,正好交给循环去跑把下载文件夹里所有文件按扩展名归类
读别人写的项目它读文件、做检索比人快,还不会嫌文件多看一遍这个项目,用中文写一份说明给我
从零做个小东西它能一次生成完整文件,还能自己打开检查做一个咖啡店的一页式宣传网站 index.html
批量处理、无人值守可以不开界面跑完就退出,适合放进脚本或定时任务把当前目录所有 markdown 合并成一份 README

三种别用它的情况

那它到底适合谁

说句公平话:如果你只想尽快把活干完,Claude Code 那类成品工具通常更省心。dsh 的价值更多在「可组合、可定制、开源可控」——这篇教程默认带你把它当一款编程助手用起来,这部分体验已经完整。

04装它要几步:Node → Key → 装 → 起

动手前先认三个会反复出现的「命令行亲戚」

名字它是什么新手怎么理解 / 什么时候会用到
Node.js一个能运行 JavaScript 程序的运行引擎相当于电脑多装了一个引擎,dsh 就是 JavaScript 写的。没有它什么都跑不起来
npmNode 自带的「应用商店 + 安装器」npm install 某软件 = 从商店装到本机。全局安装 dsh 时用它
npxnpm 的「临时叫号」模式npx 某软件 = 不长期占位置,临时叫一个来用。只想试一次时用它

所以 npx @deepseek-ai/dsh web 读作:临时叫来 @deepseek-ai/dsh 这个包,然后执行它的 web 命令。带 @ 的写法表示「某个组织发布的包」——@deepseek-ai/dsh 就是 DeepSeek 官方发布的 dsh 包。

第一步:装 Node.js

node -v              # 看装了没、什么版本
brew install node     # macOS 上没装过才需要(Homebrew 是 macOS 的软件安装器)

能打印 v22.x、v24.x 之类就没问题。版本口径说清楚:官方仓库根目录的 package.json 要求 Node ^22.19.0 || >=24.0.0(这是从源码构建的门槛);npm 包依赖里的原生组件要求 Node >=20。所以最稳的选择是装 Node 22 LTS 或更新。没有 Homebrew 就去 brew.sh 复制官方安装命令,或者直接去 nodejs.org 下 LTS 安装包双击安装。

Windows / Linux 也能跑:dsh 通过 npm 分发、以浏览器为界面,三个系统都支持。Windows 上装完若提示命令找不到,重开一次终端刷新 PATH(PATH 是系统「去哪里找命令」的目录清单)即可。

第二步:注册开放平台,拿一把 API Key

去 DeepSeek 开放平台(platform.deepseek.com)注册登录,在「API Keys」里创建一个,形如:

sk-2a3b4c5d6e7f8g9h0i1j2k3l4m5n6o7p   # 形如(示例,不是真 Key)

创建时复制下来存好——平台一般只完整显示一次。

🚫 密钥安全三不要

API Key 就是你的钱袋子,用多少扣多少。① 不要发给任何人和 AI;② 不要粘贴进聊天或论坛求助帖;③ 不要提交到代码仓库。填进 dsh 后它存在你电脑本地的凭据文件里,不需要到处贴;万一贴出去了,立刻去平台吊销重建。

第三步:划一块试验田(工作区)

mkdir -p ~/Desktop/dsh-playground   # 在桌面建一个文件夹当试验田
cd ~/Desktop/dsh-playground          # 进入这个文件夹

(~ 就是你自己的用户主目录;mkdir -p 的意思是「建这个文件夹,已经存在也不报错」。)让 AI 动你的文件之前,先给它划一块地盘——它即使搞砸了也只砸在这一个文件夹里。

第四步:三条安装路线,先选一条别都装

路线命令特点什么时候选它
npx 一键运行(推荐先试)npx @deepseek-ai/dsh web不用预先安装,临时下载即用,关掉不留垃圾只想试一次、还不确定要不要长期用
全局安装npm install -g @deepseek-ai/dsh,之后用 dsh web装一次,以后任意目录都能直接敲 dsh试完觉得好、打算长期用
源码运行git clone 仓库 + pnpm install跑的是仓库最新代码,需要额外装 pnpm(另一个包管理器)要改它、要写插件、做开发
# 路线一(推荐先试)
npx @deepseek-ai/dsh web

# 路线二(长期用):装全局后,任意目录直接敲 dsh
npm install -g @deepseek-ai/dsh
dsh web

# 路线三(进阶,需先装 pnpm:brew install pnpm)
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
⚠️ 只从官方渠道装

请通过 npm 的 @deepseek-ai/dsh 这个包名,或官方 GitHub 仓库安装。不要下载来路不明的「dsh 一键版 / 桌面打包版」——官方目前以 Web 界面为主,来历不明的预编译程序有安全风险。

怎么知道装好了:三步自检

1
查版本

npx @deepseek-ai/dsh --version(全局安装后就是 dsh --version)能打印版本号,说明包本体没问题。

2
查帮助

dsh --help 能看到本机支持的子命令,顺手认一下有哪些。

3
真启动一次

dsh web 后浏览器能打开界面,链路就通了,接下来去接模型。

启动后终端会打印一行 dsh web: 的地址,里面带一个一次性的访问令牌(一串临时口令,防止同网络里别人打开你的界面)。浏览器默认会自动打开;通过 SSH(一种远程登录另一台电脑的方式)启动时不会自动开,用 --no-open 也能明确关掉这个行为:

npx @deepseek-ai/dsh web --no-open   # 只跑服务,不自动弹浏览器

这个终端窗口要一直开着——关掉它 dsh 就停了;想主动停就按 Ctrl + C。

两个常见麻烦

现象原因怎么办
command not found: dsh全局安装的目录没进 PATH,或当前终端没刷新重开一个终端;或 npm config get prefix 看全局目录在哪;新手直接改用 npx @deepseek-ai/dsh
npx 下载很慢 / 超时(国内常见)npm 默认连国外源临时换镜像:npx --registry=https://registry.npmmirror.com @deepseek-ai/dsh web;永久切换:npm config set registry https://registry.npmmirror.com(想还原就 npm config delete registry)。只在确实慢到影响使用时再动

05接上「大脑」:Key 填哪、模型怎么换

界面已经打开了,但它此刻「没有大脑」——还没有任何模型可用。你填进去的每一个动作,底层都落在两个文件里;万一界面按钮位置变了,知道去哪改就不慌:

# ~/.dsh/settings.yaml —— 主要配置文件(字段名以你安装版本为准)
# 这里能设默认用哪个提供方的哪个模型

# ~/.dsh/.credentials.yaml —— 你填的 Key 私有存放在这里
# 一般不需要手改

(~/.dsh 是 dsh 的用户数据目录;如果你设过 DSH_HOME 这个环境变量,它就会落在那个位置。)

界面法:设置 → 模型

1
打开设置

在界面里进「设置(Settings)→ 模型(Models)」。界面文字随版本略有出入,但路径基本是这一条。

2
填 Key

DeepSeek 官方卡片通常已经预置好,你只需要把 sk-... 粘贴进 API 密钥字段并保存。密钥是「只写」的:保存之后页面只会拿到脱敏后的说明,不会再回显明文。

3
保存并测一句

保存后不用重启,回到对话页,在输入框右下角把模型切到刚配好的那个,随便发一句话。能正常回复就说明大脑接上了。

想接别家的模型:自定义提供方要填哪几个字段

官方文档给的自定义提供方表单有意保持精简,只放开「让一条路由得以存在」的字段:

字段填什么别当什么用 / 注意点
Provider ID(提供方 ID)小写名字,例如 deepseek、my-gateway它是永久的:请求、已保存会话、默认模型、凭据引用都用它。想改名只能新建一个再删旧的
显示名称给人看的名字随便改,不影响任何东西
基础 URL(API 地址)服务商给的接入地址别把官网网页地址当 API 地址——这两个长得像,填错就连不上
API 协议三选一:openai-completions(OpenAI 聊天补全格式)、openai-responses(OpenAI Responses 格式)、anthropic-messages(Anthropic 消息格式)必须选网关实际使用的那一种。一个提供方只能用一种协议;网关两种都提供,就得建两个提供方
API 密钥你申请到的 Key写进界面后落到凭据文件,不会进 settings 文档
模型 ID至少填一个,例如 deepseek-chat照服务商文档原样抄,别自己改名

dsh 自带若干内置提供方可以一键添加(官方文档举的例子包括 anthropic、openai、Kimi 对应的 moonshotai、GLM 对应的 zai)。通过 OAuth(一种「用别家账号授权登录」的方式)登录的提供方目前暂不支持。多供应商并存之后,输入框右下角的模型选择器就是切换开关——同一个会话里也能换模型继续聊。

点「获取可用模型」报 401 / 404 怎么办

这多半不是你的错。有些网关不提供「列出可用模型」的接口,探测自然失败。官方文档说得很直白:探测只是便利手段不是保证,手动添加模型 ID 效果完全一样。401 / 403 则是另一回事——那是 Key 错误、过期或没开通该模型;模型 ID 打错也会报 404 / model not found,照服务商文档原样抄。这两种都要回平台查余额与权限。能聊天、但一让它调工具就报错多半与模型无关,去 15 按「启动 / 模型 / 工具」三层排障。

不花钱行不行:本机模型也能接

可以。dsh 是「接大脑的框架」:只要你在本机起一个按 OpenAI 格式说话的本地服务,就在设置里把它加成一个自定义提供方,基础 URL 指向本机端口(形如 http://127.0.0.1:11434/v1,具体看你本地服务怎么暴露),模型名写它起的那个。能力完全取决于你本地模型的水平。

💰 顺手省钱

简单活用便宜、快的模型;复杂活再切强的。默认模型可以写进 settings.yaml,任务开始前随手切一下——这是「模型可换」最实在的日常用法。

06最小例子:从 hello.txt 到 summary.md

先约定「跑通」算不算数:三问

三问全过,说明「命令 → 模型 → 工具 → 文件」整条链路通了。之后你想让它干什么,都是在这条链路上加需求而已。

五步跑通第一个任务

原则只有一条:第一次实验一定在专门的空文件夹里、用低风险任务。

1
回到试验目录并启动
cd ~/Desktop/dsh-playground
npx @deepseek-ai/dsh web

上一个终端还开着 Web 界面的话,这步可以跳过。

2
在界面里选择工作区

点「选择工作区 / Choose workspace」,把 dsh-playground 选上。这一步很关键——没选工作区之前,输入框是禁用、打不了字的。

3
放一个测试文件进去
echo "今天是练习 DeepSeek Harness 的日子" > hello.txt

(echo 内容 > 文件名 的意思是「把这行字写进这个文件」。)

4
输入一个低风险任务

在输入框粘贴下面这段,回车发送(模式选默认的标准模式即可):

请先浏览当前文件夹里有哪些文件,读一下 hello.txt 的内容,
然后用中文写一份 summary.md 保存到当前目录,
总结你看到了什么。除了新建 summary.md,不要改动任何文件。
5
看着它干活,批准它的请求

你会看到它的实时动作:列目录、读文件、写文件。涉及「改动」的操作会弹审批请求,逐条看清再点允许。完成后去文件夹里看 summary.md 是不是真的生成了——这就是你的第一个智能体任务。

第一次就撞墙的三种情况

⚠️ 对号入座

① 输入框是灰的 → 忘了选工作区。
② 发送后提示鉴权失败 / 无模型 → 05 的 Key 没配好,或者模型没选对。
③ 它想改你不想让它碰的文件 → 工作区选错了:立刻按 Ctrl + C 停掉,换一个空文件夹重来。

结果不满意:第二轮这样追着问

验收发现问题时,别只丢一句「不对」。给它具体信号,它才能快速收敛:

总结得还可以,但有两处要改:
1. 第一段太啰嗦,压缩成三句话
2. 把「文件清单」单独拆成一个小节,用列表展示
其它保持原样,直接修改 summary.md

注意最后那句「其它保持原样,直接改 X」——它给修改划了边界,防止模型顺手重写你本来满意的部分。

跑通之后,往三个方向延伸

07界面里的第一道闸:工作区

为什么输入框是灰的

几乎一定是没选工作区。官方指南写得很明确:全新打开的 Web 界面不会选中任何工作区,选中之前会话输入框不可用。点「选择工作区」,添加你启动 dsh 时所在的那个目录,再选中它,就能打字了。

界面大致分三块:左边是会话列表与工作区里的文件树,中间是对话与它滚动的动作流,右下角是模型选择、模式切换和设置入口。

为什么非要这么设计?因为工作区就是允许 AI 触碰的文件夹范围,也是你唯一真正需要操心的一条安全边界。它不只是「默认目录」——它后面还会决定沙箱能写哪里(见 09)。

界面里三块区域各管什么

界面元素是干什么的新手怎么用 / 别怎么用
工作区(Workspace)划定 AI 能碰的文件夹地盘一个项目一个独立文件夹;别拿整个「桌面」或用户主目录当工作区
模型选择器输入框右下角切换用哪个模型多供应商时在这里切;换了模型,同一个会话也能继续聊
模式 / preset 选择器切换「工具套餐组合」默认用标准模式;简单任务试极简(见 08)
输入框用自然语言下达任务把目标、边界、输出写清楚(模板在 13)
审批弹窗高危操作前征求你的同意逐条看清再点;别养成一路「全部允许」的习惯
Trajectory(轨迹)标签页最原始的步骤账本出问题时来这里复盘(见 10)
对话标签页它润色后的结论与人话总结日常跟进够用;审计要切轨迹

它默认到底能看见哪个文件夹

官方文档:运行命令时所在的目录会成为默认的 workspace 根目录。所以「先 cd 进项目目录,再启动」是个好习惯;但 Web 界面里你仍然要显式选中它才会生效。工作区周边还挂着一份「项目列表」——最近打开过的目录和每个目录里跑过的会话,这就是你换项目的入口。

换项目时该怎么做

08四种模式:标准和极简到底差在哪

模式到底是什么

界面上能点的每个模式,官方叫 preset(预置套餐):它规定「这个会话用哪些工具、带哪些提示词段落、能调哪些技能」。换句话说,模式不是模型的档位,而是工具和规矩的档位——换个模式,不是 AI 变聪明了,是它手上的牌换了。官方内置四套:standard、ptc、minimal、cordis,界面上分别显示为:

模式配了什么官方定位 / 什么时候用代价
🟢 标准模式 standard完整工具集:文件读写、终端、文件与网页检索、技能、计划、目标、子代理、工作流日常全能选手,绝大多数任务用它上下文开销大(上下文=模型一次能看到的全部内容,越大越贵)
🟡 PTC 模式 ptc标准模式的全部能力,但工具改以「代码 SDK」形式暴露,且默认不给通用工作流工具让模型写一段 TypeScript 程序(SDK=一套可以先写程序再调用的工具箱)把多步操作一次执行,批量、结构化流程省往返理解成本高;单步小任务不划算
⚪ 极简模式 minimal只给一个工具:一个状态持久的终端(命令之间不丢状态)模型基准测试、最小化复现;AI 不啰嗦、直接埋头干能力少,复杂活干不了
🔴 创造模式 cordis标准模式的全部能力 + 运行时检查 + 插件实验 + 自定义 preset 的写作指导想做新插件、想造自己的模式的工坊权限近乎全开,风险高

标准模式:默认就待在它里面

它就是「一套完整的编程助手」,官方文档的口径是「绝大多数任务用它」。旧版这篇教程给过一个体感数字——「能覆盖 90% 的场景」,那是个经验说法不是官方指标,但结论方向是对的:默认就待在里面,先别折腾。

它日常带的工具包括:读写编辑文件(改配置、补注释、生成文件);跑终端命令(装依赖、跑测试、看目录);glob / grep(按文件名模式找文件 / 按内容搜关键字,比如「找出所有写死 8080 的地方」);联网搜索与抓网页(查一下最新用法再改);调用技能(预先写好的操作规程);先出计划;挂长期目标(跨会话记住「本周把这个项目跑上线」);派子代理(它派出的小助手)并行干活;跑工作流。你要做的事只有一件:把任务说清楚。

PTC 模式:把「按十次遥控器」录成一段宏

PTC 是 Programmatic Tool Calling(程序化工具调用)的缩写。标准模式像遥控器——模型每按一个键你都看得见;PTC 像「把一连串按键录成宏再一次性执行」——模型写一段程序,程序里连着调好几个工具。它适合步骤固定、可预判的流程,比如「下载 → 解压 → 改名 → 打表」。官方文档说它的收益是「本来要五个来回,现在一次」,省的是往返,不是思考。所以别以为它一定更快:临时小任务切过去只会多一层理解成本。另外两种叫法你都可能见到——官方产品页早期把它叫 Code mode,现在叫 PTC,指的是同一件事。

极简模式:就一把锤子

只给一个持久终端工具,连系统提示词都被换成了固定的一句话,也不做上下文压缩。它的用途很明确:想让 AI 「别啰嗦、直接干」,或者要做模型对比测试时用它。旧资料里说它是「终端 + 一个文件编辑器两个工具」,那是更早版本的形态;本文校对的 0.1.5-rc.1 里,官方注释写的是「单工具」。

创造模式:给造工具的人的试验田

它和标准模式能力几乎一样,多出来的是运行时检查、插件实验和写 preset 的指导技能。官方推荐的自造流程是:先在创造模式里检查活着的运行时、在内存里试验插件组合 → 试满意了打包成一个组合包 → 挂到某个 profile 上变成常态。普通用户知道它存在就行,别在里面长时间待着。

30 秒选模式

✅ 判一句就够

任务小且明确 → 极简模式;日常、要读文件 / 上网 / 多步骤 → 标准模式;固定多步流程想省来回 → 学 PTC;想造新插件或新模式 → 创造模式。

❌ 别这样选

用创造模式干简单活(权限大不等于干得好);复杂任务不拆解、全程标准模式硬扛;任务都还没想清楚就先切一轮模式试运气。

两个新手一定想知道的问题

问题答案为什么 / 边界
跑到一半能换模式吗?只有还没开始用过的会话才能换 preset,已经跑起来的会话保持它开局时的那套工具因为每个会话是按 preset 现场「组装」出来的;换套餐等于重建一套工具,中途换会与已有记录对不上
想让某个模式变成默认怎么办?在 ~/.dsh/settings.yaml 里设 agent-presets 的 default,例如设成 minimal默认值只影响之后新建的会话;已经跑着的会话不受影响
📖 模式、profile、插件别混淆

三者是「整机 → 机箱 → 零件」的关系:模式(preset)是你在界面上点选的套餐;profile 是命令行里 --profile 指向的配置档(如 web、headless);插件是构成套餐的零件。换模式 = 换掉这个 profile 下的零件组合。

09它要动我的文件,怎么刹车

三层刹车,从外到内

  1. 工作区——先划小地盘,别把整个桌面交出去(07)。
  2. 沙箱模式——决定进程「能写哪些地方」,这一层由系统强制,不靠模型自觉。
  3. 审批——每一个高危动作前,界面先问你要不要放行。

官方把前两者里最常调的沙箱与审批捆成一个选择器,叫权限预设。这三个词经常被混着说,下面逐层拆。

沙箱三档:它到底能写哪里

沙箱(Sandbox)指的是「把 AI 干活的进程关进一个围栏里,限制它能产生哪些文件改动」。官方定义了三档:

档位含义什么时候用 / 别当什么用
read-only(只读)只允许必要的输出口,写文件被拒绝第一次让 AI 看陌生项目时用它:读文件、给结论,但不许改。别指望它能顺手帮你修东西
workspace-write(工作区可写)允许在工作区根目录、以及系统给的临时区域内写日常默认档。它的边界只到工作区:工作区选大了,这道闸就形同虚设
danger-full-access(完全访问)直接绕过沙箱围栏,等于不限制只在完全清楚后果时用。注意它「绕过」的方式是根本不调用沙箱——不是把围栏放松了一点

还有一条官方明确写在文档里的边界:沙箱只管文件系统效果,网络和进程可见性不在它的承诺范围内。所以「它会不会把代码传到网上」这类问题,沙箱档位回答不了。

审批两种策略:要不要问你

策略行为什么时候用
ask(默认)把决定交给界面里的应答方:弹窗问你,你点允许才继续默认就用它。第一次跑任何任务都建议保持
never谁都不问,一律当作拒绝无人值守或明确不想被打断的场景;代价是很多动作会直接失败

注意 never 不是「全都允许」,是「都不问、按拒绝处理」。这一点特别容易搞反。

权限预设:一个选择器把两档捆起来

预设名捆的是哪两档一句话理解 / 什么时候用
workspace-write沙箱 = 工作区可写 + 审批 = 问你默认档:能动工作区,但每次高危动作都会问你。日常就用它
danger-full-access沙箱 = 完全访问 + 审批 = 从不问等于把方向盘交出去:既不拦文件,也不问人。别在陌生项目上选它

在对话里可以用 /permission 查看或切换当前预设。如果当前组合不在预设表里,界面会显示一个派生的「custom」状态——它只能显示,不能选。

🚫 创造模式 ≈ 完全放权

创造模式给模型的权限接近直接操作你的电脑(官方文档的说法是「权限近乎全开」)。普通任务请待在标准模式或极简模式,确实要动真格再考虑它。

最后一道防线:动手前先做一个 Git 快照

前面的闸都是「防」,这一手是「兜」。允许 AI 改动某个目录前,先在里面存一个还原点(Git 是记录文件改动的版本管理工具,快照就是一次提交):

cd ~/Desktop/dsh-playground
git init                                   # 把这个目录纳入版本管理
git add -A && git commit -m "初始状态"      # 先存一个起点(&& 表示前一条成功才跑后一条)

翻车了想还原:

git checkout -- .   # 把所有改动还原到上次提交的样子

这一手比任何界面设置都管用,也是社区老手的默认习惯。要更省心,就用「先只读跑一遍,确认行为正确,再放开写权限」的顺序。

10它干错了,怎么知道错在哪

轨迹是什么:一份只增不改的流水账

大多数 AI 工具只给你看「润色后的对话」。dsh 多给一层 Trajectory(轨迹):它是一个会话里所有原始事件的账本,只追加、不修改。长得大概是这样:

# ===== Trajectory 视角下的片段(示意) =====
[system]   加载系统提示词(约 X tokens)
[user]     请把 hello.txt 改名为 greeting.txt
[think]    目标明确:只需一次 rename 工具调用
[tool]     调用 rename(from=hello.txt, to=greeting.txt)
[tool:ok]  返回:重命名成功
[tool]     调用 shell: ls
[tool:ok]  返回:greeting.txt
[finish]   任务完成,共 3 次工具调用,Token 消耗 N

(token 是模型计费与容量的小单位,可以粗略理解成「一个词或半个词」;上面的 N 只是示意,实际值看你的记录。)这条流水就是「它到底干了啥」的证据,比靠感觉猜靠谱得多。

轨迹里记了什么,各自能回答什么问题

记录项对你有用的场景别当什么用
系统提示词 / 思考过程看它为什么「想歪了」不是给你当范文抄的;它是这台机器内部的话术
每次工具调用与返回核对它到底改没改、改了什么别只看对话里的「我已完成」,那里可能漏掉失败的调用
在哪一步出错快速定位翻车现场它不会替你判断责任,只是把事实摆出来
每步的 token 与耗时摸清一次任务大概烧多少钱不是账单:真正的钱记在模型平台账户里
子代理调度与嵌套调用看它是怎么拆活、派给谁的嵌套的细节默认折叠,需要你点开

一次翻车的标准复盘动作

1
回对话页看它自己的结论

先看它怎么总结的——但别全信,它可能没意识到自己错了。

2
打开轨迹,滚到出错前的最后几步

重点看:它调用了哪些工具、参数对不对、返回里有没有报错被它忽略。

3
分清是「想错」还是「做错」

想错(理解偏差)→ 换种说法重述需求;做错(比如读错文件)→ 直接指正它具体哪一步。

4
需要就分叉重来

从出错前那一步另起一个分支继续,比整体重开一次更省、更稳。

轨迹能做的四件事

界面上它是以「一轮一轮」分组的账本,还带一个时间总览;记录点开能看到 token 用量、耗时、输入输出、图片与附件摘要。历史很长时它会从最新的地方打开,往上翻才继续加载。

什么时候看对话、什么时候看轨迹

✅ 看对话页

要「结论、下一步、人话总结」的时候——日常跟进完全够用。

⚠️ 该切到轨迹了

结果「不对但说不清哪不对」的时候。别急着重新发一遍任务:先去翻它最后几步,是在读文件时读漏了,还是命令跑错了没发现。找到根因后,你下一句提示词就能直击要害(比如「别用 a.txt,用目录里最新的 b.csv」)。

两个必须知道的边界

11不开界面也能干:一次性任务与命令行

什么情况该走命令行

Web 界面适合人机互动。但如果你想让它在没人盯着的时候跑完一件事,就用一次性(headless,「无头」)模式——不开界面、跑完就退出。

场景为什么用无头模式示例任务
定时批处理放进定时任务,没人盯也能跑每天把下载文件夹整理一遍
CI / 构建脚本(CI=自动跑构建与测试的流水线)在服务器上跑完即退,可以集成进流水线自动给新代码写一段变更说明
一次性「丢活」不用开浏览器、不占窗口把某目录所有 markdown 转成一份索引

一条命令跑完一件事

# 进入工作区 → 跑一次性任务 → 检查有没有产出
cd ~/Desktop/dsh-playground
dsh --profile headless "把当前目录的 .md 文件合并成 README.md,保留各自标题"
ls -la README.md   # 验证产物存在

命令的读法:--profile headless 表示用「无头」这套配置档(不开网页界面),后面整段中文就是任务。官方对无头模式的描述很干净:一次调用只跑一个任务,打印最终答案、然后退出;不开端口,也不留后台进程。它的边界同样干净——没有交互式追问,跑完就结束。

成没成,看退出码

退出码含义脚本里怎么用 / 别当什么用
0任务正常完成可以接着跑下一步;但完成 ≠ 结果对,产物还得验一遍
1任务中止或出错别直接忽略:终端会打印 dsh: <错误码>: <说明>,照着查

另外,任务文本可以留空吗?不行——空白任务会在开始前就被拒绝。

🚫 什么任务不该无人值守

凡是删除、覆盖、大批量改动、涉及付款或对外发消息的任务,别用无头模式一把梭——没人替你把关。稳妥流程是:先开 Web 界面手动跑通一次、确认行为正确,再考虑做成无人值守。

无人值守的两条铁律

还有一点可以放心:无头任务同样受权限与审批策略约束。撞到策略边界时它会停下来回报,而不是硬闯。

CLI(命令行界面)与 Web:同一件事的两种入口

你要做的事在 Web 界面在命令行
启动服务(没有这个动作)dsh web
跑一个任务输入框里打字dsh --profile headless "任务"
装插件目前以命令行为主dsh plugin --profile web add ...
改模型与 Key设置 → 模型改 ~/.dsh 下的配置文件
看执行过程Trajectory 标签页看终端输出(过程信息走标准错误输出)

规律很朴素:要交互、要看过程 → 用网页;要自动化、要可脚本化 → 用命令行。

12插件:给智能体加装备

「一切皆插件」在文件层面长什么样

官方文档把两个概念分得很清:组合包(bundle)是一个 npm 包,它多带一层配置补丁,回答「这个包贡献什么能力」;profile 是 $DSH_HOME/profiles/<名字> 下的一个目录,回答「这套配置由哪些组合包按什么顺序叠起来」。你写的、分发的叫组合包;用户用 --profile 启动的那个东西叫 profile。同一份东西不会既是这个又是那个。

这就是「一切皆插件」的落地方式:不是嘴上说说,而是文件层面真的能加、能换、能卸。给 dsh 加新能力不必等官方发版。

去哪找插件

怎么装、怎么卸

插件是通过把命令转发给 pnpm 来管理的,所以写法就是「dsh plugin + 平时会敲的 pnpm 参数」:

dsh plugin --profile web add <插件包名或 GitHub 地址>   # 装到 web 这个 profile
dsh plugin --profile web remove <插件包名>               # 卸载

有个细节值得知道:装进去的包只有声明了「我是一个组合包」才会成为配置层;只是个普通库的话,命令会警告你一句「装成了普通依赖,没进配置层」。所以看到一个插件装了没效果,先看它是不是正经的组合包。

装完怎么确认生效

怎么判断一个社区插件能不能信

看什么合格的样子该警惕的样子
来源公开源码,README 说清它改了什么、谁在维护只有二进制、没有仓库、作者匿名
活跃度最近有提交,有人在讨论区提到它几年没动、issue 无人回
权限是否合理它要的权限和它宣称干的事对得上一个「整理桌面」的小工具却要读写整个用户目录

想自己造:先在创造模式里试

官方推荐的工作流是:在创造模式的运行时里试插件组合 → 满意了打包成一个组合包 → 挂到某个 profile 上变成常态。文档里也写明了:每个自己写出来的 preset 都要当作可信配置来对待,因为它会授予它选中插件的能力。新手不必深究,记住「创造模式是插件试验田」就够了。

四个词的关系,一张表收尾

词是什么什么时候你会碰到它
插件 / 组合包(bundle)一个 npm 包,带一层配置补丁你要装它、卸它,或者自己写一个的时候
Profile(配置档)一套可启动的配置组合,存在 $DSH_HOME/profiles/ 下命令行里写 --profile web / --profile headless 时
Preset / 模式(Mode)一个会话用哪些工具、哪些提示词你在界面上切「标准 / PTC / 极简 / 创造」时
技能(Skill)预先写好的「这类活该怎么干」的操作规程你想让 AI 按公司规范行事,或它自动按规范行事时

13四份可以直接抄的任务清单

下面全是「今天就能试」的真实任务,难度递增。建议都在临时文件夹里进行。

让它读别人写的项目

痛点:下载了一个开源小工具,全是英文说明,看不懂怎么用。做法:把项目放进工作区,让它读一遍,交一份中文说明书。

请阅读当前文件夹的项目:先看 README,再扫一眼代码结构。
用中文给我写一份说明.md,讲清楚:
1. 这个项目是做什么的
2. 需要什么环境、怎么跑起来
3. 主要文件各自的作用
不要修改项目里任何其他文件。

让它从零做一个单页小网站

痛点:想给朋友做个「咖啡店宣传单页」,自己完全不会写网页。做法:在空文件夹里让它直接生成,然后用浏览器打开成品。

你
说店名、风格、要几段
→
它
规划要生成的页面
→
它
写出 index.html
→
你
浏览器打开、提修改
在【当前文件夹】里帮我做一个咖啡店的一页式宣传网站 index.html:
- 店名「山风咖啡」,主打手冲,风格清新、米白 + 木色
- 包含:店名大标题、一句 slogan、菜单 3 栏、地址和营业时间
- 纯 HTML + CSS,不要任何外部 CDN,双击 index.html 就能在浏览器打开
做完后告诉我文件路径,以及我如何用浏览器打开它。

(提示词里那句「不要任何外部 CDN」的意思是:页面的样式不要从网上别人的服务器加载,只用一个本地文件,双击就能离线打开。)验收时双击 index.html 就能看效果。不满意就继续追问,比如「菜单改成 4 栏、主色换成偏绿的」——它会在同一个文件上迭代。

让它整理一堆乱文档

痛点:下载文件夹里几十个文件乱成一团。做法:(先复制一份到试验目录!)让它按规则归类。

请扫描当前文件夹里的所有文件,不要读取内容:
按扩展名把文件移动到 图片/ 文档/ 压缩包/ 其他/ 四个子文件夹里,
如果某类为空就不要创建。移动前先列一个计划给我确认。

注意特意写了「移动前先列计划给我确认」——这是保护自己文件的好习惯:让 AI 先汇报再动手,等于你当最后一道审批。

让它按固定流程跑批(无人值守热身)

回到终端,用无头模式把「整理图片」这类活直接交出去,体会「不开界面也能干」:

cd ~/Desktop/dsh-playground
dsh --profile headless "把当前目录所有 .png 和 .jpg 移到 图片/ 子目录;先列计划,确认前不要动手"

无人值守时它撞到权限策略边界会停下回报,而不是硬闯——这反而是道保险。

让它帮你写今日小结

没有技术含量但很实用:让它读你的笔记,整理成一段日报。

读 notes/ 里今天命名的文件(例如 2026-09-13.md),
按「已完成 / 进行中 / 阻塞」三类整理成一段日报,
直接在对话里打印给我看,不用写文件。

注意收尾的「打印即可,不用写文件」——这类约束能阻止它顺手造一堆文件。

万能任务骨架:读 → 做 → 交

把上面的场景抽象一下,几乎所有「让 AI 干活」都能套这个三段式:

【读】先看 {范围},把 {背景} 弄清楚
【做】然后 {要做的事},注意 {边界、不许碰的}
【交】完成后写到 {文件},并告诉我怎么验收
💡 写提示词的三条万能公式

① 给边界:在哪个文件夹、只准动哪些文件;② 给输出:要什么格式、放哪个文件;③ 给刹车:哪些事必须先问、哪些事不许做。覆盖这三条,翻车概率大减。

14提示词模板与省钱经验

先背两套能复用的模板

同一个任务,「描述清楚 + 选对模式」和「随口一句 + 重模式硬扛」,结果与花费可以差出好几倍。与其记一堆命令,不如先收下这两副模板:

# 模板 A:小任务(配合极简模式最省)
只做一件事:{具体改动}。
改完只告诉我文件路径,不用解释过程。

# 模板 B:大任务(配合标准模式)
背景:{一句话背景}
目标:{做成什么样}
范围:只能在 {哪些目录/文件} 动手,别的不要碰
先列出计划,我确认后你再执行
完成后用 {想要的格式} 汇报结果

你会发现模板 B 正好把「边界 + 输出 + 刹车」都盖住了(13 的三条公式)。套用这两副模板,你已经站在水平线之上。

八条来自实测的经验

技巧为什么有效
任务越简单,模式越「极简」实测里「做一张咖啡店单页」用标准模式和极简模式效果几乎一样;需求明确、步骤短时,切极简又快又省(有评测称极简模式的上下文开销约为标准模式的十分之一)
标准模式里别闲聊标准模式的固定开销很大:有评测称一句「你好」就能烧掉上万 token。直接给任务,别客套
复杂的活要「盯着干」媒体实测的结论是它「能扛重活,但会栽细节」。长任务中途回来看看中间产物,别撒手等结果
先让它出计划再动手用 /plan,或在提示词里写「先列计划,我确认后再执行」,能拦掉大量方向性错误
第一次操作只读或低风险让它先「读文件、给结论、不修改」,验证理解正确后再放开写权限
动文件前先备份或进 Git批量改名、整理类任务前先做一次提交,翻车可回滚(09)
出错先翻轨迹看它最后几步到底干了啥、哪步错,比盲目重发提示词高效得多(10)
重复任务沉淀成预设同一类任务每周都做?以后可以在创造模式里把它固化成一套专属 preset,下次一句话触发

再补两条压箱底的

「换个模型会不会更聪明」

媒体横评发现:同一个模型套在不同 harness 上表现会有差异;dsh 作为预览版,速度和成熟工具相比还有差距,但效果已属超预期。如果你觉得「这个模型不太聪明」,先试两件事:换个模式,或者换个供应商的模型——别急着下结论。另外,模型与模型的切换在同一段对话里也能做。

15常见坑与排错顺序

第一步永远是分层:是没起来、没连上,还是干错了

1
先判断错在哪一层

浏览器打不开 = 启动层;发消息没反应 / 提示鉴权失败 = 模型层;跑一半结果错 = 工具层。

2
启动层与模型层:用命令自检

dsh --profile web --dump-config 打印当前真正生效的完整配置树,看插件、工具、策略都加载了没。这是预览版最好用的一条命令。

3
工具层与结果层:用轨迹复盘

翻 Trajectory 找它错在哪一步、参数对不对。

4
升级后异常:查变更

预览版升级可能不兼容——去官方 Release / Discussions 看有没有已知问题,必要时回退版本。

现象 → 原因 → 解法(从高频到低频)

现象原因怎么解决
启动后浏览器连不上跑 dsh web 的终端进程停了,或端口被占用确认那个终端还开着;看它打印的地址有没有变;先彻底退出旧实例再启动新的
输入框灰、打不了字没选工作区点「选择工作区」选一个文件夹
发消息提示鉴权失败 / 无模型API Key 没配好,或模型没选对回「设置 → 模型」核对 Key、基础 URL、模型 ID
点「获取可用模型」报 401 / 404该服务商不提供「列出模型」接口忽略这个按钮,手动输入模型 ID,效果完全一样
command not found: dsh全局安装没生效 / PATH 没刷新重开终端;或 npm config get prefix 看全局目录;新手直接改用 npx @deepseek-ai/dsh
它改了我没让改的文件工作区太大,或范围没说清换独立空工作区;提示词写明「只准动 X」;高危操作别一路点允许
提示「权限不足 / 被拒绝」安全策略在工作,当前沙箱或审批档不允许这个动作确认权限预设够用(必要时切回 workspace-write);用 /permission 查看当前策略。宁可问着放行,也别一开到底
升级后配置 / 插件不兼容预览版的破坏性变更升级前备份 ~/.dsh;必要时固定使用某个版本
创造模式里 AI 卡进死循环预览版的偶发问题(有实测记录)手动终止任务,追问原因后再决定;普通用户尽量别用创造模式
怀疑配置没生效说不清哪一层出的问题跑 dsh --profile web --dump-config 打印真实配置,把输出贴到讨论区求助
把 API Key 贴进了对话 / 仓库习惯性操作立刻去平台吊销重建;Key 只写进设置文件,不进任何会被分享的地方

版本对不上命令?三步自救

💡 预览版心态

把它当「可玩性很高的新玩具 + 正在成长的工具」,而不是「必须时刻稳定的生产系统」。出问题先怀疑版本,再怀疑自己——这能省掉大量自我怀疑的时间。

16术语对照表

读前面还有哪个英文词卡壳?这张表按「这个词在这套体系里有什么用」来讲,不做英汉对译。

术语它是什么为什么重要 / 何时用 · 别当什么用
Harness(马具 / 框架层)把大模型接到真实环境的那一层(dsh 就是它)核心主角:它让模型能读文件、跑命令、上网。别当「又一个聊天机器人」用
Model(模型)负责思考的「大脑」,dsh 必须接一个才干活没有它等于没大脑;可以换 DeepSeek / Anthropic / OpenAI 等,也能接本地服务。别以为 dsh 自带智能
dshDeepSeek Harness 的命令名你敲的每条命令都从它开头。别跟 DeepSeek 网页版、模型 API 混起来
Agent(智能体)模型 + 工具 + 循环构成的「会自己干活的 AI」官方公式 Agent = Model + Harness 说的就是它。别把「模型」和「智能体」当同一个东西
agent loop(智能体循环)「读文件 → 想 → 改 → 跑命令验证 → 再想」的重复过程理解它你就理解了为什么它能自己试错。别以为它一次就能写对;它的强项正是反复改
Tool(工具)AI 能调用的动作:读文件、写文件、跑终端、搜索等模型「手脚」的单元;审批弹窗就拦在工具调用前。别当它是模型自带的魔法
Workspace(工作区)你允许 AI 触碰的文件夹范围第一道安全边界:先选对它。别拿整个桌面或用户主目录当工作区
Sandbox(沙箱)限制进程能写哪些地方的系统级围栏,分只读 / 工作区可写 / 完全访问三档不熟的项目先开只读。它只管文件效果,不管网络——别拿它当全部安全承诺
Approval(审批)高危动作前弹出的「要不要放行」询问,策略有 ask 与 never安全阀门:第一次用请逐条看。never 是「都不问、按拒绝处理」,不是「全都允许」
Permission preset(权限预设)把沙箱档位与审批策略捆成的一个选择器日常用 workspace-write;/permission 查看或切换。别在陌生项目上选完全访问那档
Preset / Mode(预设 / 模式)一个会话用哪些工具与提示词的「套餐」,如标准、PTC、极简、创造简单任务切极简、日常用标准。别在复杂任务里为了省事硬开创造模式
Profile(配置档)命令行 --profile 指向的一套可启动配置(如 web、headless)装插件、排障都会用到它。别把它和「模式」混为一谈:模式在界面里,profile 在命令行里
Plugin / bundle(插件 / 组合包)一个可装卸的能力包:npm 包 + 一层配置补丁「一切皆插件」的落地单位:加能力靠装插件。别以为必须改源码才能定制
Skill(技能)预先写好的「这类活该怎么干」的操作规程让 AI 按项目规范行事,不必每次重复交代。别把它理解成「让模型变强的插件」
Trajectory(轨迹)记录模型每一步所见所调的原始事件账本,只增不改复盘、回放、恢复、分叉都靠它;分享前先脱敏。别只看润色后的对话就下结论
Token(词元)模型计费与容量的最小单位,粗略等于「一个词或半个词」轨迹里能看到每一步烧了多少。别把它当成字数或金额
headless(无头)不开界面、跑一个任务就退出的命令行模式定时任务、脚本化调用用它;退出码 0 / 1 告诉你是成是败。别指望它能追问你
API Key(密钥)调用模型服务的身份凭证,形如 sk-...你的钱袋子,按用量计费。别外传、别提交仓库、别贴进对话
Base URL(接入地址)模型服务商提供的 API 网址填错就连不上;照服务商文档抄。别把官网网页地址当 API 地址
Provider(提供方)模型的来源,例如 DeepSeek 官方、某云厂商、你本机的服务接别家模型靠新增提供方。它的 ID 是永久的,起名前想清楚
PTC(程序化工具调用)一种模式:让模型写一段程序去调用多步工具批量、结构化流程用它减少往返。别在单个小任务里也上它——理解成本不划算
Session(会话)一次与 dsh 的连续协作,可保存、可恢复跨会话续活、复盘都挂在会话上;一个项目一个会话最清爽。别在旧会话里混着干新任务

17一页纸:命令速查

三个先记住的锚点

环境与启动

node -v                          # 检查 Node,需 ≥ 20(建议 22 LTS 或更新)
brew install node                 # macOS 装 Node(未装才需要)
cd ~/Desktop/dsh-playground       # 进工作区
npx @deepseek-ai/dsh web          # 一键启动,默认 http://127.0.0.1:3080
dsh web                           # 全局安装版启动
dsh web --no-open                 # 启动但不自动开浏览器

命令行任务

dsh --profile headless "你的任务文字"   # 跑一次即退出,适合脚本

插件管理

dsh plugin --profile web add <包名>     # 装插件
dsh plugin --profile web remove <包名>  # 卸插件

排障

dsh --profile web --dump-config   # 打印当前真实生效的配置
dsh --help                         # 看本机支持的命令
dsh --version                      # 看版本

对话里的斜杠命令

/plan   /permission   /goal   /compact   /export   /feedback
# /model 是输入框里的模型弹窗,同样以斜杠唤起
命令作用什么时候用
/plan让它先出计划再动手任务比较大、方向不确定时
/model切换模型与推理强度简单活換便宜模型、复杂活换强模型
/permission查看 / 切换权限预设想收紧或放宽沙箱与审批时
/goal设一个跨会话跟进的长期目标一件事要好几天做完时
/compact压缩对话历史对话太长、变慢变笨时
/export导出当前会话要存档或发给别人看时(先脱敏)
/feedback给官方反馈遇到值得报告的 bug 或建议时

命令会过期,这份「保鲜」动作请照做

18常见问题 FAQ

DeepSeek Harness 免费吗?
框架本身开源免费(MIT 协议)。但调用模型是按用量付费的——用 DeepSeek 官方模型就去开放平台充值,用别家的就付给别家。dsh 只是那套「马具」,马的草料钱要另付。
我完全不会写代码,能上手吗?
能。这篇文章全程不用你写代码,只让你「复制粘贴命令 + 在浏览器里点界面」。真正的门槛是:会用一点终端、能申请一把 API Key。装好 Node 之后,一行 npx @deepseek-ai/dsh web 就能开跑。
和 Claude Code / Codex 比,该选哪个?
要「开箱即用最省心」,选成品工具更稳。选 dsh 的理由是:开源可控、模型可换、插件可拼、能研究智能体怎么组装。预览版的稳定度还比不过前者——不是「谁更好」,是「你要成品还是要可玩性」。
它突然不动了 / 卡住了怎么办?
先等几秒;仍不动就按 Ctrl + C 停掉终端进程,重启 dsh web。长任务可以到轨迹里看它卡在哪一次工具调用上,需要就从中断点恢复,或从出错前分叉重跑。
它总想改我不想让它碰的文件,怎么管?
三层办法:① 把工作区换成只含相关文件的小文件夹;② 提示词写明「只准动 xxx,其它一律不许改」;③ 权限收到只读或工作区可写,高危操作逐条审批,别点「全部允许」。
升级会不会把配置弄坏?
可能会,预览版升级常有破坏性变更。升级前备份 ~/.dsh、记下当前版本号;遇到不兼容去 GitHub Discussions 搜或问。想更新:全局版跑 npm install -g @deepseek-ai/dsh@latest,用 npx 的每次会自动拉最新。
它会偷偷删我的文件吗?
默认不会——删除这类破坏性操作通常会触发审批,你点允许它才动手。再加三道保险:用独立工作区、提示词写清「不得删除任何文件」、权限先设成只读。
任务跑一半断了,能接着来吗?
能。会话可以从轨迹恢复继续干;想换条思路,就从出错前某一步分叉重来,比从头跑省得多。
支持中文吗?
支持。界面、任务提示、产物都能用中文。轨迹日志里出现中英混合属正常现象。
怎么知道这把 Key 花了多少钱?
钱记在「提供模型的平台」账户里,去 DeepSeek 开放平台或对应厂商控制台看用量。dsh 这边可以在轨迹里看每次任务消耗的 token 数,两边对起来就能估算单个任务的成本。
在 Mac 上装,会影响我其它软件吗?
npm 的全局包只装在 Node 的环境里,和 Python、Homebrew、日常软件互不干扰;配置只落在 ~/.dsh。想彻底卸载:npm uninstall -g @deepseek-ai/dsh,再删掉 ~/.dsh 即可。
Windows 或 Linux 上怎么装?
先装 Node.js(官网下载或系统包管理器),其余照旧:npx @deepseek-ai/dsh web,或者全局 npm install -g @deepseek-ai/dsh。Windows 若提示命令找不到,重开一次终端刷新 PATH。
在两台电脑上能同时用吗?
能。它是本地程序,每台电脑各自安装、各自填 Key。会话默认存在本机,跨设备续接一般靠导出 / 导入——具体以你版本支持为准。
它写出来的代码 / 网页我能商用吗?
产物归属取决于你与所用模型平台的条款,以及框架自身的 MIT 开源协议。个人使用一般没障碍;真要商用请查 DeepSeek 平台服务条款和你接的模型供应商条款——这是版权常识,不是 dsh 能替你保证的。
在哪反馈问题、找插件?
官方仓库 github.com/deepseek-ai/deepseek-harness 的 GitHub Discussions 讨论区;找插件去 GitHub 搜 dsh-plugin 话题标签。官方文档站是 deepseek-harness.github.io/deepseek-harness。

99一句话总结

🎯 核心要点

DeepSeek Harness 是 DeepSeek 开源的一套「智能体框架」:模型负责想、它负责干,官方顺手把它拼成了一款好用的编程助手。上手就四步:装 Node → 拿一把 API Key → npx @deepseek-ai/dsh web → 选好工作区发任务。新手请记住四句:先在独立空文件夹里用只读任务练手;日常用标准模式、简单任务切极简;出错先翻轨迹而不是重发提示词;它还是开发者预览版,动手前做一次 Git 快照,命令拿不准就 dsh --help。

98参考来源与证据边界

一手来源(本文逐字核对过)

沿用上一版、本次未重新核验的第三方来源

下面这些是上一版文章用过的来源,本文保留了由它们带来的体感数字与实测结论(如「能扛重活但会栽细节」「一句你好烧掉上万 token」「极简开销约为标准模式的十分之一」)。这次我没有逐篇重读它们,所以只当作「经验说法」引用,不当作官方口径:阿里云 Model Studio 帮助文档、腾讯云文档(界面操作口径);界面新闻实测《上线 12 小时 5 万星,DeepSeek Harness 实测:能干活,但得盯着》;社区实测《四种运行模式实测:标准、PTC、极简、创造到底差在哪》;社区手册 deepseek-harness-handbook。

本文自己做的核对

证据边界与时效

📖 还想继续深入?

这篇讲的是「把 dsh 用起来」。想研究插件系统、自定义 preset、代码级架构,官方文档仓库的 docs/ 目录与 GitHub Discussions 是第一手去处。

⌂