运行时行为
对应后台:Web 设置 -> 进阶 -> 运行时行为
这一页主要控制公开页运行时展示、活动更新、状态卡片、Steam、缓存和规则工具。
简单来说:这里的设置大多不是改“资料内容”,而是改“这些内容在前台如何被显示、过滤、更新和对外暴露”。
前台交互与活动展示
启用全局鼠标倾斜
开启后,前台支持的卡片会跟随鼠标产生轻微倾斜效果。
如果你想让公开页更有动态感,可以打开;如果希望页面更少动效,可以关闭。
启用移动端陀螺仪倾斜
这个选项依赖「启用全局鼠标倾斜」。
开启后,在支持动作传感器的手机上,部分前台卡片会跟随设备倾斜产生效果。
部分移动浏览器需要用户授权传感器权限,不同系统表现可能不完全一致。
启用在线脉冲效果
开启后,首页资料卡处于在线状态时,在线强调色会有轻微脉冲动画。
关闭后,在线状态仍然会显示,只是不会播放呼吸 / 脉冲动画。
在线强调色

用于指定在线状态的强调色。
一般会影响在线圆点、在线状态提示,以及部分状态卡片的强调色。
如果留空或点击使用主题默认,则使用当前主题里的默认在线颜色。
隐藏活动卡片中的媒体信息
开启后,公开活动卡片里不会显示歌曲标题、歌手等媒体信息。
这适合不想公开自己正在听什么歌的场景。
关闭后,如果客户端上报了媒体信息,前台会正常展示。
在悬停卡片中显示媒体来源

开启后,鼠标悬停到音乐信息上时,会在弹出的详情卡里显示来源,例如 Spotify、Apple Music、系统媒体等。
关闭后,媒体内容仍然可以显示,但来源信息会被隐藏。
在悬停卡片中显示媒体封面图

开启后,悬停媒体信息时会显示封面图。
这会让音乐展示更完整,但也会保存和读取更多图片数据。
如果部署在 Serverless 平台,或者数据库空间比较紧张,不建议开得太激进。
请记得 客户端 也需要开启上报,不然没内容的哦
上报播放程序的 ICON

开启后,客户端上报的播放程序图标会被保存,并优先显示在音乐行左侧。
例如系统识别到当前媒体来自某个播放器时,前台可以展示播放器图标。
关闭后,不会使用这类程序图标。
显示 NCM 歌曲链接

开启后,如果活动上报里带有类似 NCM-{id} 的流派信息,悬浮卡片中会显示跳转到 music.163.com 的链接。
这个主要服务于网易云音乐相关的上报场景,基于 BetterNCM 的 inflink-rs, 这是一个很好的项目,点个star吧
每设备最大封面图数量
控制每个设备最多保留多少张媒体封面图。
- 设置为
0:不限制数量 - 设置为普通数字:超过后会清理旧图
如果开启媒体封面图,建议设置一个合理上限。
封面图太多会增加数据库体积,也会让备份和迁移变重。
不显示随想录

开启后,首页不再显示随想录区块。
这只影响首页展示,不会删除随想录内容,也不会影响随想录列表页和后台管理。
忽略 LockApp / loginwindow / 睡眠类活动
开启后,系统会过滤类似 Windows LockApp、macOS loginwindow、睡眠 / 锁屏类活动上报。
适合不想让锁屏、睡眠、待机出现在公开活动流里的情况。
如果你想明确展示“锁屏中”“睡眠中”,就不要开启这个。
强制显示时区
开启后,课表和活动时间会统一按照下方选择的时区显示。
关闭时,一般按访客本地时区显示。
如果你的访客分布在不同地区,开启后可以避免同一条活动在不同人那里显示成不同时间。
显示时区
这个设置在「强制显示时区」开启后生效。
例如选择中国标准时间后,公开页里的绝对时间和课表日期计算都会按 GMT+8 处理。
状态卡片外部调用

状态卡片用于生成一个可放进 <img> 的 SVG 地址,一般可以放到 README、个人主页、签名档或其他支持图片外链的位置。
启用状态卡片接口
开启并保存后,外部才能通过 /api/status-card 读取状态卡片。
关闭时,后台仍然可以预览配置,但外部访问接口不会正常返回公开卡片。
外部访问仍然受页面锁影响。
如果你启用了页面锁,状态卡片也可能无法被公开平台正常加载。
显示个人 Header
开启后,状态卡片上可以显示头像、姓名、简介和签名。
关闭后,卡片会更偏向只展示当前状态,不展示个人资料区。
头像 / 姓名 / 简介
这三个选项只有在「显示个人 Header」开启后才有意义。
分别控制状态卡片里是否显示:
- 头像
- 首页名称
- 首页简介
显示签名
开启后,状态卡片会显示基础设置里的首页备注 userNote。
这里不会拉取一言。
即使前台备注启用了一言,状态卡片签名仍然使用手动配置的备注。
游戏状态优先显示
开启后,如果检测到 Steam 正在游玩,会优先把游戏名放在主状态位。
在设备筛选为「自动选择当前状态」时,也会优先选择正在游戏的设备。
上课时覆盖睡眠 / 锁屏状态
开启后,如果当前处于课表课程中,并且当前活动是睡眠、待机或锁屏,状态卡片会显示为「在上课中」。
这个适合希望卡片在上课时间优先展示课程状态,而不是展示设备锁屏状态。
视觉风格
控制状态卡片的整体样式。
目前有:

- Aurora 光晕卡

- Cover 头图卡

- Signature 签名卡

- 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 的请求,才可以提交灵感内容。
这适合你开放了灵感提交接口,但只希望自己的设备或脚本能写入内容的情况。
关闭后,不按设备身份牌做这层限制。
规则工具
规则工具主要影响活动名称、窗口标题、媒体来源在公开页如何显示。
命中规则时显示进程名
开启后,命中应用文案规则时显示为「文案 | 进程名」。
关闭后,只显示规则文案,仍然会隐藏原始标题。
应用匹配文案规则
用于把上报的进程名 / 应用名和窗口标题,转换成更适合公开展示的文案。
一般逻辑是:
- 先匹配应用 / 进程名
- 再按窗口标题子规则继续细分
- 从上到下,第一条命中即生效
例如:
Code.exe -> 正在编码
标题包含 .tsx -> 正在写前端
这样前台就不会直接显示完整窗口标题,而是显示你配置过的文案。
匹配顺序
应用规则分两层:
- 顶层先按
processName匹配应用 / 进程名 - 命中应用后,再用标题子规则匹配
processTitle - 标题子规则从上到下检查,第一条命中就使用这一条的展示文案
- 如果没有标题子规则命中,就使用该应用分组的默认文案
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