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 / 幻方无官方从属关系。

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

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

小夜