Skip to content

ci(toolchain): 引入 Ruff 质量保障流水线与全量格式化统一,补全智谱弹性配置模板#97

Merged
ThreeFish-AI merged 7 commits into
masterfrom
feature/1.x.x
Apr 5, 2026
Merged

ci(toolchain): 引入 Ruff 质量保障流水线与全量格式化统一,补全智谱弹性配置模板#97
ThreeFish-AI merged 7 commits into
masterfrom
feature/1.x.x

Conversation

@ThreeFish-AI

@ThreeFish-AI ThreeFish-AI commented Apr 5, 2026

Copy link
Copy Markdown
Owner

概述

本 PR 为 feature/1.x.x 分支的系统性工程质量提升,涵盖 CI/CD 质量保障流水线搭建、代码格式化统一、智谱弹性配置补全 三大模块,共涉及 109 个文件、+5,637/-2,641 行 变更。

变更详情

1. CI/CD 质量保障流水线(新增)

文件 说明
.github/workflows/ci.yml Lint(Ruff) / Format(Ruff) / Test(pytest) 三 Job 并行执行,支持 Python 3.12 & 3.13 矩阵构建
.github/workflows/coverage.yml 覆盖率报告生成(HTML/XML/Summary),14 天保留期,初始基线 85%
  • 触发策略:PR 全部分支 + master/feature/* 推送 + 版本标签 v*
  • 质量门禁:Lint/Format 各 5 分钟超时,Test 10 分钟超时

2. Ruff 工具链集成

  • 替代方案:统一替代 flake8 + isort + Black + pyupgrade 等散装工具链
  • 规则集:F(Pyflakes) + E(pycodestyle) + W + I(isort) + UP(pyupgrade)
  • 配置要点target-version=py312line-length=88,双引号风格
  • 自动修复项:未使用导入(F401)、现代类型注解(UP035/UP042)、f-string 去冗余(F541)、内联条件返回(SIM103)

3. 全量代码格式化统一

  • 源码:91 个文件通过 Ruff format 统一格式化(导入排序、行宽折行、引号/缩进风格)
  • 测试:47 个测试文件同步格式化,与源码保持一致的风格规范

4. 智谱 AI 弹性配置补全

config.example.yaml 中新增:

  • 熔断器 (Circuit Breaker):失败阈值 3 次 / 恢复窗口 300s / 成功恢复阈值 2 次
  • 配额守卫 (Quota Guard):日预算 10 亿 token / 预警阈值 95% / 探测间隔 300s

5. 元数据与基础设施

文件 变更
.gitignore 新增 .coveragehtmlcov/coverage.xmljunit.xml 忽略规则
.python-version 锁定 uv 目标版本为 Python 3.12
CHANGELOG.md 发布日志格式优化,移除冗余表格改用简洁列表
pyproject.toml 扩展 dev 依赖(ruff>=0.9.0, pytest-cov>=6.0)

变更动机

项目进入快速迭代阶段后,缺乏统一的代码质量保障机制导致:

  1. 代码风格不一致:多开发者贡献的代码缺乏统一格式约束
  2. 无自动化质量门禁:每次合并依赖人工审查,效率低且易遗漏
  3. 智谱生产配置缺失:熔断/配额守卫参数未在示例配置中体现,新用户上手成本高

本次变更通过引入 Ruff 统一工具链 + CI/CD 自动化流水线,建立「提交即检查」的质量保障闭环。

影响范围

src/coding/proxy/     # 34 个源码文件格式化 + 配置/路由/转换层微调
tests/                # 47 个测试文件格式化 + 断言风格统一
.github/workflows/    # 新增 2 个 CI 工作流文件
config.example.yaml   # 智谱弹性配置参数补全
pyproject.toml        # dev 依赖扩展 + Ruff 配置段

📌 本 PR 为纯工程化改进,不引入任何功能逻辑变更或行为改变。所有格式化变更均由 Ruff 自动生成,保证语义等价性。

ThreeFish-AI and others added 7 commits April 5, 2026 17:09
🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 新增 ci.yml: Lint(Ruff) / Format(Ruff) / Test(pytest) 三 Job 并行执行
- 新增 coverage.yml: 覆盖率报告生成(HTML/XML/Summary),初始基线 85%
- 配置 [tool.ruff]: F/E/W/I/UP 规则集,target-version=py312
- 配置 [tool.pytest.ini_options]: asyncio_mode=auto,统一测试参数
- 扩展 dev 依赖: ruff>=0.9.0, pytest-cov>=6.0
- 新增 .python-version 锁定 uv 目标版本为 3.12

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 91 个源码文件 + 25 个测试文件通过 Ruff format 统一格式化
- 导入排序优化(isort 规则:标准库 → 第三方 → 第一方 → 相对导入)
- 行宽统一为 88 字符,长表达式自动折行
- 字符串引号统一为双引号,缩进风格为空格
- 同步修复 Ruff Lint 检出的安全自动修复项:
  · 移除未使用导入(F401)
  · 现代化 import 路径(UP035: collections.abc.Callable)
  · StrEnum 迁移(UP042: str+Enum → StrEnum)
  · f-string 去冗余前缀(F541)
  · 内联条件返回(SIM103)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 47 个测试文件通过 Ruff format 统一格式化
- 导入排序优化、行宽/引号/缩进风格与源码保持一致
- 移除未使用导入(F401: aiosqlite 提升至模块顶层)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 新增 .coverage、htmlcov/、coverage.xml、junit.xml 至忽略规则
- 避免本地测试产物误入版本库

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
ci: 引入 Ruff Lint/Format 与 pytest-cov,建立 CI/CD 质量保障流水线
@ThreeFish-AI ThreeFish-AI changed the title Feature/1.x.x ci(toolchain): 引入 Ruff 质量保障流水线与全量格式化统一,补全智谱弹性配置模板 Apr 5, 2026
@ThreeFish-AI
ThreeFish-AI merged commit 09e9033 into master Apr 5, 2026
2 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant