DeepSeek Harness 消息渲染插件 dsh-tavern-renderer

前言

DeepSeek Harness (DSH) 採用插件化架構。默認的渲染器通常僅滿足基礎展示需求。如果你需要更豐富的消息格式化、變量處理或結構化文檔渲染,可以在 DSH 中添加插件。dsh-tavern-renderer 是一個面向 DeepSeek Harness 的自包含“酒館式”消息渲染插件。它不修改持久會話事件,只改變 DOM 展示,也不改變送給模型的 prompt。

核心能力

該插件提供了一套完整的渲染管線,支持以下功能:

  • 有序正則替換:支持 $1、$<name>、$&、$$ 和 {{match}} 插值,規則按數組順序串行執行。
  • 宏和變量系統:內置角色 ({{char}})、用戶 ({{user}})、時間、日期等變量,支持自定義變量 ({{setvar}}, {{addvar}})。
  • 安全內聯表達式:支持有限制的 JavaScript 表達式(如 {{js::1 + 2 * 3}}),但禁止原型訪問、函數調用和 eval。
  • Markdown 和 HTML/CSS 清洗:支持完整的 Markdown 語法,並對 HTML/CSS 進行嚴格清洗,移除危險標籤、屬性和遠程資源。
  • 角色模板:允許自定義不同角色的 HTML 包裝結構。
  • 主題系統:支持預設主題切換和自定義 CSS 注入。
  • 八種沉浸式文檔模板:包括 letter(信件)、exam(試卷)、postcard(明信片)、telegram(電報)、dossier(卷宗)等。

安裝與啓用

當前適配目標爲 DeepSeek Harness 0.1.7-rc.2。使用以下命令安裝:

npx --yes @deepseek-ai/dsh@0.1.7-rc.2 plugin --profile web add .

啓動後使用終端打印的完整 Web URL(含一次性 token)進入。認證由宿主處理,插件無需自行管理 token。

使用示例

正則配置

插件支持緊湊語法和對象結構兩種配置方式:

DeepSeekTavernRenderer.configure({
  regexRules: [
    '/([A-Z]+)-(\\d+)/編號 $2,角色 {{char}},類型 $1/g',
  ],
})

宏和變量調用

使用內置變量和自定義變量:

// 內置變量
{{char}}, {{user}}, {{time}}, {{date}}

// 自定義變量
{{setvar::mood::calm}}
{{getvar::mood}}
{{incvar::turn}}

沉浸式文檔模板

模型只需輸出特定圍欄即可生成結構化文檔:

:::letter
from: {{char}}
to: {{user}}
date: {{date}}
subject: The signal after midnight
---
Dear **{{user}}**,

The receiver woke at 23:40.
:::

主題切換

通過 API 切換預設主題或注入自定義 CSS:

DeepSeekTavernRenderer.setTheme('harness')
DeepSeekTavernRenderer.setCustomCss(`
  .dsh-tr-message { line-height: 1.85 }
`)

注意事項

  • 渲染邊界:插件只消費 assistant-step / user / steering 的展示節點,不讀寫持久會話事件,也不參與 RP settlement。流式 running 與最終 settled / interrupted 語義保持。
  • 安全機制:HTML 清洗採用 DOM 樹和顯式標籤/屬性白名單。消息類名統一改寫爲 custom-*,CSS 限定在 .dsh-tr-message-content 下。
  • 無後端依賴:沒有 ApiProxy、後端 Remote 服務或自定義 settings card。主題和宏配置由瀏覽器 API 和 localStorage 管理。
  • 權限範圍:插件以當前 DSH 進程權限運行(瀏覽器端),安裝前應檢查源碼。

生態背景

DSH 理念是“一切皆插件”。社區目錄(https://www.skillhub.cn/plugins)是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

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

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

小夜