DSH Toolbox

哪些 DeepSeek Harness 插件不能一起装

插件冲突多数来自两个插件改同一行:补丁替换整行 config,后加载的赢,前一个静默消失。

下面每一对都来自插件页里写过的 peerDependencies 和冲突说明,没有一条是对没读过的行为的猜测。

四组分别是:抢一个界面位、抢一个配置项、打同一个外部接口、干同一件事。

抢同一个界面位

包 A包 B一起装会看到什么留哪个为什么留它为什么不能共存
dsh-dream-skindsh-claude-style两个都在改同一批组件。你只会看到一个外观,而且在设置里换主题时只有一部分界面跟着变。dsh-dream-skin它改 dsh-client-ui-theme 和设置页,换主题的地方就是用户会去找的地方;claude-style 只 peer 了 primitives。两个都写主题那一行,而那一行只存一个值——没有可合并的分插件主题层。
dsh-plugin-wallpaper-enginedsh-pet同一层界面上两个浮层:壁纸在背后,宠物在上面,谁都能盖住对方的控件。dsh-plugin-wallpaper-engine它本身就是背景层;宠物是装饰,删掉不丢布局。两个都挂进 @deepseek-ai/dsh-client-ui-slots 的同一个 overlay slot,而一个 slot id 只渲染一个组件。两者都没声明自己的 id,所以第二次挂载替换第一次。
@chengze/dsh-skill-managerdsh-skill-browser两个侧栏面板列同一批技能、状态还不一样,你在哪个里开的,不一定就是 agent 加载的。dsh-skill-browser它 peer 了 dsh-client-ui-slots,自己读技能目录,还带调用台账;manager 另存一份清单,会漂。两个都抢侧栏技能面板这个入口,又都读技能目录,所以你在哪个里开关,不一定是 agent 真正加载的那份。
dsh-skill-browserdsh-toomuch-plugins装完之后那个插件的面板像没装,入口点不进去。dsh-skill-browser只有当你不需要「整个界面就是那条侧栏入口」的插件时,才去折侧栏。一个插件的全部界面就是一条侧栏入口,另一个把它折进折叠组,于是界面还在却点不到。
dsh-genuideep-view都在回答里渲染富块;一个畸形块在一个渲染器报错、在另一个里正常显示。dsh-genui它 peer 了 dsh-client-ui-slots,还把块格式写进系统提示词,生产者和渲染器在同一个包里。两个都为同一种回答块内容类型注册渲染器。块里没有判别字段,而渲染器注册表每种类型只留一个处理器,所以后注册的替换先注册的。
@yugoo-design/dsh-design-paneldsh-genui再加上 deep-view 就是三个渲染器抢同一种块,先认领的那个赢。@yugoo-design/dsh-design-panel按输出类型选:可编辑设计文件用它,临时图表表单用 genui。一个 profile 留一个。设计面板和生成块共用同一个块位置;后注册的渲染器拿走整个位置,不只是它自己那种块。
@zhaoyang10/dsh-web-idedsh-codegraph-visualizer都给客户端加标签页,标签栏会挤,但不会报错。@zhaoyang10/dsh-web-ide代码页每个会话都用;代码图谱只在你已经在查它的时候用。两个都在对话上方加标签页,标签栏顺序固定,窗口一窄第二个就把第一个挤出视野。

抢同一个配置项

包 A包 B一起装会看到什么留哪个为什么留它为什么不能共存
@michengai/dsh-archive-managerdsh-session-superagent归档过的会话又回到列表里,或者你预期会看到的一个会话干脆不显示。@michengai/dsh-archive-manager它 peer 了 16 个官方包,含 dsh-session-projection-cache 与 dsh-storage-domain;看护那个只 peer 一个,且区间很窄。两个都改会话生命周期:一个把会话移出活跃列表,另一个还握着它开着。
@michengai/dsh-skills-managerdsh-univer-office技能清单里的条目比你装的少,其中一个插件的技能不见了。@michengai/dsh-skills-manager技能只在一处声明。office 要技能只为文档工具,manager 的本职就是这份清单。两个都改 @deepseek-ai/dsh-skill 那一行,补丁整行替换,第二个装上去就只剩它自己那份技能清单。
dshmarketuniversal-plugin-hub从其中一个装完插件,回到列表一看:刚装的那个不见了,或者总数少一个。dshmarket它改的是 dsh-settings 的行,清单留在设置界面,那是 profile 本来就管的地方。两个都写 profile 的 package.json,而依赖只有一份——一边装,可能把另一边刚写的条目挤掉。
dsh-better-plugin-updaterdshmarket在一个界面里规划好更新,另一个界面装完东西再回去看,那个插件又变回旧版本。dsh-better-plugin-updater它只出方案、不确认不动手;想控版本时它是更安全的写者。两个都改同一份清单里的版本字段;一边规划好的更新,会被另一边的安装作废。
dsh-syn-configdsh-custom-theme配置同步在机器间拷文件,主题插件却在写自己的配置,下次同步把主题盖掉。dsh-syn-config配置只能有一个权威。开了同步,主题就要放在同步里,别两边都改。一个在 profile 下写 CSS 与背景文件,另一个把这个目录在机器间复制——下次同步把主题盖掉。
@aiwayds/dsh-llm-proxydsh-providers-hub某个服务商的请求没走代理就出去了,你的分流对它们悄悄失效。@aiwayds/dsh-llm-proxy只有所有模型调用都走同一个 dispatcher,分流才是可观测的。两个都在模型出站路径上:代理装了全局 dispatcher,而自带传输层的服务商插件会绕过它。

打同一个外部接口

包 A包 B一起装会看到什么留哪个为什么留它为什么不能共存
dsh-free-search@liustack/modsearch同一个问题问两次,答案来自不同的搜索引擎,你也没法指定用哪个。dsh-free-search它 peer 了 @deepseek-ai/dsh-tools 和命令面板,提供者在界面里够得着;modsearch 完全没声明 peer。两个在同一项能力下各注册一个联网搜索工具,模型只会挑一个,而且每轮挑的不稳定。
@xmanrui/dsh-im@tencent-connect/dsh-qqbot同一条 QQ 消息经两条桥各到一次,审批提示还不一样。@tencent-connect/dsh-qqbot它 peer 了 dsh-user-approval 与 @deepseek-ai/dsh-session,审批走的是真正要跑工具的那个会话。两个把同一个 QQ 号接进会话,一条消息到两次,两套审批还各记各的「谁批的」。
ds-harness-remotedsh-mobile-plugin同一台主机两个入口,总有一个你会忘了关。ds-harness-remote它把网关本身通过点对点、端到端加密暴露出去,边界只有一处,不是两组路由。两个各开一条进入同一台主机的通道,令牌分开、路由表分开,没人对账。
ds-harness-remotedshost-plugin两个中继暴露同一个本机界面;泄露时要吊销三套凭据。ds-harness-remote它 peer 了 dsh-api-gateway 与设置页,暴露的东西和被暴露的东西放在一起。两个中继用不同端点暴露同一个本机界面;收回访问要在两处收,总有一处会被忘掉。
dsh-computersdsh-windows-mcp都让 agent 在别的机器上跑东西;三个命令工具,沙箱策略和影响面各不相同。dsh-computers它是为「多台机器」做的,不是为一个操作系统表面;只有目标全是 Windows 才留 windows-mcp。两个都给 agent 在别的机器上执行命令的能力,沙箱策略不同,同一件事取决于模型挑了哪个工具。
dsh-tool-database@mzzsfy/dsh-tool-gate数据库工具在跑的时候根本不出现,虽然插件那边显示装好了。dsh-tool-database留数据库工具、把它加进闸门白名单;去掉闸门等于放弃其他每一轮的提示节省。闸门把白名单外的工具全部延后,数据库工具虽然注册了,不进白名单就不会被声明给模型。

干同一件事

包 A包 B一起装会看到什么留哪个为什么留它为什么不能共存
@nanmicoder/dsh-agent-teamsdsh-agent-compare装完第二个,第一个插件加的那个按钮就不见了。@nanmicoder/dsh-agent-teams它 peer 了 23 个包、管的是团队角色;compare 是每次请求烧 2–4 倍 token 的一次性诊断。两个都改 dsh-client-ui-chat 里的 composer 行。补丁替换整行 config,而这一行只挂一套控件,所以后加载的层把控件从先加载的手里拿走。
@nanmicoder/dsh-agent-teams@xirang-ai/dsh-teamflow两个编排器给同一条需求到缺陷的流水线描述角色。@xirang-ai/dsh-teamflow如果流水线本身就是产品(需求、缺陷、交接),就用建模了它的那个;否则留在通用团队上。两套角色系统描述同一条需求到缺陷的流水线,agent 接到一个任务却拿到两套冲突的角色。
@mzzsfy/dsh-tool-gate@logictan/dsh-tool-surfaceagent 能调的工具比这两个插件各自承诺的都少,你明明开了的几个,跑起来根本没出现。@mzzsfy/dsh-tool-gate一个闸门够了。两个一起用,工具可能被一个延后、被另一个永不加载。两份白名单裁同一份工具清单;实际生效的是交集,被一个延后的工具可能在另一个那里永远不加载。
dsh-octop-memorydsh-mnemonagent 会引用一条你完全没印象的旧记忆,或者两个插件的记忆在同一条回答里互相打架。dsh-octop-memorydsh-octop-memory 会在轮末把事实写回磁盘,dsh-mnemon 不落盘;两个都装时,写回这件事只有 octop-memory 在做。两个都在每轮前把上下文块注入同一个位置,谁都没标自己比对方更权威。
dsh-cost-meterdsh-whale-widget屏幕上两个花费读数,两边都为同一组数字打账户接口。dsh-cost-meter它按会话和按天拆开销;挂件只显示余额。两个都指向 @deepseek-ai/dsh-client-ui-slots 的会话头部 slot,而一个 slot id 只挂一个组件。两者都没声明独立 id,所以两组读数不可能同时挂着。
dsh-custom-themedsh-exv-flat-corners两个样式表设同一批圆角,决定结果的是加载顺序。dsh-custom-theme一份你自己拥有的样式表,胜过一份把外观写死的。两个都在网页客户端作用域里声明同一批 --radius-* 自定义属性。自定义属性每个元素只存一个值,而两者都没给选择器加命名空间,后声明的直接覆盖。
@dickpy/dsh-imagegendsh-meme输入框附近两条图片路径;两个按钮,不是报错。@dickpy/dsh-imagegen生成覆盖面比发表情包广;只有发表情包是常态时才留图库。两个都在输入框旁加一条图片路径,而输入框只有一排动作位——多两个就把第三个控件挤出去。

常见问题

这些对子是怎么挑的?

来自共用的 peerDependencies 和两个插件各自页面上写过的冲突说明。没有共用同一块界面的对子没列。

两个一起装会把命令行弄崩吗?

通常不会。补丁替换整行 config,症状是少一个面板或丢一条条目,不是崩。真崩更可能是 engines.dsh 不匹配,那种启动检查会报。

最快看到底谁赢了?

dsh --profile web --dump-config 打印合成树,只出现一次的那行就是赢家。