<!-- markdownlint-disable MD030 -->

# 贡献给 Flowise

[English](../CONTRIBUTING.md) | 中文

我们欢迎任何形式的贡献。

## ⭐ 点赞

点赞并分享[Github 仓库](https://github.com/FlowiseAI/Flowise)。

## 🙋 问题和回答

在[问题和回答](https://github.com/FlowiseAI/Flowise/discussions/categories/q-a)部分搜索任何问题，如果找不到，可以毫不犹豫地创建一个。这可能会帮助到其他有类似问题的人。

## 🙌 分享 Chatflow

是的！分享你如何使用 Flowise 是一种贡献方式。将你的 Chatflow 导出为 JSON，附上截图并在[展示和分享](https://github.com/FlowiseAI/Flowise/discussions/categories/show-and-tell)部分分享。

## 💡 想法

欢迎各种想法，如新功能、应用集成和区块链网络。在[想法](https://github.com/FlowiseAI/Flowise/discussions/categories/ideas)部分提交。

## 🐞 报告错误

发现问题了吗？[报告它](https://github.com/FlowiseAI/Flowise/issues/new/choose)。

## 👨‍💻 贡献代码

不确定要贡献什么？一些想法：

-   从 `packages/components` 创建新组件
-   更新现有组件，如扩展功能、修复错误
-   添加新的 Chatflow 想法

### 开发人员

Flowise 在一个单一的单体存储库中有 3 个不同的模块。

-   `server`：用于提供 API 逻辑的 Node 后端
-   `ui`：React 前端
-   `components`：Langchain/LlamaIndex 组件

#### 先决条件

-   安装 [PNPM](https://pnpm.io/installation)
    ```bash
    npm i -g pnpm
    ```

#### 逐步指南

1. Fork 官方的[Flowise Github 仓库](https://github.com/FlowiseAI/Flowise)。

2. 克隆你 fork 的存储库。

3. 创建一个新的分支，参考[指南](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository)。命名约定：

    - 对于功能分支：`feature/<你的新功能>`
    - 对于 bug 修复分支：`bugfix/<你的新bug修复>`。

4. 切换到新创建的分支。

5. 进入存储库文件夹

    ```bash
    cd Flowise
    ```

6. 安装所有模块的依赖项：

    ```bash
    pnpm install
    ```

7. 构建所有代码：

    ```bash
    pnpm build
    ```

8. 在[http://localhost:3000](http://localhost:3000)上启动应用程序

    ```bash
    pnpm start
    ```

9. 开发时：

    - 在`packages/ui`中创建`.env`文件并指定`VITE_PORT`（参考`.env.example`）
    - 在`packages/server`中创建`.env`文件并指定`PORT`（参考`.env.example`）
    - 运行

    ```bash
    pnpm dev
    ```

    对`packages/ui`或`packages/server`进行的任何更改都将反映在[http://localhost:8080](http://localhost:8080)上

    对于`packages/components`中进行的更改，再次运行`pnpm build`以应用更改。

10. 做完所有的更改后，运行以下命令来确保在生产环境中一切正常：

    ```bash
    pnpm build
    ```

    和

    ```bash
    pnpm start
    ```

11. 提交代码并从指向 [Flowise 主分支](https://github.com/FlowiseAI/Flowise/tree/master) 的分叉分支上提交 Pull Request。

## 🌱 环境变量

Flowise 支持不同的环境变量来配置您的实例。您可以在 `packages/server` 文件夹中的 `.env` 文件中指定以下变量。阅读[更多信息](https://docs.flowiseai.com/environment-variables)

| 变量名                       | 描述                                                    | 类型                                            | 默认值                              |
| ---------------------------- | ------------------------------------------------------- | ----------------------------------------------- | ----------------------------------- | --- |
| PORT                         | Flowise 运行的 HTTP 端口                                | 数字                                            | 3000                                |
| FLOWISE_USERNAME             | 登录用户名                                              | 字符串                                          |                                     |
| FLOWISE_PASSWORD             | 登录密码                                                | 字符串                                          |                                     |
| FLOWISE_FILE_SIZE_LIMIT      | 上传文件大小限制                                        | 字符串                                          | 50mb                                |     |
| DEBUG                        | 打印组件的日志                                          | 布尔值                                          |                                     |
| LOG_PATH                     | 存储日志文件的位置                                      | 字符串                                          | `your-path/Flowise/logs`            |
| LOG_LEVEL                    | 日志的不同级别                                          | 枚举字符串: `error`, `info`, `verbose`, `debug` | `info`                              |
| APIKEY_STORAGE_TYPE          | 存储 API 密钥的存储类型                                 | 枚举字符串: `json`, `db`                        | `json`                              |
| APIKEY_PATH                  | 存储 API 密钥的位置, 当`APIKEY_STORAGE_TYPE`是`json`    | 字符串                                          | `your-path/Flowise/packages/server` |
| TOOL_FUNCTION_BUILTIN_DEP    | 用于工具函数的 NodeJS 内置模块                          | 字符串                                          |                                     |
| TOOL_FUNCTION_EXTERNAL_DEP   | 用于工具函数的外部模块                                  | 字符串                                          |                                     |
| DATABASE_TYPE                | 存储 flowise 数据的数据库类型                           | 枚举字符串: `sqlite`, `mysql`, `postgres`       | `sqlite`                            |
| DATABASE_PATH                | 数据库保存的位置（当 DATABASE_TYPE 是 sqlite 时）       | 字符串                                          | `your-home-dir/.flowise`            |
| DATABASE_HOST                | 主机 URL 或 IP 地址（当 DATABASE_TYPE 不是 sqlite 时）  | 字符串                                          |                                     |
| DATABASE_PORT                | 数据库端口（当 DATABASE_TYPE 不是 sqlite 时）           | 字符串                                          |                                     |
| DATABASE_USERNAME            | 数据库用户名（当 DATABASE_TYPE 不是 sqlite 时）         | 字符串                                          |                                     |
| DATABASE_PASSWORD            | 数据库密码（当 DATABASE_TYPE 不是 sqlite 时）           | 字符串                                          |                                     |
| DATABASE_NAME                | 数据库名称（当 DATABASE_TYPE 不是 sqlite 时）           | 字符串                                          |                                     |
| SECRETKEY_PATH               | 保存加密密钥（用于加密/解密凭据）的位置                 | 字符串                                          | `your-path/Flowise/packages/server` |
| FLOWISE_SECRETKEY_OVERWRITE  | 加密密钥用于替代存储在 SECRETKEY_PATH 中的密钥          | 字符串                                          |
| DISABLE_FLOWISE_TELEMETRY    | 关闭遥测                                                | 字符串                                          |
| MODEL_LIST_CONFIG_JSON       | 加载模型的位置                                          | 字符                                            | `/your_model_list_config_file_path` |
| STORAGE_TYPE                 | 上传文件的存储类型                                      | 枚举字符串: `local`, `s3`                       | `local`                             |
| BLOB_STORAGE_PATH            | 上传文件存储的本地文件夹路径, 当`STORAGE_TYPE`是`local` | 字符串                                          | `your-home-dir/.flowise/storage`    |
| S3_STORAGE_BUCKET_NAME       | S3 存储文件夹路径, 当`STORAGE_TYPE`是`s3`               | 字符串                                          |                                     |
| S3_STORAGE_ACCESS_KEY_ID     | AWS 访问密钥 (Access Key)                               | 字符串                                          |                                     |
| S3_STORAGE_SECRET_ACCESS_KEY | AWS 密钥 (Secret Key)                                   | 字符串                                          |                                     |
| S3_STORAGE_REGION            | S3 存储地区                                             | 字符串                                          |                                     |
| S3_ENDPOINT_URL              | S3 端点 URL                                             | 字符串                                          |                                     |
| S3_FORCE_PATH_STYLE          | 将其设置为 true 以强制请求使用路径样式寻址              | 布尔值                                          | false                               |
| SHOW_COMMUNITY_NODES         | 显示由社区创建的节点                                    | 布尔值                                          |                                     |
| DISABLED_NODES               | 从界面中隐藏节点（以逗号分隔的节点名称列表）            | 字符串                                          |                                     |

您也可以在使用 `npx` 时指定环境变量。例如：

```
npx flowise start --PORT=3000 --DEBUG=true
```

## 📖 贡献文档

[Flowise 文档](https://github.com/FlowiseAI/FlowiseDocs)

## 🏷️ Pull Request 流程

当您打开一个 Pull Request 时，FlowiseAI 团队的成员将自动收到通知/指派。您也可以在 [Discord](https://discord.gg/jbaHfsRVBW) 上联系我们。
