Skip to content

[Bug]: MCP连接错误导致dsh desktop不停的二次启动抢占焦点问题 #4197

Description

@Wqkkk

Issue Origin

Observed or reproduced in a real environment

Bug Description

@openviking/dsh-memory-plugin 的 mcp.mjs
里,MCP 客户端用:

javascript
复制
command: process.execPath, // ← 这是 DSH Desktop 的 Electron 可执行文件本体!
args: [PROXY_PATH],
process.execPath 在 Electron 主进程里指向的是 DSH Desktop.app 的二进制,而不是 Node。于是每当 openviking MCP 客户端(因为连不上而)重连一次,就用 Electron 二进制再启动一个「实例」:

单实例锁已被运行中的 DSH 持有了 → 新实例拿不到锁
运行中的 DSH 收到 second-instance 事件 → runtime.show() → 抢焦点 + Dock 跳动
又因为没带 ELECTRON_RUN_AS_NODE,proxy 脚本根本没正常跑起来 → 连接继续失败 → 下一次重连 → 循环

Steps to Reproduce

每次启动,second-instance 以 500ms、1s、2s、4s、8s…的退避间隔反复触发,每次都调用 runtime.show() → 抢焦点、Dock 跳动。这个退避节奏和日志里 mcp-client(openviking) 反复重连的节奏完全一致。

Expected Behavior

dsh正常在后台运行

Actual Behavior

dsh因为openviking dsh-memory功能不听抢占焦点切换后台

Minimal Reproducible Example

Error Logs

[FOCUS-DEBUG] mount(): app.dock.setIcon called
[FOCUS-DEBUG] second-instance event fired        ← 反复触发
[FOCUS-DEBUG] show() called: visible=false ...   ← 第一次抢焦点
[FOCUS-DEBUG] ready-to-show fired
[FOCUS-DEBUG] second-instance event fired        ← 又触发
[FOCUS-DEBUG] second-instance event fired        ← 又触发
[FOCUS-DEBUG] second-instance event fired        ← 又触发(500ms/1s/2s/4s/8s 递增)
...

OpenViking Version

Python Version

Operating System

macOS

Model Backend

OpenAI

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions