DeepSeek Harness 安全

DSH 排错手册:启动、访问、模型请求与工具失败逐层处理

按最后成功的一步定位问题,提供版本检查、包获取、端口、工作区、API 与文件编辑的操作分支。

进阶 预计 22 分钟 更新 2026/9/5 核验 2026/9/5
本页目录

完成结果

学完后你会留下什么

一份脱敏的问题记录,以及修复后的最小验证步骤。

验证版本
0.1.2-rc.1
适合谁
希望在独立练习环境中学习 DSH 的开发者和 Agent 用户
开始前确认
  • 了解当前为开发者预览版
  • 准备可丢弃或已备份的练习材料

排错时最有用的问题是:**最后一个成功的动作是什么?**下载完成、服务启动、网页打开、模型回复、文件修改和测试通过,是六个不同的检查点。这篇把它们分别处理,避免一次故障就删除全部配置。

命令示例固定 0.1.2-rc.1。除明确写“本站验证”的结果外,下述故障分支是文档和通用诊断整理,不声称每种错误都在本机复现。

先选症状

你看到的现象从哪一节开始
node/npx 找不到,PowerShell 拒绝脚本终端与安装
下载卡住,没有出现地址包获取与启动
终端有地址,浏览器仍打不开本地服务与访问
页面能打开,但无法输入工作区和模型选择
有具体接口错误模型请求
Agent 一直操作但没修好工具执行与成果

终端与安装:先确认三个版本

node --version
npm --version
npx @deepseek-ai/dsh@0.1.2-rc.1 --version

前两条失败时,还没有进入 DSH 层。先重新打开终端并检查 Node 安装位置。本站使用 Node 24.13.0;不要用“电脑装过 Node”代替当前终端输出。

Windows PowerShell 若仅拒绝 npm.ps1npx.ps1,先使用对应的 npm.cmdnpx.cmd。不要未经判断修改全局执行策略,更不要把普通 PATH 错误当成模型密钥问题。

包获取与启动:先确认请求的是哪个包

查询固定版本的公开元信息:

npm view @deepseek-ai/dsh@0.1.2-rc.1 version
npm config get registry

期望第一条返回 0.1.2-rc.1。查询都失败时,检查错误里是 DNS、证书、网络超时还是 registry 返回找不到包。公司网络使用镜像时,向管理员确认该版本是否同步;不要为排错永久改掉所有项目的 registry。

需要更详细日志时,可以在终端运行:

npm exec --loglevel verbose --package=@deepseek-ai/dsh@0.1.2-rc.1 -- dsh --version

公开日志前删除凭据、内部地址和个人路径。不要用关闭证书验证的方式“修好”TLS 错误;应修复受信任证书或正确代理配置。

如果 npm 查询成功但启动失败,保留第一条明确异常及其堆栈开头,不要只截最后一行。

本地服务与访问:先看终端,不猜 URL

运行:

npx @deepseek-ai/dsh@0.1.2-rc.1 web --no-open --port 3088

应输出可访问地址并保持进程运行。如果立即退出,浏览器重试没有意义,先处理终端错误。本站实际版本打印过带 ?token=... 的地址,初次访问使用完整地址;不要分享 token。

**端口占用:**为本次运行换一个空闲端口,不随意结束不认识的进程。无法自动打开浏览器:--no-open 加手动访问就是合理路径,不等于服务失败。

**远程运行:**远程机器的 127.0.0.1 不等于你电脑的本地地址。需要正确的 SSH 转发安排,不能简单把 host 改成 0.0.0.0;当前 CLI 文档明确不支持这一写法。公司部署请沿专门的网络与访问方案处理,本篇不把公网部署混进新手排错。

页面能打开,但无法输入

依次看:

  1. 是否已关闭初始声明与配置引导?
  2. 是否真正添加并选择了工作区,而不只是启动终端位于项目目录?
  3. 是否选择了有效模型?
  4. 当前会话是否正在执行、等待确认或处于不可输入状态?

练习工作区里应该能找到 budget.mjsbudget.test.mjs。压缩包预览、父目录和另一个同名文件夹,都可能导致后续“文件不存在”。

模型请求:先发不调用工具的最小消息

发送“只回复连接成功,不调用工具”。如果这一步也失败,优先检查模型层。

  • MISSING_CREDENTIAL:路由引用的凭据未找到;在设置里检查对应提供方,环境变量方案需要检查启动进程是否继承了变量。
  • UNKNOWN_MODEL:选择或配置中不存在该模型 ID;使用有效目录项重新开会话验证。
  • 401:核对 Key 与端点;429:核对限流/额度的具体错误语义。
  • 网关拒绝 developer role 或 token 字段:按照 兼容性排查 调整相应字段,不批量复制陌生配置。

每次只改变一项,然后重发同一条请求。换模型、换网关、升级程序同时进行,会失去判断原因的依据。

工具执行与成果:调用出现不等于成功

在过程记录中配对看调用参数与返回结果

现象先检查合理下一步
read 找不到文件路径与实际工作区纠正路径,再读取
edit 提示旧文本未匹配文件是否改变、旧文本是否精确重新读取当前文件,再形成替换
提示需要先读取当前会话是否观察过文件read 后再 edit;不先禁用策略
操作被拒绝当前会话权限及拒绝原因调整任务范围或合理确认
已修改但测试找不到命令工作目录在包含测试文件的目录执行
工具报错后仍宣称成功回答是否忽略失败结果指出真实结果,要求修正结论

不能假定每次失败都会自动弹审批,也不能把用户拒绝解释为文件已修改。

Agent 陷入循环,怎样中止并保留证据

使用界面的停止操作,或在明确需要停止整个本地服务时回到启动终端按 Ctrl+C。停止是协作过程,发出停止请求后还应确认进程/任务状态与文件变化。

保留以下三段最小证据:最后一次合法任务描述、重复工具调用及其错误、当前文件实际状态。然后用新的明确任务要求它先分析失败原因,不再重复同一条无效操作。若涉及超范围修改,先人工核查再继续。

用练习项目判断“恢复正常”

不必拿整个业务项目作为排错探针。重新解压 练习包,先运行:

node --test budget.test.mjs

原始状态应为 1 通过 / 2 失败。让 DSH 修复唯一允许的文件后,再由你运行一次,应为 3 通过 / 0 失败。源码正确而测试仍失败时,先排除终端指向另一份解压目录。

一份可以提交给维护者的记录

DSH 版本与安装方式:
操作系统 / Node / npm 版本:
最后成功的动作:
最短复现步骤(从新会话开始):
期望:
实际错误首行:
工具名、脱敏参数、对应结果:
已经尝试的单项调整:

不要附 API Key、Cookie、带 token 的本地 URL 或整份私人会话。向 官方仓库支持入口 提供最小材料,比贴满屏无关日志更容易复现。

官方资料

版本和参数,以这些来源为准

本文按实际任务重写,快速变化的信息仍应在操作前回到官方页面核对。

常见问题

继续操作前,先确认这些边界

是否应该先删除整个 DSH 配置重装?

不应作为第一步。先按阶段定位,保存错误证据,用最小请求或独立 home 验证。

模型说修好了,但测试失败怎么办?

以实际文件和独立测试为准,向模型提供具体输出,并检查是否改错目录或忽略了工具错误。

继续学习

按当前任务继续推进