DeepSeek Harness 报错 deployment:persona already registered 排查实录:从重装到定位 .dsh 配置冲突
装 DeepSeek Harness 的时候,很多人遇到的报错集中在模型配置、Provider 认证或者 MCP 连接上。这次碰到的问题更靠近框架内部。
报错看起来像配置文件写错了:
internal: resume failed for session "session-3836a0e6-9fe9-40d7-884e-876b3ebba209"
Error: agent-presets: preset "standard" failed to mount
failed to apply loader entry persona (@deepseek-ai/dsh-persona):
prompt section "deployment:persona" is already registered
第一眼很容易怀疑是 agent.cordis.yml 里重复配置了 persona,或者插件版本不一致。
结果一路排查下来,问题并不在安装包本身,而是在旧 Session、旧 Profile 和 .dsh 用户目录的状态。
本文记录整个排查过程。
问题出现时的环境
先确认当前安装状态。
查看 DSH 版本:
dsh --version
输出:
0.1.0-rc.8
查看全局安装:
npm list -g --depth=2 @deepseek-ai/dsh @deepseek-ai/dsh-persona
输出:
C:\nvm4w\nodejs
`-- @deepseek-ai/dsh@0.1.0-rc.8
`-- @deepseek-ai/dsh-persona@0.1.0-rc.8
查看实际执行路径:
where.exe dsh
结果:
C:\nvm4w\nodejs\dsh
C:\nvm4w\nodejs\dsh.cmd
查看 PowerShell 当前调用的命令:
Get-Command dsh
输出:
ExternalScript dsh.ps1
C:\nvm4w\nodejs\dsh.ps1
从这里可以确认:
-
DSH 和 Persona 版本一致 -
没有多版本混装 -
当前调用的是 NVM 管理下的 Node 环境
报错发生在 Resume Session 阶段
异常不是启动时报的。
而是在恢复旧 Session 时出现:
resume failed for session
关键报错:
prompt section "deployment:persona" is already registered
这里有两个值得关注的信息:
| 信息 | 含义 |
|---|---|
| deployment:persona | Prompt Section 名称 |
| already registered | 已存在同名注册项 |
从字面上看:
Persona 被重复注册
但问题是:
当前配置文件里并没有两份 Persona。
查看 standard 预设配置
打开:
@deepseek-ai/dsh/config/agent-presets/standard/agent.cordis.yml
其中有一段:
- id: persona
name: '@deepseek-ai/dsh-persona'
config:
text: >-
You are a coding agent powered by the {{model}} model.
文件注释写得很明确:
The preset's own persona,
shadowing the deployment default for this agent.
也就是说:
deployment persona
↓
standard preset persona
↓
agent persona
这是标准设计。
因此简单删除:
- id: persona
并不是正确方案。
排查是否存在多个 DSH 实例
接下来检查系统里的 Node 进程。
执行:
Get-CimInstance Win32_Process -Filter "Name='node.exe'" |
Select-Object ProcessId,ExecutablePath,CommandLine
发现:
5536 npm start
13676 node index.js
12104 @deepseek-ai/dsh
说明系统里确实有 DSH 相关进程存在。
为了排除旧进程影响,决定彻底重装。
卸载 DeepSeek Harness
停止所有 DSH 实例后执行:
npm uninstall -g @deepseek-ai/dsh
输出:
removed 452 packages in 11s
再次检查:
where.exe dsh
结果:
信息: 用提供的模式无法找到文件。
说明启动器已经被移除。
继续确认:
npm list -g --depth=2 @deepseek-ai/dsh
已经为空。
清理 npm 缓存
执行:
npm cache verify
然后:
npm cache clean --force
清理完成。
Node 环境如下:
node -v
npm -v
输出:
v25.0.0
11.6.2
是否需要降级到 Node 24
很多人第一反应会切换 Node LTS。
实际情况并不一定需要。
当前环境:
Node 25.0.0
同时还在使用:
Codex CLI
Claude Code CLI
切换到 Node 24 后:
Codex CLI
Claude Code CLI
都出现异常。
因此这里没有继续切换版本。
原因很简单:
当前报错发生在:
Persona 注册
Preset Mount
Session Resume
阶段。
并不是典型的 Node Runtime 报错。
贸然更换 Node 版本会引入新的变量。
改用 npx 启动 rc.8
既然已经卸载全局安装。
接下来直接运行:
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web
结果:
没有报错
没有输出
一直卡住
这一步最容易误判。
很多人会以为:
npm 下载失败
网络问题
rc.8 本身损坏
实际并不是。
真正的线索来自 .dsh
尝试删除:
C:\Users\用户名\.dsh
Windows 弹出提示:
文件夹正在使用
操作无法完成,因为其中的文件或文件夹在另一程序中打开
说明:
.dsh 被占用
这时候问题终于开始收敛。
查找占用 .dsh 的进程
执行:
Get-CimInstance Win32_Process |
Where-Object {
$_.Name -match 'node|npm|npx' -or
$_.CommandLine -match 'deepseek|dsh'
} |
Select-Object ProcessId,Name,ExecutablePath,CommandLine
结果发现:
6544 notepad.exe
C:\Users\reanod\.dsh\profiles\web\package.json
以及:
6188 notepad.exe
agent.cordis.yml
这里出现了关键线索。
真正锁住 .dsh 的并不是 DSH。
而是记事本。
.dsh 目录里到底有什么
从进程信息可以看到:
C:\Users\reanod\.dsh\profiles\web\package.json
这说明:
.dsh
└─ profiles
└─ web
└─ package.json
已经存在历史 Profile。
同时此前还存在:
session-3836a0e6...
对应的旧 Session 数据。
这意味着:
当前环境并不是一个全新安装。
而是:
旧 Session
旧 Profile
旧 Persona 注册状态
一起参与了启动过程。
删除 .dsh 前先关闭占用程序
关闭对应记事本。
或者直接:
Stop-Process -Id 6544 -Force
Stop-Process -Id 6188 -Force
然后检查:
Get-CimInstance Win32_Process |
Where-Object {
$_.CommandLine -match '\.dsh|deepseek'
}
确认没有占用。
接着删除:
Remove-Item "$HOME\.dsh" -Recurse -Force
验证:
Test-Path "$HOME\.dsh"
返回:
False
说明用户配置已经清空。
下一步验证方式
此时不要直接恢复旧 Session。
先验证 DSH 是否正常启动:
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 --version
如果返回:
0.1.0-rc.8
再执行:
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web
启动后:
New Session
↓
standard
↓
Hello
不要恢复:
session-3836a0e6-9fe9-40d7-884e-876b3ebba209
这样才能判断问题来自:
旧 Session
还是:
rc.8 本身
操作清单
-
查看 DSH 版本
dsh --version
-
查看安装情况
npm list -g --depth=2 @deepseek-ai/dsh
-
卸载 DSH
npm uninstall -g @deepseek-ai/dsh
-
清理 npm 缓存
npm cache clean --force
-
查看 Node 版本
node -v
npm -v
-
查找占用进程
Get-CimInstance Win32_Process
-
删除用户配置
Remove-Item "$HOME\.dsh" -Recurse -Force
-
使用 npx 启动
npx --yes @deepseek-ai/dsh@0.1.0-rc.8 web
FAQ
deployment:persona already registered 一定是配置写错了吗?
不一定。本次排查中,agent.cordis.yml 本身没有发现重复 Persona 配置。
直接删除 standard 里的 persona 配置可以吗?
不建议。该配置属于标准预设的一部分。
Node 25 会导致这个报错吗?
当前排查过程中没有证据表明 Node 25 与该错误直接相关。
为什么不切换到 Node 24?
当前机器同时运行 Codex CLI 和 Claude Code CLI,切换后会影响现有环境。
.dsh 可以直接删除吗?
可以,但先确认没有程序占用该目录。
.dsh 里面保存什么?
从排查结果看,包含 Web Profile、Session 等用户数据。
为什么 npx 启动后没有任何输出?
如果 .dsh 被占用,或者旧配置存在异常状态,可能表现为启动卡住。
排查时应该优先恢复旧 Session 吗?
不建议。应先创建全新 Session 验证框架是否正常工作。

