dsh-olivia-bridge:爲《BSide: Olivia Lin》離線客戶端接上 DSH 本地信件橋

前言

《BSide: Olivia Lin》(miHoYo 林離)官方服務於 2026-08-31 關停後,客戶端仍可做本地演出回放與壁紙,但原先依賴後端的「寫信—收信」鏈路不再可用。社區裏也有把 /toy/letter/* 在本地 stub 出來的做法,往往每封信單獨處理,重啓後上下文容易斷檔。

若你已經在用 DeepSeek Harness(DSH)做桌面智能體會話,可以把遊戲裏的每一封信交給同一個持久 agent 會話處理:回信寫回本地信件存儲,客戶端照常展示;會話歷史即記憶,不必再疊一層獨立記憶插件。下面介紹 MacilyDots 維護的 dsh-olivia-bridge(DSH 社區目錄分類:記憶)。

這是什麼

dsh-olivia-bridge 在環回地址上啓動 HTTP 服務,冒充客戶端曾對接的後端,復現 /toy/letter/send、list、detail、unread_count 等契約;入站信件進入固定 id 爲 olivia-letterbox 的 DSH agent 會話(預設 persona:林離),回覆寫回 <DSH_HOME>\olivia-bridge\letters.json,遊戲仍按原 UI 讀信。

維護者:MacilyDots。源碼與說明:GitHub — MacilyDots/dsh-olivia-bridge。社區目錄頁:skillhub.cn/plugins/MacilyDots/dsh-olivia-bridge。許可證:MIT(package.json 0.2.1)。

核心功能

信件橋與「會話即記憶」

數據流大致如下:

Olivia.exe 0.0.9.627
   │  POST /toy/letter/send · GET /toy/letter/list|detail|unread_count
   ▼
dsh-olivia-bridge   127.0.0.1:8791
   │  letter store <DSH_HOME>\olivia-bridge\letters.json
   ▼
DSH agent session (preset: 林離)
   │  ctx.agents.create → followup → whenIdle
   ▼
同一會話承載全部歷史;DSH 重啓後插件 startup 調用 agents.resume() 掛回同一會話

與其它本地實現的主要差異在於:會話 id 固定,重啓 DSH 後仍能續上此前每一封信的上下文,而不是每次新建會話。

遊戲前端補丁(可選但安裝流程要求)

僅 dsh plugin add 把包裝進 profile 不夠:遊戲前端仍須 patch,profile 須追加林離 persona preset。包內 node_modules\dsh-olivia-bridge\tools\ 提供 PowerShell 腳本;patch 錨點針對客戶端 0.0.9.627 的前端 bundle,版本不符時腳本會因錨點校驗失敗而中止,避免寫壞 feapp.dat。

補丁除把 axios baseURL、offline 門控、toyApiUrl 等指向本地橋外,還會恢復寫信入口、去掉每日寫信配額文案、把郵箱「分享」改爲調用橋的 /toy/letter/delete 等(README 共 15 處,詳見倉庫「Game-side patches」表)。寫回前腳本用 node --check 校驗 bundle 語法;失敗則保留自 feapp.dat.orig-backup 恢復的原始文件。

自定義演出(MIDI 本地鏈)

除信件外,橋在本地實現原服 MIDI 上傳→生成→輪詢結果鏈路(genObjectUploadUrl、PUT upload、midi/generate、getGenerateResult 等)。MIDI 解析與 WAV 合成爲純 JS(邏輯來自 Comma0103/Linli-Nocturne,MIT)。演出側 WebPlayer 爲 <video>,無法直接播 WAV;若環境可找到 ffmpeg,會把預覽音頻封裝爲無聲軌 MP4 以便播放。ffmpeg 查找順序:config → OLIVIA_FFMPEG → <DSH_HOME>\olivia-bridge\ffmpeg\ → PATH;未安裝 ffmpeg 時任務仍可完成,預覽正常,演出可能無聲並在日誌中說明。

安裝與啓用

環境要求(README 原文):

  • DSH desktop 0.2.x(Windows)
  • 遊戲客戶端 0.0.9.627

第一步,從 npm 拉取插件代碼到指定 profile(命令須原樣使用,<profile> 換成你的 profile 名):

dsh plugin --profile <profile> add dsh-olivia-bridge

第二步,在已安裝包的 tools 目錄執行桌面掛載與遊戲 patch(路徑以你本機 node_modules\dsh-olivia-bridge\tools\ 爲準):

# 1. 掛載到 desktop profile(已有文件會先備份爲 *.bak-olivia-<timestamp>)
.\tools\install-desktop.ps1

# 2.  patch 遊戲前端(原 bundle 備份爲 feapp.dat.orig-backup)
.\tools\patch-feapp.ps1 -GameDir 'X:\SteamLibrary\steamapps\common\BSide Olivia Lin Test'

# 3. 重啓 DSH

install-desktop.ps1 會向 profile 的 package.json 增加 file: 依賴與 bundle 項、創建指向本包的 junction,並在 cordis.patch.yml 末尾追加 preset-olivia(林離 persona,complete: true,不掛 tools)。

遊戲目錄可設爲用戶環境變量,之後不必每次傳 -GameDir:

[Environment]::SetEnvironmentVariable('BSIDE_GAME_DIR', 'X:\SteamLibrary\steamapps\common\BSide Olivia Lin Test', 'User')

patch 相關常用命令:

.\tools\patch-feapp.ps1              # 應用補丁(冪等)
.\tools\patch-feapp.ps1 -Port 8800   # 改用其它端口
.\tools\patch-feapp.ps1 -Restore     # 一步恢復原始 feapp
.\tools\verify-patches.ps1           # 只讀檢查 15 處補丁是否到位

典型用法

  1. 按上一節完成 plugin add、install-desktop.ps1、patch-feapp.ps1,重啓 DSH。
  2. 啓動已 patch 的 Olivia 客戶端,在郵箱寫信;客戶端 POST 到本地橋,DSH 林離會話生成回覆並寫入 letters.json。
  3. 客戶端 GET list/detail 與原先一致展示;刪除信件走前端改過的刪除按鈕,對應橋的 /toy/letter/delete。
  4. 若使用 MIDI 自定義演出,按 README「Custom performances」在本地完成上傳與生成;需要演出有聲時在上述 ffmpeg 搜索路徑之一提供可執行文件。

包內還提供 diagnose.mjs、dump-session.mjs、verify.mjs 等工具腳本,用於診斷與驗證,用法見倉庫 README。

適用場景與注意

適合誰: 已在 Windows 使用 DSH 0.2.x、持有 0.0.9.627 離線客戶端,希望用 DSH agent 持續「回信」並依賴同一會話歷史記住全部信件(以及可選的本地 MIDI 演出鏈)的開發者或玩家。

權限與安全: 插件隨當前 DSH 桌面進程權限運行,監聽本機環回端口並讀寫 profile、遊戲目錄與 <DSH_HOME>\olivia-bridge\。安裝前請自行審閱 源碼 與 MIT 許可證;勿在未理解 patch 腳本行爲時對非 0.0.9.627 bundle 強行 patch。

生態說明: DSH 社區插件目錄(如 skillhub.cn)爲獨立站點,與 DeepSeek、幻方無官方從屬關係;安裝方式以各插件 README 爲準,勿與未文檔化的命令混用。

結尾

dsh-olivia-bridge 把關停後的林離客戶端 /toy/letter/* 契約接到 DSH:本地 HTTP 橋、固定會話 olivia-letterbox、信件 JSON 存儲,外加針對 0.0.9.627 的可驗證前端 patch 與可選 MIDI 本地生成。若你要在 DSH 裏用「一個林離會話記全郵箱」而不是零散 stub,可按 README 多步安裝並保留 patch 備份。

  • 目錄頁:https://www.skillhub.cn/plugins/MacilyDots/dsh-olivia-bridge
  • GitHub:https://github.com/MacilyDots/dsh-olivia-bridge
羽毛球分组比赛记分
小程序二维码

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

小夜