跳到主要内容

运行时行为

对应后台:Web 设置 -> 进阶 -> 运行时行为

这一页主要控制公开页运行时展示、活动更新、状态卡片、Steam、缓存和规则工具。

简单来说:这里的设置大多不是改“资料内容”,而是改“这些内容在前台如何被显示、过滤、更新和对外暴露”。

前台交互与活动展示

启用全局鼠标倾斜

开启后,前台支持的卡片会跟随鼠标产生轻微倾斜效果。

如果你想让公开页更有动态感,可以打开;如果希望页面更少动效,可以关闭。

启用移动端陀螺仪倾斜

这个选项依赖「启用全局鼠标倾斜」。

开启后,在支持动作传感器的手机上,部分前台卡片会跟随设备倾斜产生效果。

提示

部分移动浏览器需要用户授权传感器权限,不同系统表现可能不完全一致。

启用在线脉冲效果

开启后,首页资料卡处于在线状态时,在线强调色会有轻微脉冲动画。

关闭后,在线状态仍然会显示,只是不会播放呼吸 / 脉冲动画。

在线强调色

picture 2

用于指定在线状态的强调色。

一般会影响在线圆点、在线状态提示,以及部分状态卡片的强调色。
如果留空或点击使用主题默认,则使用当前主题里的默认在线颜色。

隐藏活动卡片中的媒体信息

开启后,公开活动卡片里不会显示歌曲标题、歌手等媒体信息。

这适合不想公开自己正在听什么歌的场景。
关闭后,如果客户端上报了媒体信息,前台会正常展示。

在悬停卡片中显示媒体来源

picture 4

开启后,鼠标悬停到音乐信息上时,会在弹出的详情卡里显示来源,例如 Spotify、Apple Music、系统媒体等。

关闭后,媒体内容仍然可以显示,但来源信息会被隐藏。

在悬停卡片中显示媒体封面图

picture 5

开启后,悬停媒体信息时会显示封面图。

这会让音乐展示更完整,但也会保存和读取更多图片数据。
如果部署在 Serverless 平台,或者数据库空间比较紧张,不建议开得太激进。

请记得 客户端 也需要开启上报,不然没内容的哦

上报播放程序的 ICON

picture 6

开启后,客户端上报的播放程序图标会被保存,并优先显示在音乐行左侧。

例如系统识别到当前媒体来自某个播放器时,前台可以展示播放器图标。
关闭后,不会使用这类程序图标。

显示 NCM 歌曲链接

picture 7

开启后,如果活动上报里带有类似 NCM-{id} 的流派信息,悬浮卡片中会显示跳转到 music.163.com 的链接。

这个主要服务于网易云音乐相关的上报场景,基于 BetterNCM 的 inflink-rs, 这是一个很好的项目,点个star吧

每设备最大封面图数量

控制每个设备最多保留多少张媒体封面图。

  • 设置为 0:不限制数量
  • 设置为普通数字:超过后会清理旧图
注意

如果开启媒体封面图,建议设置一个合理上限。
封面图太多会增加数据库体积,也会让备份和迁移变重。

不显示随想录

picture 8

开启后,首页不再显示随想录区块。

这只影响首页展示,不会删除随想录内容,也不会影响随想录列表页和后台管理。

忽略 LockApp / loginwindow / 睡眠类活动

开启后,系统会过滤类似 Windows LockApp、macOS loginwindow、睡眠 / 锁屏类活动上报。

适合不想让锁屏、睡眠、待机出现在公开活动流里的情况。

如果你想明确展示“锁屏中”“睡眠中”,就不要开启这个。

强制显示时区

开启后,课表和活动时间会统一按照下方选择的时区显示。

关闭时,一般按访客本地时区显示。
如果你的访客分布在不同地区,开启后可以避免同一条活动在不同人那里显示成不同时间。

显示时区

这个设置在「强制显示时区」开启后生效。

例如选择中国标准时间后,公开页里的绝对时间和课表日期计算都会按 GMT+8 处理。

状态卡片外部调用

picture 9

状态卡片用于生成一个可放进 <img> 的 SVG 地址,一般可以放到 README、个人主页、签名档或其他支持图片外链的位置。

启用状态卡片接口

开启并保存后,外部才能通过 /api/status-card 读取状态卡片。

关闭时,后台仍然可以预览配置,但外部访问接口不会正常返回公开卡片。

注意

外部访问仍然受页面锁影响。
如果你启用了页面锁,状态卡片也可能无法被公开平台正常加载。

显示个人 Header

开启后,状态卡片上可以显示头像、姓名、简介和签名。

关闭后,卡片会更偏向只展示当前状态,不展示个人资料区。

头像 / 姓名 / 简介

这三个选项只有在「显示个人 Header」开启后才有意义。

分别控制状态卡片里是否显示:

  • 头像
  • 首页名称
  • 首页简介

显示签名

开启后,状态卡片会显示基础设置里的首页备注 userNote

信息

这里不会拉取一言。
即使前台备注启用了一言,状态卡片签名仍然使用手动配置的备注。

游戏状态优先显示

开启后,如果检测到 Steam 正在游玩,会优先把游戏名放在主状态位。

在设备筛选为「自动选择当前状态」时,也会优先选择正在游戏的设备。

上课时覆盖睡眠 / 锁屏状态

开启后,如果当前处于课表课程中,并且当前活动是睡眠、待机或锁屏,状态卡片会显示为「在上课中」。

这个适合希望卡片在上课时间优先展示课程状态,而不是展示设备锁屏状态。

视觉风格

控制状态卡片的整体样式。

目前有:

picture 11

  • Aurora 光晕卡

picture 13

  • Cover 头图卡

picture 12

  • Signature 签名卡

picture 10

  • Classic 经典卡

切换风格后,状态卡片的布局、背景使用方式和默认尺寸可能会变化。

Tag 标签

提示

只用于 Signature 签名卡。

用于在状态卡片上显示一个短标签,例如 #Magician

它只影响卡片展示,不参与活动判断。

背景图 Hash

提示

只用于 Signature 签名卡。

上传背景图后会自动填入,也可以手动粘贴 image-src hash。
复制出的 URL 只包含 hash,不会直接暴露原始图片地址。

头图 Hash

提示

只用于 Cover 头图卡。

上传后会作为状态卡片顶部头图使用。
和背景图一样,外部 URL 里只携带 hash。

设备筛选

控制这张状态卡片展示哪台设备的状态。

  • 自动选择当前状态:系统自动选择当前最合适的状态
  • 按设备 ID:固定展示某个设备
  • 按设备身份牌:通过设备身份牌筛选
注意

按设备身份牌时,身份牌会出现在复制出的 URL 中。
更公开的场景建议优先使用设备 ID。

宽度 / 高度 / 圆角

控制生成 SVG 状态卡片的尺寸和圆角。

如果要放进 README,建议先用预览确认尺寸是否合适。
高度太小会挤压内容,宽度太窄可能导致文字截断。

背景 / 文字 / 弱化文字 / 强调色 / 边框

这些选项控制状态卡片的颜色。

  • 背景:卡片底色
  • 签名卡背景:Signature 风格的专用背景色
  • 文字:主要文字颜色
  • 弱化文字:时间、描述等次级文字颜色
  • 强调色:在线状态、重点元素颜色
  • 边框:卡片边框颜色

调整后会直接反映到状态卡片预览和复制出的调用地址里。

活动更新与缓存

前台活动更新方式

控制公开页面如何接收活动更新。

SSE 推送

服务器主动推送活动变化,实时性更好。

普通服务器 / Docker 部署一般建议使用这个。
如果你的反向代理或部署平台不适合长连接,可能会出现页面刷新后才更新、连接断开等情况。

HTTP 轮询

前台页面按固定间隔请求活动更新。

实时性比 SSE 弱,但对 Serverless 平台更友好。
如果你部署在 Vercel 之类的平台,可以优先考虑这个。

使用 Redis 作为次级活动缓存

开启后,公开活动快照会写入 Redis。

这对多实例部署比较有用,可以让不同实例读取到相对一致的活动状态。
在某些 Serverless 环境下,这个开关可能会被强制锁定。

Redis 缓存 TTL(秒)

控制 Redis 活动缓存的过期时间。

  • 数值更短:刷新更积极,但缓存抖动和请求压力更高
  • 数值更长:更稳定、省请求,但状态可能没那么快过期

默认值一般已经够用,只有多实例或 Serverless 下状态不同步时才需要重点调整。

Steam 集成

启用 Steam 集成

开启后,当支持的设备在线并且 Steam 状态为正在游戏时,状态卡片可以显示当前 Steam 游戏。

这个功能通常和「状态卡片显示 Steam 正在游玩」「游戏状态优先显示」一起看。

Steam ID

填写 64 位 Steam ID,用于查询当前 Steam 状态。

如果填错,通常表现为检测不到正在游玩的游戏。

Steam Web API Key

用于请求 Steam Web API。

注意

Steam API Key 属于敏感凭据,不要公开到文档、截图或仓库里。

上报与历史判定

历史窗口(分钟)

控制首页历史列表只显示最近多少分钟内的活动。

数值越大,公开页保留的历史范围越长;数值越小,历史列表越“干净”。
当前限制一般为 10 分钟到 1440 分钟。

进程过期间隔(秒)

控制实时进程多久没有再次上报后会被视为过期。

默认情况下,进程在 500 秒内未再次上报就会过期。

如果设置太短,客户端偶尔漏报就可能导致状态频繁消失。
如果设置太长,设备已经停止上报后,前台还可能继续显示旧状态。

自动通过新设备

开启后,新上报设备会跳过人工审核,直接变为可用状态。

这适合完全自用、网络环境可信的部署。

注意

如果你的上报接口暴露在公网,建议谨慎开启。
关闭时,新设备需要在设备管理里手动审核,更安全一点。

按设备限制灵感提交

开启后,只有携带允许的 X-Device-Key,并且能匹配所选设备 generatedHashKey 的请求,才可以提交灵感内容。

这适合你开放了灵感提交接口,但只希望自己的设备或脚本能写入内容的情况。

关闭后,不按设备身份牌做这层限制。

规则工具

规则工具主要影响活动名称、窗口标题、媒体来源在公开页如何显示。

命中规则时显示进程名

开启后,命中应用文案规则时显示为「文案 | 进程名」。

关闭后,只显示规则文案,仍然会隐藏原始标题。

应用匹配文案规则

用于把上报的进程名 / 应用名和窗口标题,转换成更适合公开展示的文案。

一般逻辑是:

  1. 先匹配应用 / 进程名
  2. 再按窗口标题子规则继续细分
  3. 从上到下,第一条命中即生效

例如:

Code.exe -> 正在编码
标题包含 .tsx -> 正在写前端

这样前台就不会直接显示完整窗口标题,而是显示你配置过的文案。

匹配顺序

应用规则分两层:

  1. 顶层先按 processName 匹配应用 / 进程名
  2. 命中应用后,再用标题子规则匹配 processTitle
  3. 标题子规则从上到下检查,第一条命中就使用这一条的展示文案
  4. 如果没有标题子规则命中,就使用该应用分组的默认文案

processName 是不区分大小写的包含匹配。
比如规则写 code.exe,上报的进程名是 Code.exe 也会命中。

纯文本模式

纯文本模式用于判断窗口标题里是否包含某段文字。

例如:

标题条件:app/page.tsx
展示文案:正在写前台页面

如果窗口标题是:

app/page.tsx - waken-wa - Visual Studio Code

就会命中这条规则。

纯文本模式同样忽略大小写。

Regex 模式

Regex 模式用于用正则表达式匹配窗口标题。

这里匹配的是 窗口标题 processTitle,不是进程名。
正则会以不区分大小写的方式执行,相当于使用 i 标记。

如果你从其他正则工具复制了 (?i) 开头的写法,例如:

(?i)(refactor|rewrite|migrate)

也可以使用。系统会兼容开头的 (?i),实际效果和下面这样一样:

(refactor|rewrite|migrate)

不过因为这里本来就默认忽略大小写,所以一般不需要手动写 (?i)

例如你想匹配所有正在编辑 .tsx 文件的 VS Code 窗口,可以这样写:

应用/进程名:Code.exe
标题条件:\.tsx\b
展示文案:正在写前端

如果窗口标题是:

runtime.tsx - waken-wa - Visual Studio Code

就会显示为:

正在写前端
提示

正则里 . 表示任意字符。
如果你想匹配真正的点号,比如 .tsx,需要写成 \.tsx

Regex 捕获组

Regex 模式命中后,展示文案可以使用捕获到的内容。

可用变量:

  • {process}:进程名
  • {title}:窗口标题
  • {match}:正则完整命中的内容
  • {match1}:第 1 个捕获组
  • {match2}:第 2 个捕获组
  • {match:name}:命名捕获组

例如:

标题条件:(.+?) - Visual Studio Code
展示文案:正在编辑:{match1}

窗口标题:

runtime.md - Visual Studio Code

显示结果:

正在编辑:runtime.md

也可以用命名捕获:

标题条件:(?<file>.+?) - Visual Studio Code
展示文案:正在编辑:{match:file}

效果和 {match1} 类似,只是可读性更好。

注意

如果该应用同时启用了「仅显示应用名」,那么 {title} 会是空的。
这种情况下,标题子规则也可能没有你预期的效果。

常见写法

匹配某类文件:

\.md\b
\.tsx\b
\.vue\b

匹配标题结尾:

\.md$

提取浏览器页面标题:

(.+?) - Google Chrome

提取 VS Code 当前文件名:

(?<file>.+?) - Visual Studio Code
注意

正则写错时,保存时会提示无效 Regex。
如果不熟悉正则,建议先用纯文本模式;需要提取标题内容时,再使用 Regex。

保存上报行为的应用记录

开启后,系统会保存上报过的应用记录,用于规则选择和导出。

关闭后,不再新增历史记录,但已经保存过的历史数据会保留。

应用标题保存数量

控制每个应用、每个平台最多保存多少条最近标题。

  • 0:只保存应用名,不保存标题
  • 填更大的数字:规则编辑时可参考更多历史标题

如果你很在意窗口标题隐私,可以调小,甚至设置为 0

应用显示筛选

用于按应用名过滤公开状态和历史记录。

  • 黑名单模式:列表中的应用不会显示
  • 白名单模式:只有列表中的应用会显示
注意

白名单为空时,前台不会显示任何活动记录。

仅显示应用名

命中这里的应用,只显示应用名,不显示窗口标题等详细内容。

适合微信、浏览器、编辑器这类窗口标题可能包含隐私内容的应用。

媒体来源规则(play_source)

根据上报的 metadata.play_source 处理媒体信息。

可以选择:

  • 屏蔽:命中后隐藏媒体信息
  • 复写:命中后把来源显示为你配置的名称

例如把 system_media 复写为 Spotify,前台看到的来源就会更友好。

导出已使用应用(JSON)

把已经记录到的应用历史导出成 JSON。

一般用于备份、排查,或者把历史应用列表拿去整理规则。

复制规则 JSON

复制当前规则配置。

适合迁移到另一套环境,或者在大改规则前留一份备份。

导入规则 JSON

把外部规则 JSON 导入到当前草稿。

导入后需要保存,才会真正写入配置。

提示

如果你要大改规则,建议先复制一份现有规则 JSON。
规则一多,回滚靠记忆会很痛苦w