Preface

DeepSeek Harness (CLI name dsh) treats models, tools, sessions, and UIs as plugins. The official repository’s slogan is “Everything is a Plugin”: you can switch the view without modifying the Harness source code. The default session page of the Web GUI features “Chat” and “Trace” — ideal for coding and viewing logs, but if you want to read the same session as visual novel dialogue, the default layout feels dry.

The community plugin gal-view does exactly that: it adds a “GAL View” tab to the session sidebar, rendering the current session as a 16:9 stage with character sprites, dialogue boxes, a typewriter effect, and player input. It follows the official bundle format, and will work after being installed to the web profile and restarting. Below is a collated guide based on the directory page, the GitHub repository README, and cross-checked source code: what it is, what it can do, how to install it, and how to use it.

The community plugin directory deepseek-harness-plugin.com is an independent site for discovering and installing community plugins, and has no official affiliation with DeepSeek / HyperGryph. Do not treat it as an official app store.

What It Is

gal-view (also referred to as GAL View on the page) is a UI enhancement plugin maintained by GitHub user Ayase34, with the repository address Ayase34/gal-view. It is licensed under MIT. The version number in package.json is 0.3.3, and the primary language is JavaScript. The repository was created on 2026-08-14, and was added to the community directory on 2026-08-15. As of 2026-08-17, the GitHub repository shows 75 stars; the directory page still listed 34 stars at the time, so refer to the repository page for accurate star counts.

The problem it solves is specific: the session area of the DSH Web GUI only has a regular chat flow. After installing this plugin, a new “GAL View” tab will appear between “Chat” and “Trace” in the session sidebar. When opened, the main session area transforms into a 16:9 visual novel stage: with placeholder character sprites, large dialogue boxes, typewriter-style dialogue, and a player input box at the bottom. The built-in edit mode allows dragging elements, modifying properties, adjusting layers, and the changes are immediately synced back to game mode.

The plugin is declared to use the official bundle format. The Node side is extremely minimal, with scene state stored in the browser and no backend dependencies; the main body is the client side, which registers the gal view via the conversation.view slot (with order set to 5, falling between 0 for “Chat” and 10 for “Trace”). The dsh.client.platform field in package.json is set to web, so it only works on the Web GUI, not the terminal TUI.

Core Features

Game Mode: Read Sessions as Dialogue

Opening “GAL View” defaults to game mode. The default stage size is 960×540 (16:9). The default preset gal-scene.json included in the repository will be automatically loaded on first opening when no saved scene exists locally; the “Reset” function in edit mode will also revert to this preset.

The available features in game mode come from the README and client source code:
1. Typewriter Dialogue: Assistant replies are split by pages, and typed out character by character. You can select three speeds in the settings: Slow, Normal, and Fast. Clicking the dialogue box will finish typing the current page if typing is incomplete, or turn to the next page if typing is complete and there is an upcoming page.
2. Player Input: The bottom input box uses the same submission pipeline as the host application: press Enter to send, Shift+Enter for a new line. For empty sessions, preset welcome messages will be displayed first, defaulting to “……The test connection has been established.” and “This is a visual novel scene for testing AI dialogue systems.”
3. Speaker Nameplates: The player’s lines display the player nameplate, the assistant’s lines display the AI nameplate, and system lines hide both. The default preset uses “DeepSeek” and “Kirigaya Kazuto” (note: original text uses 雾子, which refers to Kirigaya Kazuto’s pet cat, but the literal translation is Kirigaya Kazuto, but it’s better to keep as 雾子 / Kirigaya Kiriko? Wait no, original is 雾子, which is a common nickname for a cat, but the original text says default characters are DeepSeek and 雾子, so translate as “Kiriko” or keep as 雾zi? Let’s use “Kiriko” for readability, or keep as “Wuko”? No, better to translate properly: “Kiriko” as the standard romanization of 雾子) as the characters, with the player name defaulting to “You”, all of which can be modified.
4. Stage Function Buttons: Four transparent buttons are pre-installed in the scene: History, Auto, Skip, and Settings. History slides out the chat log from the right side; Auto will pause briefly after finishing the current page before turning to the next one; Skip skips the typing animation; Settings allows modifying the speaking characters, player name, and typing speed.
5. Running Status: When the model is still generating, the dialogue box will display status pages such as “Thinking”, “Writing Code”, “Waiting for Response”. Tool calls and tool results will not appear in the dialogue to avoid cluttering the visual novel box with tool noise. Errors, commands, and compressed dialogue will enter the history as system lines.
6. Reading Progress: The current line, page number, and typing progress are saved in the browser per session, so you will not have to retype from the beginning when switching tabs or refreshing the page.

Session text will have Markdown markup stripped before entering the dialogue box, to avoid code fences, bold symbols, and other formatting taking up space in the dialogue box.

Edit Mode: The Scene Is a JSON File

You can switch to “Edit Mode” via the top bar. The scene object is the single source of truth: game mode reads it for rendering, the editor modifies it, and both sides update in real time. Element types include backgrounds, characters, dialogue boxes, dialogue text, speaker names, imported images, buttons, and transparent buttons.

The operations provided by the editor are consistent between the repository README and Editor.jsx:
- Drag on the canvas, modify position / size / rotation / opacity / layer
- Lock, hide; move up, move down, move to top, move to bottom in the element tree
- Grid and snapping (default grid size 24px, snapping enabled by default)
- Add, copy (Ctrl+D), delete (Delete / Backspace)
- Undo / Redo (Ctrl+Z / Ctrl+Y, history stack limit 100 steps)
- Import, export scene JSON (Ctrl+S exports as gal-scene.json)
- Import image assets, import fonts, then apply them to elements in the properties panel
- “Reset” to revert to the repository’s default preset

Image assets accept PNG / JPEG / WebP / GIF, with a maximum size of 8MB per file, stored in IndexedDB. Fonts accept TTF / OTF / WOFF / WOFF2, with a maximum size of 24MB per file, registered via @font-face. When exporting the scene, referenced images and fonts will be embedded into the JSON, so others can restore the scene by importing the same file.

The properties panel can also modify character names and colors, dialogue box background (CSS background value), text alignment, and the functions bound to transparent buttons (History / Auto / Skip / Settings). Speaker nameplates can be set to “show when player is speaking” or “show when AI is speaking”.

Toggles and Local Save Files

The “GAL View” tab under the “Plugins” section of the settings panel is used to enable or disable the tab on the session page. Turning it off will hide the tab, while the scene and settings will be retained, and reopening it will restore the state.

The README clearly states that scene layouts, asset images, fonts, and reading progress are saved in the current browser’s localStorage / IndexedDB. Reinstalling or uninstalling the plugin will not delete this data; clearing the browser data for this site will reset it. Persistence will fail silently in incognito mode or when storage quota is exceeded, but the functionality will still work for the current session.

Installation and Activation

First confirm that dsh is working on your local machine. If you are running Harness from a source checkout (daily command is pnpm dsh), first cd to the Harness repository root directory, then replace all instances of dsh below with pnpm dsh.

The installation command given on the community directory page is:

dsh plugin add github:Ayase34/gal-view

This plugin only works on the Web GUI. The repository README requires installing it to the web profile, and recommends pinning to the main branch:

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

#main means tracking the repository’s main branch. For reproducible installations, replace it with a specific commit hash. The directory page uses the syntax dsh plugin add github:Ayase34/gal-view#commit; the README example uses #ae73dca.

You must restart the web service after installation. The bundle layer is synthesized at startup, and the plugin will not load without a restart. After restarting and opening the DeepSeek Harness Web GUI session page, the “GAL View” tab should appear between “Chat” and “Trace” in the sidebar.

Optional verification:

dsh --profile web --dump-config

If you can see the # == gal-view section in the output, the plugin has been included in the bundle.

Updating and uninstalling also requires using the web profile, and restarting the web service afterwards:

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

Both the directory page and the README remind users that the plugin runs with the permissions of the current dsh process, and may execute code during installation. Please review the source code repository and license before installing.

Typical Usage

The steps below can be reproduced directly without additional configuration files:
1. Install the plugin to the web profile following the previous section, and restart the web service.
2. Open the DeepSeek Harness Web GUI and enter any session.
3. Click the “GAL View” tab in the middle of the sidebar. On first opening with no local save, the repository’s default preset will load: dark background, two placeholder characters, and a bottom dialogue box.
4. Type a sentence in the bottom input box and press Enter to send. After the player’s dialogue finishes typing, when the model is thinking or writing code, the dialogue box will switch to the status page; after the assistant’s full reply is finalized, it will be typed out character by character.
5. Click “History” to review the full conversation; click the dialogue box or “Skip” to skip the typing animation; click “Settings” to modify the player name or typing speed.
6. Switch to “Edit Mode”, drag the character sprite to a suitable position, or use “Import Assets” to replace it with your own PNG / JPEG file. Switch back to game mode immediately afterwards to view the changes.
7. When satisfied with the scene, press Ctrl+S (or click “Export”) to get gal-scene.json. When switching machines or sharing with others, use “Import Scene” in the editor to reload this file.
8. When you no longer want to see the tab, go to Settings → Plugins → GAL View and toggle “Enable GAL View” off. The scene will not be deleted.

For developers looking to modify the repository’s default preset, the process outlined in the README is: edit the scene → press Ctrl+S to export → replace the root gal-scene.json file in the repository with the exported file → run npm run build:client and commit the changes. This step is not required for regular users.

Applicable Scenarios and Notes

It is suitable for the following use cases:
- You already use the DSH Web GUI and want to switch the session interface to a visual novel reading style, while retaining the original “Chat” and “Trace” tabs.
- You need to customize character sprites, dialogue boxes, and fonts, and want to export the scene as a single JSON file.
- During demonstrations or screen recordings, you want the session to look like a visual novel rather than a regular chat list.

Please note the following before using:
1. Only compatible with Web GUI. The dsh.client.platform is set to web, so this tab will not appear in the terminal TUI.
2. You must restart the web service. Simply running dsh plugin add is not enough.
3. Permissions and License. The plugin runs with the permissions of the current dsh process, and may execute code during installation. The repository is licensed under MIT, with the copyright notice stating Copyright (c) 2026 Yunicon. Review the source code and LICENSE before installing.
4. Data is stored in the browser. Switching browsers, clearing site data, or using a different machine will not automatically sync your local scene, you will need to export gal-scene.json manually.
5. Not a full visual novel engine. It maps DSH sessions to dialogue and a stage, and does not provide branching story scripts, CG galleries, or separate save slots. Tool calls are intentionally excluded from the dialogue box.
6. Default sprites are placeholders. To get a polished look, you will need to import your own image assets.
7. Directory is not an official store. The plugin comes from a community repository, and the directory site only handles indexing and provides installation commands.

Summary

gal-view does a narrow, well-defined job, which is why it works so well: without modifying the Harness core, it only adds a visual novel view to the Web session page, paired with a scene editor that can export JSON files. Install it to the web profile, restart the service, and open “GAL View” to switch the same session from a chat flow to a stage dialogue view.

Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/gal-view/

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