3.9 KiB
3.9 KiB
source, title, author, date, url, tags
| source | title | author | date | url | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 微信公众号「逸言」 | OpenMole:坏味道驱动重构的工程化实践 | 张逸少 | 2026-06-17 | https://mp.weixin.qq.com/s/Whc0JYUHcwI5pPZwDNUCqw |
|
OpenMole:坏味道驱动重构的工程化实践
核心概念:BDR(Bad smells-Driven Refactoring)
规约驱动开发(SDD)让业务规约成为 AI 研发的唯一事实源。BDR 是 SDD 在重构领域的等价物——把代码坏味道当作与 PRD 同级的事实源。
BDR 铁律: 没有写进坏味道规约的重构,原则上不准做;识别出坏味道之后,也不允许跳过规约直接开改。
BDR 与 SDD 五步同构:
- 建立重构宪法(Constitution)——定义重构第一性原则、标准步骤和流程门禁
- AI 扫描代码库,将坏味道写成可验收的规约条目(
badsmells.md) - 根据规约分解任务(
tasks.md) - 通过分析环节(
analysis.md)做差分检查 - 按标准步骤执行重构
OpenMole 框架
开源地址:https://github.com/agiledon/openmole
将 BDR 封装为跨平台 Agent Plugin 框架,通过 npm 包 openmole 分发。
安装: npm install -g openmole,然后在目标项目中执行 openmole init
支持的 IDE(7种):
| 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/
五个阶段
- Explore(
mole:explore)——系统性地识别代码坏味道,按元规约格式写入badsmells.md - Plan(
mole:plan)——将坏味道分解为可执行的重构任务,输出tasks.md - Verify(
mole:verify)——差分检查,确保规约与任务一致 - Apply(
mole:apply)——按任务顺序逐项执行重构,每项经用户确认 - Archive(
mole:archive)——归档
实际验证:roncoo-pay(Java 在线支付系统)
扫描发现 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 个阶段执行(从快速清理→异常修复→配置规范化→重复代码消除→大型重构→耦合修复→领域模型提升→安全加固→代码规范)。
核心价值
- 可审计——规约可查、任务可追、测试可验,不再是"AI 改完就忘"的黑箱
- 降认知负荷——面对陌生遗留代码库,AI 自动完成扫描→识别→分解→验证,开发者只需决策和确认
- 可持续治理——change 机制支持定期发起新重构周期,小步迭代持续提升代码质量
"在 AI 时代,若没有一个和代码同权的规约层,'重构'最容易退化成不可审计的聊天。把坏味道上升为重构的'纲',让规约走在前面。"