This commit is contained in:
Build Bot
2026-07-12 17:19:02 +08:00

View File

@@ -0,0 +1,84 @@
---
source: 微信公众号「逸言」
title: OpenMole坏味道驱动重构的工程化实践
author: 张逸少
date: 2026-06-17
url: https://mp.weixin.qq.com/s/Whc0JYUHcwI5pPZwDNUCqw
tags: [重构, BDR, OpenMole, AI编程, SDD, 坏味道]
---
# OpenMole坏味道驱动重构的工程化实践
## 核心概念BDRBad smells-Driven Refactoring
规约驱动开发SDD让业务规约成为 AI 研发的唯一事实源。BDR 是 SDD 在重构领域的等价物——**把代码坏味道当作与 PRD 同级的事实源**。
**BDR 铁律:** 没有写进坏味道规约的重构,原则上不准做;识别出坏味道之后,也不允许跳过规约直接开改。
BDR 与 SDD 五步同构:
1. 建立**重构宪法**Constitution——定义重构第一性原则、标准步骤和流程门禁
2. AI 扫描代码库,将坏味道写成可验收的规约条目(`badsmells.md`
3. 根据规约分解任务(`tasks.md`
4. 通过分析环节(`analysis.md`)做差分检查
5. 按标准步骤执行重构
## OpenMole 框架
开源地址https://github.com/agiledon/openmole
将 BDR 封装为跨平台 Agent Plugin 框架,通过 npm 包 `openmole` 分发。
**安装:** `npm install -g openmole`,然后在目标项目中执行 `openmole init`
**支持的 IDE7种**
| IDE | 表现形式 |
|-----|---------|
| Cursor | `.cursor/skills/` + `.cursor/commands/` + 用户级 symlink |
| OpenCode | `opencode.json` 注册 `.opencode/plugins/openmole.js` |
| Claude Code | 用户级 `~/.claude/plugins/local/openmole` symlink |
| Codex | 项目 `plugins/openmole` symlink + marketplace 注册 |
| Gemini CLI | `.gemini/skills/``.gemini/commands/` |
| Kiro | `.kiro/skills/``.kiro/commands/` |
| Qoder | `.qoder/skills/``.qoder/commands/` |
**工作区结构:**
```
openmole/
├── config.yaml # current_change · installed_ides
└── changes/
├── <change-name>/
│ ├── badsmells.md
│ ├── tasks.md
│ └── analysis.md
└── archive/
```
### 五个阶段
1. **Explore**`mole:explore`)——系统性地识别代码坏味道,按元规约格式写入 `badsmells.md`
2. **Plan**`mole:plan`)——将坏味道分解为可执行的重构任务,输出 `tasks.md`
3. **Verify**`mole:verify`)——差分检查,确保规约与任务一致
4. **Apply**`mole:apply`)——按任务顺序逐项执行重构,每项经用户确认
5. **Archive**`mole:archive`)——归档
## 实际验证roncoo-payJava 在线支付系统)
扫描发现 **32 条坏味道**,按类别:
- **重复代码8条**BaseController 4 份 90% 相同、ConfigUtil 6 份相同模式、枚举 5 份 copy-paste 等
- **大型类和方法4条**DateUtils 1486 行、God Class 1532 行承担 8+ 职责等
- **耦合问题4条**DAO 层越权、Spring Bean 绕过 DI 等
- **异常处理4条**:异常吞没返回 null、fail-silent、e.printStackTrace()
- **不良实践7条**public static 可变字段、SimpleDateFormat 线程不安全、sun.misc API 等
- **面向对象问题3条**:贫血领域模型、字段注入等
- **安全问题2条**MD5 密码哈希、敏感信息泄露
分解为 **31 个重构任务**,分 9 个阶段执行(从快速清理→异常修复→配置规范化→重复代码消除→大型重构→耦合修复→领域模型提升→安全加固→代码规范)。
## 核心价值
1. **可审计**——规约可查、任务可追、测试可验,不再是"AI 改完就忘"的黑箱
2. **降认知负荷**——面对陌生遗留代码库AI 自动完成扫描→识别→分解→验证,开发者只需决策和确认
3. **可持续治理**——change 机制支持定期发起新重构周期,小步迭代持续提升代码质量
> "在 AI 时代,若没有一个和代码同权的规约层,'重构'最容易退化成不可审计的聊天。把坏味道上升为重构的'纲',让规约走在前面。"