首页 › LLM大语言模型 › Deepseek › DeepSeek Harness › DeepSeek Harness 跑通第一个任务

DeepSeek Harness 跑通第一个任务

装好 Web UI 后,多数人的第一反应是:打开页面,直接输入问题。然后你会撞上两件事——输入框是灰的,以及不知道去哪填 API 密钥。这两件事背后是 DSH 的两个核心设计,理解了它们,第一个任务会跑得明明白白。​

为什么输入框一开始是灰的:工作区​

DSH 的 agent 不是在"虚空"里工作的——它需要一块能读、能写、能执行命令的地盘,这就是工作区(workspace)。没有工作区,agent 无从下手,所以 Web UI 干脆把输入框禁用掉,逼你先交代清楚。​

启动命令在哪执行,那个目录就是默认候选:​

​

代码块​

Plain Text

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 能力边界的话:​

​

代码块​

Plain Text

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 对工作区做的所有改动都是真实生效的——新增了文件、改了代码,都要自己过目​

常见报错​

​

#yQwMsTEIqNpk text { white-space: pre; }#yQwMsTEIqNpk .fb0 { stroke: var(--N900-FG, 0.15); }#yQwMsTEIqNpk .fb0 {stroke: rgba(31,35,41, 0.15)}#yQwMsTEIqNpk .fx0 { stroke-miterlimit: 10; }#yQwMsTEIqNpk .fx0 {stroke-miterlimit: 10}#yQwMsTEIqNpk .fa1 { fill: rgb(187, 191, 196); }#yQwMsTEIqNpk .fa1 {fill: rgb(187, 191, 196)}#yQwMsTEIqNpk .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#yQwMsTEIqNpk .fx1 {font-style: normal}#yQwMsTEIqNpk .fx2 { text-anchor: middle; }#yQwMsTEIqNpk .fx2 {text-anchor: middle}#yQwMsTEIqNpk .fx3 { dominant-baseline: central; }#yQwMsTEIqNpk .fx3 {dominant-baseline: central}#yQwMsTEIqNpk .fx4 { stroke: none; }#yQwMsTEIqNpk .fx4 {stroke: none}#yQwMsTEIqNpk .fc0 { fill: var(--text-caption); }#yQwMsTEIqNpk .fc0 {fill: #646a73}#yQwMsTEIqNpk .fa2 { fill: var(--text-link-disabled); }#yQwMsTEIqNpk .fa2 {fill: rgb(187, 191, 196)}#yQwMsTEIqNpk .fa3 { fill: rgba(132, 138, 144, 0.1); }#yQwMsTEIqNpk .fa3 {fill: rgba(132, 138, 144, 0.1)}#yQwMsTEIqNpk .fx5 { font: 700 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#yQwMsTEIqNpk .fx5 {font-style: normal}#yQwMsTEIqNpk .fx6 { text-anchor: start; }#yQwMsTEIqNpk .fx6 {text-anchor: start}#yQwMsTEIqNpk .fx7 { dominant-baseline: alphabetic; }#yQwMsTEIqNpk .fx7 {dominant-baseline: alphabetic}#yQwMsTEIqNpk .fc1 { fill: rgba(0, 0, 0, 0.85); }#yQwMsTEIqNpk .fc1 {fill: rgba(0, 0, 0, 0.85)}#yQwMsTEIqNpk .fx8 { font: 400 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#yQwMsTEIqNpk .fx8 {font-style: normal}#yQwMsTEIqNpk .fx9 { font: 400 16px LarkHackSafariFont, LarkEmojiFont, ui-monospace, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui; }#yQwMsTEIqNpk .fx9 {font-style: normal}#yQwMsTEIqNpk .fb1 { fill: var(--N900-FG, 0.15); }#yQwMsTEIqNpk .fb1 {fill: rgba(31,35,41, 0.15)}#yQwMsTEIqNpk .fb2 { fill: rgb(223, 223, 223); }#yQwMsTEIqNpk .fb2 {fill: rgb(223, 223, 223)}#yQwMsTEIqNpk .fa4 { fill: var(--bg-body); }#yQwMsTEIqNpk .fa4 {fill: #fff}AB12345现象原因与处理输入框一直灰的模型发现返回 401没选工作区。点"选择工作区"选中一个目录密钥没配好:到模型页保存密钥,或确认引用的环境变量存在会话里选的模型已不存在:重新选择一个已配置的模型密钥不对。更换密钥后重试MISSING_CREDENTIALUNKNOWN_MODEL

​

​