2026 年 8 月 13 日,DeepSeek 正式发布首款 Agent 产品 DeepSeek Harness(dsh),以 MIT 协议全面开源,直接对标 Claude Code 与 Codex。本文基于官方设计与早期社区实践,系统拆解 dsh 的核心概念、环境搭建、图形界面、进阶功能与 CLI 玩法,带你从零完成一次真实项目任务。


前言:为什么 Harness 值得你花一个晚上

过去两年,大模型从"对话框里的助手"一路演进到"能动手干活的 Agent"。但真正把 Agent 落地到开发者日常工作流里的产品,并不多。

Claude Code 证明了"让 AI 在真实代码库里读写执行"这条路走得通;Codex 证明了"规模化后台任务"有价值。但两者要么是闭源商业产品,要么与特定生态深度绑定,社区很难在其上自由扩展。

DeepSeek 这次的开源动作,信号很明确:把 Agent 的"驾驶舱"交给社区。MIT 协议意味着你可以商用、可以改、可以嵌入自己的产品。内测期间 769 位开发者报名、约 300 个社区插件冒出来——这个数字说明,生态的自驱力已经起来了。

所以这篇文章的目标很朴素:帮你在一个晚上之内,从"听说过 dsh"变成"能用 dsh 完成真实任务"

我会按照"概念 → 安装 → 界面 → 进阶 → CLI → 实战"的顺序讲。你不需要是 TypeScript 专家,也不需要懂 Agent 框架原理,只要会装软件、会敲命令就行。


第一部分:重新理解 dsh——它不是"另一个聊天框"

1.1 dsh 到底是什么

dsh 的全称是 DeepSeek Harness,由 DeepSeek AI 开源。官方给它的定位是 Agent Harness——翻译成人话,就是"智能体运行框架"。官网地址:https://www.deepseek.com/harness/
dsh官网

如果用一个比喻:dsh 是你 AI 助手的操作系统层。它不直接"生产智能",而是提供让智能体能够:

  • 读写你电脑上的文件
  • 执行命令、跑脚本
  • 调用各种工具(搜索、子代理、工作流)
  • 按流程、按权限、按目标持续干活

一句话:网页版 ChatGPT 是"你问它答",dsh 是"你派它去干"

1.2 它和网页版、IDE 插件的区别

这是初学者最容易混淆的地方,用一张表说清楚:

维度网页版 ChatGPT / 官方对话IDE 内 AI 插件dsh
工作位置封闭对话编辑器内你的真实电脑 / 服务器
能读文件?需手动粘贴当前项目任意指定工作区
能跑命令?不能有限完整终端能力
权限控制插件决定细粒度沙箱 + 审批
可扩展性官方功能MarketplaceMIT 开源 + 插件体系
适合场景问答、写作写代码辅助端到端项目任务

看出差别了吗?dsh 的工作对象是你真实的文件系统,而不是一段被粘贴进来的文本。 这个区别决定了它能做的事情量级完全不同。

1.3 dsh 能帮你干哪些活

在这里插入图片描述

装好之后,你可以让 dsh 承担这些类型的任务:

  • 代码工程:读懂一个陌生仓库、定位 Bug、重构模块、补测试、生成 README
  • 自动化脚本:批量处理文件、定时跑数据清洗、生成报告
  • 调研与汇总:并行调研多个信息源、交叉验证、输出结构化结论
  • 运维辅助:在受控环境里跑命令、排查日志、部署验证
  • 工作流编排:把"拉数据 → 清洗 → 生成 → 发布"这种固定套路写成可复用的流水线

关键是:它工作在你的真实电脑上,读的是你的文件,跑的是你的命令。 也因此——权限和安全是 dsh 的一等公民,后面会专门讲。
在这里插入图片描述

1.4 两条前置认知

不多,两条就够:

  1. dsh 本身不生产模型。它负责调度、干活;真正"想问题、写代码、回话"的是背后的大模型服务(默认 DeepSeek,也可接其他 OpenAI 兼容服务)。
  2. 一切动手都基于"工作区"。没有工作区,agent 就不知道你的文件在哪,自然没法干活。这是贯穿全文的核心概念。

理解了这两点,后面所有设计都会显得顺理成章。


在这里插入图片描述

第二部分:十分钟搭好环境

2.1 你需要装什么

动手前说清楚:你只需要两样东西——Node.js(dsh 的运行底座)和 dsh 本体(一条命令装好)。不需要数据库、不需要 Java、不需要懂编程。

dsh 用 TypeScript 写成,运行在 Node.js 上,所以第一步是装 Node.js。

2.2 安装 Node.js

Node.js 官网 下载 最新 LTS 版本,一路下一步安装即可。
Node.js官网

⚠️ 版本要求:dsh 处于预览阶段,要求 Node.js 22 及以上。如果你机器上是老版本,请升级再继续。

装完后打开终端验证:

node -v
npm -v

在这里插入图片描述

看到类似下面的版本号,说明装好了:

v24.11.1
11.6.2

2.3 启动 dsh

不需要"单独安装",直接运行下面这条命令,npm 会自动下载并启动:

npx @deepseek/harness web

在这里插入图片描述

第一次运行会花一两分钟下载依赖,终端滚动一堆日志,这是正常的。看到类似下面的输出,就说明启动成功了:

Harness web UI running at: http://127.0.0.1:3080

想先装好再启动? 也可以全局安装:

npm install -g @deepseek/harness
dsh web

两种方式效果一样。新手推荐直接用 npx,少一个概念。

2.4 打开界面

启动成功后,打开浏览器访问:

http://127.0.0.1:3080/

在这里插入图片描述

看到 dsh 主界面,环境准备就算完成了。

此刻界面还是"空"的:左边没有工作区,中间没有会话,底部输入框还不能用。别急,这正是我们后面几章要逐个解锁的。

2.5 常见问题速查(先收藏)

问题解法
npx 下载很慢 / 失败检查网络或代理,可临时换 npm 国内镜像:npm config set registry https://registry.npmmirror.com
端口被占用换端口启动:dsh web --port 8080,然后访问 http://127.0.0.1:8080/
node -v 版本太老去官网下载最新 LTS 覆盖安装
浏览器打不开界面以终端打印的地址为准,确认端口一致、终端没报错,再刷新

第三部分:认识主界面——每一个角落都有讲究

3.1 整体布局

打开 http://127.0.0.1:3080/,界面从上到下、从左到右分四个区域:

┌──────────────────────────────────────────┐
│  [+新会话]  工作区列表      [设置 ⚙️]     │  ← 顶部状态栏
├──────────┬───────────────────────────────┤
│          │  对话区(工具调用树 / 轨迹)     │
│  侧边栏  │                               │
│  - 工作区 │                               │
│  - 会话   │                               │
│          │  ┌─────────────────────────┐  │
│          │  │ 输入框(附件 / / / @)   │  │
│          │  └─────────────────────────┘  │
└──────────┴───────────────────────────────┘
  • 左上角:新会话按钮。每点一次开一个独立对话,上下文互不干扰。
  • 左侧边栏:工作区与会话导航。目前只有一个"工作区"入口——这是 dsh 最核心的概念
  • 中间:对话区。你的指令、agent 的回复、它调用工具的每一步,都在这里滚动展示。
  • 底部:输入框。给 agent 下指令的地方。注意它现在是锁定的——因为还没选工作区。
  • 右上角:设置按钮。点开有四个 tab,后面逐个用到。

3.2 第一道必做配置:填 API 密钥

界面什么都好,但还缺一样东西:大脑

dsh 自己不生产模型,真正"想问题、写代码、回话"的是背后的模型服务。所以开工前必须先告诉 dsh:用哪家的模型、用什么密钥。

第一步:去 DeepSeek 平台拿密钥

注册并登录 DeepSeek 开放平台,在"API Keys"里创建一个新密钥。

⚠️ 密钥只显示一次:创建后完整字符串只在页面上出现一次,关闭就看不到了。请先复制到安全地方再关页面。

第二步:在 dsh 里填写

回到 dsh 界面,点右上角设置 → 模型 tab。页面上会列出已预置的 DeepSeek 提供方。把密钥填进去,保存。

保存后模型路由立即生效,不需要重启。

回到主界面,看对话区上方的模型状态:如果显示 DeepSeek-V4-Flash(或你选的模型名),就说明配置成功了。此时还可以点开它切换其他模型。

第三步:安全提醒

API 密钥就是你的"钱袋子",按量计费,请把它当密码对待:

  • 不要截图发群里、不要提交到 git
  • 泄露后立刻去平台 吊销重建,旧密钥立即失效

3.3 接入更多模型(OpenAI 兼容)

模型页上有两个入口,对应两种场景:

① 内置提供方:dsh 预置了 20 多家主流模型服务,填密钥即可用。流程与 DeepSeek 完全一致。

② 自定义提供方(OpenAI 兼容):这是给"标准 OpenAI 兼容接口"准备的。只要你的服务实现了 OpenAI 的接口协议,就能被 dsh 识别。典型场景:

  • 本地跑的开源模型(Ollama、vLLM)
  • 公司内部的模型网关
  • 第三方中转 / 代理服务

点"添加自定义提供方",填几个字段:

字段说明
Base URL服务地址,如 http://localhost:11434/v1
API Key服务密钥(本地服务可为空)
模型列表该服务提供的模型名

以最常见的 Ollama + qwen2.5:7b 为例:

Base URL: http://localhost:11434/v1
API Key:   (留空)
Models:    qwen2.5:7b

保存后,主界面的模型选择器里就能看到"本地 Ollama"了。

⚠️ 跨机器访问:本机服务用 localhost;如果 Ollama 跑在另一台机器,地址要换成那台机器的局域网 IP,并确认服务监听了非本机端口。


第四部分:工作区——Agent 干活的"地盘"

4.1 为什么必须有工作区

想象你雇了一位远程助理:他要帮你干活,第一件事是什么? 告诉他你的项目在哪。否则他不知道去哪个文件夹翻文件,也不知道改完的东西放哪。

工作区就是这个"项目在哪"的答案。

在 dsh 里,工作区 = 一个项目目录的持久化记录,它记着三样东西:

  1. 目录路径
  2. 显示名字
  3. 属于它的会话清单

一句话:工作区 = 目录 + 名字 + 会话清单。

因为 dsh 所有的"动手"都建立在工作区上:读文件、跑命令、写代码——都得有个根目录。不选工作区,agent 就没有"地盘",输入框就是锁着的。

4.2 添加你的第一个工作区

界面上有两个添加入口(侧边栏顶部 + 工作区分区),殊途同归,都会打开系统目录选择器。

选哪个目录合适?

  • 项目根目录最合适(仓库根、网站源码目录),这样 agent 能读到项目里所有文件
  • 别选 C 盘、用户主目录这种大而全的目录——范围太大会让 agent 找东西很慢,误操作风险也高

选好目录后,dsh 会自动完成两件事:记录路径、创建该工作区下的初始会话。

回到主界面,左侧边栏工作区分区下已经出现了你的项目目录名。同时你会发现:底部输入框解锁了。

4.3 工作区操作

鼠标悬停在工作区行上,会出现操作菜单:

  • 重命名:改显示名(不改实际目录)
  • 删除:移除工作区记录(不删文件、不删会话,会话归入"未分组")
  • 切换:点工作区名即可,对应会话列表会跟着切换

如果你有多个项目,就再走一遍添加流程,每个项目一个工作区。每个工作区互相独立,会话不会串。

⚠️ 注意:同一目录只能添加一次;添加的是"文件夹"而不是"文件"。


第五部分:发出第一条指令,看 Agent 怎么干活

5.1 新建会话 + 发指令

点左上角 新会话 按钮,创建独立对话。底部输入框已经可用,提示语是"描述你想要构建的内容"。

第一次用,推荐这种只读、安全、立刻见效的指令:

列出当前工作区目录下的文件,并简要说明这个项目是做什么的

💡 指令越具体越好:agent 是按指令干活的,含糊就只能猜。想要什么、范围在哪、产出什么格式,一次性说清楚,后面省很多来回。

按 Enter 发送,你会看到两件事同时发生

  1. 你的消息出现在对话区
  2. 下方开始出现工具调用记录(先"思考",再"执行")

第一次跑会花点时间:它要先理解你的指令,再调用工具去看工作区文件,最后汇总成回答。短任务十几秒,长任务几分钟都正常。

完成后,对话区留下完整记录:你的问题、它调用工具的每一步、最后的回答。底部还有一行统计信息(耗时、工具轮次、token 消耗)。

5.2 读懂"工具调用树"

普通聊天里,AI 给你一段文字就结束了。但 dsh 的 agent 要真正动手,所以它每做一步,界面就多一行记录——这些记录串起来,就是 工具调用树

一条典型流程(从下往上看):

[Think]     理解指令:需要列出工作区文件并判断项目类型
[ReadDir]   读取工作区根目录
[ReadFile]  打开 package.json
[ReadFile]  打开 README.md
[Think]     综合信息:这是一个 Next.js 博客项目
[Reply]     向用户汇报结论

看到规律了吗?agent 的干活节奏是:想一下 → 动一下 → 看结果 → 再想 → 再动。

每一行都可以点开展开,看完整内容:

  • 点开 Think:看到当时的思考过程
  • 点开 Pwsh / Bash:看到实际执行的命令和输出
  • 点开"上下文注入":看到注入的提示词内容

想确认 agent 到底对你的项目做了什么?逐行点开看,一切透明。

常见内置工具有:ReadFile(读文件)、WriteFile(写文件)、ReadDir(列目录)、Bash / Pwsh(执行命令)、Grep(搜索内容)、WebSearch(联网搜索)等。工具越多,agent 能干的事越多。

5.3 读懂统计行

任务完成后,工具调用树下方会显示一行统计,例如:

1 轮 · 4 步 | LLM 14.9s · 工具调用 45.5s | 缓存命中 71% | 输入 76K tok · 输出 1.6K tok

拆解一下:

部分含义
1 轮 · 4 步1 轮对话,共 4 次工具调用
LLM 14.9s模型"思考"耗时
工具调用 45.5s实际执行(读文件、跑命令)耗时
缓存命中 71%输入缓存命中率,越高越省钱越快
输入 76K tok · 输出 1.6K tok本次 token 消耗

任务变长时,这些数字帮你判断:时间花在了"想"还是"干"上。


第六部分:会话里的十个进阶功能

6.1 切换模型 + 推理等级

配置好模型后,dsh 默认用你配置的那个。但不同任务适合不同模型

  • 简单问答 → 轻量 Flash 模型(快、便宜)
  • 复杂重构 → 强推理模型(慢、准)

切换不需要重启,会话进行到一半也能换。

入口有两个:对话区上方的模型状态区,或输入框左侧的模型选择器。点开后:

  • 模型:列出所有已配置且可用的模型,点一下立即生效
  • 推理等级:控制"想多深",一般是 High / Medium / Low
档位适用场景
High复杂架构、难 Bug、多约束任务
Medium(默认)日常开发主力
Low简单问答、快速确认

建议先用默认档跑,觉得回答太浅就调高一档,觉得太慢就调低。没有绝对正确,按任务手感来。

6.2 给 Agent 喂附件

有些场景纯文字说不清楚——比如"帮我看下这份报错截图"“基于这份设计稿改代码”。这时候用附件

添加方式和聊天软件一样:直接拖拽文件到输入框,或点附件按钮选择文件。成功后输入框上方出现缩略图 / 文件条,确认后正常发送即可。

dsh 支持常见类型,实践中用得最多的是:截图 / 图片、PDF、Excel/CSV、日志文件、设计稿

⚠️ 大文件处理:文件过大会挤占上下文。如果是一整个项目,更推荐把项目目录设为工作区(让 agent 自己读),而不是压缩上传。能靠工作区读的文件,就不用附件传。

每个附件都会转成模型能理解的内容,占用 token。附件越多越大,开销越高。用完的文件可以删掉,控制上下文在合理范围。

6.3 斜杠命令 / 与引用 @

dsh 的输入框不只是打字的地方。敲两个符号,会弹出两个快捷面板:

① 斜杠命令 /

在输入框敲 /,弹出命令列表(内置命令 + 你安装的技能)。选一个,它就以"让 agent 用这个技能干活"的方式加入指令。

举例:装了视频制作类技能后,输入 / 选它,再补一句"把这个网址做成一条介绍视频",agent 就按该技能的工作流执行。

好处:把复杂能力变成一句话。

② 引用 @

在输入框敲 @,弹出引用面板。作用是**"点名"某个东西参与对话**。可引用的包括:工作区文件、已有会话、已安装的技能、子代理等。

引用比斜杠更灵活,可以夹在句子里用:

用 @视频制作技能 把这份 @设计稿.png 翻译成英文版介绍

一句话记住:想给 agent 加能力,敲 /;想点名某个东西,敲 @

6.4 权限模式与审批机制

agent 在你电脑上干活,总要有边界。dsh 用权限模式管这件事。

输入框左侧有访问模式按钮,点开弹出权限选择器。档位从低到高:

档位含义
Read Only只读,不写文件、不执行命令(最安全)
Workspace Write可读写工作区内文件,工作区外需审批(日常推荐
Full Access放行一切操作,包括工作区外(慎用)

切换即时生效,只影响之后的操作。

审批弹窗:即使设好了模式,agent 遇到"超权限"操作时,dsh 会停下来弹出审批卡片,写明了它想改哪个文件、跑什么命令、访问什么地址。看清了再决定。

🔑 关键点:允许是一次性的。agent 每做一步超权限操作都要单独问一次,批准只放行当前这一步,不会"一劳永逸"。这正是 dsh 安全性的核心:agent 永远不能绕过你自作主张。

日常使用保持 Workspace Write + ask 就好。never(永不询问)主要给自动化 / CI 场景用。

6.5 用"目标"锁定方向

agent 干活时常出现这种情况:你让它"修登录页 Bug",它修着修着开始优化布局、整理代码风格——方向跑偏了

目标(Goal)就是用来治这个的:你先把"这次会话要完成什么"明确告诉 agent,它会在每轮决策时对照目标,跑偏了就拉回来。

不需要特殊按钮,直接在对话里说就行:

# 方式一:和任务一起说
本次会话的目标是:修复登录页在手机端显示错乱的问题。现在开始排查。

# 方式二:任务中途补设
设定目标:先把登录页 Bug 修完,其他优化都先不做。

dsh 会把目标记下来,界面显示当前目标状态。agent 每一步都会对照它。

💡 目标越收敛越好:“把 README 补全” 比 “把这个项目完善一下” 管用得多。目标模糊,agent 就没法判断什么算跑偏。

6.6 计划模式:先审方案再动手

大部分任务"边想边干"没问题。但有些任务不适合:

  • 破坏性改动(删数据、改数据库结构)
  • 多步骤、高风险的部署
  • 需要你先确认思路的大重构

计划模式就是干这个的:让 agent 先交方案,你点头,再动手

用斜杠命令控制:

/plan            # 进入计划模式
/plan 重构用户模块的鉴权逻辑   # 带任务进入计划模式
/exit-plan       # 退出计划模式

进入后,你发一个任务,agent 会:

  1. 先思考整体思路
  2. 输出分步计划(每步干什么、影响哪些文件)
  3. 等待你审阅确认
  4. 批准后按步骤执行,每步严格按计划走

全程你知道它要干什么、干到哪了。

⚠️ 计划模式是"软约束":它引导 agent 先计划后执行,但不额外限制工具权限。权限边界还是靠 6.4 的权限模式管。日常小任务没必要开,反而多一道审阅。

6.7 子代理:把任务拆给"组员"并行干

有些任务天然适合分工:

  • “调研 3 个方案的优缺点”
  • “同时改前端 + 后端 + 文档”
  • “并行跑 5 组测试”

子代理就是 agent 委派出去的子 agent:主 agent 拆任务 → 分配给子代理并行执行 → 最后汇总给你。相当于项目经理 + 组员

不需要专门按钮,直接在指令里说:

用两个子代理并行调研:一个查这个框架的官方文档,一个查社区实践案例,最后汇总

你会在消息流里看到子代理行,展开后是子代理自己的完整对话记录。

💡 适用判断:子代理适合"拆得开、各干各"的任务。任务紧密耦合、改一处影响全局的(如改公共类型定义),反而适合交给一个 agent 从头做,避免不一致。

6.8 后台任务:耗时活丢到后台

agent 有些活很慢:跑全量测试、批量处理、长时间调研。如果让它一路干完,你的对话就一直"转圈",期间想干别的都不行。

后台任务就是解法:把耗时任务放后台跑,对话立刻恢复可用,完成后再回来收结果。

把这个批量压缩任务放到后台执行,完成后告诉我结果

你会看到会话头部出现后台任务列表,实时显示每个任务状态。任务跑完后,agent 把结果汇报到对话里,你也可以随时从列表查看。

常见后台任务类型:命令行任务、子代理任务——统一由后台任务系统管理。

6.9 工作流:把流程编排成脚本

子代理解决"拆分",后台任务解决"等待",但都差一层:流程的编排

比如你有个固定套路:拉取数据 → 清洗 → 生成报告 → 发布。每次都靠手发指令太累。

工作流(Workflow)就是把这类流程写成编排脚本:按顺序定义每步干什么、何时启动子代理、子代理间怎么衔接。写好脚本后,一条命令跑完整个流水线

一句话:普通任务是"干一次",工作流是"定个流程,以后照跑"。

工作流是偏进阶的能力。初学者先做到"认识它、能跑现成流程"即可。想深入编排和写脚本,等基础功能都熟了再看进阶内容。

6.10 轨迹视图:从原始记录回看每一步

对话区顶部有两个视图 tab:对话轨迹

  • 对话视图:整理成清晰消息流,日常够用
  • 轨迹视图:按轮次组织的原始记录(USER / CONTEXT / ASSISTANT / TOOL),排查细节用

点顶部 轨迹 tab 切换,再点 对话 切回来。切换不影响会话内容,只是换一种看法。

💡 小提示:轨迹视图信息量大,是给"查细节"用的。日常干活看对话视图就好,别被原始记录淹没。


第七部分:侧边栏——会话的总控台

dsh 的左侧边栏不只是导航,它是会话的总控台。所有会话按工作区分组排列,一眼看清每个项目下有哪些对话。

7.1 新建与切换

  • 新建:点侧边栏顶部的 [+] 按钮
  • 切换:直接点对应会话行,对话区加载完整历史,从头到尾可翻看、可续聊

会话行上会显示状态信息:正在运行的会话有运行指示,等待你审批的会标出来——方便你一眼找到需要处理的事。

7.2 搜索

会话多了靠翻很累,用搜索框(支持按标题和内容搜)。标题搜不到就搜内容。

7.3 会话操作

鼠标悬停在会话行上,出现操作按钮:

操作作用
重命名改会话标题,方便检索
分叉(Fork)⭐ 从当前位置复制出新会话,原会话原样保留——做实验、试不同方案特别好用
归档不用的会话收起来,列表更清爽
删除彻底删除(谨慎)

🌟 分叉是神器:它不动原会话,从你选的位置复制出新分支。想"试试另一种思路又不破坏现有进度"时,先分叉。

7.4 视图选项

侧边栏的视图选项按钮可调整展示方式:按最近更新排序、手动排序、按工作区分组或平铺成一张列表——按你的习惯选就行。


第八部分:设置——把 dsh 调成你的形状

点右上角设置按钮,弹出设置面板。四个 tab:通用、插件、Agent 预设、模型

8.1 通用设置

选项说明
Agent 预设新会话的 agent 类型(见 8.3)
权限新会话默认权限模式(推荐 Workspace Write)
语言界面语言,支持中文,切换立即生效
外观浅色 / 深色 / 跟随系统
Enter 行为agent 繁忙时按 Enter 怎么办(默认"排队发送")

设置面板还有个**“打开配置文件”**入口,能看到 dsh 的实际配置文件。新手不建议直接改——界面能设的先用界面,改错了反而出问题。

8.2 插件

设置 → 插件 tab,列出当前部署已安装的插件及其配置项。它们是 dsh 能力的地基,例如:

  • 终端插件:给命令执行兜底,可配置执行范围、是否启用沙箱——是安全边界的一部分

你可能想问:插件和 6.3 的技能(Skills)是一回事吗?

不完全一样,理解为两层

  • 插件:底层能力模块,在设置里管理(如终端、文件系统、搜索)
  • 技能:面向任务的可调用工作流,在会话里用 / 调用

它们是 dsh 插件体系的两个侧面。

8.3 Agent 预设

同一个 dsh,agent 可以有不同的"形态"。Agent 预设就是这些形态的出厂配置。

内置四个预设,能力从全到简:

预设定位
标准模式功能完整的编码 Agent(大多数人的日常选择,默认
精简模式去掉部分工具,适合轻量任务
只读模式只观察不改动,适合调研
创造模式可自定义、可扩展,进阶玩法

切换路径:设置 → Agent 预设 → 点选。切换后新会话生效(已有会话不受影响)。

创造模式还支持自定义预设——对 agent 行为有特殊要求时(比如固定系统提示词、限制可用工具集),可以自己创建一个。属于进阶玩法,先知道有这条路。

8.4 主题

通用设置 → 外观:浅色 / 深色 / 跟随系统。切换立即生效,不用重启。

纯看习惯:长时间盯代码推荐深色护眼;如果拿不准,选跟随系统——自动匹配你电脑的明暗风格,最省心。主题只影响外观,不影响任何功能。


第九部分:脱离界面的 CLI 玩法

前面都在讲 Web UI,但 dsh 不只有图形界面。dsh 命令本身是个多模式启动器,除了 dsh web,还有几个有意思的模式。

9.1 Headless 模式:无人值守跑任务

最有意思的是 headless 模式——不需要界面,一条命令把任务干完就退出:

dsh run "分析当前目录的代码结构,生成一份架构说明文档"

跑完后终端直接打印 agent 的回答。适合写进脚本、定时任务、CI 流水线。 可以理解为 dsh 的"命令行版"。

9.2 Profile 管理

dsh 用 profile 管理不同运行配置。每个 profile 是一套独立的插件组合和配置:

dsh --profile work run "..."
dsh --profile personal web

这样你可以在"工作账号"和"个人项目"之间干净地隔离。

9.3 环境变量传密钥

headless 模式通过环境变量读取密钥(不依赖图形界面的设置面板):

export DEEPSEEK_API_KEY="sk-xxx"
dsh run "..."

这也是它能嵌入 CI 的原因——密钥从环境变量注入,不落盘。

9.4 插件管理命令

dsh plugin list      # 列出已装插件
dsh plugin install <name>   # 安装插件
dsh plugin enable <name>    # 启用插件

第十部分:安全边界——权限机制再深挖一层

6.4 讲了权限模式,现在把背后机制说透:每个权限预设,实际上捆绑了两件独立的事

  1. 文件系统沙箱范围(能读写哪些目录)
  2. 审批策略(超范围时是询问还是放行)

界面上的一个档位,背后就是这两个开关的组合。

10.1 沙箱的三个档位

沙箱只管理文件系统效果,由松到严:

档位文件读写范围
Read Only只读,任何位置都不能写
Workspace Write可读写工作区内,工作区外只读
Full Access全系统可读写

⚠️ 重要:沙箱只管文件读写。网络访问、进程可见性不归沙箱管,那是另一套机制。所以即便在 Workspace Write 下,agent 依然可以访问网络——这是设计如此(调研、下载依赖都需要)。

10.2 权限组合对照

界面档位背后的真实组合:

权限模式沙箱审批策略
Read Only只读一律拒绝写操作
Workspace Write工作区内可写工作区外操作 → 询问
Full Access全开放直接放行,不询问

看出规律了吗?档位越高,沙箱越松;Full Access 连审批都关了。 这就是为什么 6.4 强调 Full Access 要慎用。

10.3 沙箱的实现

“护栏"由操作系统机制实现(如文件系统权限、隔离目录)。不同系统护栏强度有差异,某些边界(如硬链接)可能只能做到"部分限制”。

日常使用记住一条就够:默认 Workspace Write(只读 + 写工作区内),是最常见也最稳妥的组合。


第十一部分:完整实战——为已有项目生成 README

理论讲完,现在把全文知识串起来,走一遍真实小项目任务:给一个已有项目生成一份 README。

这个任务用到了全文主线能力:工作区、会话、工具调用、目标、审阅。

11.1 任务目标

分析当前工作区的项目,生成一份 README.md,
包含:项目简介、主要功能、使用说明。

11.2 开工前确认三件事(缺一不可)

  1. ✅ 已配置好模型(API 密钥有效)
  2. ✅ 已添加工作区(指向目标项目根目录)
  3. ✅ 权限模式为 Workspace Write(允许写文件)

11.3 Step 1:新建会话 + 设目标

新会话,先设定目标,防止跑偏:

设定目标:为当前工作区的项目生成 README.md,只做这一件事。

11.4 Step 2:发任务(指令要具体)

分析这个项目是做什么的,然后生成一份 README.md,
包含项目简介、主要功能和使用说明。
先读一下项目的关键文件(package.json / pyproject.toml / Cargo.toml 等)再动笔。

注意指令里的三个要点:

  • 做什么:生成 README
  • 产出在哪README.md
  • 怎么干:先读关键文件再动笔

指令越具体,结果越可控。

11.5 Step 3:盯工具调用树

发送后,盯住消息流的工具调用树(5.2 节)。你会看到它反复"读一下、想一下、再读一下"——这是正常的,它正在理解你的项目。

典型流程:

[Think]     需要确定项目类型,先读清单文件
[ReadFile]  package.json
[ReadFile]  src/index.ts
[ReadDir]   src/
[Think]     这是一个基于 Hono 的 API 服务,含 3 个路由模块
[WriteFile] README.md
[Reply]     已完成,README.md 已生成

11.6 Step 4:审阅 + 调整

agent 完成后,对话区出现 README 草稿,工作区里多了 README.md 文件。别急着收工,做两件事:

  1. 审阅内容:打开文件看是否准确,项目名、命令、功能描述对不对
  2. 不满意就改:直接在对话里说"安装命令应该是 pnpm 不是 npm,改一下",agent 会就地修订

11.7 Step 5:收尾

满意后,这单任务就完成了。你可以:

  • 继续让它"补一份 CONTRIBUTING.md"
  • 分叉(7.3)出一条新分支试试不同 README 风格
  • 归档这个会话,下次回来续聊

回顾一下:工作区、会话、工具调用、目标、审阅——全文主线能力,在这个小任务里全部用上了。


第十二部分:FAQ 速查表

全文出现过的问题汇总,遇到坑先来这翻:

问题解法
npx 下载慢 / 失败换 npm 国内镜像:npm config set registry https://registry.npmmirror.com
端口被占用dsh web --port 8080,访问 http://127.0.0.1:8080/
node -v 版本太老需 Node.js 22+,官网下载最新 LTS 覆盖安装
浏览器打不开界面以终端打印地址为准,确认端口一致、无报错,再刷新
保存后模型不可用 / 密钥无效密钥可能没复制全(sk- 开头一整串),或刚创建未生效,重建一个
提示余额不足DeepSeek 按量付费,新账号可能需充值,去平台费用页查看
想用别的模型设置 → 模型 → 添加提供方(内置 20+),或添加 OpenAI 兼容自定义提供方
API 密钥泄露平台吊销重建,旧密钥立即失效;别截图发群、别提交 git
添加工作区但侧边栏没有确认选的是文件夹不是文件;同一目录只能添加一次
删工作区文件会丢吗不会。删除只是移除分组记录,文件与会话都保留
会话太多找不到用侧边栏搜索框,按标题或内容搜;不用的归档
想回到昨天的对话点侧边栏会话行,历史完整加载,直接续聊
agent 跑偏了先设目标(6.5)再发任务;跑偏了直接说"停,回到目标上";或用计划模式(6.6)
agent 运行太久看工具调用树它卡在哪;长任务放后台(6.8),或指令里限定范围
回答不满意换更强模型(6.1)或调高推理等级,再检查指令是否具体
老是弹审批说明它想动工作区外的东西。看清操作再决定:该放行放行,不该放行拒绝(6.4)
对话视图 vs 轨迹视图对话是"人话版",轨迹是原始轮次记录(USER/CONTEXT/ASSISTANT/TOOL),排查细节用轨迹(6.10)
界面英文想换中文设置 → 通用 → 语言 → 中文
界面太亮/太暗设置 → 通用 → 外观,浅色/深色/跟随系统(8.4)
无人值守跑任务用 headless:dsh run "..."(9.1)
想限制权限更严切 Read Only,或保持 Workspace Write 并在审批时拒绝超范围操作(10.1)
想加新能力装插件或技能。插件在设置 → 插件查看,技能在会话里用 / 调用

结语:从"问它"到"让它干"

回顾你走过的路:

dsh 是什么 → 装环境 → 认界面 → 发第一条指令 → 进阶功能 → CLI → 安全边界 → 完成真实任务

你已经完成了从零到一的跨越

dsh 的真正价值,不在于它用了多强的模型,而在于它把"让 AI 在你的真实工作环境里、按你的规则、持续把一件事干完"这件事,变成了一套可控、可审计、可扩展的流程。

MIT 开源 + 插件生态,意味着它不会停留在今天这个样子。社区已经在冒出插件、工作流模板、预设配置——你现在上车,正好能参与它的演进

接下来,去你自己的项目里,让 agent 帮你干第一件真实的活吧。遇到问题,回来翻这篇指南。


在这里插入图片描述

参考资料


本文基于公开资料与官方设计整理,版本迭代较快,具体以官方最新文档为准。如发现偏差,欢迎在评论区指正。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐