Skip to content

About

RubyPhone - a fully simulated smartphone UI for SillyTavern chat. Zero external database: every app state lives in chat metadata and travels with the conversation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

📱 RubyPhone — a simulated smartphone UI for SillyTavern

A full-featured, realistic mobile terminal for SillyTavern chat. Built on yuzuki-phone (native gesture view stack + dual-track model transport) plus two community projects it absorbs: a social-feed phone (Xiaohongshu feed + Tieba threads + public-opinion feed) and a playbook / status-bar plugin (458 curated playbooks injected on demand, 666 achievements, live HUD). Zero external database — fully native, install and go.


🌟 Core: no external database (Zero-Database Architecture)

传统的小手机与灵感状态栏插件强依赖 AutoCardUpdaterAPI (ACU SQLite 数据库) 与几万条的外部大数据库模板,没装插件直接弹窗报错瘫痪,换卡/换分支极易数据串味。

RubyPhone 采用彻底的原生解耦方案:

  1. 内置静态化资产:
    • 458 条精选玩法数据(体位 239、多人体位 53、侍奉 77、场景 34、附加玩法 55)全量内置为轻量静态 JSON(11KB)。
    • 666 条全量纯净成就库(功能 212、隐藏 167、剧情 91、养成 78、收集 53、纪事 41、称号 24)全量内置为轻量静态 JSON(200KB)。
    • 零网络请求、零外部数据库依赖,开箱即用!
  2. 原生会话沙箱持久化:
    • 微信聊天、小红书笔记、贴吧发帖、已选玩法、已解锁成就状态全部存入当前聊天的 SillyTavern.getContext().chatMetadata['st_virtual_phone']。
    • 随聊天记录自动保存,换会话自动隔离防串味,导出聊天记录永久保留进度!
  3. 瞬时世界书与 Prompt 动态注入:
    • 在灵感工坊勾选玩法后,自动在发送请求时动态挂载到系统深度,生成结束后根据开关一键自动清空,零污染长线上下文!

📲 App ecosystem

🔧 v2.8.5 修复 —— 4 个「做了却打不开」的 App 全部接通

📖 阅读 (Reading) —— [v2.8.7 纯本地 TXT + EPUB 阅读器]

  • 多编码自动探测:UTF-8 / GB18030 / GBK / Big5 / UTF-16,BOM 优先 + 可读性评分制,乱码自动规避。
  • EPUB 支持(v2.8.7):零依赖 ZIP 解析 + 原生 DecompressionStream 解压,自动提取书名/作者/章节。
  • 章节智能切分:第X章/卷/回/节 + Chapter + Markdown 标题,自动识别序章/楔子。
  • 段落格式自适应:空行分段 / 段首缩进 / 一行一段 三种网文排版自动探测。
  • 仿纸质书排版:首行缩进、衬线字体、字号可调、章节跳转、进度记忆。
  • 主题切换(v2.8.7):☀ 羊皮纸 / 🌙 夜间 / ⚫ 暗墨,阅读进度条 + 百分比。
  • 书架管理:导入 / 删除 / 同名覆盖;书架只存书目,正文存会话内存避免存档膨胀。

🎰 幸运转盘 (Gacha) —— [v2.8.8 扭蛋抽卡]

  • 5 卡池 × 630 道具:午夜情趣百宝箱 / 奇妙日常杂货 / 漫展与私房Cosplay / 职场生存指南 / 青春校园传说(源自 V3.759 状态栏扭蛋库)。
  • 品质分级:神话 / 传说 / 史诗 / 稀有 / 优秀 / 普通,权重抽卡。
  • 玩法:单抽 100 / 十连 900 幸运币,背包库存 + 抽卡记录,最高品质可分享聊天互动。
  • 幸运币账本:本地持久化,抽卡消耗 + 赠送积累。

💬 撩语 (DirtyTalk) —— [v2.48.0 说话方式词库]

  • 199 条精选语料词库:三档权重(重 / 中 / 轻)× 8 风格(调情挑逗 / 撒娇软语 / 傲娇嘴硬 / 清冷疏离 / 豪放直白 / 温柔缱绻 / 病娇偏执 / 贤妻良母)分类索引,词库正文内置静态化,零网络请求。
  • 装配注入:已装配条目以「【当前撩语】」块在生成前注入 system,除剧情明确改口外始终生效;空清单返回空串、注入失败静默不阻断生成。
  • 抽卡联动:独立 pool_dt 卡池 × 199 道具(按档位权重分配、unique 不重复),不污染「全部」等既有池。
  • 会话隔离:装配清单 dt_state_v1 随会话隔离防串味;背包从扭蛋背包现取不复制。

💰 钱袋 / 🪪 档案 / 📜 剧情线 —— [v2.49.0 记忆插件桥面消费三件套]

  • 钱袋 (Wallet):消费记忆插件 snapshot.moneyLedger,展示账户余额与最近流水(最新在前、金额/楼层如实),当前账上金额注入生成侧防正文钱数漂移。
  • 档案 (Profile):消费 snapshot.protagonist + snapshot.lifeDetails,主角字段平铺(嵌套不展开、不猜),生活小档案按 常驻/进行中/已归档 三层保持上游顺序。
  • 剧情线 (Plotline):消费 snapshot.outline + snapshot.worldProg,当前阶段/节点、承诺账(未兑现优先)、支线、角色认知(已知/未意识到)四块;注入只带阶段+未兑现承诺+推进中支线。
  • 同规纪律:只读桥 / 五态归因(桥缺席·无快照·旧版无面·空·就绪分开报,读不到不画成灰)/ 不落库不持副本 / 懒加载单例 / 设置随会话隔离。
  • 撩语×场景联动:词库页顶部「当前所在」卡,位置链复用 place 内核 currentChainOf,场所关键词→风格推荐(未命中不编)。
  • 微信链路补口:buildMessagesArray 在记忆召回后以表驱动(_injectApps 表 + for 循环)统一注入 6 个装配类 App 的 promptBlock(撩语/金手指/地点/钱袋/档案/剧情线);此前只覆盖撩语 + 金手指,其余四 App 在微信聊天里同样失效(v2.50.0 补齐)。取已存在实例不触发懒加载,空块不 push,try/catch 静默。

查手机 / B站 / 小剧场 / 图谱 四个 App 此前已内置完整代码,但 phone:openApp 缺路由分支,点图标只弹「功能开发中」;其中查手机与图谱的视图文件还各有一处语法损坏(缺 _bind() 方法头 / join(' 未闭合)导致模块编译失败。本轮全部修复:24 个 App 全部可打开,渲染冒烟测试通过。

🌈 心境 (Mood) —— [v2.8.3 聚合三大后台引擎]

🔮 塔罗 (Tarot) —— [v2.8.4 纯本地规则]

  • 78 牌韦特塔罗:22 大阿卡那 + 56 小阿卡那(四花色×14),每牌正/逆位释义。
  • 5 种牌阵:单张指引 / 三张·过去现在未来 / 凯尔特十字(10张) / 金字塔 / 心形·情感。
  • 问题加持 + 逐张翻牌:可输入心中问题再洗牌,点击逐张揭示正逆位。
  • AI 解读协议:点「求 AI 解读」以 协议把牌阵注入剧情,角色口吻解读。
  • 历史存档:占卜记录留存,随时回看。

三大后台引擎的手机内可视化聚合 App:情绪色卡(主导情绪+Top3 维度+清醒/睡眠)、积温五轴(连接需求/骄傲/愉悦/唤醒/沉浸+主动想法)、记忆统计(长期/短期/已巩固/已换代/权限分级)。纯只读,零 LLM。

🔮 灵感工坊 (Playbook) —— [源自 色色灵感状态栏,重构脱离数据库]

  • 458 种玩法体位分类索引:支持体位、多人体位、侍奉、场景、附加玩法分类切换与关键词即时检索。
  • 多选胶囊与状态记忆:点击标签即时勾选,已选项呈现霓虹微光高亮。
  • 发后自清机制:勾选“发后自清”后,当 AI 回复生成完成,自动清空已选标签,告别生硬死记。

🏆 成就簿 (Achievement) —— [源自 色色灵感状态栏,重构脱离数据库]

  • 666 条全量成就树:包含功能、养成、剧情、收集、纪事、称号与 167 条未解之谜隐藏成就!
  • 全卡达成率仪表盘:动态统计已达成项与百分比进度条。
  • 专属趣评展示:达成成就即可查阅作者撰写的精辟、毒舌又充满情趣的专属评语。
  • 全屏悬浮解锁横幅:达成瞬间弹出类似主机平台(Xbox/PlayStation)的金色奖杯通知横幅!

📕 小红书 (XHS / RED) —— [源自 瑟瑟小手机]

  • 标志性双列瀑布流:高仿小红书现代卡片流,支持封面图、点赞数、作者头像与话题标签。
  • 笔记详情弹层:大图预览、沉浸阅读、楼中楼评论区与即时互动。
  • 用户发布笔记:可在手机端直接发布图文笔记,分享日常生活。
  • AI 动态捕获:大模型可在回复中输出 <RED> 或 <xhs> 标签,自动生成角色的小红书日常。

💬 百度贴吧 (Tieba) —— [源自 瑟瑟小手机]

  • 贴吧广场:支持进吧切换(江城生活吧、弱智吧、青石大学吧等)。
  • 主帖与楼中楼盖楼:1 楼楼主大字排版,2 楼到 N 楼热烈神评回帖。
  • 用户自主发帖:选择贴吧,发布新帖,参与社区讨论。
  • AI 动态捕获:大模型可在回复中输出 <Tieba> 标签,自动发帖盖楼。

💬 微信 (WeChat) —— [源自 yuzuki-phone]

  • 拟真社交:支持单聊、群聊、转账、发红包、联系人动态生成。
  • 音视频通话:拟真来电弹窗,支持接入 MiniMax / OpenAI 等 TTS 语音连播。
  • 朋友圈:角色自动发动态,支持点赞与楼中楼评论互动。

👁️‍🗨️ 微博 (Weibo) —— [源自 yuzuki-phone]

  • 实时剧情热搜榜单,带有高仿微博信息流与 IP 属地,支持一键转发微信。

🎵 网易云音乐 (Music) —— [源自 yuzuki-phone]

  • 全局毛玻璃悬浮微型播放器,支持剧情推荐真实歌曲即时播放。

📔 日记本 (Diary) —— [源自 yuzuki-phone]

  • 根据聊天记录,AI 自动以角色第一人称视角撰写精美排版的实体书日记。

🧵 织光机 (Timeweaver) —— [原创]

  • 时光信:把聊天痕迹按时间轴聚合成编年碎片(第一次 / 情绪均值 / 关键节点),本地规则 composeLetter 零 LLM 出信,之上再由 composeAILetter 调 LLM 升华文笔(引擎纯函数不参与,控制器层调用)。
  • 收藏册 + 定期织信(v2.15.0):saveLetter 把信落册(幂等:同时间戳 + 同首段拒重复;载荷裁剪:单段 600 字 / 12 段 / 上限 60 封,随会话隔离);autoWeaveIfDue 按间隔门(默认 7 天,游标 tw_last_auto)在打开 App 时自动织信,AI 失败降级本地规则,无碎片不织空信。
  • 分享朋友圈(v2.15.0):shareLetterToMoments 经微信 addMoment 以用户帖(isUserPost + 公开可见)发布,采用手机剧情时间而非真实时钟,并同步未读角标。
  • 回望面板(v2.15.0):消费 LonSha 记忆插件的召回自检快照(观测轮数 / 空召回比例 / 平均命中 / 热点楼层 Top10),形成「记忆召回 → 时光回溯」两端观测互喂。

💗 健康生理 (Health)

  • 28天生理周期引擎:月经期/卵泡期/排卵期/黄体期四相精确推演,含受孕概率与体征基线(汲取自生理状态引擎5.49核心算法)。
  • 妊娠/产程引擎:缝合自 Liuuuu54/st_bs_biotracker 的纯数学部分。孕早期 84 / 孕中期 105 / 孕晚期 63 / 临产期 28 天按种族孕速折算;产兆 → 三产程 → 产后恢复全部本地可跑,不绑外部 LLM。
  • 种族与胚胎类型:67 个种族生理表 + 胎生/卵生/卵胎生/胎转卵生/不定型;多胎与嵌合体/代孕/同卵等标签仅作元数据。
  • 体征注入:只注入阶段、孕周、产程、种族胚胎类型与超阈值五维体征等事实,不请求模型演情感。
  • 五维体征 / 家谱:饥渴洁尿便按小时累积(缝自 LA-0.6.37);分娩后本地登记子嗣,不写世界书。
  • 健康档案(v2.8.8):140 种病症库(20 分类)从 LA-0.6.84 提取,支持添加/每日推进/慢性波动/到期康复,注入生成上下文。

🎮 游戏大厅

  • 谁是卧底 / 狼人杀 / 德州扑克 / 2048 / 数独 / 猫盒。
  • 对弈(缝自瑟瑟小手机游戏扩展):五子棋、中国象棋、斗兽棋,纯本地棋规 + 本机 AI,不绑神数据库。
  • 微信礼物(缝自 ovo066/kktest):24 种礼物走零钱送出,气泡与查手机可识别。
  • 锁屏 + 免打扰:点击摄像头药丸锁屏、上滑解锁;线上主动触发支持免打扰时段(默认 23-7 点)。
  • 时间-环境感知(缝自 TPES):剧情时间联动时段光照与生理节律(黎明/黄昏/深夜八档 + 三餐节点),时间只前进、离线照常生活,随生成注入,可在设置关闭。
  • 查手机·抖音平台页(借鉴 ai-virtual-phone checkphone):高仿抖音个人主页(头像/关注/粉丝/获赞 + 作品/收藏/喜欢三 tab 三宫格 + 视频详情弹层),数据取本人小红书/相册/微博痕迹本地生成,零 LLM,无痕迹时标「推测」。
  • 查手机·微博/B站/豆瓣平台页(借鉴 ai-virtual-phone checkphone):微博页含热搜榜+本人微博流;B站页含观看记录视频卡片流(封面/UP主/播放/弹幕);豆瓣页含动态时间线(在听/读过/日记)。数据取自本人微博帖子/热搜、B站观看条目、音乐播放/日记痕迹,零 LLM。
  • 对话整理格式化(移植自糯叽叽 nuojiji-tools):5分钟同发言人消息自动合并为引用块,支持线上/线下模式标记与时间锚定;查手机微信聊天痕迹经此整理为可读对话。
  • 查手机·角色日报(借鉴 dwell-on-something 12-日报):每天一份只给角色看的报纸,版块化排版(今日聊天/日记/动态/日程可整版增减)+ 每版写法说明 + 夹一张角色便条,纯本地痕迹零 LLM。
  • 情绪驱动引擎(移植自 Drivesoid 情绪动力学 v2):16 心理维度 + 三层情绪链,昼夜节律/习惯化/状态依赖权重,纯规则分类器零 LLM,注入 [情绪状态]。
  • 记忆召回过滤(移植自 MemoryConstellations 记忆星图):分段衰减排序 + 回忆权限分级(可引用/需谨慎/仅联想)+ 生命周期冷却(14/30/90 天墓碑化),纯规则零 LLM。
  • 积温主动意识引擎(移植自 jiwen 积温):五轴连续数值漂移(连接/骄傲/愉悦/唤醒/沉浸)到阈值自然触发主动行为,不靠概率骰子;后台每 5 分钟 tick,触发即注入主动想法。
  • 积分/连击/成就系统(移植自 Phosphene):任务按难度结算积分 + 连击加成 + 失败惩罚 + 11 项成就自动解锁,接入万象信用点。

🎵 音乐跨端分享

  • 汲取芋圆机 v640 的 music-forward 思路:正在播放的歌曲可一键分享至微信当前会话,角色可对歌曲产生真实听歌互动。
  • GD Studio 多源直链引擎(移植自 Anrrow-phone-music v0.5.0):网易云/酷我/JOOX 三源自动搜索,按匹配度评分排序,320K 高音质直链解析,播放失败自动换源重试,30 秒试听片段自动验毒跳过。AI 分享的歌是真歌、真能播!
  • <TMUSIC> 标签协议:AI 在剧情中输出 <TMUSIC who="char" title="菊花台" artist="周杰伦"></TMUSIC>,插件自动搜歌、入队、弹窗通知并触发微信卡片互动。

⌨️ 斜杠命令

  • /rubyphone 或 /rubyphone-toggle:快捷唤起/收起手机面板(汲取玉子手机 Slash 命令体系)。

🕹️ Native gesture surface

  • 微信/iOS 级边缘右滑返回:全手势接管,任意界面从屏幕左侧向右轻滑即可丝滑退回上一层。
  • 物理双层视图栈:拒绝简陋的 display: none,采用真实 Z-index 堆叠,返回绝不白屏闪烁。
  • 原生防 Base64 膨胀引擎:所有上传的图片自动落盘酒馆 /backgrounds,只存路径,聊天存档永不臃肿!
  • 顶部下拉双热区分流(v2.16.0):状态栏左半下拉 → 控制中心,右半与药丸(灵动岛)下拉 → 通知中心;一律以 46px 位移阈值判定,轻点药丸照旧锁屏,互不误触。

🧩 System layer — notifications / global search / control center

🔔 通知中心 (Notifications)

  • 落账层 config/system-notifications.js:过去通知只有「瞬时横幅 + 队列防刷屏」,一闪即逝、错过即永久丢失。NotificationLog 在展示的同时把每条通知写入环形历史(sys_notifs,上限 200 条),同 senderKey 3 分钟内合并为一条并累加 ×N,且合并不重置已读状态。
  • 落盘策略:800ms 防抖写入 + flushNow() 兜底;_normalize 对脏数据净化(非对象跳过、缺 id 补号、按时间倒序、环形裁剪);全部失败路径返回 {error} 且绝不抛异常——落账失败只丢历史,不阻断通知展示。
  • 三入口:顶部下拉 / 锁屏速览 / 桌面图标。
  • 交互:按 App 筛选 chips(带计数、按数量排序)、关键词搜索、未读高亮、×N 合并计数、单条删除、一键全部已读 / 清空,点击结果跳回原 App;时间按「今天 HH:MM / 昨天 HH:MM / M/D HH:MM」智能显示。

🔎 全局搜索 (Global Search)

  • 检索内核 apps/memory/global-search-engine.js:17 个来源统一索引 —— 微信会话(含联系人)、朋友圈、日记、短信、通话、织光机收藏册、日历备忘、音乐歌单、世界脉搏、微博热搜与推荐帖、记忆长期层、阅读书架、成就、小红书、贴吧、通知历史(注入 chatContext 时另含酒馆正文楼层)。
  • 评分模型:标题全等 +100 / 前缀 +80 / 包含 +60 / 仅正文 +30,并按命中位置与文本长度加权;命中片段居中开窗高亮(先转义再拼 <mark>)。
  • 容错:每源独立 try/catch,坏源不影响整体,并上报 lastErrors;不在场的数据源自动跳过。

🎛️ 控制中心 (Control Center)

  • 免打扰:真实拦截横幅(通知仍入账不丢),状态随会话隔离。
  • Wi-Fi:开关联动状态栏图标。
  • 手电筒:点亮手机壳暖光晕。
  • 显示缩放:滑块 80–120%,复用设置页同一套 --phone-shell-* 通路,新键 sys_shell_scale 优先、旧键 phone-shell-scale 回落,两处双向一致。
  • 立即锁屏 + 音乐卡(上一首 / 播放暂停 / 下一首,真实操作 MusicData)。
  • 状态隔离:sys_notifs / sys_dnd / sys_shell_scale / sys_flashlight / sys_wifi 全部随会话隔离,换角色不会把上一角色的系统状态带过去。

🔒 锁屏速览层

  • 时段问候(夜深了 / 早上好 / 上午好 / 中午好 / 下午好 / 晚上好)、最近 5 条未读通知速览(轻点解锁并直达通知中心)、正在播放音乐条。
  • 全部能力可选缺失降级:通知层或音乐层不存在时自动回到原锁屏。

💡 Installation

Recommended: install through the SillyTavern extension manager

  1. 打开 SillyTavern,进入“扩展”面板。
  2. 点击“安装扩展”,在 Git 仓库输入框中粘贴: https://github.com/LonSha/ruby-phone.git
  3. 点击安装,完成后刷新酒馆页面。
  4. 在顶部导航栏即可看到「📱」手机入口图标!

Manual install

将本项目文件夹重命名为 ruby-phone,完整放入:
SillyTavern/public/scripts/extensions/third-party/ruby-phone/
重启 SillyTavern 即可生效。



📚 Docs map

  • ITERATION_LOG.md — engineering record of every iteration (task, why, scope, verification, leftovers).
  • update-log.json — the authoritative user-facing changelog that drives the in-app "what’s new" popup.
  • TODO.md — confirmed, unfixed items only; an entry is deleted the moment it is fixed.
  • CONTEXT.md — architecture and invariants.
  • FOUR_RELEASE_PLAN.md — the current four-release plan.

About

RubyPhone - a fully simulated smartphone UI for SillyTavern chat. Zero external database: every app state lives in chat metadata and travels with the conversation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages