DeepSeek Harness 第一个任务:配置密钥→选工作区→跑通会话
装好 Web UI 后,多数人的第一反应是:打开页面,直接输入问题。然后你会撞上两件事——输入框是灰的,以及不知道去哪填 API 密钥。这两件事背后是 DSH 的两个核心设计,理解了它们,第一个任务会跑得明明白白。
为什么输入框一开始是灰的:工作区
DSH 的 agent 不是在"虚空"里工作的——它需要一块能读、能写、能执行命令的地盘,这就是工作区(workspace)。没有工作区,agent 无从下手,所以 Web UI 干脆把输入框禁用掉,逼你先交代清楚。
启动命令在哪执行,那个目录就是默认候选:
npx @deepseek-ai/dsh web
# 在 ~/projects/my-repo 下执行 → 默认工作区就是 ~/projects/my-repo
点击界面上的选择工作区,添加你希望 agent 操作的项目目录并选中它。选中的那一刻输入框才可用。
新手建议:第一次跑先用一个专门的测试目录当工作区,别一上来就把真实项目交给 agent。等熟悉了它的行为(会读哪些文件、执行哪些命令、什么时候问你),再切到真实仓库。这跟 4.5 沙箱与安全:三种权限模式 讲的权限模式直接相关。
为什么密钥保存后就看不到了:只写设计
打开 设置 → 模型,在 DeepSeek 卡片里粘贴你的 API 密钥,保存。

然后你会发现:刚才贴进去的密钥消失了,页面上只剩一个脱敏描述符。这不是 bug,是刻意设计——密钥是"只写"的:
-
明文密钥落盘在
$DSH_HOME/.credentials.yaml -
界面和 settings 只保留一个凭据引用(指向哪个密钥),永远不存明文
-
好处:页面被截图、被分享、被浏览器插件读取时,密钥不会泄露
模型路由保存后立即生效,不需要重启服务器。想换其他模型(Anthropic、OpenAI、自建网关等)后面 2.4 模型配置:provider 与 API 凭据管理 细讲。
跑第一个任务
现在输入框可用了,发一句最能暴露 agent 能力边界的话:
Summarize this repository and identify its main packages.
(总结这个仓库,找出它的主要模块。)这句话会逼 agent 做完整套动作:
-
读——扫目录结构、读 package.json 等关键文件
-
执行——必要时跑命令(如
ls、cat、构建脚本) -
委派——复杂任务拆给子 agent 并行处理(见 4.1 子代理 Subagent:委派任务给子 Agent)
-
规划——维护一份执行计划,一步步推进
过程中如果某个操作触碰了当前权限策略,Web UI 会弹窗问你,而不是自动放行。这是 DSH 的审批机制在兜底。
任务结束之后
-
会话被持久化到
$DSH_HOME/sessions,关掉浏览器也不丢,可以恢复继续(机制见 3.2 会话与记忆:持久化与会话恢复) -
agent 对工作区做的所有改动都是真实生效的——新增了文件、改了代码,都要自己过目
常见报错
|
现象 |
原因与处理 |
|---|---|
|
输入框一直灰的 |
没选工作区。点"选择工作区"选中一个目录 |
|
|
密钥没配好:到模型页保存密钥,或确认引用的环境变量存在 |
|
|
会话里选的模型已不存在:重新选择一个已配置的模型 |
|
模型发现返回 401 |
密钥不对。更换密钥后重试 |
更多问题见 7.2 排错指南:常见错误与修复。
接下来读什么
-
想搞清楚刚才 agent 的每一步是怎么运作的 → 3.1 Agent 循环:会话、轮次与步骤
-
想用代码而不是界面 → 1.5 Python SDK 快速上手(附完整代码)
-
想换模型、接公司网关 → 2.4 模型配置:provider 与 API 凭据管理
← 上一篇:1.3 安装与首次启动:npx 一条命令启动 Web UI | 下一篇:1.5 Python SDK 快速上手(附完整代码) →
↑ 返回 教程总目录



