Repository navigation
轻语v0.8.9
夸克网盘链接
https://pan.quark.cn/s/a9853284d260
更新日志
[0.8.9] - 2026-07-29
新功能
- 字体自定义功能:
- 新增对话字体选择功能,支持 6 种内置字体(系统默认、Arial、微软雅黑、宋体、黑体、楷体),每种字体均带预览效果
- 支持用户上传自定义字体文件(TTF/OTF 格式),字体文件存储在本地用户数据目录,上传时校验文件格式(magic number)和大小限制(10MB)
- 字体变更通过 CSS
font-display: swap异步加载,避免页面卡顿;切换后所有对话历史记录实时生效 - 设置页新增字体管理区域:上传、预览、应用、删除自定义字体
- 群聊引用回复:
- 群聊消息支持引用回复,hover 消息显示回复按钮,点击后输入框显示引用预览条
- 发送消息时引用块显示在气泡顶部,含被引用消息的角色名和内容预览
- 群聊 @提及高亮:
- 用户消息中 @角色名 自动检测并以高亮样式显示(accent 色背景 + 圆角)
- 基于群成员名动态匹配,避免误匹配邮箱/URL 中的 @ 符号
- 群聊用户消息发送状态:
- 用户消息发送时显示「发送中」旋转图标,AI 回复完成后变为「已发送」勾选图标
- 群聊消息气泡不透明度调节:
- 群聊设置面板新增「气泡不透明度」滑块(0%-100%),支持拖动实时预览、松手保存
- 角色气泡通过
color-mix动态混合背景色与透明度,配合聊天背景使用效果更佳 - 用户气泡保持固定样式不受影响
- 单元测试框架:
- 引入 Vitest + @testing-library/react + jsdom 测试框架
- 编写 128 个单元测试,覆盖核心工具函数(对话解析器、消息后处理、默认值)、设置 Store、群聊 Store 和群聊消息组件
改进功能
- 群聊消息 UI 全面对齐单聊:
- 布局重构:新增
mx-auto居中容器,使用settings.messageWidth限制最大宽度,消息不再紧贴左边缘 - 头像升级:添加渐变背景(
bg-gradient-to-br)和环形光效(ring-2),与单聊 MessageBubble 风格统一 - 名称行升级:字号从
text-[10px]提升至text-xs,名称使用font-medium text-tavern-text-soft,时间和发送状态移至头部行 - 气泡升级:内边距从
px-4 py-2.5增大为px-5 py-3.5,添加阴影,支持settings.bubbleStyle圆角设置 - 用户气泡使用与单聊相同的暖色渐变(
from-amber-100 to-orange-50),角色气泡保留彩色左边框 +shadow-sm - 消息间距改用
settings.messageSpacing内联样式 - 新增
.mention-highlight和.reply-quoteCSS 样式类
- 布局重构:新增
- 群聊背景层 z-index 修复:
- 背景层添加
z-0,顶栏/消息区/输入区/成员栏添加relative z-10,修复聊天背景遮盖菜单栏的问题
- 背景层添加
- 角色卡页面性能优化:
CharacterCard包裹React.memo,配合useCallback稳定回调引用,避免父组件重渲染时所有卡片跟着重渲染- 搜索输入使用
useDeferredValue防抖,输入时不再逐字符触发全量过滤 - 封面图片添加
loading="lazy"懒加载,视口外图片延迟加载减少初始解码压力 CharacterCard的 store 订阅从全量解构改为 4 个独立选择器,避免导入进度等无关状态变更触发卡片重渲染- 尺寸配置对象
SIZE_CONFIG从组件内部提取为模块级常量,减少每次渲染的对象创建
- 群聊默认预设:
- 新建群聊默认应用「默认通用」内置预设,无需手动在设置面板中选择
- 群聊上下文与世界书引用优化:
- 世界书扫描文本加入角色名前缀(
【角色名】内容),以角色名为关键词的世界书条目现在可被正确触发 - 后历史指令(
postHistoryInstructions)纳入 token 预算裁剪计算,避免裁剪后注入导致实际上下文超出maxContext
- 世界书扫描文本加入角色名前缀(
已知问题
- 自定义字体仅当前设备可用,不随角色卡导出(与现有纯本地存储策略一致)
- 内置字体(SimSun/SimHei/KaiTi)依赖系统已安装,若用户系统未安装则浏览器自动 fallback
[0.8.8] - 2026-07-28
改进功能
- 预设上下文长度跟随模型:所有内置预设的
maxContext改为 0(跟随模型默认),不再硬编码 8192/16384 限制模型实际能力。用户选 GPT-4o 即可用 128K 上下文,选 Claude 即可用 200K,预设不再拖模型后腿 - 越狱预设输出长度提升:越狱-温和/标准/强力的
maxTokens从 1024 提升到 2048,修复 Claude 思考模型(thinking budget = max(1024, maxTokens/3))下思考预算吃满全部输出额度导致实际回复为空的问题 - 快捷设置自定义 Token 输入:快捷设置面板的最大 Token 除 4 个固定档位按钮外,新增自定义数字输入框,支持输入任意值
- 快捷设置字体放大:快捷设置面板内所有文字字号统一调大(原 9px/10px/11px 提升至 11px/12px),改善可读性
- 角色卡页面全面优化:
- 卡片尺寸可调:搜索栏新增小/中/大三档尺寸切换,小卡 1:1 方形紧凑排列(一屏 ~20 张),中卡 3:4 竖卡(一屏 ~12 张),大卡 2:3 宽卡展示更多信息;尺寸偏好自动记忆
- 卡片信息增强:新增性格特征碎片标签(柔和圆角色彩)、场景设定预览(斜体一行)、创作者名称(@作者名);卡片信息密度翻倍,所有字段随尺寸自适应显示
- 角色详情面板:点击卡片任意位置打开右侧滑出只读详情面板,分区展示角色全部设定(基本信息/标签/角色设定/对话设定/高级设定/绑定设置),无需进入编辑模式即可浏览
- 首条消息预览:卡片信息区展示首条消息原文/翻译(替代原先难以辨认的角色描述),中/大卡显示 2 行,悬浮封面也可预览
- 排序功能:搜索栏新增排序下拉,支持按最近更新/创建时间/名称排序
- 首条消息一键翻译:卡片左下角新增翻译按钮,无需打开编辑器即可翻译首条消息;支持多张卡片同时翻译,互不阻塞
Bug 修复
- 继续续写功能无效:修复"继续续写"按钮未向 AI 传达续写意图的问题。原先仅创建新气泡走普通生成流程,AI 无法感知续写需求导致内容不连贯。现新增续写指令注入上下文末尾,并将原消息内容作为
preContent传入流式输出,新气泡完整显示"原内容 + 续写内容" - 预设 maxContext 被强制覆盖:修复
getActiveProfile()中profile.maxContext || 8192导致预设的 maxContext 永远不生效的问题(profile 始终返回 >= 8192 覆盖了预设值),现已改为|| 0让 0 表示"跟随模型" - Token 用量显示不准确:修复 ChatHeader 和 ChatInput 中 maxContext 为 0 时显示硬编码 8192 的问题,改为根据当前模型动态推断默认上下文长度
- 侧边栏无法滚动:修复字体设置过大时侧边栏导航项溢出但无法滚动的问题,导航区域添加
overflow-y-auto - 对话解析器正则全面重构 (B-07/B-08):
- 粗体文本误渲染为黑点:修复 AI 输出
**粗体**时解析器误将*粗体*匹配为动作、残留外层两个*在 CJK 字体下显示为黑色实心点的问题。新增**...**、***...***、__...__、___...___、~~...~~markdown 语法保护 - 反引号破坏行内代码:移除反引号
\...``→双引号的强制转换,该转换会将 markdown 行内代码误转为"对话"样式;改为直接保护行内代码 - 动作内容支持内含
*:动作正则从[^*]+改为[\s\S]+?非贪婪匹配,*does *this* too*可正确整体解析为动作 - 说话人名 Unicode 扩展:支持带重音拉丁字母(José)、西里尔字母(俄语)、数字(Player1)、连字符(AI-chan)等角色名
- 新增单引号对话支持:
Speaker: 'text'和Speaker:'text'可正确识别为对话 - 英文缩写保护:
don't、can't、it's等不再被单引号对话正则误匹配 - 中文引号全面覆盖:新增 CJK 双引号
〝〞(U+301D/E)、直角引号变体﹁﹃﹂﹄(U+FE41-44)归一化;修复中文弯引号""(U+201C/D)此前未生效的问题 - 多 thought 块提取:GroupChatMessage 改用
while+exec循环提取全部思考块,与 MessageBubble 行为一致 - 冗余 thought 剥离:MessageBubble 非翻译场景不再对已剥离文本重复执行 thought 标签处理
- 占位符健壮性:占位符标记从空字节
\x00改为 Unicode 私用区字符,避免渲染管道破坏;restore 改为循环替换以处理嵌套保护 - 快速预检优化:新增预检正则,不含任何对话/动作标记字符时直接返回纯文本,跳过后续 10+ 步保护与解析
- 粗体文本误渲染为黑点:修复 AI 输出