dsh-aa-bridge-doctor:Agents Anywhere 橋接「持續離線」的檢測與自動恢復

前言

在用 DeepSeek Harness(DSH)配合 Agents Anywhere 把手機當遠端設備時,常見一種惱人狀態:電腦上的 Connector 進程還在,手機端卻一直顯示設備離線;手動重啓 Connector 或整臺電腦上的相關進程才能恢復。官方重連往往沿用可能已經壞死的 HTTP 客戶端反覆重試,很難從根上跳出死循環。

AA Bridge Doctor(橋接醫生) 是社區維護的 DSH 插件,在本機週期性做只讀健康檢查,在判定爲進程退出或連接卡死時給出通知,並在配置允許時按護欄規則自動拉起或重啓 Connector。下面介紹其定位、工作原理、安裝與配置。

這是什麼

  • 倉庫: simonsxxs/dsh-aa-bridge-doctor
  • 社區目錄:SkillHub 插件頁(獨立站點,與 DeepSeek / 幻方無官方從屬關係)
  • 維護者:simonsxxs(作者 simon)
  • 分類:工作流
  • 當前版本(package.json):0.3.2
  • 許可證:MIT

插件針對上游已討論過的故障形態:進程仍存活、連續鑑權失敗、設備長期離線。README 中引用了 Agents-Anywhere#381(認證空超時死循環)、dsh-desktop#1334(Connector 靜默退出無人拉起)、#501(DSH Runtime 卡在「正在同步 DSH 會話…」)。本插件不替代官方修復,而是在本機做觀測與有限自動恢復。

本插件爲 host-only(無 dsh.client 客戶端半區),不依賴 @deepseek-ai/dsh-client-ui-slots。

核心功能

週期性三源(及可選第四源)檢查

默認每 pollSeconds 秒(默認 30)執行一次只讀檢查:

  1. 進程信號:讀 ~/.agents-anywhere/connector-runtime.json 中的 pid,驗證進程是否存活。
  2. 日誌信號:掃描 ~/.agents-anywhere/logs/runtime-*.jsonl,統計時間窗口內的鑑權失敗次數。
  3. 日誌靜默:進程存活但 AA 日誌在 logSilenceMinutes 內無寫入時,按事件循環掛死變體處理。
  4. 雲端信號(需開啓 checkDeviceApi):用本機 account.json 的 token 只讀查詢設備在線狀態,並輔助檢測 DSH Runtime 長時間卡在同步會話。

判定與默認動作

判定 含義概要 默認動作
exited 有記錄但進程已死;按退出碼與陳舊窗口決定是否允許自動拉起 通知;autoRestartExited 爲 true 且通過甄別時可自動重新拉起
wedged 進程存活且失敗達閾值或日誌長期靜默 通知;autoRestartWedged 默認 false,開啓後可自動重啓 Connector
stuck-syncing 需 checkDeviceApi;同步卡住 ≥ 15 分鐘 通知恢復指引(如設備頁對 DSH 重新「一鍵配置」)
healthy / not-installed 其餘情況 不動作

自動恢復前有 冷卻(cooldownMinutes)與 每日重啓上限(maxRestartsPerDay)。動作與診斷寫入 ~/.agents-anywhere/bridge-doctor/bridge-doctor.log。

拉起 Connector 時優先使用 DSH NEXT 內置 uv(app.asar.unpacked/@dataiku/uv),失敗則兜底 PATH 上的 uv;終止前做 PID 身份校驗與預檢,無法確認則放棄(Fail Closed)。拉起爲分離進程,DSH 退出後其存續取決於系統,README 不承諾嚴格隨 DSH 退出。

隱私

檢測均在本機完成;可選 checkDeviceApi 爲只讀查詢,憑據從本機文件讀取且不寫入日誌。

安裝與啓用

前提(README 原文):已安裝 DeepSeek Harness(社區 DSH NEXT 2.0.x 或官方 0.2.1+),已安裝 @agents-anywhere/dsh-bridge-next 並登錄。

方式 A — npm(發佈後)

在桌面 profile 下添加插件:

dsh plugin --profile desktop add dsh-aa-bridge-doctor

方式 B — 從源碼(需自行 clone 與構建,見倉庫 README)

git clone https://github.com/simonsxxs/dsh-aa-bridge-doctor.git && cd dsh-aa-bridge-doctor
npm install && npm run check
dsh plugin --profile desktop add .

方式 C — 手動

無 dsh CLI 時,可將構建產物以 file: 依賴寫入 ~/.dsh/profiles/desktop/package.json,在 cordis.patch.yml 中註冊 bundle,再在 profile 目錄執行 pnpm install 或 npm install,最後重啓 DSH。生效後設置頁出現「AA Bridge Doctor」,日誌目錄爲 ~/.agents-anywhere/bridge-doctor/。

注意:插件隨當前 DSH 進程權限在本機讀寫上述路徑並可能重啓 Connector;安裝前請閱讀倉庫源碼與 MIT 許可證,自行評估是否納入工作流。

配置(DSH 設置頁)

配置項 默認 說明
enabled true 總開關
uvPath '' 自定義 uv 可執行路徑,留空自動發現
autoRestartExited true 異常退出後自動拉起
autoRestartWedged false 卡死時自動重啓 Connector(默認僅通知)
failureThreshold / windowMinutes 4 / 10 鑑權失敗簽名閾值與時間窗
logSilenceMinutes 15 日誌靜默判定(分鐘)
cooldownMinutes / maxRestartsPerDay 60 / 6 冷卻與每日自動恢復上限
pollSeconds 30 檢查間隔
checkDeviceApi false 是否聯網覈對設備狀態

典型用法:先保持默認僅自動處理 已退出 的 Connector;若你經常遇到「進程在、手機一直離線」且接受本機自動 SIGTERM 後重啓,再在設置頁將 autoRestartWedged 設爲 true,並留意每日上限與冷卻,避免與人工排障衝突。

平臺與適用場景

平臺 狀態
macOS(Apple Silicon / Intel) 一等支持,全功能實測
Linux 盡力支持;通知依賴 notify-send(未裝則靜默)
Windows 未測,歡迎反饋

適合:長期在桌面 DSH 上掛 Agents Anywhere 橋接、希望減少「半夜掉線無人知」或「卡死只能手動殺進程」的開發者。不適合:未安裝 dsh-bridge-next 或未登錄 AA 的環境。

根因與取證背景見倉庫 docs/ROOT_CAUSE.md。國內只讀鏡像:Gitee 同步倉(以 GitHub 爲準)。

結尾

橋接醫生把「進程活着但橋已壞死」這類 wedge 當成可觀測、可限額自動處理的本機問題,與 DSH「一切皆插件」的思路一致。需要細節時查 GitHub README 與 SkillHub 目錄頁。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜