特别声明
我不会在QQ群里和其它群友一起辱骂一个群友,也不会说群友是蛆。
更不会说自己是斐济杯。
如果发现我的发言非常诡异就代表我被夺舍了,那发言就不是我说的话。
以及群内随意艾特全体成员的管理,喵的死全家。
一.更新内容
-
1.
角色列表拖动判定加长
- main.js:判定时间大幅加长:触摸 450ms→720ms,鼠标 120ms→340ms。
- 新增位移阈值 REORDER_MOVE_THRESHOLD=12px:必须先真正移动过一段距离才进入拖动,普通点击/滑屏不再误触排序。
- 加入 reorderArming 蓄力状态:等待期卡片轻微缩放提示「长按生效中」,抬手未拖动即视为普通点击(不写排序、不阻断点击)。pointercancel/pointerup 都会清理状态。
- 论坛私信列表的拖动排序同步采用同一套判定(forum.js)。
-
2.
???模式改为高级苹果风动效
- 新增 mystery-motion.js / mystery-motion.css,重写 style.css 旧块。
- 删除旧版全部无限循环动画(背景 hue-rotate 位移、头像无限旋转、气泡无限扫光、hover 无限脉冲)——这是又卡又丑的根因。
- 新动效全部「播一次就停」,只动 transform/opacity,静止不占 GPU:① 弹窗/设置界面从被点击按钮的位置「拽出来」(transform-origin+clip-path 展开,苹果 sheet 手感);② 设置标签页弹性滑动指示块;③ 新消息逐条入场;④ 按钮/列表按压回弹;⑤ 切角色时聊天区聚焦入场。
- 三档等级(轻量/标准/丰富),新增下拉选择;will-change 仅动画期间挂载;支持 prefers-reduced-motion。
-
3.
首次进入欢迎弹窗
- 新增 first-run-guide.js。
- 判定「首次」:配过 AI(aiChatSettings/apiEndpoints/长期记忆 Key)、有自定义角色、或有真实聊天记录 → 任一即视为非首次,不打扰。
- 弹窗提示可去 https://mysw-yg.pages.dev/docs 查看文档,点任意按钮/遮罩即写入已读标记,只弹一次。延迟 1.2s 出现,避免与开屏 splash 叠加。
-
4.
实验室·好感度
- 新增 affinity.js + index.html 实验室面板。
- 每角色独立情感进度条;好感度越高越亲近、可接受的互动越深入——每档「相处准则」动态注入角色提示词(单聊 chat.js、群聊 main.js 均已接入,群聊按「成员×用户」分别结算)。
- 可编辑参数:上限、基础增量、随机浮动、档位衰减、每日上限、冷却、自然衰减(天数/每日值)、每角色倍率、档位名称/起始值/准则文本。
- 聊天头部心形徽标(实时数值+进度)、全角色进度面板(含变化流水、手动±5/重置/倍率)。数据存本机 affinitySettings / affinityData_v1。
-
5.
文档新增插件编写指南
- docs.html:新增完整章节「🔌 插件编写指南」(含目录锚点):最小可用插件、register() 字段表、两级权限系统、四种钩子触发时机、受控 API 通道(ctx.api)、受控 DOM 通道(ctx.dom)、导入调试、两个可直接用的完整示例,以及好感度系统、论坛功能两大新章节和 FAQ Q11–Q16。
-
6.
纯观看导出去掉 API 配置
- vn-export.js:「导出为纯观看」的页面彻底移除 API 地址/密钥/模型/温度/tokens/上下文轮数/系统提示词整块表单,只保留外观设置(打字速度、字号、停顿、Ken Burns、情绪徽标)。运行时用可选链兼容缺失元素,避免纯观看版报错。index.html 说明文案同步更新。
-
7.
最近聊过的角色靠前
- main.js + settings.js + index.html:界面外观新增「最近聊过的角色排在前面」开关(默认开)。排序优先级:分组 > 置顶 > 最近活跃时间 > 手动顺序,稳定排序保证手动拖拽次序在时间相同时保留。有新消息时节流刷新侧边栏。不影响置顶规则。
-
8.
论坛贴吧化改进
- 重写 forum.js,扩充 forum.css / forum.html。
- 分区(板块)+ 发帖选板 + 工具栏分区筛选;搜索(标题/正文/作者/分区)+ 5 种排序(最新回复/最新发布/热度/浏览/点赞);收藏视图「我的收藏」;浏览数统计(原地刷新不虚增)+ 楼主标识 + 楼层号;楼中楼二级回复;评论点赞(局部刷新不打断阅读);帖子置顶/编辑;今日活跃榜侧栏;回到顶部悬浮按钮;论坛数据导出/导入(合并去重/覆盖,保留互动数更高版本);私信带上下文、Enter 发送。旧数据自动迁移补齐新字段。
二.已知问题 (暂无)
一.更新内容
-
1.
「回到最新消息」悬浮下箭头
- index.html 新增按钮 + 未读小红点;main.js 中高度离底部超过阈值时淡入、点击平滑滑到底(带兜底直落),离开底部期间收到 AI 新消息会累计数字,滑到底自动清零;style.css 用 body.fullscreen-mode 与窄屏断点分别定位,位置由 JS 实测输入区高度写入 --stb-bottom,不会压住输入框。
-
2.
视觉小说形式导出(纯观看 / 可继续对话)
- 新增 vn-export.js(约 64 KB),导出独立可离线打开的 Galgame HTML:逐句播放、打字机、自动播放、回顾面板、情绪立绘与背景复用 VN 模式素材。可继续版自带独立 API 设置面板(地址/密钥/模型/温度/tokens/上下文轮数/系统提示词),新对话存该页自身存储、刷新不丢。
- 修掉两处真实 Bug:① 旧代码读 basicApi.model,而主配置里字段其实叫 modelName → 导出页永远丢模型名;② maxTokens / maxContextRounds 存在 chatSettings 而非 aiChatSettings,同样取不到。现在改为跨两张表读取,且「不附带密钥」只清 apiKey,模型与参数照常带过去。已用模拟环境实测:三种导出模式均正确、</script> 与 U+2028 注入被 \u003c 正确转义、导出页运行时 boot 与翻页零报错。
-
3.
手机端布局错位
- style.css:设置弹窗底部改纵向堆叠,「恢复默认/保存设置」整行铺开;标签栏改横向惯性滚动不换行;窄屏补 env(safe-area-inset-bottom)。并修掉一处真实缺陷:手机/平板上角色头像菜单与联系人右键菜单是 position:fixed 且由 JS 写 top,旧规则又强加 bottom:70px !important —— 同时存在 top 与 bottom 会把菜单拉伸成「从点击处直连屏幕底部的长条」,这正是「菜单错位、点不中」的成因。
-
4.
聊天框莫名变大 / 多出空行
- 根因找到并修掉:restoreMessageDraft() 只在「有草稿」时赋值,切换角色后上一个角色没发出去的文字一直留在输入框里,把框撑成多行。现在改为无草稿时显式清空,并在 switchFriend 里于修改 currentFriendId 之前同步落盘草稿(新增 saveMessageDraftNow() 绕开 300ms 防抖,避免切角色丢字)。另外输入框高度改由 measureInputLineBox() 按真实样式推导(原来写死 44px 与 CSS padding/line-height 不符,单行会被压掉约 2px),并加 ResizeObserver 监听输入框自身宽度变化(只监听 window.resize 会漏掉侧边栏展开等容器变宽情形)。
-
5.
快捷指令点外部关闭
- main.js 用捕获阶段监听 document click,面板自身与按钮之外的任意处点击、Esc、窗口失焦都会关闭。
-
6.
去掉失效的四条表情指令
- /love /like /bey /cry 已从指令表中彻底移除(全项目仅剩注释与文档说明,无任何活跃引用)。
-
7.
全屏模式
- body.fullscreen-mode 让界面铺满窗口、去掉圆角/阴影/四周留白,聊天头部按钮可随时切换并顺带请求原生全屏。修掉「保存后不即时生效」:saveChatSettings() 里补上 applyFullscreenMode() 调用;「恢复默认」也补上全屏与不压缩两个开关的复位。
-
8.
不压缩图片
- image-tools.js 的 isCompressionDisabled() 改为优先读取勾选框实时状态(此前只认 localStorage 里「已保存」的值,导致同一开关两套行为:聊天图片原图、立绘却被重编码)。同时把此前绕过该策略的路径统一接入:气泡背景上传、论坛页发帖/评论/私信/头像上传(forum.html 补引 image-tools.js)。
-
9.
右键 AI 头像 / 头像刷新丢失
- BUILT_IN_DEFAULT_AVATARS 冻结出厂头像快照(避免浅拷贝污染判定基准)、friendAvatarOverrides 覆盖记录、IndexedDB 按时间戳回填(防止配额爆掉后「改完头像一刷新就没了」);单聊下右键头像也能打开菜单,菜单项点击 stopPropagation 避免被「点空白关闭」立刻收掉。
-
10.
上传头像截取
- ImageTools.cropImage 支持 1:1 / 3:4 / 4:3 / 16:9 / 原图比例,拖动、滚轮、双指缩放;未做任何操作即返回完整原图(不重编码、不掉画质),跨域受限时回退原图并提示。本轮新增编辑角色信息里的「裁切」按钮(内联版 + 弹窗版),可直接对输入框里的地址或已上传图片重新按比例截取。
二.涉及文件
main.js、style.css、settings.js、vn-export.js、image-tools.js、index.html、forum.html、forum.js、docs.html、sw.js(缓存版本 v16 → v17,强制作废旧缓存)。文档 docs.html 已补全 4 个新功能条目并订正表情包占位符写法。
注意事项
用户需刷新页面(最好 Ctrl+F5)以让新版 Service Worker 生效,否则可能仍吃旧缓存。
「可继续对话」导出时若选择「附带当前配置」,密钥会明文写进导出文件,分享文件等于分享密钥——界面已有红字提醒,默认推荐「不附带」。
「不压缩图片」会让原图更快占满浏览器存储配额,建议仅在确需保留画质时开启。
三.已知问题 (暂无)
一.世界书(worldbook.js)
-
1.
「添加条目」那排贴不住顶部(用户点名)
- 按钮已在 sticky 工具栏内,但查出 sticky 从未真正生效的技术根因:.wb-editor-body 被写成 display:flex; flex-direction:column,而 flex 子项默认 flex-shrink:1,会把条目列表压缩到刚好填满容器 → 容器永不溢出 → sticky 没有溢出可吸。已在 CSS 中改回块级流式(附注释说明)。
- 新建条目现在 unshift 插到列表最顶部 + 自动 scrollIntoView,无需上下跑。
- 全书默认扫描深度提示文案原来自相矛盾(框是 min=1 却写"填 0 = 跟随全书"),已改为准确表述:0 是条目上的"跟随全书默认"。
- 2. 创建条目不填名称 → 已改为必填,带"必填"徽标与校验、空内容草稿提示。
-
3.
导入蓝灯变绿灯 → 已修:新增 toBool() 兼容酒馆的 0/1、"true"/"false" 字符串(旧代码用 === true 严格比较,所以用户设的蓝灯全丢),并让 constant 判定优先于 selective;同时补齐 keys/keyword/trigger、selective_keys/secondary_keys、comment/title、scan_depth、字符串型 position 等字段别名。
- 另修一处同源的隐形 bug:readBookDepth 把 recursive_scanning(0/1 布尔开关)当深度兜底,会让缺 scan_depth 的书被压成"只扫最近 1 条",绿灯条目几乎永不触发。
- 4. 导入误弹「创建世界书」弹窗 → 已修:文件读完后直接建书(默认全局),Toast 告知条目数与如何改绑定范围。
二.输入框丑(根因是完全没有 CSS)
- 排查发现 worldbook.js 整套 wb-* 类(wb-input / wb-select / wb-mini-modal / wb-entry-card / wb-switch …)在全项目零条规则定义,因此全部退化成浏览器默认白底控件。
- 新建 ui-polish.css(28KB / 717 行):世界书面板专用样式 + 弹窗内散落裸控件 + kbd / .btn-ghost / .form-input / 快捷键录入行 + 浅色主题适配 + 移动端收敛 + prefers-reduced-motion。
- 治本升级 style.css 的 .form-group input/select/textarea 基线(原本只有一句 padding + focus 换边框色):补过渡、placeholder 配色、focus 光晕,并修掉复选框被 width:100% 拉成一条的老问题。
- 层叠安全:严格核对特异性(基线 0,1,1 < hover/focus 0,2,1 < light-theme 0,2,2 < 补丁 0,3,1),刻意不用 :not() 链(曾算出它会反超浅色主题规则导致回归,已回退);大范围规则用 :where() 压到 0,且不写 width,避免把别的模块精心调过的窄控件撑坏。
- 已注册进 index.html 与 SW 预缓存清单,并把缓存版本 v10 → v11(activate 会整体清除旧缓存,避免用户吃 stale)。
三.快捷键"全部用不了、聚焦和帮助是摆设"
-
查出 6 个叠加根因,全部修复:
- ? 经规范化变成 Shift+?,与配置里的 "?" 永远匹配不上 → 新增 SHIFT_SYMBOLS 白名单(这些符号的 Shift 是隐含的)。
- !isTyping 守卫把 /、Ctrl+L、Ctrl+N 在输入框聚焦时(默认状态)全部拦死 → 改为"裸单字符只在非编辑区/聊天框为空时抢占,带修饰键组合任何焦点下都生效"。
- 事件串与用户手输串无归一化 → 新增 normalizeShortcutString + matchShortcut,认 ctrl+l/Ctrl + L/⌘/全角?//具名键。
- Ctrl+N、Ctrl+L 被 Chrome/Edge 列为浏览器保留键(新建窗口、地址栏),网页 preventDefault 也抢不走 → 默认值改为 Alt+N / Alt+L,老组合保留为别名继续兼容,并做一次性配置迁移;录入/手输时若填的是保留键,当场 Toast 警告。
- #shortcut-help-modal 在 DOM 中排在 #ai-settings-modal 之前,同级 z-index 相同 → 在设置里按 ? 帮助面板被完全盖住,表现就是"按了没反应"。已抬到 z-index 1600。
- 录入交互升级为点按钮后直接按组合键录入(Esc 取消、失焦回填真实值、修饰键单独按下不误落盘);修正 e.key='Control' 未映射会存成 Ctrl+Control 的问题;空格统一具名为 Space(否则会被 trim() 成空串变成死键)。
- 附带防护:正在录入快捷键的设置框内全局键一律让路;弹窗打开时挂起"清空/新建/聚焦"(避免在世界书编辑器背后清掉对话);命令面板展开尊重"快捷指令按钮"开关;帮助面板改为动态反映真实配置(不再写死 Ctrl+L)。
- 同步更新 index.html 设置页说明与 docs.html 快捷键文档。
四.其他新增与修复
-
1.
毛玻璃开关(界面外观 → 动效模式)
- index.html 在「???模式」下新增 #enable-glass-effect(默认开)+ 说明文字;新建 glass-toggle.css:<html class="glass-off"> 时用 !important 全站停用 backdrop-filter,并给原本靠模糊撑住的面板补半透明底色(只关毛玻璃,不动用户自己设的背景虚化 filter: blur())。
- applyMotionMode() 统一同步 class;设置存进 chatSettings.glassEffectEnabled;head 内联脚本首屏提前打 class 防闪烁;docs.html / forum.html 同步生效;getChatSettings / 恢复默认 / 开关 change 全部接线。
-
2.
编辑角色页「提示词优化器」
- 新建 prompt-rewriter.js,注入到两个角色表单(new-char-prompt / -modal)。AI 只修语病/错别字/指代不清/前后矛盾,不动人设与格式标记;输出「优化后正文 + 修改说明」双栏对照,用户点「应用」才替换,另有复制/放弃。
-
3.
功能专用模型(懒人模式 / 提示词优化器 / 开场白),默认收起
- 新建 feature-models.js:AI 配置页新增「功能专用模型(可选)」区,三项各自 <details> 折叠,含模型名、备用模型、可选的高级(独立 URL/Key)、测试按钮、清除按钮;留空完全沿用当前站点,行为与旧版一致。
- 已接线到 generateQuickReplies、两个「AI 生成开场白」按钮、提示词优化器;解析时置 singleSite 防止把专用模型名发到别的站点。
-
4.
懒人模式兼容视觉小说
- vn-mode.js 舞台新增 #vn-choices,showChoices/clearChoices/moveChoice/confirmChoice;选项样式随 .vn-stage.skin-*(classic/minimal/glass)自动换肤,出现时重测 --vn-box-h;↑↓ 选择、Enter/空格确认、数字键直选、Esc 收起、翻页即放弃;点击经 window.vnChooseQuickReply 回填并发送;退出 VN、切换角色、用户自己发消息都会清理。
-
5.
高级 TTS 修复(重写)
- 定位并修掉 6 类根因:CSP media-src 不含 blob:(接口成功却没声音)、只填根地址拼出 /v1/v1/...、无 Key 的本地服务被 apiUrl && apiKey 直接挡死、返回 base64/裸 PCM 当二进制播、各家参数名不匹配、错误被吞成笼统提示。
- 新建 tts-engine.js:按端点形状排候选顺序(OpenAI speech / chat+audio / ElevenLabs / Fish / 火山 / 本地 /tts / Coqui /api/tts / 原样 POST),响应侧支持二进制、base64、音频 URL、裸 PCM(自动补 WAV 头 + 24k/16k/22k/44k/48k 采样率重试),播放失败与逐条失败原因聚合成可读诊断;新增「试听」按钮、端点类型实时提示、排查建议折叠面板;speakMessageText 改为调用新引擎并保留浏览器兜底;CSP 补 media-src 与本机 http。
-
6.
知识库文档点击预览 + 改正文
- 新建 knowledge-editor.js + #kb-doc-modal(z-index 1400)。点击文档行或眼睛图标即可预览/编辑正文与名称;保存时重新分块、按需重新向量化,先删旧分块再写新(避免残留多余分块污染检索)。为保真,分块重叠用最长前后缀去重还原,并把完整原文缓存在首块 sourceText 上(只存首块,不撑爆存储)。
-
7.
知识库问答不再强制启用知识库
- queryKnowledgeBase(query, n, {ignoreEnabled});面板内「提问」走该分支(并区分「没有文档」与「没检索到」两种提示),聊天自动注入仍受总开关控制;未启用时在结果末尾提示如何开启。
-
8.
默认插件:上下文压缩器
- plugins.js 新增内置插件(权限 useApi+useDom,参数含最近轮数、保留原文轮数、压缩提示词(新增 textarea 参数类型)、摘要 maxTokens、二次确认),配套 context-compressor.js + .css。
- 聊天头部新增「压缩上下文」按钮 → 浮层面板:方式一按轮数、方式二在面板内消息清单点选起止(自建清单,避开虚拟滚动/群聊/分段等四条渲染路径漏挂钩的问题)、方式三压缩全部历史;压缩提示词可临时覆盖。
- 实现:把区间消息原位替换为一条 role:'system', isCompressed 摘要(含压缩条数与原 token 估算),聊天里显示为虚线摘要块;调模型走插件受控 API 通道(拿不到 Key 明文);chat.js 仅对该类消息以 user 身份 + 来源前缀下发,不新增 system,兼容千问模式。
- 顺带修正:压缩期间三个按钮统一禁用、区间算式与提示文案对齐、tailCountForRounds 多算一轮的 off-by-one。
-
9.
实验室「自定义加载界面」
- 新建 boot-splash.js + #boot-splash(body 最前、同步启动)。支持本地上传或网络直链的图片/动图/视频,素材存 IndexedDB(25MB 上限,不占 localStorage),可设副标题、cover/contain、最短显示、压暗、预览;<html class="glass-off"> 同款思路避免首屏空闪:先亮界面再取素材,且 6s 上限 + 12s 看门狗保证绝不可能卡住网站;素材丢失时自动关开关。实验室面板复用 .laboratory-* 样式,切到实验室 Tab 会回填。
-
10.
视觉小说设置默认折叠
- 整块设置区包进 <details id="vn-appearance-details">(默认收起),启用 VN 时自动展开,用户手动展开/收起记进 localStorage.vnAppearanceDetailsOpen,配套 summary 箭头样式。
-
11.
世界书启停即时反映外观
- 开关 change 时立即 card.classList.toggle('is-off') + aria-disabled + 刷新条目/深度计数 + toast(条目级启停原本已有即时重渲染,未动)。
五.技术性修复与优化
-
·
sw.js — 离线缓存清单遗漏 tts-engine.js
- index.html 第 1698 行一直加载 tts-engine.js,但它从未进入 STATIC_ASSETS 预缓存清单 → 离线打开时语音合成模块缺失。已补入清单,并按该文件自身注释的规约(清单变更必须升版本,否则老用户永远吃 stale 缓存)将缓存版本 v12 → v13(STATIC_CACHE / DYNAMIC_CACHE 同步升级)。
-
·
performance-fix.js — 引用了不存在的 #chat-container
- 全项目滚动容器实为 #chat-messages,index.html 中不存在 #chat-container。两处后果:showPerformanceBanner() 里 insertBefore 永远拿 null,提示条创建了却从未插入文档;注入样式 #chat-container { will-change: scroll-position } 永远匹配不到节点。均已改为 #chat-messages 并附注释说明。另确认该函数当前无调用方(MAX_MESSAGES_FOR_FULL_RENDER = Infinity,完整渲染分支提前 return),属休眠代码——修复消除的是「一旦恢复调用即踩坑」的隐患,未扩大改动面。
-
·
forum.js — 读错了用户名/头像的存储键
- me() 读 localStorage 的 myDisplayName / myAvatar,但这两个键全项目从未有任何代码写入(主站实际写的是 myUserName 和 userAvatar,见 main.js 1387/1256 行)→ 论坛里「我」的发帖昵称恒显示默认「我」、头像恒为空,用户在主站改过的名字头像完全带不过去。已改为优先读正确键、保留旧键名做向后兼容兜底。
-
·
移动端 VN 模式键盘避让(main.js / style.css)
- isKeyboardLayoutTarget() 由「innerWidth≤1024」改为 matchMedia('(pointer: coarse)') 判定:iPad/平板横屏此前被误当桌面端跳过压缩,现在与手机走同一套 visualViewport 压容器逻辑,行为与"不开 VN 模式"完全一致(界面整体上移让位键盘)。
- 键盘弹出时新增 html.kb-active + --kb-h(可见高度)钉住根元素,杜绝 iOS「推页」把已压扁的容器推出可视区;scrollTo(0,0) 后补一帧二次归零。
- style.css 新增:html.kb-active 下 .modal-overlay/.ad-overlay/.ad-card 顶部对齐+限高滚动(弹窗内输入框不再躲在键盘后);VN 舞台的 body.kb-shrink 收档规则(vn-mode.css)因容器真实压扁而开始生效;键盘收起后补一次 VNMode.relayout()。
-
·
开屏副标题跑到画面中间(boot-splash.js)
- 根因:定位依赖 CSS 变量 --boot-bars-bottom,命中旧缓存样式表时 calc() 失效 → top/bottom 双 auto → 绝对定位退回 flex 居中位置。修复:applyCaptionPos() 改为 JS 直接写行内样式(position/left/width/z-index + 三档 top/bottom/transform,clamp 值内置),不再依赖任何外部变量;ui-polish.css 的选择器规则保留作双保险。
-
·
失效的 imgur 头像链接(characters.js:3037)
- 确认 DEFAULT_AVATAR_ASSISTANT 已是 https://bbs-static.miyoushe.com/avatar/avatar30092.png?…webp;全项目扫描无任何 imgur/8Q0qF5S 残留,此项已完成。
-
·
懒人模式 / 主动关怀总是失败(api.js / main.js)
- 核心修复为 ApiModule.requestSmallTask 五级降级链(system+user 标准结构 → 放宽 max_tokens ≥1600 → 去 max_tokens → 合并单条 user → 最小请求体),并剥离 presence/frequency/top_p 等易 400 字段、支持 allowEmpty(关怀=空输出属正常)、401/403/额度错误即刻抛出不空转;两处调用均已接 FeatureModels 专用模型。本轮在沙箱用 mock fetch 实测 8 类端点场景全部按预期返回(含拒 system、思考模型空 content、内容在 delta、401 快速失败)。
-
·
默认插件「你也是猫娘喵」(plugins.js / chat.js / main.js)
- 内置插件 ai-is-catgirl 已存在且链路完整:transformPrompt 钩子 → MySWPlugins.transformSystemPrompt → chat.js 单聊注入 + main.js:5427 群聊人设注入;关闭开关即完全还原。沙箱实测:开启追加 228 字猫娘指令、关闭后与原文逐字节相等、重复调用幂等不叠加。
-
·
右键分组 → 分组管理界面(index.html / main.js / ui-polish.css)
- 废弃原生 prompt 连问两次的流程,新增 #group-manager-modal 站内界面:分组列表(名称+角色数+当前来源高亮)、每行「重命名/删除」图标按钮、底部「+ 新建分组」、完成/关闭/Esc/点遮罩退出;默认分组两个按钮置灰不可操作,删除任意分组时其成员自动移入「默认」(含确认框提示 N 个角色将被移动);新建空分组持久化到 localStorage(customFriendGroups),不再随刷新消失;折叠状态同步清理;移动端长按分组标题 550ms 同样进入管理(吞掉误触 click);「移动到分组」列表改用 collectAllGroups() 统一数据源并补了 XSS 转义。样式追加至 ui-polish.css 第 14 节(含浅色主题与移动端 34px 触控加大)。
-
·
全项目原生弹窗清零(9 个文件,71 处调用点)
- main.js(44)、memory-ui.js(7)、plugins.js(4)、vn-mode.js(4)、forum.js(2)、endpoints-ui.js(2)、boot-splash.js(7)、context-compressor.js(1) 全部改为 Dlg.alert/confirm/prompt/choice;所有含 await 的外层回调/函数已 async 化,异步竞态处补了目标 id 捕获与「等待期间数据可能已变」的重新校验。app-dialogs.js 重写升级:新增 Dlg.choice 多按钮选择(用于恢复默认的「清空/保留/放弃」三态、立绘导入的「合并/替换/取消」、大体积导出的「完整/排除内嵌媒体」),支持数字键直选、Enter 主按钮、Esc/遮罩取消、键盘弹出时卡片顶部对齐限高。forum.html 补载 app-dialogs.js(此前无兜底会 ReferenceError);index.html 增加内联 Dlg 占位兜底(旧缓存缺文件时退回原生而非报错)。
-
·
sw.js 缓存版本 v14→v15
- 并在注释说明变更范围,确保用户不吃旧缓存;本次涉及文件清单未增删(app-dialogs.js 等 v14 已在列)。
因为月太懒,就直接复制了AI的话了,(*^▽^*)
六.已知问题 (暂无)
一.更新内容
- 1. 增加世界书功能
- 2. 文档(在网址后面加/docs访问)也增加了世界书和视觉小说模式的描述,以及注意,本网站根本没有提示词优化器,文档里的那个就是生成文档的模型瞎编的
-
3. 增加了关闭思考模式
- 开启后,请求会附带 enable_thinking: false(通义官方/DashScope)、thinking: false(部分中转站)与 reasoning_effort: "none"(部分平台)参数,让支持思考的模型跳过思考过程,加快回复速度。不支持的接口会自动忽略这些参数。
-
4. 增加了一个显示消息 Token 统计(输入 + 输出)
- 开启后,AI 消息的元信息中会显示本条回复消耗的 token 数(输入 + 输出,取自 API 返回的 usage;无法获取时按文本长度估算),显示在生成用时的左边。
-
5. 实验室增加ComfyUI 图像生成
- 连接本机 ComfyUI,导入 API workflow 手动生成图片,生成后自动附加到当前聊天捏
-
6. 增加了一个默认插件:才不是猫娘喵
- 在你发出的消息标点前和结尾加上「喵」,再显示和发送给 AI
- 7. 看到第七条的,玩原神的歪七七,玩绝区的歪社长,玩星铁的歪银狼,玩崩三的吃保底....以上都是反话啦(*^▽^*)
- 8. 论坛弹窗也加了个点击遮罩空白处关闭(*^▽^*)
- 9. 增加视觉小说模式
- 10. 增加了切换创建删除站点的功能,可保存多个中转站/官方站,随时一键切换~
二.技术性修复与优化
-
·
index.html
- marked 锁 12.0.2(原为裸 latest);hljs 换 @highlightjs/cdn-assets;preload 的 marked URL 同步改掉(否则和 script 不是同一资源,浏览器重复下载)。
-
·
main.js
- escapeHtml:div.textContent → innerHTML 只转 & < >,但它的主要调用场景是属性位置(value="..."、data-id="...")。改为显式转义 " ',从根因上堵住存储型 XSS。
- 新增 readJson(key, fallback, label),替换 20+ 处裸奔的 JSON.parse(localStorage...) —— getFriendRemark(渲染好友列表必经)、getTtsSettings、getVisionSettings、queryKnowledgeBase、知识库上传等。任一条被旧版本写坏就整页白屏,这是纯前端应用最常见的死法。已核实 memory.js/plugins.js 的同名函数在 IIFE 内,不冲突。
- marked 配置重写:v12 已移除 setOptions({highlight}),改用 renderer.code 接入;同时兼容位置参数与 token 对象两种签名,版本不符只告警。
- sanitizeMessage:删掉整段正则黑名单。它既防不住(无引号属性绕过),又会把 AI 回复里的 onload=、onclick= 代码示例改成 data-blocked=,用户复制下来就是错的代码。现在 DOMPurify 白名单是唯一防线,且 CDN 挂掉时降级为纯文本(原来会「只剩正则」直接写 innerHTML)。
- enhanceCodeBlocks:navigator.clipboard 在非安全上下文(http:// + 局域网 IP)是 undefined,原来一点就抛 TypeError 且无反馈。加了 execCommand 兜底 + 失败提示;innerText → textContent(隐藏容器里 innerText 会丢换行,复制出的代码挤成一行)。
- 顺手修了 2 处 JSON.parse(...) || '{}' —— 兜底值是字符串而非对象,会让导出内容带上畸形字段。
-
·
sw.js
- 清单与页面逐字对齐;缓存版本 v9 → v10(不升版本老用户会一直吃 stale 缓存,本次改动到不了线上);addAll → 逐个 cache.add + 汇总失败项(单个资源 404 不再导致「一条都没缓存」);fetch 全链路补 respondWith 兜底(caches.match 未命中返回 undefined,respondWith(undefined) 会请求失败);日志接上真正生效的门控。
-
·
knowledge-ui.js
- onclick="removeKnowledgeFile('${f.id}')" 是真实注入口(knowledgeSettings 可被「导入完整数据」覆盖)。这里有个反直觉的点:内联事件里 escapeHtml 转义出的 ' 会被 HTML 属性解析器还原成单引号,等于没防住。改为 data-id + 事件委托。
三.已知问题 (暂无)
一.更新内容
教师节快乐!
- 1. 修复「跨角色搜索结果」开关
- 2. 新增「当前对话搜索栏」显示开关
- 3. 增加内置角色:花火 黑塔 大黑塔
二.已知问题 (暂无)
一.更新内容
- 1. 加了个论坛私信和短信的角色列表可以拖动改变顺序,不想看到的角色就扔后面
- 2. 修复了对话回放首条消息会没了的问题
- 3. 论坛私信加了可以编辑信息,额,设置里,有点.....复杂
- 4. 增加了新内置角色 瓦尔特.......乔伊斯
- 5. 海瑟音更新了第二版提示词
- 6. 新加了新内置角色希儿·芙乐艾
- 7. 访问网址的时候在后面加上"/docs"可以查看文档,有斜杠就别加斜杠,反正文档也是AI生的
- 8. 修复导出聊天记录时引用消息丢失的问题
- 9. 修复了保存设置后聊天记录跳到中间的问题
- 10. 修复了AI群投票、群管理通知等触发刷新时跳屏的问题
- 11. 修复了置顶其他分组时出现重复分组标题的问题
- 12. 修复了长聊天记录滚动条"鬼畜"的问题
-
13. 已新增「允许 AI 识别我的表情包」开关
- 有人工或自动备注的表情包,AI 只把备注作为图片内容理解,不再识图,也不会上传该图片进行自动识别。
- 无备注表情包只有在「表情包识图」开启时才允许进入识图流程
- 自动备注同时受「自动备注」「表情包识图」「全局多模态视觉」三个条件控制
- 关闭表情包识图后,无备注表情会明确告诉 AI「禁止识图」,避免猜图
- 单聊已经应用上述规则
- 群聊也已经补齐相同的表情包调用、备注优先和识图规则
- 14. 这更新公告真有人看吗?以及,关注B站月蛊菌谢谢喵
二.已知问题 (暂无)
一.更新内容
- 1. 对话回放/剧场模式改为播放时先把所有记录隐藏再开始播放
-
2. 增加AI论坛功能,不想看到入口去 新功能按钮显示开关关掉
- 论坛中,可以编辑资料,可以设置自己的生日喵,生日当天没有惊喜
- 3. 自定义气泡可以调自定义气泡圆角了
- 4. 修复了有时候聊天信息太多(经过测试20条以上就会触发该BUG)会把聊天输入框搞没的问题(应该吧)
- 5. 增加显示 AI 回复耗时开关
- 6. 新增更改界面字体设置,可以改顺眼的字体咯
- 7. 增加群聊 AI 报错后询问是否继续请求,默认开启,可以关掉,和第二条一样不想要可以去显示开关关了
-
8. 增加记忆提取最大 Token
- 用于将复杂对话归档为长期记忆;较高数值可减少 JSON 被截断,但会增加调用消耗。默认 1200(防止有人聊很多很多)
- 9. 增加了实验室,可以开启"3D?!"并导入glb模型,不过能不能用是个谜
-
10. 角色名字支持操作
- 桌面端:双击角色名字。移动端:长按角色名字。头像原有右键 / 长按菜单仍保留。
- 菜单新增三项功能
- 删除角色和聊天记录 — 自定义角色、内置角色均可使用。会彻底删除该角色当前聊天数据。内置角色删除后不会因刷新自动恢复,可在"添加好友"重新添加。
- 删除角色(保留聊天记录)— 仅内置角色显示。从列表移除角色,但线程聊天记录保留。在"添加好友"中重新添加后,会恢复原聊天记录。
- 开启 AI 群聊 — 从当前角色发起选择其他角色。创建群聊时,默认包含当前角色。自动复制并导入当前角色当前对话线程内的用户与 AI 聊天记录。导入为独立副本,后续群聊不会影响原角色的聊天内容。
- 11. 添加好友优化 — 已被删除的内置角色会在"添加好友"中以"可重新添加"标识展示。点击后恢复角色,并保留此前聊天记录(若选择的是"删除角色但保留聊天记录")
- 12. 修复了解散群聊的确认提示图层在管理界面下面的问题
- 13. 开启消息分段时,一条被拆成多段的消息现在会将操作按钮统一显示在最后一段消息下面
- 14. 还有一大堆懒得说了,自己去发掘吧!
二.已知问题 (暂无)
一.更新内容
大家都开学了吧?那今天更新咯?
-
1. AI群聊新功能:群成员头衔
- 在「管理群聊 → 群成员头衔」中可为每位 AI 设置头衔,最长 20 字。
- 群头衔会显示在群聊消息昵称中,例如:角色名【群头衔】。
- AI 的群聊上下文中会带上所有成员及其头衔,因此其他 AI 也能识别头衔。
- 原先长按/右键头像设置头衔的原生弹窗已替换为引导至群管理界面。
-
2. 群公告
- 在「管理群聊 → 群公告」中填写并发布公告。
- 公告会以"群内通报"形式写入聊天记录。
- AI 收到公告后会按自身活跃度概率决定是否回应;提示词中也明确允许其输出"(不回应)"。
-
3. 群投票
- 在「管理群聊 → 群投票」中填写投票问题和选项(每行一个,2~8 项)。
- 保存设置后投票自动发起,并作为群内通报展示。
- AI 会按成员活跃度概率参与投票,每名 AI 每个投票仅能投一次。
- 投票结果和 AI 的投票行为会同步记录在聊天中。
- 管理界面会展示最近投票及各选项实时票数。
- 4. 修复了长期记忆功能中导入 CSV按钮的颜色和大小和其他按钮不一样的问题
-
5. 修复了引用功能并优化:
- 引用内容不再写入输入框,不会因为引用 AI 长回复而导致发送内容变成一大串。
- 输入框上方新增与附件预览区一致风格的引用预览条:仅单行展示"昵称 + 引用内容";内容超出时自动显示省略号;完整内容可通过悬停查看;引用预览右侧新增 × 取消引用 按钮。
- 取消后会立即清除待发送的引用关系;即使之前误触引用,也不会在发送后的消息上显示引用内容。
- 正常发送消息、发送附件或群聊消息后,待发送引用都会自动清除。
- 6. 修复了分支可视化管理面板 对话分析仪表盘 对话回放 / 剧场模式功能在新功能按钮显示开关开启显示后没有立刻显示的问题
- 7. 修复了分支可视化管理面板不可用的问题
- 8. 修复了导出对话为PDF时不正常的问题
- 9. 增加了千问模式(不保证有用)
二.已知问题 (暂无)
一.更新内容
- 1. 修复了背景导入后不生效的问题,新增了从URL导入背景,以及现在可以背景遮罩浓度了
- 2. 修复了长期记忆AI不记事了问题,并优化了长期记忆
- 3. 修复了移动视图中,汉堡菜单的三条杠位置在左上角不在中间导致看着很难受的问题
- 4. 修复了清除上下文按钮会被切换视图按钮挡住的问题
- 5. 修复聊天气泡样式更换后没有立刻生效,还有流式输出+消息分段,输出完后没有立刻分段的问题
-
6. 插件新增了两个用户可选择是否开启的选项(默认不开启):
- 是否允许插件使用我AI配置中的API信息?(某些插件可能需要调用API,可以选择是否允许插件使用用户的API,开启的话插件就可以使用,关闭则不可以)
- 是否允许插件更改我的DOM和界面(防止插件把用户的界面搞没了)
- 7. 修复了AI群聊中,任意一个角色发的消息在编辑当前对话上下文中发送人都显示是群聊名字的问题
-
8. 新增功能:对话优化 Beta
- 实验性:开启后会把角色提示词自动分块,每轮对话只把当前话题需要的块发给 AI,而不是每次都完整「重读」一遍全部提示词,可显著降低 token 消耗。
- 注意:属于实验性功能。姓名、身份、性格等核心块会恒定下发以防人格漂移;但极长或结构混乱的提示词仍可能出现细节遗漏,若发现角色表现异常请关闭此项。
- 9. 懒人模式改为用户不输入操作后5秒开始生成回复
- 10. 把???模式的诡异玩意改成了多一些动画
二.已知问题 (暂无)
一.更新内容
- 1. 用户可以选择同不同意AI用自己的表情包
- 2. 还可以选择开启AI可不可以给没备注的表情包备注
- 3. 新增了内置角色蕾米埃尔和瓦尔特(猫娘版)
- 4. 给长夜月更新了第二版的提示词
- 5. 取消了AI群聊的人数上限
- 6. 本次更新使用了浏览器端AI代理"码匠工坊",访问地址: yg-studio.pages.dev/code
二.已知问题 (暂无)
一.更新内容
- 1. 叶瞬光更新了第二版提示词,默认用第二版,可以手动切回第一版
- 2. 增加了???模式和兼容模式
二.已知问题 (暂无)
一.更新内容
- 1. 为用户提供选择性加入的控制选项,以便在导出的备份中包含API密钥,同时保持默认更安全(密钥被省略)
- 2. 允许不设置温度参数,以便使用模型/API的默认值,并添加用户可配置的最大自动重试次数,以应对瞬态请求失败的man
- 3. 通过提取结构化记忆字段、在写入时持久化嵌入向量、并在读取时复用/还原向量以提升检索效果,增强长期记忆(LTM)的稳健性。
- 4. 左上角搜索现在将"角色结果"和"聊天记录结果"拆成两个可独立折叠的区域,并把折叠状态保存到本地,用户只想搜其中一种时可以隐藏另一种结果。角色结果只按角色名匹配,聊天记录结果仍按消息内容检索
- 5. 为搜索分区标题和右上角折叠按钮补充了深色/浅色主题下的样式与 hover 反馈
- 6. 移除了"最大上下文轮数"的前端上限,并在提示中明确不会被固定锁定为 20 轮
- 7. 优化聊天设置数字解析逻辑:最大上下文轮数会按非负整数保存,显示限制轮数会按正整数保存,避免空值/非法值回退逻辑造成体验异常
二.已知问题 (暂无)
一.更新内容
- 1. 把知识库核心存储升级为纯前端 IndexedDB:新增 chunks 对象仓库,支持按来源写入、读取、删除分块,并提供本地 cosine similarity 向量打分能力
- 2. 上传文件/抓取网页时会在前端提取文本、分块、写入 IndexedDB;如果配置了 Embedding API,会在导入阶段生成并保存向量,否则保留关键词检索降级路径
- 3. 对话检索改为优先读取 IndexedDB 中的知识片段与向量,按查询向量做本地相似度检索;旧数据或未向量化片段会在检索时尝试补齐向量,失败则降级关键词检索
- 4. 知识库文件列表改为异步读取 IndexedDB 来源列表,支持删除同一来源的全部分块,并显示分块数与"已向量化/关键词"状态
- 5. 更新知识库配置文案,说明向量库保存在浏览器 IndexedDB,上传后会前端分块并在可用时生成 Embedding
- 6. 又加了两个内置角色,鸣潮的达妮娅和爱弥斯
本次更新由 Codex 完成
二.已知问题 (暂无)
一.更新内容
- 1. 上传图片/文件时现在是先在输入区预览并允许移除或继续编辑文字,而不是立即发送给 AI
- 2. 内置插件"雷霆小窗口"可以拖动了,手感神秘
二.已知问题 (暂无)
一.更新内容
插件功能上线! 可以导入 JS 文件的插件,默认给一个雷霆小窗。
至于还有什么好东东……自己看看?
甚至可以把 MySW 的代码全扔给 AI,让 AI 来写插件!
至于还有什么好东东……自己看看?
甚至可以把 MySW 的代码全扔给 AI,让 AI 来写插件!
- 1. 上线了插件功能,支持导入 .js 文件作为插件
- 2. 插件功能默认提供一个"雷霆小窗"示例插件
- 3. 更多插件玩法等你探索,甚至可以把 MySW 源码喂给 AI 来生成插件
二.已知问题 (暂无)
一.更新内容
- 1. 把"已有角色配置文件?一键导入!"改成了"已有角色配置文件?一键导入喵!"
- 2. 把"导入角色 JSON / ZIP"改成"导入角色 JSON / ZIP喵"
- 3. 兼容了酒馆V2规范的角色卡
二.已知问题 (暂无)
一.更新内容
因为月蛊菌打完后发现话联不通,就让AI帮忙中翻中了(人机味真重)
- 1. 把"导入角色"按钮文案改为支持 JSON / ZIP,并将文件选择器扩展为可选择 .json、.zip 及对应 MIME 类型文件。
- 2. 把原来的单个 JSON 角色解析逻辑拆成 createCharacterFromImportData,继续兼容 MySW、AIAW、酒馆角色卡等格式。
- 3. 新增 ZIP 导入流程:如果选择 ZIP,会用 JSZip 解压,遍历压缩包内所有 .json 文件,逐个导入有效角色;无 JSON、全部失败、部分失败都会给出对应提示。
-
4. 自定义角色在角色列表中点击后,现在会打开独立的角色编辑弹窗,不再塞进添加好友面板里的内联编辑区域。
- 编辑弹窗会加载角色名称、提示词、头像、开场白,并显示"保存修改 / 删除 / 克隆"等编辑操作呢喵
- 5. 删除了"每行字符数"分段设置,只保留"启用消息分段"开关,并更新说明为按自然段落和句末标点分段。
- 6. 聊天设置读写不再依赖 charsPerLine,避免保存无用配置项;优化消息分段逻辑。
- 7. 重做浅色主题,至少能看了。
- 8. 修复语音输入优先级:现在优先使用浏览器语音识别把转写文本写入输入框;只有浏览器不支持语音转文字时才回退到录音发送。
- 9. 快捷指令面板现在点击后会直接执行 /new、/ls、/reset、/del、/download、表情和 /help 等指令;只有 /switch 仍会填入输入框,方便补序号。
- 10. 默认发送快捷键改为 Enter,Shift+Enter 保留换行,并同步更新输入框占位提示和快捷键帮助文案。
月蛊菌分类好的角色表
mysw-update.pages.dev/juese
→
总计 63 个角色 · 崩坏星穹铁道 34 · 绝区零 12 · 崩坏3 10 · 其他 7
二.已知问题 (等后续更新再补充)
一.更新内容
- 1. 设置内增加了搜索设置,可以跨设置项搜索设置,也就是可以在聊天设置搜索界面外观的设置
- 2. 自定义主题色被移动到界面外观
- 3. LaTeX 公式 + Mermaid 图表渲染 虚拟滚动优化(消息过多时) 大量消息性能修复(推荐开启) 被移出 新功能按钮显示开关,改为默认生效
-
4. 管理群聊做了一个界面,在界面里可以直接进行以下操作
- 群聊操作
- AI 群管
- 群主管理操作
- 活跃值
- 5. 在管理群聊界面加了一个解散群聊的按钮,全体队员 稍息 立正 解散!(然后人全走了) 反人类的界面设计
- 6. 可能修复了恢复默认按钮用不了的问题
- 7. 修复了在新功能按钮显示开关开启分支可视化管理面板和对话回放/剧场模式以及对话分析仪表盘时不显示的问题(如果还不显示那就刷新网页看看)
- 8. 对对话分析仪表盘的关键词云进行了改动,可能不会出现一句话来了十几个关键词的神秘现象
- 9. 原来的群聊最多只能几个AI回复,现在最多是所有人都回复 token烧起来吧!
二.已知问题
- 1. 对话分支管理用不了一点
- 2. 记忆提取失败总是提示 等等
一.更新内容
- 1. 删除了所有的毛玻璃
-
2. "AI配置"界面加了生成参数,分别是:
- 随机性
- 核采样
- 存在惩罚
- 频率惩罚
- 超时秒数
- 种子
- 停止词
二.已知问题 (本次暂无)
一.更新内容
- 1. 新内置了两名崩坏三的角色"布洛妮娅"和"丽塔"
-
2. 创建群聊改为了勾选AI,而不是之前的输入角色ID,群人数上限扩充到80人。
- 创建后,PC端在群聊天界面双击群名 / 手机长按群聊天界面的群名 即可进行群管理操作
- 修改群名
- 调整群内AI(移除和新增AI角色)
- 设置AI群管
- 禁言AI
- 设置AI的活跃值
二.已知问题 (后续更新可能会修复 · 调整)
- 1. 群管理…不能算界面吧,总之并不方便,后续会调整成界面
- 2. 群聊不能解散
- 3. 毛玻璃导致卡成狗屎 (性能不行凉拌,后续会删)
- 4. 太多了懒得说