ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

EverOS 社区贡献指南:从 Issue 到合并的完整协作流程

EverOS 社区贡献指南:从 Issue 到合并的完整协作流程 人工智能AI AgentAgent 记忆RAG【免费下载链接】EverOSOne portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.项目地址https://gitcode.com/gh_mirrors/ev/EverOS点击查看免费下载EverOS 是一个本地优先、Markdown 原生、用户自有的 AI Agent 记忆层框架其仓库维护着一套贯穿 Issue、Commit、PR、CI 与维护者流程的工程纪律。本文以 CONTRIBUTING.md 为主体结合仓库内的 Makefile、pyproject.toml、.github/workflows/ci.yml、.pre-commit-config.yaml 与scripts/下的校验脚本完整讲解外部贡献者与核心维护者两个角色的协作规范如何提交高质量 Bug 报告与功能建议、如何开出符合规范的 PR、如何用make ci一次性通过所有硬性检查以及维护者侧的分支策略、提交信息规范与测试要求。读完本文你将掌握一条可复现的、从「提 Issue」到「PR 合并」的完整协作路径。一、EverOS 如何接纳贡献EverOS 采用策展式 Pull Request 贡献模式curated pull request contributionsEverMind 核心团队在合并前会对每一个变更进行产品契合度、架构一致性、许可合规与长期可维护性的审查。贡献类型去处 Bug 报告使用bug_report.yml模板开 Issue 功能想法 / 使用场景使用feature_request.yml模板开 Issue 聚焦的修复关联 Bug、设计说明或清晰复现的 Pull Request❓ 提问与讨论GitHub Discussions / Discord 社区大型架构变更应先以 Issue 或 Discussion 开启讨论再动手写代码而小型文档、测试、CI 和 Bug 修复类 PR 可以直接打开。注意CONTRIBUTING.md中的外部链接Issue 模板、Discussions、Discord 等指向项目线上社区仓库内可对照查看的是 .github/ISSUE_TEMPLATE/bug_report.yml 与 .github/ISSUE_TEMPLATE/feature_request.yml 两份真实模板定义。二、报告 Bug用模板写出「可复现」的问题Bug 报告请使用仓库中的bug_report.yml模板包含以下要素清晰的复现步骤reproduction steps期望行为 vs. 实际行为环境信息OS、Python 版本、everos 版本相关日志务必隐去密钥从 .github/ISSUE_TEMPLATE/bug_report.yml 可以看到模板还要求选择问题所属Area如src/everos、use-cases、documentation等、填写「发生了什么 / 期望行为」以及结构化的复现步骤占位。这保证了每个 Bug Issue 一开始就具备可被核心团队复现的最小信息集。三、建议功能先讲场景再谈设计功能请求使用feature_request.yml模板需要提供要解决的使用场景 / 问题use case / problem提议的 API 或行为proposed API or behavior向后兼容性考量backward-compatibility considerations这一要求与 EverOS 的架构取向一致项目以「本地优先、Markdown 原生、用户自有」的记忆层为核心任何新能力都必须能嵌入现有的分层架构entrypoints → service → memory → infra并保持对既有存储与配置的兼容。四、提交 Pull Request六步标准流程从main创建分支保持变更聚焦于单一目的one purpose不要提交图片、视频或资源/媒体目录——使用外部托管、发布产物或经过批准的存储并从文档中链接对应仓库内的scripts/check_repo_assets.py门禁请求评审前在本地运行make ci使用 Conventional Commit 标题例如fix(search): guard empty profile向main打开 PR 并填写 PR 模板。提交 PR 即表示你同意你的贡献遵循项目的 Apache-2.0 许可。4.1 PR 模板的实际结构.github/PULL_REQUEST_TEMPLATE.md 要求填写Summary变更内容与原因、Area架构方法 / Benchmark / Use case / 文档 / 开发者体验 / CI 构建发布、Verification运行过的命令、人工检查、截图并逐项勾选 Checklist变更范围聚焦于相关区域从独立分支打开而非直接推main行为变化时同步更新文档、示例或配置说明行为变化时新增或更新测试未提交密钥、.env文件、依赖目录或生成产物Markdown 中的相对链接可解析。五、安全漏洞绝不公开提交安全漏洞不要开公开 Issue。请遵循 SECURITY.md 中描述的私有流程。这与「Bug 报告」走公开模板的路径严格区分是 EverOS 安全响应边界的一部分。六、行为准则与沟通渠道项目受 CODE_OF_CONDUCT.md 约束Contributor Covenant参与者默认需要遵守不当行为可报告至 evermindshanda.com。常规问题交流渠道GitHub Discussions —— 通用 QADiscord —— 社区聊天邮件evermindshanda.com七、维护者流程核心团队以下工作流面向有写权限的核心团队成员。提 Issue 不需要任何这部分内容它记录的是团队内部开发 EverOS 的方式。7.1 前置条件Python 3.12uv包管理器Git无需 Docker / 数据库服务 —— EverOS 很轻量Markdown SQLite LanceDB 内嵌。这一点在 pyproject.toml 的依赖声明中可以得到印证存储栈为lancedb0.34.0,0.35.0、aiosqlite、sqlmodel与alembic的组合无需外部服务。7.2 开发环境搭建git clone https://github.com/EverMind-AI/EverOS.git cd EverOS make install # deps pre-commit hooks一站式开发环境 everos init # 写 ~/.everos/everos.toml ome.toml make ci # 验证lint unit integration package其中make install实际执行两步见 Makefileuv sync --frozen安装依赖然后分别安装pre-commit与commit-msg两个 hook 阶段后者运行 gitlint。everos init是 CLI 的顶层叶子命令注册于 src/everos/entrypoints/cli/main.py与server、cascade、config等命令组并列。7.3 代码风格规范约定由 Claude Code 从.claude/rules/自动加载。要点Python 3.12Ruff 格式化88 字符行宽对应 pyproject.toml 中的line-length 88、target-version py312仅使用绝对导入absolute imports代码 / 注释 / docstring 仅使用英文无中日韩字符见 .claude/rules/language-policy.md对应scripts/check_cjk.py的咨询性扫描签名必须带类型注解数据模型使用 Pydantic v2每个包都有__init__.py子包通过from .x import Y as Y__all__再导出公共 APIDDD 分层entrypoints → service → memory → infra单向依赖由import-linter强制见 pyproject.toml 的Layered architecture契约。make format # ruff fix format make lint # ruff check import-linter 仓库硬性卫生门禁make lint是理解 EverOS 工程纪律的最佳入口Makefile除ruff check与ruff format --check外还会依次运行uv run lint-imports—— import-linter 分层与子包私有性契约python scripts/check_repo_assets.py—— 阻止提交图片 / 视频 / 资源目录python scripts/check_file_sizes.py—— 阻止超过大小上限的文件硬门禁与.pre-commit-config.yaml中check-added-large-files --maxkb640镜像二者由单元测试钉住一致python scripts/check_deprecated_names.py—— 阻止废弃产品名公开文本应使用 EverOS 或 EverMind Cloudpython scripts/check_github_contributor_docs.py—— 阻止贡献文档中出现遗留/内部分支模型残留python scripts/check_datetime_discipline.py—— 扫描绕过component/utils/datetime的代码裸datetime.now()、time.time()、裸datetime(...)构造等属于硬门禁python scripts/dump_openapi.py --check—— 重新渲染 OpenAPI schema 并与提交的 docs/openapi.json 比对任何漂移都会以 unified diff 形式使构建失败。7.4 分支策略分支职责main默认且受保护的分支feat/scope-desc功能开发fix/scope-descBug 修复docs/scope-desc纯文档变更ci/scope-descCI、构建与开发者体验变更不要直接推送到main不要对共享分支 force-push必须通过 PR 合并且所有必需检查通过。7.5 提交信息Conventional Commits提交信息遵循Conventional Commits格式type[(scope)]: description例如feat: add agentic rerank、fix(search): guard empty profile。该规范在本地由commit-msghook 中的gitlint强制见 .pre-commit-config.yaml在 GitHub Actions 中由Commit lintworkflow 强制。提交信息允许的类型与 EverOS 的策略实现完全一致定义在 scripts/check_commit_messages.py类型用途类型用途feat新功能chore配置 / 构建 / 工具fixBug 修复build构建系统或依赖refactor保持行为不变的重构ciCI 配置test新增 / 更新测试revert回滚之前的提交docs文档style仅格式化perf性能校验实现还约束标题正则^(feat|fix|...)(\([A-Za-z0-9._/-]\))?(!)?: .最大标题长度 72 字符PR 标题校验逻辑由 scripts/check_pr_title.py 复用同一策略TITLE_RE、MAX_TITLE_LENGTH、ALLOWED_TYPES可通过命令行参数或PR_TITLE环境变量传入标题。团队可用/commit命令辅助生成符合规范的提交信息完整类型清单见 .claude/skills/commit/SKILL.md。7.6 测试要求make test # tests/unit make integration # tests/integration make cov # coverage 报告新函数需添加单元测试路径规范为tests/unit/test_module/test_action_expected.py行为变更需添加 integration 或 e2e 覆盖tests/integration/、tests/e2e/。make cov运行pytest tests/unit tests/integration --covsrc/everos --cov-branch --cov-fail-under80Makefile即单元 集成测试合并计算、分支覆盖率低于 80% 即失败。测试配置还定义了slow与live_llm两个 markerCI 默认排除需要真实 LLM / embedder / reranker 凭据的live_llm用例避免烧 token见 pyproject.toml。完整约定见 .claude/rules/testing.md。7.7 Slash 命令Claude Code/new-branch—— 以规范命名创建分支/commit—— 生成 Conventional Commits 提交信息/pr—— 以正确的目标分支打开 GitHub PR八、CI 如何串联这一切.github/workflows/ci.yml 是 Makefile 的薄包装「CI 是 Makefile 的薄包装 —— 命令的唯一事实来源」。CI 包含五个 Joblintfetch-depth: 0全量历史check_file_sizes.py需要解析与基准分支的 merge base运行make lintunitPython 3.12 与 3.13 两个矩阵make testintegrationPython 3.12 与 3.13make integrationpackagemake package—— 用uv build构建 sdist/wheel在隔离 venv 中免依赖安装 wheel 并 smoke-testimport everos。每个 Job 都通过astral-sh/setup-uvv8.2.0启用依赖缓存并使用make install-depsuv sync --frozenlock 文件为唯一事实来源安装依赖。这意味着本地跑过make ci通过的提交在 CI 上会以完全一致的命令被再次验证。九、一张图看懂贡献全流程说明安全漏洞不进入上图公开流程改走 SECURITY.md 的私有报告通道。十、给贡献者的检查清单变更是否聚焦于单一目的且已从main派生分支是否已运行make ci并在本地通过全部检查提交信息是否为type(scope): description格式且不超过 72 字符是否遵守代码风格Python 3.12、绝对导入、全英文、类型注解、__init__.py再导出是否遵守 DDD 分层且未被 import-linter 拦截行为变更是否补充了tests/unit/或tests/integration/、tests/e2e/测试是否提交了图片 / 视频 / 资源目录禁止或超大文件check-added-large-files640KB 上限是否触及 HTTP 路由 / DTO 后同步运行make openapi并提交 docs/openapi.json是否涉及时间处理代码却绕过了component/utils/datetime硬门禁是否在文档中使用了可解析的相对链接掌握这套流程后无论是提交一个聚焦的 Bug 修复、新增一条记忆类型的测试还是推动一次涉及 API 表面的功能演进你都能以最少的来回沟通让变更平滑通过 EverOS 的策展式审查并进入受保护的main分支。赞分享人工智能AI AgentAgent 记忆RAG【免费下载链接】EverOSOne portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows.项目地址https://gitcode.com/gh_mirrors/ev/EverOS点击查看免费下载相关推荐猫抓网页视频资源嗅探3步下载第一个视频完整免费指南猫抓网页视频资源嗅探3步下载第一个视频完整免费指南 网页上的视频能正常播放右键却只有保存图片有的站点把视频拆成几百个片段逐个下载无从下手。猫抓ca音视频3DGS Render插件开发者指南扩展与定制KIRI Engine功能3DGS Render插件开发者指南扩展与定制KIRI Engine功能 3DGS Render插件是KIRI Engine团队为Blender开发的一款强大图形学3D渲染计算机视觉如何用Netmiko简化多厂商网络设备的自动化管理如何用Netmiko简化多厂商网络设备的自动化管理 引人入胜的开场 你是否曾为管理不同厂商的网络设备而烦恼每个厂商都有自己的CLI语法、连接方式和配置规范网网络通信后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表