用 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

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

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

小夜