FIELD GUIDE · 03

DeepSeek Harness 第一次使用:从启动到完成第一个智能体任务

如果你已经能打开 DeepSeek Harness Web UI(网页界面),这一篇只做一件事:完成第一个真正可验证的智能体(Agent)任务。我们不会用「你好,你是谁?」来判断 DSH 是否正常——模型能回答文字,只能证明模型请求可能成功了,还不足以证明工作区和工具调用这条主链路真的在工作。

直接答案

配置一个可用模型,新建空测试目录并生成随机验证文件,选择该工作区与标准模式后,让智能体只读取这个文件并原样返回字符串。当出现真实的文件读取工具调用、且返回值与本地文件内容完全一致时,第一次闭环即告成功。
本篇目录

这一篇的目标不是「聊上天」,而是跑通一条完整链路:

OUTPUT
模型请求成功
→ 工作区正确
→ Agent 发起工具调用
→ 工具读取本地文件
→ Agent 返回文件中的随机值

这才是第一次完整闭环。

00 / PREREQUISITES

开始前先确认两件事

继续之前,你应该已经完成上一篇《DeepSeek Harness 安装与启动教程》,并满足两个条件:Web UI 可以访问;DSH 进程仍在运行。

这次测试为什么只做「读取文件」?

当前标准模式是功能完整的编码智能体,具备以下能力:

  • 文件读取和编辑;
  • Shell(命令行执行);
  • 文件与网页检索;
  • 技能(Skill);
  • 计划(Plan);
  • 目标(Goal);
  • 子代理(Sub-agent);
  • 工作流(Workflow)。

因此第一次测试不建议直接让智能体修改项目、安装依赖、删除文件、执行复杂 Shell 或操作真实业务数据。

01 / TEST WORKSPACE

第一步:准备一个测试工作区

建议新建一个空目录,例如 dsh-first-run-test。macOS / Linux 示例:

TERMINAL
mkdir -p ~/Desktop/dsh-first-run-test
cd ~/Desktop/dsh-first-run-test

Windows PowerShell 示例:

TERMINAL
mkdir "$HOME\Desktop\dsh-first-run-test"
cd "$HOME\Desktop\dsh-first-run-test"

如果目录已经存在,可以直接进入。这次不要使用公司生产项目、包含客户资料的目录、密钥目录、个人重要文档目录或系统目录。

02 / VERIFY FILE

第二步:生成一个随机验证文件

进入测试目录以后,运行下面的命令。它会在当前目录写入 dsh-verify.txt,内容是一个随机生成的唯一字符串:

TERMINAL
node -e "const fs=require('fs'); const v='DSH-VERIFY-'+require('crypto').randomUUID(); fs.writeFileSync('dsh-verify.txt',v); console.log(v)"

终端会输出类似下面的随机值,同时当前目录会多出一个 dsh-verify.txt,里面保存的就是刚才生成的字符串:

OUTPUT
DSH-VERIFY-6cf52f3c-4e74-47ce-a5ab-8fa7c3352f31

为什么不用写死的验证码?

如果文章直接告诉智能体「答案是 ABC123」,即使模型最终回答出 ABC123,你也无法证明它真的读取了文件。随机值每次都不同,而且接下来我们不会把这个值写进提示词,这样就更容易验证:智能体是否真的通过工具拿到了本地内容。

03 / MODEL

第三步:配置一个可用模型

打开 Web UI 的「设置 → 模型」。如果你使用 DeepSeek 官方模型,只需要三步:找到 DeepSeek;输入 API 密钥(API Key);保存。当前官方模型配置在保存后,下一次请求即可生效,不需要重启 DSH 服务器。

凭据安全

如果你要配置 OpenAI、Anthropic、公司网关、自定义 API、图片模型或特殊兼容参数,不要在这一篇展开,直接看《DeepSeek Harness 模型配置教程》。这一篇只需要达成一个目标:先有一个能正常请求的模型。

04 / WORKSPACE PICKER

第四步:选择测试工作区

回到主界面。全新的 Web UI 不会默认选中工作区(Workspace)——这个会话里的智能体当前围绕哪个文件目录工作,就是由工作区决定的。当前官方 Web UI 在没有选中工作区时,会话输入区域不可正常用于开始任务。

01首次进入的欢迎页:需要先选择工作区,才能开始会话任务

点击「添加工作区 / 选择工作区」,选中刚才创建的 dsh-first-run-test

02点击选择工作区后的下拉列表;「添加工作区」会调用系统原生目录选择器

选中后,智能体才能针对这个目录里的文件执行任务。

05 / AGENT PRESET

第五步:第一次先选择「标准模式」

新会话使用的 Agent 预设(Agent Preset),第一次建议选择标准模式(Standard)。这是 DeepSeek Harness 当前四个内置 Agent 预设之一,官方将标准模式描述为「功能完整的编码智能体」,它包含本次验证需要的文件工具。

这里先不要展开另外三个预设:PTC 模式、极简模式、创造模式。它们分别适合什么场景,会在《DeepSeek Harness Agent 预设怎么选?》单独说明。

06 / FIRST TASK

第六步:发送第一次可验证任务

发送之前确认三件事:模型已经选择;工作区是 dsh-first-run-test;Agent 预设是标准模式。然后把这句话原样发给智能体:读取当前工作区里的 dsh-verify.txt。只返回文件中的完整字符串,不要猜测,不要修改任何文件。

07 / TOOL CALLS

第七步:观察「工具调用」,不要只看最终答案

发送任务以后,重点观察是否出现真实工具调用(Tool Call)。具体工具名称可能随着预设和当前实现变化,你不需要为了通过本教程记住底层 Tool ID,只需要判断三点:

  1. 智能体是否尝试读取工作区文件;
  2. 工具调用是否成功;
  3. 最终答案是否来自工具结果。

如果模型直接回答了一个随机字符串,却没有任何读取行为,不要仅凭「答案看起来像」就判断通过。这正是 DSHOPC 要把「模型回答成功」和「智能体工具链路成功」分开的原因。

03一轮真实工具调用的完整过程示例:上下文注入、Think、Write 工具调用、回复与产物、统计条。此图来自干净基线工作区执行 `dsh-verify` 写文件任务时采集的轨迹,仅用于说明轨迹结构,与本篇的只读任务语境不同
04同一轮 `dsh-verify` 写入任务的轨迹全景:把单个回合放回完整链路中,按顺序观察每次工具调用
05Write 工具调用细节:展开单次调用可以核对参数与执行结果,同样来自干净基线工作区的写入任务
08 / VERIFY RESULT

第八步:核对智能体返回的值

智能体最终应该只返回类似 DSH-VERIFY-6cf52f3c-4e74-47ce-a5ab-8fa7c3352f31 的完整字符串。为了确认文件的真实内容,可以在测试目录运行:

TERMINAL
node -e "console.log(require('fs').readFileSync('dsh-verify.txt','utf8'))"

终端显示的字符串应该和智能体返回的完全一致。如果一致,而且过程中确实发生了读取文件的工具调用,第一个可验证智能体任务就成功了。

STEP

为什么「能聊天」还不够?

假设你只问「1 + 1 等于多少」,模型回答 2。这只能说明模型生成回答的链路正常。但 DeepSeek Harness 真正重要的部分还没有验证:工作区、工具、文件访问、工具调用结果、智能体与 Harness 的协作。所以 DSHOPC 把第一次成功分成两层。

第一层:模型成功

OUTPUT
用户消息
→ 模型
→ 文本回答

第二层:智能体成功

OUTPUT
用户任务
→ 模型判断需要工具
→ Harness 执行工具
→ 工具结果返回
→ 模型继续完成任务

本篇真正要通过的是第二层。

STEP

如果输入框不能使用,先检查什么?

不要第一反应重装 DSH,先检查两个基础条件。

一、有没有选工作区?

当前 Web UI 需要工作区才能开始普通会话任务。如果没有,先选择 dsh-first-run-test

二、有没有可用模型?

如果当前没有选择到可用模型,返回「设置 → 模型」检查。如果问题涉及 API 密钥、MISSING_CREDENTIALUNKNOWN_MODEL、自定义 API 地址或请求兼容问题,进入《DeepSeek Harness 模型配置教程》,或直接进入《DeepSeek Harness 常见问题与报错排查》。

STEP

失败时先检查什么?

先不要同时改五个设置,按顺序检查。

1. 工作区是不是选错了?

确认 Web UI 当前选中的目录就是 dsh-first-run-test

2. 文件真的存在吗?

在该目录运行:

TERMINAL
node -e "console.log(require('fs').existsSync('dsh-verify.txt'))"

应该输出 true

3. 当前是不是标准模式?

第一次验证先不要切到能力更精简的预设。

4. 工具调用是不是被权限或审批拦住了?

如果 Web UI 出现审批请求,先看清楚它正在请求什么操作。对于本次任务,只需要读取测试文件;如果它请求执行与任务明显无关的危险操作,不要为了「跑通教程」盲目批准。

STEP

审批弹窗应该怎么处理?

当前 DSH 的某些操作会根据权限策略请求审批。第一次看到审批时,不要形成「想让智能体成功就全部点允许」的习惯,应该先判断:这个操作是不是当前任务确实需要的?

本篇任务只要求读取一个测试文件。如果请求与读取文件合理相关,可以结合界面信息判断。如果请求删除文件、修改大量内容、执行不相关命令或使用高风险权限,不要为了完成教程强行通过。

STEP

第一次会话不要顺便测试十种功能

当随机值读取成功以后,先停在这里。不要立刻在同一个测试里继续:安装插件(Plugin)、接入 MCP(Model Context Protocol,模型上下文协议)、创建技能、切换创造模式、开启 Full access,或让智能体大规模改代码。

原因是:你刚刚建立了一个「最小正常基线」。后续任何能力出问题,都可以和这个基线对比。例如基础文件读取正常,但安装某插件后 DSH 启动失败——这时排错范围会小很多。

STEP

第一次任务成功以后,你已经验证了什么?

如果完整通过本篇,你至少知道以下六层各自是通的:

  • DSH 服务层:Web UI 可以正常访问。
  • 模型层:模型可以正常请求。
  • 工作区层:智能体能在正确目录中工作。
  • Agent 预设层:标准模式已经成功组成。
  • 工具层:智能体能真实调用文件相关工具。
  • Harness 链路:工具结果能够回到模型,并影响最终回答。

因此这一次已经不只是「网页打开了」,而是最小智能体闭环已经跑通。

STEP

怎样算第一次使用成功?

请逐项确认:

  • Web UI 正常打开;
  • 一个模型可以请求;
  • 已选择 dsh-first-run-test 工作区;
  • 当前使用标准模式;
  • dsh-verify.txt 已生成随机值;
  • 提示词没有泄露随机值;
  • 智能体出现了真实文件读取工具调用;
  • 工具调用成功;
  • 智能体返回的值和文件内容完全一致。

如果以上全部满足,第一次 DeepSeek Harness 智能体任务验证成功。

STEP

下一步

第一次智能体闭环跑通后,不要急着进入插件,先把日常基础补齐:想配置其他模型,继续模型配置教程;想看懂整个界面,继续 Web UI 使用指南;不知道标准、PTC、极简、创造模式怎么选,继续 Agent 预设专篇。如果刚才任一步失败,随时进入常见问题与报错排查。

SOURCES

DSHOPC 是独立社区项目,与 DeepSeek 不存在隶属、授权或背书关系。