Refly v0.2.3 更新解析:产品引导向导、会话制计费与知识库体验升级的实现细节

发布时间:2026/9/16 18:17:22

Refly v0.2.3 更新解析:产品引导向导、会话制计费与知识库体验升级的实现细节 Refly v0.2.3 更新解析产品引导向导、会话制计费与知识库体验升级的实现细节【免费下载链接】reflyThe first open-source agent skills builder. Define skills by vibe workflow, run on Claude Code, Cursor, Codex more. Build Clawdbot · APIs for Lovable · Bots for Slack Lark/Feishu · Skills are infrastructure, not prompts.项目地址: https://gitcode.com/GitHub_Trending/re/refly本文基于 Refly 仓库中的 v0.2.3 更新日志系统梳理该版本的核心变更全新产品初始化设置向导、由 Token/存储容量制转向“会话次数 文件数量”的计费方案、知识库文档与资源预览、节点级永久删除能力以及五项核心问题修复。读完本文你可以理解每一项功能在前端触发链与后端服务层的对应实现引导表单如何被服务端 Schema 驱动、用户偏好如何回写、配额如何计量并能通过环境变量ONBOARDING_ENABLED等开关了解自部署时的相关配置项。一、v0.2.3 更新总览根据 v0.2.3 更新日志本版本的定位是“全面升级产品引导体验、优化付费方案设计并提供更直观的知识库展示同时修复多个核心使用问题”。变更分为四大块模块变更类型关键内容产品引导新功能初始化设置向导、核心功能介绍、交互式使用指南、功能点悬浮视频教程付费方案全新优化计费单位由 Token/存储容量改为会话次数与文件数量新增用量统计展示与用量不足提醒知识库体验升级新增文档和资源预览功能资源管理新功能删除节点时可永久删除对应资源/文档删除画布时可级联删除画布内全部资源核心修复缺陷修复频繁退出登录、网页内容复制导出丢失、文档标题末字符无法删除、空图片地址报错、弱网下删除最后画布跳转异常下面按模块展开并结合仓库源码说明各功能的实际实现位置。二、产品引导全面升级从“设置向导”到“悬浮视频教程”更新日志中引导模块包含四个具体能力产品初始化设置向导配置界面语言UI Locale、AI 回答语言Output Locale以及操作模式鼠标/触控板产品核心功能介绍帮助新用户快速理解产品价值交互式使用指南手把手引导体验 Refly 辅助内容创作全流程功能点悬浮视频教程直观了解各功能的使用方法。2.1 初始化设置向导的触发链设置向导是否弹出由登录后拉取的用户设置中的preferences.hasFilledForm字段决定。前端在 use-get-user-settings.ts 中完成这一判断// packages/ai-workspace-common/src/hooks/use-get-user-settings.ts const updateModalStatus (preferences: UserPreferences) { const hasBeenInvited preferences.hasBeenInvited; userStore.setShowInvitationCodeModal(!preferences.hasBeenInvited); // Only check form filling status if user has been invited if (hasBeenInvited) { const hasFilledForm preferences.hasFilledForm ?? false; userStore.setShowOnboardingFormModal(!hasFilledForm); } };即仅当用户已被邀请hasBeenInvited且尚未填过引导表单hasFilledForm false时才会置位showOnboardingFormModal。后端在注册时将该字段初始化为false见 auth.service.ts 中hasFilledForm: false的初始化表单提交成功后再置为true。2.2 服务端驱动的动态表单引导表单本身并不是前端写死的组件而是由服务端下发 JSON Schema、前端用 RJSFreact-jsonschema-form动态渲染的。FormOnboardingModal 的核心流程通过useGetFormDefinition请求表单定义含schema与uiSchema将服务端返回的 Schema 解析后合并formId与当前用户uid交给ReflyRjsfForm渲染解析失败或请求出错时展示错误占位避免白屏。对应的后端实现位于 form.service.tsgetFormDefinition从数据库FormDefinition表中读取已发布的表单定义formId、title、description、schema、uiSchema、statussubmitForm写入FormSubmission记录并将用户preferences.hasFilledForm更新为true同时从答案中提取role字段同步到遥测属性user_identityhasFilledForm对外暴露“是否已填写”的判断逻辑供用户设置接口聚合返回。这一设计意味着运营侧可以在不发布前端版本的情况下调整引导表单的字段与文案——表单结构完全由数据驱动。2.3 引导开关ONBOARDING_ENABLED是否强制走引导流程是一个可配置项。app.config.ts 中定义了// apps/api/src/modules/config/app.config.ts onboarding: { enabled: process.env.ONBOARDING_ENABLED true || false, },FormService.hasFilledForm首先检查auth.onboarding.enabled关闭时直接返回hasFilledForm: true跳过表单要求。对于自部署场景可以通过设置环境变量ONBOARDING_ENABLEDtrue来启用该引导链路可参考 env.example 中的环境变量约定。2.4 界面语言、AI 回答语言与操作模式的落地向导收集的三项配置最终会写入用户设置并驱动本地行为同样在 use-get-user-settings.ts 中可见localSettings { ...localSettings, uiLocale, // 界面语言 outputLocale, // AI 回答语言 isLocaleInitialized: true, canvasMode: settings?.preferences?.operationMode || mouse, // 操作模式鼠标/触控板 disableHoverCard: settings?.preferences?.disableHoverCard || false, };其中有一个值得注意的“首次登录回写”逻辑若服务端返回的uiLocale与outputLocale均为空新注册用户前端会用浏览器navigator.language映射出默认语言并立即回写updateSettings({ uiLocale, outputLocale })保证下次加载时语言配置已固化到服务端。操作模式则通过preferences.operationMode持久化缺省为mouse供画布交互层读取以切换鼠标/触控板适配方案。三、付费方案全新优化从 Token/存储容量到会话次数与文件数量更新日志明确说明计费方式的变更“由 Token/存储容量改为会话次数和文件数量更清晰直观”并配套了定价说明优化、用量统计展示与用量不足提醒。3.1 配额模型在源码中的体现当前仓库的订阅计量实现与“会话/请求次数 文件数量”的双维度模型一致。subscription.service.ts 中可以看到两类用量表usage meter请求计量t1CountQuota/t2CountQuota按请求层级计次的配额缺省回落到配置项quota.request.t1/quota.request.t2另有creditQuota对应的积分额度存储计量fileCountQuota缺省回落到配置项quota.storage.file用于约束用户上传/入库的文件数量。// apps/api/src/modules/subscription/subscription.service.ts节选 t1CountQuota: plan?.t1CountQuota ?? this.config.get(quota.request.t1), t2CountQuota: plan?.t2CountQuota ?? this.config.get(quota.request.t2), // ... fileCountQuota: plan?.fileCountQuota ?? this.config.get(quota.storage.file),即套餐plan上可单独配置各维度的上限未配置时使用全局默认值。这种“按次 按文件数”的配额结构正是更新日志所说新计费方式在服务端的落点。3.2 用量统计与不足提醒用量展示与提醒在前端有对应组件hint.tsx 负责订阅/用量相关的提示渲染聊天输入区如 chat-box.tsx与文件导入流程如 storageLimit.tsx也会基于剩余配额给出拦截或引导。套餐价格常量目前收敛在 pricing.tsplus / starter / maker 三档月付与年付价格注释说明应与支付平台配置保持一致。3.3 与旧方案的对照维度旧方案≤v0.2.2 时期v0.2.3 起计费单位Token 消耗、存储容量会话请求次数、文件数量用户感知需理解 Token 概念次数直观便于预估配额来源—套餐级t1CountQuota/t2CountQuota/fileCountQuota缺省回落到全局配置配套能力—用量统计展示、用量不足提醒与补充指引四、知识库体验升级预览与永久删除更新日志记录了知识库的两项变更文档和资源预览新增文档和资源预览功能界面更加直观美观永久删除资源或文档在节点删除时可永久从知识库中删除该资源或文档在删除画布时可删除画布中所有的资源或文档。永久删除的价值在于此前的删除多为画布层面的移除底层知识库资源仍会持续占用存储配额对应上一节提到的fileCountQuota维度v0.2.3 之后删除操作可以直接清理底层数据让配额回收成为可能。该能力在更新日志中描述为可选行为“可永久删除”即删除时由用户决定是否彻底移除。五、核心问题修复与源码印证更新日志列出了五项核心修复其中“频繁退出登录”一项与前端鉴权状态管理直接相关源码中可以看到对应的防御性设计见 use-get-user-settings.ts竞态请求防护activeRequestId递增 isLatestRequest()判断确保慢响应不会覆盖新请求写入的登录态登出误判防护鉴权失败或无凭据时调用authChannel.updateCurrentUid(null)避免跨标签页的 uid 监听把“未登录”误判为“切换用户/被登出”重定向环路短路鉴权失败时仅在“非公开页且不在根路径 /login”的情况下才跳转登录页并保留returnUrl避免登录态检查引发的循环跳转——这类异常跳转在弱网环境下会显著放大“频繁掉登录”的观感。其余四项修复网页内容复制到 AI 文档再导出的内容丢失、文档标题最后字符无法删除、文档编辑器空图片地址报错、弱网环境下删除最后画布的跳转异常属于编辑器与画布交互层面的缺陷修复以 更新日志 的条目描述为准。六、小结这一版本解决了什么问题降低上手门槛初始化向导 功能介绍 交互式指南 悬浮视频教程构成完整的新用户引导链路表单由服务端 Schema 驱动可通过ONBOARDING_ENABLED在自部署中开关计费心智更清晰以会话次数和文件数量替代 Token/存储容量配额按套餐维度配置并回落到全局默认配套用量统计与不足提醒资源生命周期闭环知识库预览提升浏览体验节点/画布级永久删除打通了配额回收稳定性针对登录态竞态、弱网跳转等高频问题做了修复。如果想进一步跟进相关实现建议从 form.service.ts、use-get-user-settings.ts、subscription.service.ts 三个文件入手分别对应引导表单、登录态与本地偏好、配额计量三条主线。【免费下载链接】reflyThe first open-source agent skills builder. Define skills by vibe workflow, run on Claude Code, Cursor, Codex more. Build Clawdbot · APIs for Lovable · Bots for Slack Lark/Feishu · Skills are infrastructure, not prompts.项目地址: https://gitcode.com/GitHub_Trending/re/refly创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/16 18:17:22

TAPTAP评论文本挖掘:从爬虫到情感分析的完整方案

简介:这是一个面向计算机相关专业学生与文本挖掘初学者的完整项目资源,聚焦TAPTAP游戏评论的文本挖掘全流程,覆盖APP爬虫、数据清洗、pyecharts可视化与情感分析四大核心环节。项目来源于作者大三期末大作业,经导师指导获得99分高…

2026/9/16 18:17:22

去耦电容到底该多近?从物理本质到布局落地的完整指南

1. 引言:从一个被问住的“常识”说起做硬件设计这些年,我面试过不少工程师,也带过不少新人。每次问到去耦电容,几乎人人都能背出那句口诀:“电容要靠近引脚放,越近越好。”但你追问一句:“那到底…

2026/9/16 19:17:31

postMessage跨域通信实战:父页面与iframe安全双向通信指南

1. 先搞明白:跨域到底卡在哪了1.1 浏览器的同源策略是道门如果你是个前端,早晚会撞上这么一个需求:页面里嵌了iframe,里面的页面可能是你自己的子应用,也可能是第三方服务,结果两边要互传数据、同步状态、触…

2026/9/16 19:17:31

Uniapp跨端开发中Vite构建格式冲突解决方案

1. 问题现象与背景解析最近在Uniapp项目开发中遇到一个典型的编译环境差异问题:H5端运行完全正常,但打包App时控制台突然抛出Invalid value "iife" for option "output.format" - UMD and IIFE output formats错误。这个报错直接导致…

2026/9/16 19:17:31

a标签的href与target属性详解:从基础写法到安全实践

1. 先从最容易翻车的细节说起&#xff1a;href的正确写法新手写HTML链接&#xff0c;第一行代码十有八九是<a href"https://example.com">点我</a>。但我在帮人排查代码的时候&#xff0c;见过最多的错误不是忘了写闭合标签&#xff0c;也不是引号用成了…

2026/9/16 19:17:31

Matlab批量解码μ-law PCM音频:从RAR解压到WAV全流程

简介&#xff1a;一份面向数字信号处理与通信原理学习者、用于PCM量化误差分析的MATLAB代码包。压缩包共3个文件&#xff0c;包含2个m脚本和1个txt说明文本&#xff0c;整体仅1KB&#xff1b;核心代码通过生成500个标准正态分布随机数模拟时间点上的采样信号&#xff0c;分别对…

2026/9/16 19:12:27

51单片机电机转速表设计:从信号链路到源码实现

简介&#xff1a;51单片机电机转速表设计源码项目&#xff0c;面向单片机入门及嵌入式系统学习者&#xff0c;演示如何实时采集电机转速信号并通过显示屏呈现。项目以51单片机为核心&#xff0c;涵盖转速脉冲检测、定时器/计数器统计、中断服务处理以及AD0832模数转换等关键环节…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述&#xff1a;一台黑屏的拯救者Y7000&#xff0c;到底卡在哪一步&#xff1f; 联想拯救者Y7000系列笔记本&#xff0c;从2018年第一代搭载i5-8300H开始&#xff0c;到后来的i7-9750H、i7-10750H、i5-11400H&#xff0c;再到2023年款的R7-7840HS&#xff0c;它始终是学…

2026/9/16 0:04:09

PHP源码部署实战:从环境配置到运行情侣游戏全攻略

简介&#xff1a;这是一套面向情侣互动场景的PHP完整源码&#xff0c;集成情侣飞行棋、真心话大冒险、情趣骰子等玩法&#xff0c;并内置完整分销制度&#xff0c;可自定义多种返佣比例&#xff0c;源码完全开源无加密&#xff0c;支持微信无感自动授权登录与第三方授权&#x…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码