前言¶
《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 处补丁是否到位
典型用法¶
- 按上一节完成 plugin add、
install-desktop.ps1、patch-feapp.ps1,重启 DSH。 - 启动已 patch 的 Olivia 客户端,在邮箱写信;客户端 POST 到本地桥,DSH 林离会话生成回复并写入
letters.json。 - 客户端 GET list/detail 与原先一致展示;删除信件走前端改过的删除按钮,对应桥的
/toy/letter/delete。 - 若使用 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