神模块拆分·重构

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

当项目里出现 1000+ 行的巨型模块(god module)需要拆分时,用本 skill 的「叶子子模块 + re-export」法。 核心是:把底层/无依赖的部分抽到 _xxx_io.py / _xxx_nlp.py / _xxx_base.py 等叶子模块,原文件退化为 编排层并 `from 叶子 import 全部公开名` 保持向后兼容,全站零改动。避开两类必踩坑: (1) re-export 是值拷贝,被抽离子模块内部引用原模块的常量/标志必须改为跨模块延迟读取或随函数一起搬走; (2) 环依赖——共享 helper 必须放进双方都能 import 的叶子 _xxx_base.py,绝不能让叶子 import 回父模块。

一句话选型结论

按资料字段整理

神模块拆分·重构是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_f937ad5e/split-god-module
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_f937ad5e仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量4.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
神模块拆分·重构当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

4.9 KB
模型实际读到的说明书原文,来自技能仓库

上帝模块最低风险拆分法

适用于:单文件 1000+ 行、含多个 class/多组职责的 Python 模块(如 fetcher.py / news.py /
compare.py / widgets.py)。目标:拆完全站 import 行为不变,只用 pytest 验证、不手动改调用方。

三步法

1. 找「叶子边界」

用 grep 画出 ^class / ^def 与跨组引用:

wc -l modules/<m>.py
grep -nE "^class |^def " modules/<m>.py
# 看某组是否引用别的组(有则不是叶子)
sed -n '<组起>,<组止>p' modules/<m>.py | grep -nE "其他组函数名"
  • 叶子:一组函数只依赖本组 + 标准库 + 已存在的底层模块(如 fetcher、session)。直接抽。
  • 共享 helper(被多组引用,如 STAR_AI_LOGO、_hex_to_rgba):单独抽成 _<m>_base.py(真叶子),
    原模块与子模块都从它 import,避免环依赖。
  • 跨组调用:例如 render 组调了 data 组的 _biz_groups,则把 _biz_groups 连同它引用的常量
    (如 _INDUSTRY_GROUPS)一起搬进叶子,否则 NameError。

2. 写拆分脚本(基于缩进,不用 AST 手写)

顶层 def/class 缩进为 0,用「下一顶层 def 之前」切分块:

import re
src = open("modules/<m>.py", encoding="utf-8").read()
lines = src.split("\n")
tops = [(i, m.group(2)) for i,l in enumerate(lines)
        if (m := re.match(r"^(def|class)\s+(\w+)", l)) and l[:1] not in (" ","\t")]
blocks = {}
for idx,(start,name) in enumerate(tops):
    end = tops[idx+1][0] if idx+1<len(tops) else len(lines)
    blk = lines[start:end]
    while blk and blk[-1].strip()=="": blk.pop()
    blocks[name] = "\n".join(blk)
# 抽取 LEAF_NAMES 到 _<m>_leaf.py;其余保留在 <m>.py;最后追加 re-export

⚠️ find_def 正则不要包含 # ===(注释),否则会误匹配分隔注释、把整段数据层丢掉。

3. 全名 re-export + 验证

原模块底部:

from modules._<m>_leaf import (  # noqa: E402,F401
    NAME1, NAME2, ...   # 用脚本从叶子模块实际顶层名自动生成,别手列(会漏)
)
  • 名字列表用正则扫叶子模块顶层 def/class/CONST = 自动生成(排除 logger 以免遮蔽父模块自己的)。
  • 跑 pytest tests/(全量),遇到 NameError 逐个补 import(通常是被抽离子模块缺 jieba/re/
    hashlib/Counter/pd/logger 或引用了原模块的常量 → 改为从 _<m>_base 跨模块 import)。
  • 提交 + 安全 fast-forward 推送(多机并发项目:先 git ls-remote --heads origin 拿远端 SHA →
    git merge-base --is-ancestor <SHA> main 验证 → git push,不 --force)。

必避两个坑

  1. 值拷贝:from A import FLAG 是值拷贝。若测试 monkeypatch.setattr(B,'FLAG',False) 想影响 A 内代码,
    必须让 A 内改为延迟读 B.FLAG(如 def _is_ok(): return modules.<m>.FLAG)。
  2. 环依赖:叶子模块绝不能 import 回父模块。共享标志/helper 一律放 _<m>_base.py 叶子。

不拆的情形

  • 单 class 大文件(如 visualizer.py 的 Visualizer)——拆类风险高、收益低,跳过。
  • 纯 CSS 字符串常量模块(如 ui_theme.py)——虽大但内聚,跳过。
  • 已较内聚的 3-class 文件(如 backtest.py)——只抽真正独立的叶子(如结果 dataclass)才划算。

适用场景 / 常见疑问 / 反模式 / 快速示例

  • 适用场景:见上方 SKILL.md 正文(受众 + 触发词 + 能力边界)。
  • 常见疑问:是否联网 / 读取私钥?→ 默认只读、零网络外呼、无密钥访问(详见 SKILL.md 安全约定)。
  • 反模式:不要期望它在所有场景都给答案;超出能力边界时它会诚实说明,而非编造。
  • 快速示例:见 SKILL.md 中的命令 / 脚本用法与模板。

常见问题

5 问
答案由本站依据条目字段整理
神模块拆分·重构怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_f937ad5e/split-god-module。安装方式为未标注。装完刷新技能列表或重开客户端。

神模块拆分·重构支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

神模块拆分·重构权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

神模块拆分·重构收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

神模块拆分·重构用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。