← 全部极客知识库

主流 Agent 入门教程 / DeepSeek Harness

7. 案例一-第一次对话

原文备份 · 第 8 / 21 篇 · 查看极客时间原知识库 ↗

本篇目录 · 14 节

来源:DeepSeek Harness

本文属于《DeepSeek Harness 入门教程(实战版)》· 第二部分 · 安装并完成第一次启动

第 7 章 第一次对话:让 DSH 接手日报助手

前面六章把 DSH 和项目运行环境准备好了。现在先不研究 Provider、Agent 预设和插件配置,直接完成一次足够小、又能认真验收的任务:让 DSH 在空工作区中创建“日报助手”的项目说明和资讯源配置。

这一章结束时,daily-report 目录里应该只有两个新文件:

daily-report/
├── PROJECT.md
└── sources.json

我们暂时不让 Agent 一口气写完整程序。第一次任务如果同时涉及联网、代码、测试和多次修复,出了问题很难判断卡在哪一层。先用两个文件走通“选择工作区 → 新建会话 → 审查权限 → 执行任务 → 独立验收”的闭环,后面再逐步加功能。

7.1 确认起点

开始前请确认:

  • DeepSeek Harness Desktop 已经打开,或者 CLI/Web 页面仍能访问;
  • 系统终端中的 node -v、npm -v 能输出版本;
  • 已经准备好一个空的 daily-report 目录;
  • 目录中没有私人文件、真实密钥和其他项目。

前面章节使用的默认位置是:

系统 课程目录
macOS “文稿”中的 dsh-learning/daily-report
Linux ~/dsh-learning/daily-report
Windows “文档”中的 dsh-learning\daily-report

如果跳过了安装章节,现在新建这个空目录即可。目录位置可以不同,但后面都要选中同一个目录。

7.2 先分清:启动目录不等于已选工作区

在 CLI/Web 路线中,dsh 会把启动命令所在目录当作文件选择器的默认位置,但全新的 Web UI 仍然没有自动选中工作区。没有工作区时,输入框通常不可用。这一点在 官方 Web UI 指南 中有明确说明。

工作区可以先理解成“这次项目任务允许围绕哪个目录展开”。它既是侧边栏里持续保存的项目记录,也是新会话创建时的工作目录。会话一旦创建,它的工作目录就随会话确定;所以应先选工作区,再新建会话。

不要把用户主目录、整块磁盘或装满私人资料的“文档”目录直接设为工作区。我们专门准备 daily-report 空目录,就是为了把第一次写入限制在一个清晰、可恢复的范围内。

7.3 把 daily-report 添加为工作区

Desktop 和 Web UI 的页面结构基本一致:左侧是工作区与会话,中间是当前任务。按下面的顺序操作:

  1. 在主界面点击“选择工作区”(界面为英文时是 Choose workspace);
  2. 如果列表里还没有 daily-report,选择“添加工作区”或带加号的入口;
  3. 在目录选择器中找到前面创建的 daily-report 文件夹;
  4. 确认添加,并在工作区列表中选中它;
  5. 检查页面上显示的工作区名称或路径确实指向 daily-report。

Desktop 会调用系统原生的文件夹选择窗口。Web UI 则由运行 DSH 的那台 Host 选择目录:如果 DSH 跑在远程 Linux 服务器上,这里要选服务器上的 ~/dsh-learning/daily-report,不是你笔记本电脑上的同名目录。

选中后,新任务输入区域应该从不可用变为可以操作。侧边栏里也应出现 daily-report 工作区。

如果文件夹选错了

先不要发送消息。重新打开工作区选择器,选中正确目录后再创建新会话。删除侧边栏中的工作区记录并不会自动删除磁盘上的文件,但第一次练习没有必要测试这项管理功能。

7.4 确认模型已经可用

Agent 必须有一个可用模型才能回答。你在首次启动时可能已经完成了 DeepSeek 账号登录,也可能填过官方 API Key;只要会话顶部的模型入口能选到可用模型,就可以直接继续。

如果模型列表为空、发送按钮不可用,或发送后提示缺少凭证,先完成一条最短配置路径:

  • Desktop 欢迎页仍提供账号登录时,可以完成登录并使用账号模型;
  • 或打开“设置 → 模型”,在 DeepSeek 卡片中填入官方 API Key 并保存;
  • CLI/Web 通常使用“设置 → 模型”的 API Key 路线。

不要把 API Key 发进聊天输入框,也不要写进 daily-report 项目文件。模型页保存的 Key 是只写凭证,保存后界面只显示配置状态,不会重新展示原始密钥。

这里只要让一个模型可用,不必现在研究全部字段。账号模型、官方 API Key、内置 Provider 和自定义 Provider 的差异,会在下一章完整解释。当前版本中,账号任务与 API Key 任务的模型入口彼此独立,因此要以这个会话实际选中的模型为准,而不是只看“我已经登录”或“我已经保存 Key”。v0.1.7-rc.2 更新说明

7.5 新建一个边界清楚的会话

在 daily-report 工作区下点击“新建任务”或空白的新会话入口。第一次练习保留下面两项设置:

  • Agent 预设使用默认的标准模式;
  • 权限使用 Workspace Write(工作区内修改),不要选择 Full access(完全权限)。

当前版本把新任务的 Agent 模式放在“设置 → 代码工作工具”中统一管理。如果你从未改过,保留默认值即可;如果之前做过实验,确认新任务使用标准模式后,再重新创建这个会话。

“工作区内修改”允许工具读写当前工作区,并在需要时询问具体操作;“完全权限”会扩大可操作范围,这个两文件任务用不到。权限选择器修改的是当前会话,设置页中的默认权限则影响以后新建的会话。官方默认权限的含义可参考 Permission Presets 说明。

可以先记住一个简单区别:

  • 权限范围回答“Agent 最多能碰到哪里”;
  • 审批请求回答“这一次具体操作是否允许执行”。

权限范围合适,不代表所有操作都会自动通过;出现审批卡片时仍要看清命令和路径。

7.6 发送第一次任务

把下面这段话完整发送给 Agent:

我们要在当前空工作区启动一个“日报助手”项目。请只完成项目初始化,不要开始写程序。

请创建且只创建两个文件:

1. PROJECT.md
   - 包含“项目目标”“输入与输出”“技术约束”“首版验收标准”四个二级标题;
   - 说明项目将读取 sources.json,用 Node.js 原生 fetch 抓取资讯,最后生成 daily-report.md;
   - 技术约束写明:使用 ES Modules、零第三方依赖、Node.js 内置 test 模块。

2. sources.json
   - 顶层是 JSON 数组;
   - 包含下面两个对象,每个对象只有 name 和 url:
     - DeepSeek Harness Releases
       https://api.github.com/repos/deepseek-ai/deepseek-harness/releases?per_page=5
     - Node.js Releases
       https://api.github.com/repos/nodejs/node/releases?per_page=5

创建后,请只运行一条本地 Node.js 命令,验证 sources.json 能解析、数组长度为 2,而且每项都有非空的 name 和 url。不要访问网络,不要安装依赖,也不要创建其他文件。

最后告诉我:创建了哪些文件、验证命令的实际输出是什么。不要只说“应该可以运行”。

这段任务看上去比“帮我创建日报助手”更长,但每一部分都有用途:

  • “只创建两个文件”限制改动范围;
  • 明确标题和 JSON 结构,减少模型自由发挥造成的偏差;
  • “不要访问网络、不要安装依赖”排除第一次任务不需要的外部行为;
  • 要求展示实际验证输出,避免用一句“应该没问题”代替执行。

它没有指定 Agent 必须调用哪个文件工具或哪条 Shell 命令,因为具体工具属于运行时实现;我们约束的是结果和风险边界。

7.7 看执行过程:计划、工具和审批

标准模式通常会先检查工作区,再创建文件,最后运行 Node.js 验证。你可能看到几类内容:

  • 普通文字:Agent 对当前步骤的说明;
  • 文件工具卡片:读取、创建或修改文件;
  • Shell/终端卡片:运行本地验证命令;
  • 审批卡片:等待你决定是否允许一次具体操作;
  • 代码变更或差异视图:展示文件新增、删除和修改。

不要要求每个模型都以完全相同的顺序行动。你真正需要判断的是:它是否始终围绕两个目标文件工作,以及是否完成了真实验证。

审批出现时,先核对四件事

这次任务允许的范围很小:

  1. 路径应位于当前 daily-report 工作区;
  2. 可以创建或修改 PROJECT.md、sources.json;
  3. 可以执行只读取 sources.json 的本地 node -e ... 验证;
  4. 不需要 npm install、联网请求、删除命令,也不需要访问工作区外的目录。

符合这些边界,可以选择“允许一次”。如果审批内容出现其他目录、安装依赖、下载脚本或删除操作,先拒绝,然后在同一会话中指出偏差。

审批的“允许一次”只授权卡片里那次操作,不等于把后续所有命令永久放行。DSH 的审批结果是按具体请求记录并默认失败关闭的。官方审批机制说明

7.8 审查实际改动

Agent 说完成以后,先看界面中的文件树或代码变更区域:

  1. 文件列表应只有 PROJECT.md 和 sources.json 两个新增文件;
  2. PROJECT.md 应包含约定的四个二级标题;
  3. sources.json 顶层应是数组,不是带 sources 字段的对象;
  4. 两个对象都只能有 name、url 两个字段;
  5. 差异视图应只有新增内容,不应修改工作区外文件。

这里的关键不是挑模型的文笔,而是确认“实际文件”与任务边界一致。工具卡片显示成功,只能证明工具返回了成功;文件内容是否符合要求,还要看产物本身。

如果多了文件,不要急着手工删。继续在同一会话发送:

这次任务约定只创建 PROJECT.md 和 sources.json,但当前工作区还出现了其他文件。请先列出多余文件及其用途,不要继续修改;等我确认后再处理。

这能让你先判断额外内容是否由 Agent 创建,避免误删原来就存在的文件。

7.9 用自己的终端独立验收

最后不要只相信 Agent 报告的验证结果。打开系统终端,进入 daily-report 目录,亲自执行:

node -e "const s=JSON.parse(require('fs').readFileSync('sources.json','utf8')); const ok=Array.isArray(s)&&s.length===2&&s.every(x=>x.name&&x.url); if(ok===false) process.exit(1); console.log('sources.json OK:',s.length)"

这条命令在 macOS、Linux 的常见 Shell 和 Windows PowerShell 中都可以使用。成功时应看到:

sources.json OK: 2

还可以列出目录内容,确认文件数量:

macOS、Linux:

ls -la

Windows PowerShell:

Get-ChildItem

除了操作系统可能显示的隐藏元数据外,课程创建的文件应只有 PROJECT.md 和 sources.json。打开两个文件再读一遍;这是对“内容正确”的检查,而 Node 命令只验证 JSON 结构。

验收失败时怎么继续

保留真实输出,把它原样交回同一会话。例如:

我在系统终端执行验收命令后没有得到 sources.json OK: 2。下面是完整输出:

(粘贴错误信息)

请只检查 PROJECT.md 和 sources.json,先解释根因,再做最小修改并重新运行同一条验证命令。不要创建新文件,也不要访问网络。

“同一会话”很重要:前面的任务、工具结果、审批和改动都在这条会话的记录里。新开会话会丢掉这段近距离上下文,需要重新解释问题。

7.10 三个概念,现在可以记住了

完成第一次任务后,再回头看 DSH 的三个核心对象会更直观:

  • 工作区(Workspace):一个持续保存的项目目录记录。它决定新会话从哪个目录开始工作;它不是一张只用于分类的标签。
  • 会话(Session):一次任务的持续记录,包含用户消息、模型响应、工具调用、审批和结果。修复同一问题时优先留在原会话。
  • 权限与审批:权限控制可触达范围,审批控制某个具体动作。第一次练习用“工作区内修改 + 按需审批”,不需要完全权限。

模型负责判断下一步,标准模式提供完整的 Agent 工作方式,文件和 Shell 能力负责实际操作,工作区与权限则限制这些能力的边界。DSH 的价值不只是“生成一段文字”,而是把这些层组合成一条可观察、可审查、可继续的任务过程。

7.11 本章验收

进入下一章前,请确认:

  • daily-report 已经添加并选为工作区;
  • 新会话使用标准模式和 Workspace Write(工作区内修改)权限;
  • 工作区中存在 PROJECT.md、sources.json,没有课程意外创建的其他文件;
  • 你实际查看过文件内容或代码差异;
  • 自己运行验证命令后看到 sources.json OK: 2;
  • 你知道模型配置、工作区、会话、权限和单次审批分别解决什么问题。

现在项目已经有了明确边界和第一份可验证配置。下一章会系统梳理模型的三种 Provider 配置方式,并用这个工作区做一次只读对比,避免“换模型”和“换 Agent 工作方式”混为一谈。


← 上一章:Windows 安装 | 回目录 | 下一章:模型 Provider:官方、内置与自定义 →