Skip to main content

st-theme

制作或修改 SillyTavern 主题:主题字段、自定义 CSS、SillyTavern 与 TauriTavern 的差异,以及怎样核对结果。

ソース情報

リポジトリ
Darkatse/TavernStudio
ソースの最終更新活動
2026年10月21日 18:03
検出された SKILL.md の言語
中国語
スター
0
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
st-theme
description
制作或修改 SillyTavern 主题:主题字段、自定义 CSS、SillyTavern 与 TauriTavern 的差异,以及怎样核对结果。
# SillyTavern 主题 一个主题由两部分组成: - **主题字段**:颜色、模糊强度、字体缩放、聊天样式等,存在 `power_user` 里。每个字段由界面上的一个控件设置,并驱动若干 CSS 变量。 - **自定义 CSS**:`power_user.custom_css`,处理字段覆盖不到的地方。 项目里,`theme.json` 是字段,`theme.css` 是自定义 CSS,`studio.json` 把两者挂到前端的设置上。保存后预览会自己更新。 ## 先查解剖图 `vendor/anatomy/` 是从当前前端的源码生成的,比记忆可靠: - `theme.json`:每个主题字段的控件、中文标签、说明,以及它驱动的 CSS 变量和 class。 - `css-variables.json`:核心样式表里的 CSS 变量、默认值,以及哪些字段会改它。 - `landmarks.json`:页面的主要区域(如 `#chat`、`.mes`、`#send_form`、`#top-bar`)、前端克隆用的模板,以及由设置切换的 class。 需要更细的规则时,读 `vendor/src/` 里的源码,例如 `style.css`。 ## 先用字段,再写 CSS - 颜色、模糊、阴影这类改动先改字段。字段改的是 `--SmartTheme…` 变量,整个界面会一致地跟着变,作者以后在设置里调整也会生效。 - CSS 里引用这些变量,不写死颜色:`color: var(--SmartThemeBodyColor)`。 - 字段的取值格式照 `theme.json` 里现有的写,颜色是 `rgba(r, g, b, a)`。 - 不要在 `theme.json` 里加 `theme` 或 `reduced_motion` 键:前者是用户选中了哪个已保存的主题,后者是用户的无障碍偏好,都不属于主题。 ## 写 CSS 时注意 - 选择器以 `landmarks.json` 里的区域为准,不凭印象写。 - 消息正文里的 HTML 经过前端清洗:作者写的 class 会被加上 `custom-` 前缀,消息里的 `<style>` 会被限定在消息内。主题要选中消息里的作者内容时,写 `.custom-名字`。 - 核心样式的优先级通常不高,用更具体的选择器就能覆盖,少用 `!important`;用了的话,作者在设置里改字段就压不住它。 - 聊天背景由前端的背景功能管理,作者在背景面板里选,主题不替换它。面板、按钮、消息框上的装饰图可以由主题提供,见下文"图片与字体"。 - 毛玻璃效果依赖 `backdrop-filter` 和模糊强度字段(`--blurStrength`);面板背景要留一些透明度,模糊才看得见。 - 窄屏下前端会换一套布局。桌面和移动两种设备都要看。 ## 图片与字体 主题常用图片营造氛围,用网络字体定调。页面加载的图片和字体统称资源。 - 作者自己的图片和字体放进项目的 `assets/`,预览按 `/user/files/assets/<文件名>` 提供,CSS 里写 `url("/user/files/assets/paper.webp")`。作者可以把文件拖进文件树,或用文件树的导入按钮。 - `read_file` 能读图片和字体:返回格式、大小和预览里的 URL;图片附上图本身,字体附上各类文字的覆盖、可用的 `@font-face` 和一张样张。 - 导出的主题 JSON 只带 CSS,不带 `assets/` 里的文件。主题要分享给别人时,这些文件需要放到别人也能访问的地方,例如作者自己的图床,或作者的 GitHub 仓库经 jsDelivr 提供,再把 URL 换成那里的地址。动手之前先问作者。 **图片** - 尺寸接近显示尺寸:图标显示为 24 px,3x 屏需要 72 px,用 1024 px 的原图会让每个用户多下载几百 KB。 - 照片和纹理用 WebP 或 JPEG,带透明的小图用 PNG 或 WebP,简单图形用 SVG。 - 只有很小的 SVG 适合写成 data URL。内联的图片随 CSS 存进设置,ST 每次保存设置都要写一遍。 - 图床的地址要能长期访问,不确定时问作者。 **字体** - 字体栈以通用字族结尾(`serif`、`sans-serif`),中文主题在它前面写一个中文字族,例如 `"TRW UDMincho", "Songti SC", serif`。栈里只有一个网络字体时,它加载失败或缺字,文字就落到浏览器的默认字体。 - 作者没有指定中文字体时,主动问作者要不要去 [ZeoSeven Fonts](https://fonts.zeoseven.com) 挑一款喜欢的:打开字体页,点"嵌入到 Web 项目",把那段代码或字体页的链接(`/items/<id>/`)发过来。然后写: ```css @import url("https://fontsapi.zeoseven.com/<id>/main/result.css"); ``` 字族名在那段代码里;只拿到 id 时,`inspect_resources` 会列出这个样式表声明的字族。这些字体按字符切成了很多片,页面只下载用到的部分。 - 拉丁字体可以用 Google Fonts 或 Fontsource 的 CSS。 - `@import` 写在 CSS 的最前面、所有规则之前,否则浏览器忽略它。 - 字体的许可写在样式表开头的注释里,`inspect_resources` 会读出来。不允许商用或再分发的字体,先告诉作者。 - 导入了却没有用到的字体,样式表照样要下载,删掉它。 ## SillyTavern 与 TauriTavern - TauriTavern 运行同一套前端,多出几个字段和界面元素,以它的 `vendor/anatomy/` 为准。切换前端后,`vendor/` 跟着变。 - TauriTavern 的聊天区由自己的布局层排布,滚动方式与 SillyTavern 不同;不要假设 `#chat` 的滚动结构。 - TauriTavern 启动时按名字解析选中的主题,所以项目不拥有主题名(见上文)。 - 交付前在两种前端上都核对一遍。 ## 核对 - 截图看整体观感:配色是否协调、层次是否清楚、有没有被遮挡或裁切的地方。 - 数值不靠截图判断:颜色、尺寸、对比度,读页面里的计算样式。正文与背景的对比度至少 4.5:1。 - 逐项看过:普通文本、斜体、引号、下划线文本、代码块、长消息、输入框、顶栏与侧边面板、弹出菜单。 - 用了图片或字体时运行 `inspect_resources`。它列出加载失败的图片、远大于显示尺寸的图片、缺失的字体和缺字、没有通用字族的字体栈、没用到的导入,处理完再交付。 - 改完 CSS 后看一眼运行日志,确认没有报错。引用了 `assets/` 里没有的文件时,日志里有一条 404。
GitHubで見る