Skip to content

xgkk/pyharnesser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

pyharnesser

pyharnesser — 驾驭你的 Python 代码,让 AI 生成的每一行都符合 Pythonic 标准。

A Sourcery-style Python refactoring skill for opencode, helping AI agents write Pythonic code from the start.

背景 Background

AI 生成的 Python 代码常常不够 Pythonic——冗余的条件判断、手动循环追加、裸 except、可变默认参数等问题频繁出现。现有工具如 Sourcery 可以自动检测重构机会,但 AI agent 在编写代码时缺乏主动应用 Python 惯用法的指导。

pyharnesser 将 Sourcery 风格的重构规则打包为 opencode skill,让 AI agent 在写代码时就直接写出 Pythonic 代码,而非先写差代码再重构。

参考规则源自 Sourcery Python 默认规则,本项目为独立实现,与 Sourcery 官方无关联。

使用方法 Usage

将仓库中的 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 为源文件,供分发和参考。

功能 Features

主动应用 Proactive Application

编写新代码时直接生成符合重构模式的代码,避免"先写差代码再重构"。例如:

  • 写循环追加时 → 直接写列表推导式
  • 写布尔返回时 → 直接 return condition
  • 写类型提示时 → 直接用 str | None 而非 Optional[str]
  • 写可变默认参数时 → 直接用 None 替代 []/{}

代码审查 Code Review

扫描现有代码,识别可重构的模式,输出结构化 before/after 建议:

  • 模式名 + 位置 + before/after 对比 + 说明
  • 按优先级排序:🔴 高优先(正确性/可读性)→ 🟡 中优先(惯用法/简洁性)→ 💡 低优先(风格偏好)

重构模式目录 Refactoring Patterns

覆盖 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 等

License

GPL-3.0

About

pyharness — 驾驭你的 Python 代码,让 AI 生成的每一行都符合 Pythonic 标准。

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors