DeepSeek Harness 子代理提供方怎么卸载?可选组合包、preset 与重启清理
卸载子代理提供方不是只跑一条 remove:包、Preset 工具行、运行中的进程是三处独立状态。 只删包不撤 Preset,Agent 仍会看到一个指向不存在后端的入口;只撤 Preset 不删包,依赖还留在 profile 里。正确顺序是“先 remove、再重启、最后撤工具行”,每一步都能单独验证。
DeepSeek Harness:先确认装了什么
卸载前先看当前 Profile 的组合包列表,避免把别的插件一起删掉。 步骤:(来源)
- 确认 Profile — 是
web还是自定义 profile。预期:--profile名字写对。 - 看依赖列表 —
dsh plugin --profile <name> list。预期:能看到 codex 或 claude-code 包。 - 看 manifest bundles — 打开
$DSH_HOME/profiles/<name>/package.json。预期:确认对应包在dsh.profile.bundles里。
如果列表里没有,但 Preset 里还有工具行,说明之前已经删过包、只留下配置残留;直接进入撤工具行步骤。
DeepSeek Harness:卸载命令与重启
remove 会转发给 pnpm,成功后更新 manifest;运行中的 Profile 不会即时加载变化。 命令:(来源)
# 只卸 Codex
dsh plugin --profile web remove @deepseek-ai/dsh-subagent-codex
# 只卸 Claude Code
dsh plugin --profile web remove @deepseek-ai/dsh-subagent-claude-code
# 两个都卸
dsh plugin --profile web remove \
@deepseek-ai/dsh-subagent-codex \
@deepseek-ai/dsh-subagent-claude-code
--profile写在最前面 — 后面的参数原样转给 pnpm。预期:卸载落到正确目录。- 确认命令成功 — 看输出有没有解析错误。预期:manifest 与 bundles 更新。
- 重启 Profile — 关闭并重新启动
dsh web。预期:运行中的进程丢掉旧组合包集合。
不要只删 node_modules 里的目录;那会绕过 manifest,留下一个“依赖记录还在、文件没了”的半状态。
DeepSeek Harness:撤掉 Preset 工具行
包卸载后,Preset 里的工具行不会自动消失;它仍是一个入口,只是后端没了。 步骤:(来源)
- 找到实际使用的 Preset — 确认是可编辑的复制版本。预期:不是只读内置项。
- 撤掉对应工具行 — 只关 codex 或 claude-code 中你卸掉的那个。预期:保存后新 Agent 不再显示该工具。
- 新建会话验证 — 旧会话可能保留工具快照。预期:新会话的工具列表干净。
如果两个都卸了,就把两行都撤掉;如果只卸一个,保留另一个的工具行,避免误伤还在用的后端。
DeepSeek Harness:残留检查
卸载完成后,检查三类残留:其他提供方、后端认证、旧会话记录。 清单:(来源)
- 另一个提供方 — 确认没被连带删掉。预期:
dsh plugin list仍能看到它。 - 环境变量与认证 — 如果不再使用对应后端,清理它自己的 token 或配置。预期:不会留下无主凭据。
- 旧会话记录 — 日志还在,但指向已删提供方的调用会失败。预期:知道哪些会话需要换后端。
只卸载 DSH 侧组合包时,不必删后端 CLI;但要明确“DSH 不再调用它”和“机器上不再有它”是两件事。
DeepSeek Harness:三种卸载范围
按“只卸一个 / 两个都卸 / 彻底不再用”选择,不要默认全清。 三种:(来源)
- 只卸一个 — 保留另一个提供方与 Preset 行。预期:最小影响,适合替换后端。
- 两个都卸 — 撤两行 Preset,回到只用进程内派生的状态。预期:依赖减少,能力也减少。
- 彻底清理 — 再删后端 CLI、认证与旧配置。预期:机器上不留相关工具,但不可逆。
如果只是暂时不用,优先选第一种;彻底清理放到确认不再需要之后。
DeepSeek Harness:卸载后的验证
卸载完成不等于入口消失,按三项确认。 步骤:(来源)
- 看依赖列表 —
dsh plugin --profile <name> list不再有目标包。预期:manifest 已更新。 - 看新会话工具 — 新建会话列工具,目标子代理入口消失。预期:Preset 行已撤。
- 看启动日志 — 不再加载对应提供方。预期:没有解析错误或休眠注册。
三项都过,才算卸载完成;只过第一项,通常只是包没了、入口还在。
remove 之后 manifest 与 preset 的变化
remove 影响的是依赖与配置层,不会自动改你复制出的 Preset。 官方行为:
- 依赖移除 — 包从 profile 依赖中删除。预期:
dsh plugin list不再显示。 - bundles 更新 — 对应组合包从
dsh.profile.bundles删除。预期:下次启动不再叠加它的 patch。 - 运行中进程 — 仍保留启动时的组合包集合。预期:必须重启才生效。
- Preset 工具行 — 不自动删除。预期:需要手动撤,否则入口还在。
所以“remove 成功”只是第一步;manifest、进程、Preset 三处都对齐,才算真正卸载。
DeepSeek Harness 常见问题
Q:remove 后需要重新安装才能恢复吗?
需要。包被移除后,manifest 不再引用它;重新 dsh plugin add 并重启,才恢复提供方。
Q:能不能只关工具行、不删包? 可以。那样是“停用”,包还在磁盘上,随时可以重新启用;适合临时切换。
Q:卸载会影响其他 Profile 吗?
不会。插件按 Profile 安装;只影响你指定 --profile 的那一个。
一句话收束: 子代理卸载要三层一起做:包、Preset、进程;少一层,就会留下一个看得见但用不了的入口。
常见问题
执行 dsh plugin --profile <name> remove @deepseek-ai/dsh-subagent-codex,然后重启该 Profile。Codex 与 Claude Code 是两个独立组合包,可以只卸一个,不影响另一个。
DeepSeek Harness 里,组合包只负责注册提供方,工具行在复制出的 Preset 里。remove 后要去 Preset 撤掉对应工具行并重启;否则入口仍在,只是指向一个不存在的后端。
DeepSeek Harness 里,不会直接影响普通对话,但旧会话里已经发生的子代理调用记录还在日志中;之后的调用如果仍指向被删提供方,会失败。需要保留能力就先别删,或换另一个提供方。
DeepSeek Harness 里,看你的目标。只卸载 DSH 侧组合包不必删后端 CLI;如果这台机器不再使用 Codex 或 Claude Code,可以再按各自文档清理可执行文件与认证。
DeepSeek Harness 里,可以分别 remove 两个包,也可以在同一条命令里传两个包名。建议先卸一个、重启验证,再卸另一个,便于确认没有其他 Agent 依赖它。
相关术语
- dsh-subagent-codex
- dsh-subagent-codex 是 DeepSeek Harness 官方的 Codex 子代理提供方组合包,用 dsh plugin add 安装、remove 卸载,装后以休眠 Host 提供方形式注册。— DeepSeek Harness 官方参考 - dsh CLI 行为
- dsh-subagent-claude-code
- dsh-subagent-claude-code 是 DeepSeek Harness 官方的 Claude Code 子代理提供方组合包,与 Codex 包彼此独立,可单独安装或卸载。— DeepSeek Harness 官方参考 - dsh CLI 行为
- agent preset
- agent preset 是 DeepSeek Harness 中一组 Agent 能力与工具行的预置组合;子代理提供方安装后,必须在复制出的 preset 中启用对应工具行。— DeepSeek Harness 官方参考 - dsh CLI 行为
- dsh.profile.bundles
- dsh.profile.bundles 是 Profile manifest 中按顺序列出组合包的字段;remove 后,对应依赖会从配置层栈中删除,但运行中的进程要重启才更新。— DeepSeek Harness 官方参考 - dsh CLI 行为
来源
- DeepSeek Harness 官方参考 - dsh CLI 行为· deepseek-ai
- DeepSeek Harness 官方参考 - 子智能体· deepseek-ai