用 gal-view 把 DeepSeek Harness 会话页换成 Galgame 舞台

前言

DeepSeek Harness(命令行名 dsh)把模型、工具、会话和界面都做成插件。官方仓库的口号是「Everything is a Plugin」:换一套视图,不必去改 Harness 源码。Web GUI 默认会话页是「对话」加「轨迹」——对写代码、看日志很合适,但如果你想把同一段会话读成 Galgame 台词,默认布局就显得干。

社区插件 gal-view 做的就是这件事:在会话标签栏里加一个「GAL视窗」,把当前会话渲染成 16:9 舞台,带立绘、对话框、打字机和玩家输入。它走官方 bundle 格式,装到 web profile 后重启即可。下面按目录页、GitHub 仓库 README 和源码交叉核对后整理:它是什么、能做什么、怎么装、怎么用。

社区插件目录 deepseek-harness-plugin.com 是独立站点,用来发现和安装社区插件,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。

这是什么

gal-view(页面上也写作 GAL 视窗)是一款界面增强插件,由 GitHub 用户 Ayase34 维护,仓库地址是 Ayase34/gal-view。许可证为 MIT。package.json 里的版本号是 0.3.3,主要语言是 JavaScript。仓库创建于 2026-08-14,社区目录收录日期为 2026-08-15。截至 2026-08-17,GitHub 仓库显示 75 星;目录页当时仍写 34 星,以仓库页面为准。

它解决的问题很具体:DSH Web GUI 的会话区只有常规对话流。装上这个插件后,会话标签页栏会在「对话」和「轨迹」中间多出一个「GAL视窗」。点开之后,会话主体变成 16:9 Galgame 舞台:占位立绘、大对话框、打字机台词、底部玩家输入。内置编辑模式可以拖拽元素、改属性、调图层,改完立刻同步回游戏模式。

插件声明为官方 bundle 格式。Node 半边极简,场景状态放在浏览器里,不依赖后端;主体是 client 半边,通过 conversation.view 槽位注册 gal 视图(order 为 5,落在「对话」的 0 和「轨迹」的 10 之间)。package.jsondsh.client.platform 写的是 web,所以它作用在 Web GUI,不是终端 TUI。

核心功能

游戏模式:把会话读成台词

打开「GAL视窗」后默认是游戏模式。舞台默认尺寸是 960×540(16:9)。仓库自带的默认预设 gal-scene.json 会在首次打开、本地还没有存档场景时自动加载;编辑模式里的「重置」也会回到这份预设。

游戏模式里能直接用到的能力,来自 README 和客户端源码:

  1. 打字机台词:助手回复按页拆开,逐字打出。设置里可以选慢 / 正常 / 快三档速度。点对话框:打字未完成就追平当前页,已经打完且还有下一页就翻页。
  2. 玩家输入:底部输入框走宿主同一套提交管线,回车发送(Shift+Enter 换行)。空会话会先显示预设欢迎词,默认是「……测试连接已经建立。」和「这里是一个用于测试 AI 对话系统的 Galgame 场景。」
  3. 说话人名牌:玩家行显示玩家名牌,助手行显示 AI 名牌,系统行两边都隐藏。默认预设里角色名是 DeepSeek 和雾子,玩家名默认是「你」,都可以改。
  4. 舞台功能按钮:场景里预置四个透明按钮——历史、自动、快进、设置。历史从右侧滑出对话记录;自动会在当前页打完后短暂停留再翻下一页;快进跳过打字;设置里可以改说话角色、玩家名和打字速度。
  5. 运行状态:模型还在跑时,对话框会显示「思考中」「编写代码中」「等待回应」等状态页。工具调用和工具结果不会进台词,避免把 Galgame 对话框填满工具噪音。错误、命令、对话压缩会以系统行进入历史。
  6. 阅读进度:当前行、页码和打字进度按会话存在浏览器里,切标签或刷新后不会从头再打一遍。

会话文本会先去掉 Markdown 标记再进对话框,避免代码围栏、加粗符号占掉台词框。

编辑模式:场景就是一份 JSON

顶栏可以切到「编辑模式」。场景对象是唯一事实源:游戏模式读它渲染,编辑器改它,两边实时联动。元素类型包括背景、角色、对话框、台词、说话人、文本、导入图片、按钮、透明按钮。

编辑器提供的操作,仓库 README 和 Editor.jsx 是对得上的:

  • 画布上拖拽、改位置 / 尺寸 / 旋转 / 透明度 / 图层
  • 元素树里锁定、隐藏;上移、下移、置顶、置底
  • 网格和吸附(默认网格 24px,吸附默认打开)
  • 添加、复制(Ctrl+D)、删除(Delete / Backspace)
  • 撤销 / 重做(Ctrl+Z / Ctrl+Y,历史栈上限 100 步)
  • 导入、导出场景 JSON(Ctrl+S 导出为 gal-scene.json
  • 导入图片素材、导入字体,再在属性面板里应用到元素
  • 「重置」回到仓库默认预设

图片素材接受 PNG / JPEG / WebP / GIF,单张上限 8MB,存在 IndexedDB。字体接受 TTF / OTF / WOFF / WOFF2,单文件上限 24MB,以 @font-face 注册。导出场景时,被引用的图片和字体会内嵌进 JSON,别人导入同一份文件就能还原画面。

属性面板还可以改角色名字和颜色、对话框背景(CSS background 值)、文本对齐、透明按钮绑定的功能(历史 / 自动 / 快进 / 设置)。说话人名牌可以指定「玩家台词时显示」或「AI 台词时显示」。

开关与本地存档

设置面板「插件」分区下有「GAL 视窗」选项卡,用来启用或停用会话页上的标签。关掉之后标签消失,场景和设置仍保留,再打开即恢复。

README 写得很清楚:场景布局、素材图片、字体和阅读进度都保存在当前浏览器的 localStorage / IndexedDB 里。重装或卸载插件不会丢;清除该站点的浏览器数据才会重置。隐私模式或配额不足时,持久化会静默失败,功能仍可在当次会话里用。

安装与启用

先确认本机已经能跑 dsh。如果你是从源码 checkout 运行 Harness(日常命令是 pnpm dsh),先 cd 到 Harness 仓库根目录,再把下面的 dsh 全部换成 pnpm dsh

社区目录页给出的安装命令是:

dsh plugin add github:Ayase34/gal-view

这个插件只作用于 Web GUI。仓库 README 要求装到 web profile,并建议钉在 main 分支:

dsh plugin --profile web add github:Ayase34/gal-view#main

#main 表示跟踪仓库的 main 分支。需要可复现安装时,换成具体 commit 哈希。目录页的写法是 dsh plugin add github:Ayase34/gal-view#commit;README 给的示例是 #ae73dca

装完必须重启 web。bundle 层在启动时合成,不重启不会加载插件。重启后打开 Web GUI 的会话页,标签栏应出现「GAL视窗」,位置在「对话」和「轨迹」之间。

可选验证:

dsh --profile web --dump-config

输出里如果能看到 # == gal-view 这一层,说明插件已经进入组合。

更新和卸载同样要走 web profile,并且事后重启 web:

dsh plugin --profile web update gal-view
dsh plugin --profile web remove gal-view

目录页和 README 都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。

典型用法

下面这套步骤可以直接复现,不依赖额外配置文件。

  1. 按上一节把插件装进 web profile,重启 web。
  2. 打开 DeepSeek Harness Web GUI,进入任意会话。
  3. 点标签栏中间的「GAL视窗」。第一次打开且本地没有存档时,会加载仓库默认预设:深色背景、两名占位角色、底部对话框。
  4. 在底部输入框打一句话,回车发送。玩家台词打完后,模型开始思考或写代码时,对话框会切到状态页;助手正文定稿后再逐字打出。
  5. 需要回顾全文时点「历史」;想跳过打字点对话框或「快进」;想改玩家名或打字速度点「设置」。
  6. 切到「编辑模式」,把立绘拖到合适位置,或用「导入素材」换上自己的 PNG / JPEG。改完立刻切回游戏模式查看。
  7. 场景满意后按 Ctrl+S(或点「导出」),得到 gal-scene.json。换机器或分享给别人时,用编辑器里的「导入场景」读回这份文件。
  8. 不想再看到这个标签时,到设置 → 插件 → GAL 视窗,关掉「启用 GAL 视窗」。场景不会被删。

开发者如果要改仓库自带的默认预设,README 写的流程是:编辑场景 → Ctrl+S 导出 → 用导出的 gal-scene.json 替换仓库根同名文件 → npm run build:client 并提交。一般使用不需要走这一步。

适用场景与注意事项

适合这几类用法:

  • 已经在用 DSH Web GUI,想把会话界面换成 Galgame 阅读方式,同时保留原来的「对话」「轨迹」标签。
  • 需要自定义立绘、对话框和字体,并且要把场景导出成一份 JSON 带走。
  • 演示或录屏时,希望会话看起来像视觉小说,而不是普通聊天列表。

使用前注意这几件事:

  1. 只覆盖 Web GUI。 dsh.client.platformweb,终端 TUI 不会出现这个标签。
  2. 必须重启 web。 只执行 dsh plugin add 不够。
  3. 权限与许可证。 插件以当前 dsh 进程权限运行,安装时可能执行代码。仓库许可证是 MIT,版权页写的是 Copyright (c) 2026 Yunicon。安装前自己看源码和 LICENSE。
  4. 数据在浏览器里。 换浏览器、清站点数据或换一台机器,本地场景不会自动跟过来,需要自己导出 gal-scene.json
  5. 不是完整 Galgame 引擎。 它把 DSH 会话映射成台词和舞台,不提供分支剧情脚本、CG 回想或独立存档槽。工具调用被故意挡在对话框外。
  6. 默认立绘是占位。 要像样的画面,需要自己导入图片素材。
  7. 目录不是官方商店。 插件来自社区仓库,目录站点只负责收录和给出安装命令。

小结

gal-view 做的事情很窄,也因此好用:不改 Harness 核心,只在 Web 会话页多挂一个 Galgame 视图,再配一个能导出 JSON 的场景编辑器。装到 web profile、重启、点开「GAL视窗」,就可以把同一段会话从对话流换成舞台台词。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/gal-view/

GitHub:https://github.com/Ayase34/gal-view

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

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

小夜