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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye