这一篇的目标不是「聊上天」,而是跑通一条完整链路:
模型请求成功
→ 工作区正确
→ Agent 发起工具调用
→ 工具读取本地文件
→ Agent 返回文件中的随机值
这才是第一次完整闭环。
开始前先确认两件事
继续之前,你应该已经完成上一篇《DeepSeek Harness 安装与启动教程》,并满足两个条件:Web UI 可以访问;DSH 进程仍在运行。
这次测试为什么只做「读取文件」?
当前标准模式是功能完整的编码智能体,具备以下能力:
- 文件读取和编辑;
- Shell(命令行执行);
- 文件与网页检索;
- 技能(Skill);
- 计划(Plan);
- 目标(Goal);
- 子代理(Sub-agent);
- 工作流(Workflow)。
因此第一次测试不建议直接让智能体修改项目、安装依赖、删除文件、执行复杂 Shell 或操作真实业务数据。
第一步:准备一个测试工作区
建议新建一个空目录,例如 dsh-first-run-test。macOS / Linux 示例:
mkdir -p ~/Desktop/dsh-first-run-test
cd ~/Desktop/dsh-first-run-testWindows PowerShell 示例:
mkdir "$HOME\Desktop\dsh-first-run-test"
cd "$HOME\Desktop\dsh-first-run-test"如果目录已经存在,可以直接进入。这次不要使用公司生产项目、包含客户资料的目录、密钥目录、个人重要文档目录或系统目录。
第二步:生成一个随机验证文件
进入测试目录以后,运行下面的命令。它会在当前目录写入 dsh-verify.txt,内容是一个随机生成的唯一字符串:
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,里面保存的就是刚才生成的字符串:
DSH-VERIFY-6cf52f3c-4e74-47ce-a5ab-8fa7c3352f31
为什么不用写死的验证码?
如果文章直接告诉智能体「答案是 ABC123」,即使模型最终回答出 ABC123,你也无法证明它真的读取了文件。随机值每次都不同,而且接下来我们不会把这个值写进提示词,这样就更容易验证:智能体是否真的通过工具拿到了本地内容。
第三步:配置一个可用模型
打开 Web UI 的「设置 → 模型」。如果你使用 DeepSeek 官方模型,只需要三步:找到 DeepSeek;输入 API 密钥(API Key);保存。当前官方模型配置在保存后,下一次请求即可生效,不需要重启 DSH 服务器。
凭据安全
如果你要配置 OpenAI、Anthropic、公司网关、自定义 API、图片模型或特殊兼容参数,不要在这一篇展开,直接看《DeepSeek Harness 模型配置教程》。这一篇只需要达成一个目标:先有一个能正常请求的模型。
第四步:选择测试工作区
回到主界面。全新的 Web UI 不会默认选中工作区(Workspace)——这个会话里的智能体当前围绕哪个文件目录工作,就是由工作区决定的。当前官方 Web UI 在没有选中工作区时,会话输入区域不可正常用于开始任务。
点击「添加工作区 / 选择工作区」,选中刚才创建的 dsh-first-run-test:
选中后,智能体才能针对这个目录里的文件执行任务。
第五步:第一次先选择「标准模式」
新会话使用的 Agent 预设(Agent Preset),第一次建议选择标准模式(Standard)。这是 DeepSeek Harness 当前四个内置 Agent 预设之一,官方将标准模式描述为「功能完整的编码智能体」,它包含本次验证需要的文件工具。
这里先不要展开另外三个预设:PTC 模式、极简模式、创造模式。它们分别适合什么场景,会在《DeepSeek Harness Agent 预设怎么选?》单独说明。
第六步:发送第一次可验证任务
发送之前确认三件事:模型已经选择;工作区是 dsh-first-run-test;Agent 预设是标准模式。然后把这句话原样发给智能体:读取当前工作区里的 dsh-verify.txt。只返回文件中的完整字符串,不要猜测,不要修改任何文件。
第七步:观察「工具调用」,不要只看最终答案
发送任务以后,重点观察是否出现真实工具调用(Tool Call)。具体工具名称可能随着预设和当前实现变化,你不需要为了通过本教程记住底层 Tool ID,只需要判断三点:
- 智能体是否尝试读取工作区文件;
- 工具调用是否成功;
- 最终答案是否来自工具结果。
如果模型直接回答了一个随机字符串,却没有任何读取行为,不要仅凭「答案看起来像」就判断通过。这正是 DSHOPC 要把「模型回答成功」和「智能体工具链路成功」分开的原因。
第八步:核对智能体返回的值
智能体最终应该只返回类似 DSH-VERIFY-6cf52f3c-4e74-47ce-a5ab-8fa7c3352f31 的完整字符串。为了确认文件的真实内容,可以在测试目录运行:
node -e "console.log(require('fs').readFileSync('dsh-verify.txt','utf8'))"终端显示的字符串应该和智能体返回的完全一致。如果一致,而且过程中确实发生了读取文件的工具调用,第一个可验证智能体任务就成功了。
为什么「能聊天」还不够?
假设你只问「1 + 1 等于多少」,模型回答 2。这只能说明模型生成回答的链路正常。但 DeepSeek Harness 真正重要的部分还没有验证:工作区、工具、文件访问、工具调用结果、智能体与 Harness 的协作。所以 DSHOPC 把第一次成功分成两层。
第一层:模型成功
用户消息
→ 模型
→ 文本回答
第二层:智能体成功
用户任务
→ 模型判断需要工具
→ Harness 执行工具
→ 工具结果返回
→ 模型继续完成任务
本篇真正要通过的是第二层。
如果输入框不能使用,先检查什么?
不要第一反应重装 DSH,先检查两个基础条件。
一、有没有选工作区?
当前 Web UI 需要工作区才能开始普通会话任务。如果没有,先选择 dsh-first-run-test。
二、有没有可用模型?
如果当前没有选择到可用模型,返回「设置 → 模型」检查。如果问题涉及 API 密钥、MISSING_CREDENTIAL、UNKNOWN_MODEL、自定义 API 地址或请求兼容问题,进入《DeepSeek Harness 模型配置教程》,或直接进入《DeepSeek Harness 常见问题与报错排查》。
失败时先检查什么?
先不要同时改五个设置,按顺序检查。
1. 工作区是不是选错了?
确认 Web UI 当前选中的目录就是 dsh-first-run-test。
2. 文件真的存在吗?
在该目录运行:
node -e "console.log(require('fs').existsSync('dsh-verify.txt'))"应该输出 true。
3. 当前是不是标准模式?
第一次验证先不要切到能力更精简的预设。
4. 工具调用是不是被权限或审批拦住了?
如果 Web UI 出现审批请求,先看清楚它正在请求什么操作。对于本次任务,只需要读取测试文件;如果它请求执行与任务明显无关的危险操作,不要为了「跑通教程」盲目批准。
审批弹窗应该怎么处理?
当前 DSH 的某些操作会根据权限策略请求审批。第一次看到审批时,不要形成「想让智能体成功就全部点允许」的习惯,应该先判断:这个操作是不是当前任务确实需要的?
本篇任务只要求读取一个测试文件。如果请求与读取文件合理相关,可以结合界面信息判断。如果请求删除文件、修改大量内容、执行不相关命令或使用高风险权限,不要为了完成教程强行通过。
第一次会话不要顺便测试十种功能
当随机值读取成功以后,先停在这里。不要立刻在同一个测试里继续:安装插件(Plugin)、接入 MCP(Model Context Protocol,模型上下文协议)、创建技能、切换创造模式、开启 Full access,或让智能体大规模改代码。
原因是:你刚刚建立了一个「最小正常基线」。后续任何能力出问题,都可以和这个基线对比。例如基础文件读取正常,但安装某插件后 DSH 启动失败——这时排错范围会小很多。
第一次任务成功以后,你已经验证了什么?
如果完整通过本篇,你至少知道以下六层各自是通的:
- DSH 服务层:Web UI 可以正常访问。
- 模型层:模型可以正常请求。
- 工作区层:智能体能在正确目录中工作。
- Agent 预设层:标准模式已经成功组成。
- 工具层:智能体能真实调用文件相关工具。
- Harness 链路:工具结果能够回到模型,并影响最终回答。
因此这一次已经不只是「网页打开了」,而是最小智能体闭环已经跑通。
怎样算第一次使用成功?
请逐项确认:
- Web UI 正常打开;
- 一个模型可以请求;
- 已选择
dsh-first-run-test工作区; - 当前使用标准模式;
dsh-verify.txt已生成随机值;- 提示词没有泄露随机值;
- 智能体出现了真实文件读取工具调用;
- 工具调用成功;
- 智能体返回的值和文件内容完全一致。
如果以上全部满足,第一次 DeepSeek Harness 智能体任务验证成功。
下一步
第一次智能体闭环跑通后,不要急着进入插件,先把日常基础补齐:想配置其他模型,继续模型配置教程;想看懂整个界面,继续 Web UI 使用指南;不知道标准、PTC、极简、创造模式怎么选,继续 Agent 预设专篇。如果刚才任一步失败,随时进入常见问题与报错排查。