Refly v0.4.0 深度解析:Code Artifacts、画布共享与自部署能力的整体跃迁
2026/9/16 14:57:32 网站建设 项目流程

Refly v0.4.0 深度解析:Code Artifacts、画布共享与自部署能力的整体跃迁

【免费下载链接】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.4.0 Release Notes 为主体,完整梳理该版本带来的 Code Artifacts 代码组件生成、画布共享与复制、自定义 Prompt、搜索优化等核心新特性,以及 Ollama 本地模型接入、反代部署、解析器切换等自部署改进。读完本文后,你可以掌握 v0.4.0 各功能的使用方式,并能沿着文中给出的源码路径(NestJS 后端控制器、服务层与解析器工厂)理解这些能力在仓库中的实际落地实现。

一、版本总览与发布背景

v0.4.0 是 Refly 官方称为“最强更新”的一次版本迭代,官方摘要概括为:全新的代码组件生成 / 一键原型还原、画布共享、自定义 Prompt 功能、显著提升的搜索速度,以及翻倍的(付费档)文件上传容量。

该版本发布说明中同时包含一则重要的商业公告:Refly 将进行价格调整(调整时间 2026 年 3 月 16 日 00:00 UTC)。官方给出的新旧价格与用量配额对比如下(引自原文档,供了解该版本发布时的订阅策略背景):

档位调整后月付调整后年付调整后高级模型配额调整后基础模型配额
FREE003 次/天30 次/天
PLUS$6.9$69100 次/月1500 次/月
PRO$12.9$129300 次/月3000 次/月
MAX$24.9$249800 次/月8000 次/月

官方强调:调整前购买 MAX 年订阅($99.5/年)并保持自动续费,可继续锁定旧价格并保留“无限次高级模型”配额;若取消自动续费,则续订时按新价($249/年)执行且配额变为 800 次/月。该公告属于订阅策略信息,与技术实现无关,此处仅作发布背景记录。

二、自部署能力改进:本地模型、反代与解析器切换

v0.4.0 的自部署改进是本次发布中与“开源部署”最直接相关的部分,官方列出的改进点包括:

  • 本地支持使用 Ollama(附带完整教程,原文档指向官方文档站,此处不展开外链)
  • 大幅优化本地部署的登录体验
  • 本地部署中移除订阅和无关的登录组件,提供更干净的部署体验
  • 支持反向代理能力,在云服务上无痛部署
  • 支持本地部署展示和处理静态资源(图片、文件等)
  • 支持便捷切换文件处理解析器(pdfjs 与 marker)
  • 支持展示本地运行错误堆栈,便于调试与问题反馈

2.1 Ollama 本地模型接入

从源码结构看,Ollama 的支持集中在packages/providers包中:

  • packages/providers/src/llm/index.ts 提供 Ollama 作为 LLM Provider 的注册;
  • packages/providers/src/embeddings/ollama.ts 提供 Ollama 的向量化(Embedding)实现;
  • 此外 packages/providers/src/reranker/index.ts、packages/providers/src/provider-checker/provider-checker.ts 及 packages/utils/src/provider.ts 中均包含 Ollama 相关处理,说明该 Provider 覆盖了 LLM、Embedding、Reranker 与连通性检查等多条链路。

这意味着自部署用户可以在不依赖任何远程模型 API 的前提下,通过 Ollama 完成问答与知识检索的本地化闭环。

2.2 文件解析器切换:pdfjs 与 marker

发布说明中提到“支持便捷切换文件处理解析器,包括 pdfjs 和 marker”。这一点在源码中有清晰对应:apps/api/src/modules/knowledge/parsers/factory.ts 中的ParserFactory负责按 MIME 类型与用户 Provider 配置选择解析器,其中 PDF 分支的逻辑为:

case 'application/pdf': { const provider = await this.providerService.findProviderByCategory(user, 'pdfParsing'); if (provider?.providerKey === 'marker') { return new MarkerParser({ ...options, apiKey: provider.apiKey, }); } return new PdfjsParser(options); }

可以看到:用户若在 Provider 设置中把pdfParsing类别配置为marker,则使用 MarkerParser(依赖 marker 服务 API Key);否则回退到内置的 PdfjsParser。同一工厂还负责 Web 解析器选择:配置了jina时使用 JinaParser,否则回退到内置的 CheerioParser。这正是发布说明中“支持便捷切换文件处理解析器”的实现载体。

2.3 反向代理与静态资源

自部署的反向代理与静态资源能力对应仓库中的部署配置,例如 deploy/docker/nginx.conf、deploy/docker/nginx-proxy.conf 以及 deploy/docker/docker-compose.services.yml 等文件,自部署用户可以参考这些模板在自己的云环境中接入 Nginx 反代。

三、Code Artifacts:AI 生成代码组件并实时预览

发布说明将“Code Artifacts 正式发布”列为本次最大亮点,功能要点包括:

  • 新增 “Code Artifacts” 技能,支持 AI 生成代码组件并实时预览运行结果;
  • 支持 svg、mermaid、html、react 等主流代码类型的生成、展示、下载与分享;
  • svg、mermaid 等支持直接下载为图片或复制到剪贴板,便于快速分享;
  • 生成结果可作为后续提问与修改的上下文,也可人工修改并预览最终效果;
  • Markdown 中的 Mermaid 图同样支持图片下载操作按钮。

3.1 后端 API:四个端点覆盖完整生命周期

Code Artifacts 的 API 由 apps/api/src/modules/code-artifact/code-artifact.controller.ts 暴露,挂载在v1/codeArtifact路径下,所有接口均需 JWT 鉴权(JwtAuthGuard):

端点方法作用
POST /v1/codeArtifact/newcreateCodeArtifact创建/写入代码产物
POST /v1/codeArtifact/updateupdateCodeArtifact更新代码产物
GET /v1/codeArtifact/detailgetCodeArtifactDetailartifactId查询详情(含内容)
GET /v1/codeArtifact/listlistCodeArtifactsresultId/resultVersion分页列表,needContent控制是否附带内容

这与“生成、展示、下载、分享”的产品描述相吻合:列表接口默认pageSize=10,通过needContent布尔参数按需返回完整代码,避免列表页拉取大体积内容。

3.2 服务层实现:对象存储 + 画布节点联动

apps/api/src/modules/code-artifact/code-artifact.service.ts 展示了代码产物的存储与画布联动机制:

  1. 元数据与内容分离存储:产物元数据(标题、类型、语言、画布关联等)写入 Prisma 的CodeArtifact表,代码正文写入对象存储,存储键为code-artifact/{artifactId}getCodeArtifactDetail会把正文从 OSS 流读回并拼接进返回结果。
  2. 自动落画布:创建时若携带resultIdcanvasId,服务会通过CanvasSyncService.addNodesToCanvas自动在画布中追加一个type: 'codeArtifact'的节点,节点contentPreview取代码前 10 行,并通过connectTo: [{ type: 'skillResponse', entityId: resultId }]连接到产生它的技能回答节点,且autoLayout: true。这解释了为什么发布说明称生成结果“可作为后续提问与修改的上下文”——它本身就是一等画布节点。
  3. 与工作流执行状态机联动:当产物由工作流节点执行产生时(result.workflowNodeExecutionId),服务会定位处于waiting状态的codeArtifact子节点执行记录,创建成功后将其更新为finish,失败则更新为failed。从源码结构看,这是保证画布上代码节点状态与后端真实执行结果一致的关键机制。
  4. 复制能力duplicateCodeArtifact会生成新的artifactId、复制对象存储中的正文到新存储键,并允许指定目标画布,为“一键复制画布/产物”类交互提供底层支持。

四、画布共享与复制:从个人创作到公共分发

发布说明中的“Canvas Sharing and Copying”包含四个要点:所有画布可共享为公开链接并只读浏览;支持一键复制他人共享的画布并继续修改;画布支持导出为图片;官方欢迎用户提交画布用例并署名展示。

后端实现位于 apps/api/src/modules/share/share.controller.ts,挂载v1/share路径,提供四个端点:

  • GET /v1/share/list:按shareId/entityId/entityType查询当前用户的共享记录(ShareCommonService);
  • POST /v1/share/new:创建共享,由 share-creation.service.ts 处理,注释中特别指出“立即返回最小共享记录(含 shareId)”,说明创建是响应式快速返回的设计;
  • POST /v1/share/delete:删除共享;
  • POST /v1/share/duplicate:复制共享内容,由 share-duplication.service.ts 实现,对应“一键复制他人画布后继续修改”的能力。

该模块还包含 share-rate-limit.service.ts 与 share.processor.ts,从命名可以推断共享创建过程存在速率限制与异步处理(如生成只读数据快照),这与“公开链接只读浏览”的产品形态相符。

五、自定义 Prompt:把系统提示词变成可复用节点

发布说明列出的 Custom Prompt 能力包括:

  • 新增 “Custom Prompt” 技能,可任意配置系统提示词、Temperature、Top P 等参数;
  • 自定义 Prompt 的执行结果支持调整系统提示词等参数后重新运行;
  • 支持克隆自定义 Prompt 节点用于提问,修改系统提示词后再执行;
  • 自定义 Prompt 支持带着已设置的提示词进行追问,无需重复添加。

从产品形态看,这相当于把“System Prompt + 采样参数”固化为一个可克隆、可追问的画布节点,而非一次性配置。它与 Code Artifacts 一样属于“技能(skill)”体系的一部分——v0.4.0 中多个新能力(代码产物、自定义提示词)都以技能形式接入,体现了 Refly 以画布节点/技能为中心的设计思路。

六、Web 与知识库搜索优化

官方列出的搜索优化点:

  • 优化查询预处理逻辑,支持带任意画布上下文的提问;
  • 调整结果生成逻辑,优先直接回答问题,而不是简单罗列检索结果;
  • 提升技能执行速度,大幅减少搜索卡顿或失败;
  • 增强意图理解能力,显著优化复杂问题的可用性。

搜索能力对应仓库中的 apps/api/src/modules/search 与 apps/api/src/modules/knowledge 模块;其中知识库的文档解析链路即上文 2.2 节所述的ParserFactory,Web 端还可通过jinaProvider 增强抓取。结合 v0.4.0 之前的版本说明(见 docs/en/changelog/ 目录)可以看出,搜索质量是 Refly 持续投入迭代的重点方向。

七、问题链接自动解析

该功能允许用户直接在输入框粘贴网站链接提问而无需先导入资源;结果生成后可查看链接网页内容,并一键导入知识库;且支持所有技能。这一能力依赖的网页解析链路同样由ParserFactory.createWebParser(jina 或内置 cheerio 回退)支撑,与知识库的文档导入共用同一套解析基础设施,因此“一键导入知识库”只是解析结果的落库复用。

八、全新网站节点与代码节点

v0.4.0 同时引入了两类画布节点:

网站节点(Website Nodes)

  • 支持在画布中添加并渲染自定义网站,如 Bilibili 视频、Medium 文章、GitHub 仓库等;
  • 支持一键向 AI 追问网站节点内容的摘要。

代码节点(Code Nodes)

  • 支持预览 SVG、HTML、React、Mermaid 等形态的代码,并支持代码修改;
  • 代码节点可被选中作为上下文,配合 Artifact 技能迭代优化代码。

代码节点与 Code Artifacts 的关系是:Code Artifacts 负责“生成并落地”,代码节点负责“画布内的呈现、编辑与上下文引用”。两者结合形成“生成 → 预览 → 修改 → 再生成”的闭环,这也是发布摘要中“一键原型还原”说法的技术底座。

九、其他能力增强

9.1 文件上传限制调整

付费用户文件上传上限显著提高:Plus 用户 10MB、Pro 用户 20MB、Max 用户 30MB。发布说明同时注明“限制会根据运营情况逐步放宽”。

9.2 自定义节点连接线

  • 支持从自由节点直接拉线连接其他节点;
  • 任意连接线可删除;
  • 连接线可书写备注;
  • 对 AI 提问节点,连接上下文节点到提问节点会自动把上下文加入提问框。

最后一条与画布同步机制相关,画布节点与连接线的增删统一经由 apps/api/src/modules/canvas-sync 同步服务持久化,前文 Code Artifacts 自动落画布即调用其中的addNodesToCanvas

9.3 专业网站预览能力(落地页 SEO)

  • 支持落地页在社交网络中展示图片、标题与描述(Open Graph 预览);
  • 支持基于画布状态自动生成预览图,优化画布列表页展示。

前端仓库 apps/web/public 下的 sitemap-templates.xml、robots.txt 等静态资源说明站点层面对 SEO 模板有持续建设,画布预览图自动生成服务于“画布可公开分享”的分发场景。

9.4 推理模型思考过程展示

  • 支持 Claude 3.7 Sonnet Thinking 与 DeepSeek R1 的思考链(thinking chain)流式展示;
  • 支持折叠思考链。

模型接入与流式处理相关逻辑可参考 apps/api/src/utils/llm.ts 与 apps/api/src/utils/stream.ts,思考链的流式透传建立在这套 LLM 调用与流式工具之上。

十、核心问题修复与体验优化清单

发布说明最后罗列了一批体验修复与优化,逐项整理如下:

  • 账户设置支持修改头像;
  • Compact 模式默认开启,且后续提问自动保持;
  • 修复重新运行技能时已选技能丢失的问题;
  • 修复画布因嵌套重复上下文导致的卡顿甚至崩溃问题;
  • 备忘录节点支持文本颜色修改菜单;
  • 节点预览卡片支持修改标题;
  • 文档编辑器补充多语言翻译;
  • 优化回答节点底部模型名过长被压缩的问题;
  • 优化空画布自动命名的效果;
  • 修复折叠模式跟随问题:设置全局节点折叠/展开后,后续节点均遵循该配置;
  • 支持默认画布不自动布局,修复节点布局混乱问题(对应上文autoLayout: true变为可按场景选择);
  • 移除暗色模式处理。

十一、小结

v0.4.0 对 Refly 的三条主线做了集中升级:其一是产物化——Code Artifacts 让 AI 生成的代码从“回答文本”变成可预览、可下载、可复制、可作为上下文迭代的一等资产,后端通过对象存储、画布节点联动与工作流执行状态机保证数据一致性(见 code-artifact.service.ts);其二是分发化——画布共享与复制让创作成果可以通过公开链接流动,配合落地页预览图形成对外分发闭环(见 share.controller.ts);其三是自部署可用化——Ollama 本地模型、pdfjs/marker 解析器切换、反向代理与静态资源支持,使离线与私有化部署从“能跑”走向“好用”(见 parsers/factory.ts 与 packages/providers/src/llm/index.ts)。如果你正在评估或部署 Refly,这一版本是一个值得以基线看待的里程碑:后续的版本说明(如 v0.4.1、v0.5.0)均在上述能力基础上继续演进。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询