selfopt Python 脚本自优化框架
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_c18b02ff/zhi-neng-py-jiao-ben-you-hua。
技能介绍
问题:LLM 重写代码的验证真空
大模型改写 Python 脚本时,常以“看起来更快”的方式交付:循环内 += 拼字符串、把 re.compile 挪出函数、把 list 查找换成 set。这些重写多数时候是对的,但没有闸门时,空列表返回 ',' 而非 ''、非法输入异常类型不一致、或微基准里的假加速,都会直接污染代码库。selfopt 补的正是这一段:智能体负责生成,框架负责验证与计分。
工作方式:三层分工与双数学闸门
整套设计拆成三层。Layer 1 由 LLM 完成候选生成:读代码、识别热点、产出重写版本。Layer 2 与 Layer 3 都由 selfopt.adopt 把关,缺一不可。
- 等价性验证:证人集由随机采样与边界样本构成,覆盖空、单元素、极值、负值、重复、中文与非法输入。异常语义也纳入等价判定,新旧实现抛同类异常即视为等价。
- 性能评估:同轮内 old/new 交替测量,取中位数加速比,并用纯标准库的 sign-test 做显著性检验。只有中位加速比达标且 p < 0.05 才写入
library.jsonl。
分析侧由 scripts/analyzer.py 做 AST 静态扫描,覆盖 str-join、regex-precompile、list-to-set-membership、dict-dispatch 四类高频场景。每条发现带 confidence 与 reason,auto_scan 与 hook 默认只处理 high,人工审查可传 min_confidence="low" 看全量。规则通过公开的 CONFIDENCE_RULES 扩展,scripts/analyzer_rules_example.py 提供复制即用模板。
接入侧不绑定框架:selfopt.auto_scan() 扫描当前目录并跳过虚拟环境目录;scripts/selfopt-hook.py 把热点打印回 Agent。WorkBuddy、OpenClaw 可挂 session end 钩子,LangChain、CrewAI 可写 callback,最轻量的方式是把“产出 Python 代码后跑一遍扫描”写进常驻提示。
边界与注意点
- 样本必须代表真实负载量级,加速比是输入规模敏感的交叉点问题。
- 传入自定义
samples时,边界覆盖由调用方负责;regex-precompile域默认证人常匹配不到目标模式,需喂真实数据。 - 验证
list-to-set-membership时不要用集合字面量做样本,CPython 会折叠成编译期常量,产生虚假加速。 - 框架不做运行时 monkey-patch,只入库记录与证明;是否改写源码由 Agent 在用户确认后执行,建议附备份。
使用场景
- 优化循环内字符串拼接的 Python 脚本:将多次 `+=` 改写为 join 并验证等价性
- 扫描仓库中已有的旧 .py 文件,用 auto_scan 标记高频 str-join 或 regex-precompile 热点
- 在 Agent 产出 Python 工具代码后自动验证重写:用 adopt 闸门确认更快且行为不变
- 为自家场景补充自定义规则,通过 CONFIDENCE_RULES 抑制误报并扩展判定
适合人员
- 维护 Python 工具集的智能体应用开发者:希望 Agent 产出代码时自动优化且不引入回归
- 负责遗留脚本性能排查的后端工程师:需要扫描旧 .py 并定位可验证的优化点
- 搭建 AI Agent 工作流的团队:想在代码产出后自动接入验证与计分闸门
- 关注自动化代码审查的技术负责人:重视验证正确性与误报控制