欢迎来到 Refly 贡献指南!Refly 是首个用于构建稳定、原子化和版本化 Agent Skill 的开源平台。作为 AI 原生的创作引擎,我们提供直观的自由画布界面,将业务逻辑转化为结构化的 Agent Skill,使任何 Agent 都能以 100% 的可靠性调用。社区的每一份帮助都意义非凡。
考虑到我们目前的发展阶段,我们需要保持敏捷并快速交付,但同时也希望确保像您这样的贡献者能够获得尽可能顺畅的贡献体验。我们制作了这份贡献指南,旨在帮助您熟悉代码库以及我们与贡献者的协作方式,让您能够快速进入有趣的部分。
这份指南,就像 Refly 本身一样,是一个持续改进的过程。我们最近已从创作引擎演进为智能体基础设施平台,如果有时它滞后于实际项目,我们非常感谢您的理解,也欢迎任何反馈来帮助我们改进。
在许可方面,请花一分钟阅读我们简短的许可和贡献者协议。社区还遵守行为准则。
-
新建功能请求时,请详细说明提案功能的目标实现,及其如何增强 AI 原生创作体验,并尽可能提供更多上下文信息。
-
认领现有议题时,请直接在评论区留言说明。
相关领域负责人将会介入审核。如果一切顺利,他们会给您开始编码的许可。在此之前请暂缓开发工作,以避免在我们提出更改建议时您的工作白费。
根据提议功能所属的不同领域,您可能会与不同的团队成员交流。以下是我们团队成员目前负责的领域概览:
成员 负责领域 Canvas & AI Features 多线程对话、AI 驱动的画布功能 Knowledge Base RAG 集成、上下文记忆 Frontend Experience UI/UX、画布交互 Developer Experience API、SDK、开发者工具 Core Architecture 整体系统设计与扩展性 功能优先级:
功能类型 优先级 核心 AI 功能与画布基础功能 高优先级 知识库与协作功能 中等优先级 UI/UX 改进与小功能优化 低优先级 实验性功能与未来构想 未来功能
-
可直接开始编码。
问题优先级:
问题类型 优先级 核心 AI 功能或画布功能的 BUG 紧急 影响用户体验的性能问题 中等优先级 界面微调与文档更新 低优先级
以下是设置 Refly 开发环境的步骤:
从终端克隆您 fork 的仓库:
git clone git@github.com:<github_用户名>/refly.gitRefly 需要以下依赖进行构建:
我们强烈推荐使用 nvm 安装 Node.js:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
source ~/.bashrc # 如果您使用的是 zsh,请使用 source ~/.zshrc 代替
nvm install 20.19.0确保所有依赖都已准备就绪:
docker version
node -v # v20.19.0 或更高版本
pnpm -v # 9.15.9- 启动所有中间件服务:
docker compose -f deploy/docker/docker-compose.middleware.yml -p refly up -d
docker ps | grep refly_ # 检查所有中间件容器是否健康如果存在不健康的容器,请检查容器日志并搜索相应解决方案。如果问题仍然存在,请在仓库中提出 Issue。
- 安装 npm 依赖:
corepack enable
pnpm install如果
corepack不可用,您也可以通过npm install -g pnpm安装 pnpm。
- 从根目录配置环境变量:
pnpm copy-env:develop- 首次构建所有包:
pnpm build- 从根目录或在单独的包中开始开发基于 web-UI 的应用程序:
# 选项 1:从根目录
pnpm dev
# 选项 2:在两个终端中分别运行包
cd apps/web && pnpm dev # 终端 1
cd apps/api && pnpm dev # 终端 2- 开发 CLI:
cd packages/cli && pnpm dev您可以访问 http://localhost:5173 开始开发 Refly Web 应用程序。
为了帮助您快速了解您的贡献适合哪里,以下是 Refly 结构的简要概述:
[apps/api/] // 主 API 服务器应用程序
├── src/
│ ├── modules/ // 功能模块(NestJS 模块)
│ │ ├── skill/ // Agent Skill 管理
│ │ ├── workflow/ // 工作流执行和规划
│ │ ├── action/ // Agent 动作处理
│ │ ├── mcp-server/ // Model Context Protocol 集成
│ │ ├── tool/ // 工具库存和执行(Composio 等)
│ │ ├── drive/ // 文件和存储管理
│ │ ├── schedule/ // 任务调度和多模型路由
│ │ ├── rag/ // RAG 管道实现
│ │ ├── knowledge/ // 知识库管理
│ │ ├── auth/ // 身份验证和授权
│ │ ├── canvas/ // 画布相关后端服务
│ │ └── ... // 其他功能模块(协作、用户等)
│ ├── utils/ // 共享工具
│ └── scripts/ // 构建和部署脚本
├── prisma/ // 数据库架构和迁移
└── data/ // 静态数据和配置
[packages/]
├── cli/ // 用于 Skill 开发的 Refly CLI
├── skill-template/ // Agent Skill 的模板和引擎
├── agent-tools/ // 智能体的标准化工具
├── providers/ // AI 提供商抽象(OpenAI, Vertex 等)
├── canvas-common/ // 共享画布逻辑和类型
├── ai-workspace-common/ // 共享工作区 UI 组件
├── web-core/ // 核心前端逻辑和 hooks
├── ui-kit/ // 共享 UI 组件库
├── stores/ // 共享状态管理 (Zustand)
├── common-types/ // 共享 TypeScript 类型
├── i18n/ // 国际化资源
├── openapi-schema/ // API 架构定义 (OpenAPI)
├── utils/ // 共享工具函数
├── errors/ // 通用错误定义
├── observability/ // 追踪和监控 (Langfuse)
└── tsconfig/ // 共享 TypeScript 配置
后端使用 NestJS 和 TypeScript 构建,专注于:
- 构建稳定、原子化且版本化的 Agent Skill
- 具有可干预运行时的确定性执行
- 通过 MCP、API 和 SDK 进行通用交付
- 多模型路由和高级任务调度
- 用于知识检索的 RAG 管道实现
- 实时协作和画布状态管理
- 带有 OpenAPI 文档的 RESTful API
- 使用 Prisma ORM 的高效数据库操作
[apps/web/] // 主 Web 应用程序
├── src/
│ ├── components/ // React 组件
│ ├── pages/ // 页面组件和路由
│ ├── routes/ // 路由定义
│ ├── lib/ // 第三方库配置
│ ├── utils/ // 前端工具
│ ├── styles/ // 全局样式和主题
│ └── main.tsx // 应用程序入口点
├── public/ // 静态资源
└── typing/ // TypeScript 类型定义
[apps/extension/] // 用于网页剪辑的浏览器扩展
├── src/ // 扩展特定代码
└── ... // 扩展清单和资源
[packages/]
├── web-core/ // 核心前端逻辑和 hooks
├── ai-workspace-common/ // 共享 AI 工作区组件
├── canvas-common/ // 共享画布逻辑
├── ui-kit/ // 共享 UI 组件库
├── stores/ // 共享状态管理
├── i18n/ // 国际化
└── ... // 其他共享包
前端使用 React、TypeScript 和 modern 工具构建:
- 用于视觉逻辑构建的 Agent Skill 构建器界面
- 基于画布的 AI 驱动内容创作界面
- 实时执行日志和工作流透明度
- 多线程对话管理
- 知识库集成和 RAG 驱动的搜索
- 使用 Tailwind CSS 的响应式设计
- 多语言国际化支持
当您准备提交贡献时:
- 确保代码符合我们的风格指南
- 如适用,添加测试
- 如需要,更新文档
- 向
main分支创建拉取请求
对于重大功能,我们首先将它们合并到 develop 分支进行测试,然后再进入 main 分支。
就是这样!一旦您的 PR 被合并,您将作为贡献者出现在我们的 README 中。
如果您在贡献过程中遇到困难或有疑问,可以: