pyharnesser — 驾驭你的 Python 代码,让 AI 生成的每一行都符合 Pythonic 标准。
A Sourcery-style Python refactoring skill for opencode, helping AI agents write Pythonic code from the start.
AI 生成的 Python 代码常常不够 Pythonic——冗余的条件判断、手动循环追加、裸 except、可变默认参数等问题频繁出现。现有工具如 Sourcery 可以自动检测重构机会,但 AI agent 在编写代码时缺乏主动应用 Python 惯用法的指导。
pyharnesser 将 Sourcery 风格的重构规则打包为 opencode skill,让 AI agent 在写代码时就直接写出 Pythonic 代码,而非先写差代码再重构。
参考规则源自 Sourcery Python 默认规则,本项目为独立实现,与 Sourcery 官方无关联。
将仓库中的 SKILL.md 复制到以下任一位置(每个 skill 一个文件夹):
项目级 Project-level:
.opencode/skills/pyharnesser/SKILL.md.claude/skills/pyharnesser/SKILL.md.agents/skills/pyharnesser/SKILL.md
全局级 Global-level:
~/.config/opencode/skills/pyharnesser/SKILL.md~/.claude/skills/pyharnesser/SKILL.md~/.agents/skills/pyharnesser/SKILL.md
opencode 会自动发现并加载 skill,agent 在编写或审查 Python 代码时会应用重构模式。
本仓库根目录的
SKILL.md为源文件,供分发和参考。
编写新代码时直接生成符合重构模式的代码,避免"先写差代码再重构"。例如:
- 写循环追加时 → 直接写列表推导式
- 写布尔返回时 → 直接
return condition - 写类型提示时 → 直接用
str | None而非Optional[str] - 写可变默认参数时 → 直接用
None替代[]/{}
扫描现有代码,识别可重构的模式,输出结构化 before/after 建议:
- 模式名 + 位置 + before/after 对比 + 说明
- 按优先级排序:🔴 高优先(正确性/可读性)→ 🟡 中优先(惯用法/简洁性)→ 💡 低优先(风格偏好)
覆盖 10 大类重构模式:
| # | 类别 | 典型示例 |
|---|---|---|
| 1 | 条件简化 | 合并嵌套 if、简化布尔返回、移除冗余比较 |
| 2 | 循环优化 | 列表/字典/集合推导式、any/all、Counter、defaultdict |
| 3 | 不必要变量消除 | 内联一次性变量、移除冗余赋值、移除多余 lambda |
| 4 | 方法提取 | 提取重复代码块、提取复杂条件为命名函数 |
| 5 | Python 惯用法 | enumerate、dict.get、f-string、pathlib、walrus 操作符 |
| 6 | 类型提示改进 | `str |
| 7 | 异常处理改进 | 缩小 try 范围、避免裸 except |
| 8 | 函数设计 | 可变默认参数修正、仅关键字参数、避免遮蔽内置名 |
| 9 | 集合与字典操作 | dict.setdefault、字典合并运算符 |
| 10 | 代码清理 | 移除多余 continue 等 |