.. Copyright (c) 2025 Huawei Technologies Co., Ltd. All Rights Reserved.

开发者指南
===================

参与 EvoFabric
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

感谢您对 EvoFabric 项目的关注！我们的社区面向所有人开放，欢迎您通过各种形式反馈建议或是发布您的功能组件。您可以通过下述方法参与：

- 找到并报告问题或 Bug。

- 提出需求或新增一个新的特性。

- 提出需求或新增一个新的组件。

License
~~~~~~~~~~~~~~~

当前项目使用的License是 `MIT License <../LICENSE>`_.

开发流程
~~~~~~~~~~

如果您期望贡献您的组件或功能到 EvoFabric ， 我们期望您能遵循下面的开发原则：

* 在PR中清晰描述您所提供的组件或功能

* 保证新增的组件继承现有基类，或继承工厂基类 :py:class:`~evofabric.core.factory.BaseComponent` 并保证组件可被 ``pydantic`` 序列化和反序列化

* 代码遵循 PEP 8 风格

* 提供可离线运行的 Unit test 以完整验证您的功能

我们将会组织定期审查所有新增的PR，并及时与您沟通进展。

版本策略
~~~~~~~~~~

本项目遵循明确的版本策略，以确保开发过程规范、版本管理清晰，并便于社区使用与贡献。版本体系分为三类：主线版本、发布版本和开发版本。

版本号命名规则
--------------

版本号采用三段式命名规则：

.. code-block:: text

    Major.Minor.Patch[-Suffix]

- **主版本号 (MAJOR)**：当项目发生不兼容的 API 变更时，主版本号递增。
- **次版本号 (MINOR)**：当项目新增功能且向下兼容时，次版本号递增。
- **修订号 (PATCH)**：当项目进行向下兼容的问题修复时，修订号递增。
- **后缀 (Suffix, 可选)**：用于标记开发版本或预发布版本，例如 `-rc1`、`-rc2`、`-beta`。


版本类型定义
------------

1. **主线版本 (Mainline Version)**

   - 描述：项目的核心开发分支，包含最新功能和改进。
   - 命名：一般无后缀，例如 `1.2.0`。
   - 特点：

     - 保持与主版本兼容性。
     - 可合并到发布版本分支进行正式发布。

2. **发布版本 (Release Version)**

   - 描述：经过充分测试、稳定可用的版本，面向用户发布。
   - 命名：遵循版本号规则，不带开发后缀，例如 `1.2.0`。
   - 发布周期：双月发布。
   - 特点：

     - 不包含不稳定功能。
     - 用于生产环境和社区发布。
     - 每次发布版本应记录更新日志（CHANGELOG）。

3. **开发版本 (Development Version)**

   - 描述：用于日常开发和测试的版本，可能包含不稳定或实验性功能。
   - 命名：在修订号后添加 `-dev` 后缀，例如 `1.3.0-dev`。
   - 特点：

     - 频繁更新，供开发者测试和预览。
     - 不推荐直接用于生产环境。

后续版本计划
~~~~~~~~~~~~~

我们计划后续会陆续更新以下特性：

- EvoFabric 的前端UI，支持显示运行过程中的消息日志（含流式消息）、图结构和节点状态，以及在可视化界面进行调试功能

- Agent场景的Memory功能

- Magentic-one等Multi-agent模块

- Client、工具等资源使用监控