广告位招商中 欢迎洽谈

如何配置 sweep.yaml 规则与代码库规范对齐自动化 Pull Request

365Finds Editorial
已收录 11,430 篇 Wiki 文章

让你的 AI 用上 365 Wiki

复制这段快捷提示词,粘贴到你正在使用的 AI 对话中,然后继续提问。AI 会搜索 365 Wiki,帮你查资料、比较方案并给出建议。

下载完整 Skill

偶尔使用,快捷提示词就够了。经常使用,安装 365Wiki Skill:无需每次复制,还能更完整地研究问题、比较选择并规划下一步。没有常用工具?Gemini、Microsoft Copilot 等网页版 AI 也能使用。

365Wiki Skill

当软件工程团队引入 Sweep AI 来处理常规 Bug 修复、小型功能开发和代码重构时,最常面临的挑战是如何确保 AI 自动提交的 Pull Request(PR)严格符合团队既有的编码规范与架构约定。如果缺乏明确的规则约束,AI 往往会写出风格脱节的代码、遗漏单元测试、使用已被废弃的内部工具函数,甚至误改核心 CI/CD 流水线与安全配置文件。

为了让自动化 PR 真正具备生产可用性,研发团队通常以仓库根目录下的 sweep.yaml 配置文件为核心,结合仓库规范文档(如 SWEEP.md)、目录保护机制以及 GitHub Actions 闭环反馈,构建一套完整的 AI 代码治理流程。


1. 核心控制平面:sweep.yaml 结构解析

sweep.yaml 位于代码仓库的根目录,是 Sweep AI 代理行为的核心声明文件。文件中的各项参数直接影响 AI 如何理解代码库、规划修改范围以及提交 PR。

以下是 sweep.yaml 的关键配置字段:

参数类型默认值作用说明
ruleslist[str][]明确的代码规范与指令列表,直接注入 Sweep 的代码生成提示词中。
descriptionstr""仓库全局架构、技术栈、核心路由与设计模式的高层次说明。
blocked_dirslist[str][]禁止 Sweep 修改的目录或文件列表(如 CI 配置、数据库迁移脚本、安全凭据)。
gha_enabledbooltrue是否允许 Sweep 读取 GitHub Actions 的执行日志,在 CI 报错时自动提交修复代码。
draftboolfalse是否默认创建草稿(Draft)PR,避免频繁触发耗时的完整测试流水线。
branchstr"main"Sweep 读取代码以及提交 PR 的目标基线分支。
sandboxdict{}沙箱环境下的安装与代码检查指令(如格式化、静态分析工具)。

2. 如何在 sweep.yaml 中编写可落地的规则

rules 字段是团队把编码规范转化为大模型约束条件的主战场。大模型对“保持代码整洁”这类抽象要求通常缺乏执行力,规则必须具体、具备命令式口吻并能够被自动化验证。

重点规则类别与实践技巧

  1. 测试与覆盖率规范

    • 强制要求新增逻辑必须配有对应目录下的单元测试。
    • 示例:"All new business logic must include corresponding unit tests in the same directory or tests/. Use pytest and unittest.mock."
  2. 类型系统与静态检查

    • 规定函数的类型注解风格,避免过时或非推荐语法。
    • 示例:"Annotate all function parameters and return types with type hints. Use built-in generics (list, tuple, dict) instead of importing from typing."
  3. 日志规范与调试清理

    • 统一日志输出库,禁止将调试语句或明文日志推送到生产环境。
    • 示例:"Use loguru for application logging. In except blocks, call logger.exception with structured f-strings. Never leave print() statements in production code."
  4. 架构边界与代码精简

    • 控制单个函数的圈复杂度,清理冗余注释与残留标记。
    • 示例:"Keep functions modular; refactor procedures longer than 50 lines. Remove redundant comments that merely restate the code. Handle all leftover TODOs."

3. 生产级 sweep.yaml 配置蓝图

以下是一份适用于现代后端或全栈项目的典型 sweep.yaml 配置示例:

# sweep.yaml - Sweep AI 代码库自动化配置文件

# 指定 PR 的基线分支
branch: main

# 代码库的高层架构背景与规范总览
description: >
  This is a Python 3.10 microservice built on FastAPI with PostgreSQL.
  The primary API routes are registered in app/api/v1/.
  Use SQLAlchemy 2.0 async sessions for database access.
  Strictly adhere to PEP 8 standards and asynchronous I/O paradigms.

# 新 PR 是否作为草稿创建(团队可在初检后再转为正式 PR)
draft: false

# 启用 GitHub Actions 闭环:CI 失败时由 Sweep 自动拉取日志并修复
gha_enabled: true

# 目录保护:严禁 AI 修改工作流、数据库迁移版本或敏感部署配置
blocked_dirs:
  - ".github/"
  - "alembic/versions/"
  - "deploy/"
  - "config/secrets/"

# 具体编码约束列表
rules:
  - "All new endpoints and service logic must include corresponding unit and integration tests using pytest."
  - "Annotate all function parameters and return values with strict type hints."
  - "Use structured logging via loguru; use logger.exception inside catch blocks. Never use print() statements."
  - "Use list, dict, and tuple built-ins for type annotations instead of importing from typing."
  - "Resolve any remaining TODO items created during refactoring before finalizing the PR."
  - "Follow existing repository import conventions: group external libraries first, then internal module imports."
  - "Do not modify database migrations or schema files without explicit issue instructions."

4. 扩展治理:SWEEP.md 与仓库多层规范协作

在实践中,除了用于配置机器参数的 sweep.yaml,团队常在根目录下放置 SWEEP.md 文件。

SWEEP.md 的定位与价值

SWEEP.md 类似于 CLAUDE.md 或 .cursorrules,主要提供持久化的上下文信息。它不仅适用于 GitHub 端的自主 PR 生成,也同时为 IDE 插件端(如 JetBrains 插件)的开发者助手提供一致的项目背景。

标准的 SWEEP.md 通常包含以下核心模块:

团队可以在 Sweep 设置页面的 Rules 选项卡中,通过 Generate SWEEP.md 按钮,一键从现有的规范文件中提炼并生成初始化文件。


5. CI/CD 闭环机制:基于 GitHub Actions 的自愈循环

即便在提示词中声明了严密的规则,大语言模型在面对多文件联动、全局类型推导或括号匹配时仍偶有失误。Sweep 保证代码质量的关键利器在于其与 GitHub Actions 的自动化闭环(gha_enabled: true)。

+------------------+         +--------------------+         +--------------------+
| GitHub 创建 Issue | ------> | Sweep AI 规划并生成 | ------> | 向目标分支提交 PR    |
| / 需求工单        |         | 代码与方案          |         |                    |
+------------------+         +--------------------+         +--------------------+
                                                                      |
                                                                      v
                                                            +--------------------+
                                                            | GitHub Actions     |
                                                            | 执行 Lint、类型检查  |
                                                            | 与单元测试          |
                                                            +--------------------+
                                                                      |
                                   +----------------------------------+
                                   |
                   [通过]          |              [报错失败]
                      v            |                  v
            +-------------------+  |        +--------------------+
            | 进入人工评审阶段   |  |        | Sweep 自动读取 CI   |
            | (Code Review)     |  |        | 报错日志与错误行号  |
            +-------------------+  |        +--------------------+
                                   |                  |
                                   |                  v
                                   |        +--------------------+
                                   +--------| 针对性修改并推送修复 |
                                            | 提交 (Commit)      |
                                            +--------------------+

闭环工作流程:

  1. 自动建分支与提交 PR: Sweep 根据 Issue 需求与 sweep.yaml 规则编写代码并提交 PR。
  2. 触发 CI 检查: GitHub Actions 运行仓库中的代码检查工具(如 ESLint、Ruff、Trunk)、类型检查器(tsc、pyright)和单元测试框架。
  3. 日志自动捕获: 若检查失败,Sweep 自动拉取失败步骤的标准输出与错误堆栈。
  4. 针对性修复: Sweep 锁定报错文件名、出错行以及具体错误信息(如缺失导入、类型不兼容、未用变量),利用差异更新算法生成补丁并直接向该 PR 分支追加 Commit。
  5. 减轻人工负担: 开发者无需在代码审查时重复指出缩进、类型或测试遗漏等基础问题,审查重心回归业务逻辑本身。

6. 团队落地与防护最佳实践

为了在保证研发效率的同时规避潜在风险,建议团队遵循以下规范:

  1. 严格封锁核心目录: 在 blocked_dirs 中务必加入 .github/、基础设施配置、数据库迁移目录及证书密钥目录,防止 AI 无意修改造成流水线中断或安全风险。
  2. 控制单次任务规模: 保持任务轻量聚焦。将改动范围控制在 3 到 5 个文件、300 行代码以内,能够大幅提高生成的准确率与自愈成功率。
  3. 工单编写使用命令式与明确路径: 在创建 Issue 时提供明确的目标文件、具体行为调整以及参考实现(例如:"In app/services/billing.py, refactor discount calculation using Decimal instead of float; follow patterns in app/services/tax.py")。
  4. 善用 PR 评论互动: 若发现细节偏差,团队成员可在 PR 评论区输入以 sweep: 开头的指令,Sweep 会自动读取该意见并在分支上迭代修改,无需工程师手动检出分支。
  5. 初期启用 Draft 模式: 在初次引入 Sweep 或面对复杂遗留代码库时,可先在 sweep.yaml 中设置 draft: true,待人工快速评估后再转为正式 PR 触发完整测试。

参考资料