Install
openclaw skills install @thcjp/python-toolkit-freeopenclaw skills install @thcjp/python-toolkit-freePython工具箱(免费版)为个人开发者提供实用的Python编码规范与最佳实践指导。当你在请求中提及 Python、编码规范、Pythonic 等内容时,本工具会自动激活,为你输出符合PEP 8与现代Python惯例的代码、给出风格纠正建议,并附上提交前自查清单。
本版本聚焦核心规范与个人使用场景,适合个人脚本开发、学习现代Python惯例与提交前快速自查。如需类型注解深度规范、异步最佳实践、测试策略与团队治理,请升级至 PRO 版本。
| 能力 | 说明 |
|---|---|
| PEP 8规范 | 缩进、行长、空行、导入顺序、命名约定 |
| Pythonic模式 | 推导式、上下文管理器、解包、f-string |
| 依赖管理 | uv优先,pip回退 |
| 提交前自查 | py_compile / pytest / ruff / black |
| 反模式识别 | 可变默认参数、裸except、%格式化 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:个人开发者的、编码规范、模式与基础依赖管、工具箱、免费版、为个人开发者提供、实用的、编码规范与最佳实、践指导、代码风格规范、编码模式与惯用法、基础依赖管理、提交前自查清单等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。用户希望生成一个处理JSON文件的工具脚本,工具输出符合规范的实现。
"""处理JSON数据文件的工具脚本。"""
# ...
import json
from pathlib import Path
# ...
def load_config(config_path: str) -> dict:
"""加载JSON配置文件。
# ...
Args:
config_path: 配置文件路径。
# ...
Returns:
解析后的配置字典。
# ...
Raises:
FileNotFoundError: 文件不存在时。
json.JSONDecodeError: JSON格式错误时。
"""
path = Path(config_path)
if not path.exists():
raise FileNotFoundError(f"配置文件不存在: {config_path}")
# ...
with path.open(encoding="utf-8") as f:
return json.load(f)
# ...
def main() -> None:
config = load_config("config.json")
print(f"加载配置成功,共 {len(config)} 项")
# ...
if __name__ == "__main__":
main()
用户在提交前运行自查,确保代码符合规范。
# 语法检查
python -m py_compile *.py
# ...
# 测试
python -m pytest tests/ -v 2>/dev/null || python -m unittest discover -v 2>/dev/null || echo "未找到测试"
# ...
# 风格检查(优先ruff,回退black)
ruff check . --fix 2>/dev/null || python -m black --check . 2>/dev/null
用户询问如何写出更Pythonic的代码,工具给出标准示例。
# 推导式
squares = [x**2 for x in range(10)]
lookup = {item.id: item for item in items}
# ...
# 上下文管理器
with open("file.txt") as f:
data = f.read()
# ...
# 解包
first, *rest = items
a, b = b, a # 交换
# ...
# f-string
msg = f"Hello {name}, you have {count} items"
# ...
# 类型注解
def process(items: list[str]) -> dict[str, int]:
...
# ...
# dataclass
from dataclasses import dataclass
# ...
@dataclass
class User:
name: str
email: str
active: bool = True
# ...
# pathlib
from pathlib import Path
config = Path.home() / ".config" / "app.json"
# ...
# 枚举与zip
for i, item in enumerate(items):
...
for a, b in zip(list1, list2, strict=True):
...
以下场景Python工具箱(免费版)不适合处理:
需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求。
优先检查uv,回退pip:
if command -v uv &>/dev/null; then
uv pip install <package>
uv pip compile requirements.in -o requirements.txt
else
pip install <package>
fi
新项目使用uv初始化:
uv init myproject
# 或
uv venv && source .venv/(请参考skill目录中的脚本文件)
python -m py_compile *.py
python -m pytest -v
ruff check . --fix
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤。
# pyproject.toml
[tool.ruff]
line-length = 88
target-version = "py311"
# ...
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"UP", # pyupgrade
]
ignore = ["E501"] # 行长由formatter处理
# ...
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
[tool.pytest.ini_options]
minversion = "7.0"
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
addopts = "-v --tb=short"
def fetch_user(user_id: int, include_deleted: bool = False) -> User | None:
"""按ID从数据库获取用户。
# ...
Args:
user_id: 用户唯一标识。
include_deleted: 是否包含软删除用户。
# ...
Returns:
找到则返回User对象,否则返回None。
# ...
Raises:
DatabaseError: 连接失败时。
"""
# 错误:可变默认参数(跨调用共享)
def bad(items=[]):
...
# ...
# 正确
def good(items=None):
items = items or []
# ...
# 错误:裸except(捕获SystemExit、KeyboardInterrupt)
try:
...
except:
...
# ...
# 正确
try:
...
except Exception:
...
test_*.py,测试函数 test_*python -m pytest -vpy_compile)pytest).format() 或 %pathlib支持Python 3.10及以上。建议新项目使用3.11-3.13。Python 2语法与模式永不推荐。
支持基础类型注解(函数签名、返回类型)。深度类型规范、泛型、Protocol等进阶主题请使用PRO版。
优先使用uv(更快、原生支持pyproject.toml)。无uv时回退pip。新项目建议用 uv init 初始化。
| 维度 | 免费版 | PRO版 |
|---|---|---|
| 规范覆盖 | PEP 8 + Pythonic | 全规范 + 类型系统 + 异步 + 性能 |
| 适用对象 | 个人开发者 | 团队与企业 |
| 测试策略 | 基础pytest | 完整测试金字塔 + 覆盖率门禁 |
| 异步支持 | 不支持 | asyncio完整最佳实践 |
| 团队治理 | 不支持 | 规则分级 + CI门禁 |
| 支持 | 社区支持 | 优先支持 |
不冲突。建议用ruff的format替代black(ruff内置Black兼容格式化),或用 ruff check + black 组合(此时需配置 ruff 不检查格式规则)。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| Python | 运行时 | 必需 | python.org 下载 |
| ruff | 命令行工具 | 推荐 | pip install ruff 或 uv tool install ruff |
| pytest | 测试框架 | 推荐 | pip install pytest |
| uv | 包管理器 | 可选 | pip install uv 或 astral.sh 安装 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "Python工具箱(免费版)处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "pythonkit"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}