前言¶
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 / 幻方無官方從屬關係。