ワンクリックで
py2rs
[DRAFT] Python→Rust 渐进式重写总 skill。定义核心思想、链路、运行时模型、上下文管理机制与状态机;统一调度依赖对齐、跑通环境、运行时、7轮审查等子 skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
[DRAFT] Python→Rust 渐进式重写总 skill。定义核心思想、链路、运行时模型、上下文管理机制与状态机;统一调度依赖对齐、跑通环境、运行时、7轮审查等子 skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Convert Markdown with LaTeX math, images, and tables into a polished PDF. Two rendering engines: (1) weasyprint — pure Python, no browser needed; (2) chromium — best for matrices/bmatrix/pmatrix/vmatrix and complex formulas. Supports Chinese/Japanese fonts. Can chain after ocr-md-polish for a complete OCR→clean→PDF workflow.
Burn core framework - Provides tensor operations, automatic differentiation, and neural network building blocks for Rust deep learning.
Burn CUDA backend - High-performance NVIDIA GPU acceleration. Provides optimal performance for NVIDIA hardware.
Burn Metal backend - Apple GPU acceleration for macOS and iOS. Optimized for Apple Silicon and Intel-based Macs.
Burn NdArray backend - CPU-based tensor operations using Rust's ndarray crate. Ideal for development, testing, and lightweight inference.
Burn ONNX support - Import ONNX models into Burn for inference on any backend. Supports compile-time code generation and runtime loading.
| name | py2rs |
| description | [DRAFT] Python→Rust 渐进式重写总 skill。定义核心思想、链路、运行时模型、上下文管理机制与状态机;统一调度依赖对齐、跑通环境、运行时、7轮审查等子 skill。 |
DRAFT(草稿状态) —— 本文档目前是给 AI 读的规范,不是编译器能跑的代码。 下方「脚手架猜想」是对将来实战环境下可能需要的实际代码的猜想,不是强制教条。 等跑通一个真实项目的迁移后,再回过来修订这里的条目。
本模块讲“哪些依赖可以纳入迁移,哪些不行”——而不是讲“后端/前端能不能碰”。前 3 个阶段(Stage 0 依赖对齐 → Stage 0 环境跑通 → Stage 1 运行时 + Stage 2~3 迁移-验收循环 + R0 行为一致性 gate)之所以能做到渐进式替换,前提就是:Python 依赖能做到的事情,Rust 侧有等价的依赖去覆盖。违反这条前提的依赖一律视为 Stage 0 漏项。
cxx-qt / qmetaobject-rs / rust-qt 等绑定;因为能力范围相当,可以纳入迁移(注意:是否真要迁 GUI 仍由项目决定,这里只是说“能力上允许”).pyd / .so 扩展、某个闭源 SDK 的 Python binding,而 Rust 侧没有同等语义的 binding,不纳入cargo add 新 crate、允许替换底层实现——前提是每轮结束时能再次通过 R0 级别的行为一致性测试一句话总括:py↔rs 依赖能力范围相当 → 才能渐进式替换 → 才能保证行为一致。 这是前 3 个阶段存在的根本理由。
py2rs CLI(可能是 pyproject.toml 里的 console script,也可能是 Makefile)_scaffold/manifest/modules.yaml 的初始模板(字段名、状态枚举可能会改)_scaffold/runtime/*.py —— router / state / bridge 的最小可运行版本_scaffold/demo/ 下的 hello-world py + rs 实现pyproject.toml + Cargo.toml 的双构建骨架(maturin / pyo3)_scaffold/tests/compare/ 下的行为对比 pytest 模板_scaffold/reviews/ 下的 markdown 报告模板(供 R0~R6 填)以上任何一项都不承诺现在就写;先用实战项目倒逼出真正需要的形状。
在持续可运行、持续可验证、持续可回滚的前提下,完成系统级渐进式重写与现代化改造。
这条总则是所有子 skill 共同遵守的最高约束。
迁移阶段严格遵守:
行为一致性 > 代码优雅性
流程必须是两段式:
Python
↓
行为等价 Rust(第一阶段,丑但对)
↓
测试通过 + 用户验收
↓
工程化优化(第二阶段,由 6 轮审查驱动)
风险拆开是本 skill 最大的设计决策。如果把“迁移”和“优化”混在一起做,最后没人知道 Bug 到底来自哪里。
禁止:
Python ←→ Rust 直接 FFI 耦合
必须:
Python 实现
↓
Runtime 路由层(唯一事实来源)
↓
Rust 实现
py/,不删除rs/,不覆盖owner 改回 py迁移单元不是模块、不是服务,而是:
脚本(Script)
例如:main.py / user_service.py / payment.py / crawler.py。
选择脚本作为迁移单元的根本原因:AI 在单个职责明确的代码单元上最不容易翻车。越大的迁移单元,上下文越容易超过窗口,错误越不可验证。
Stage 0 —— 依赖对齐 + 跑通环境
Stage 1 —— 运行时验证(Demo)
Stage 2 —— 按脚本逐个迁移(py→rs 同名职责)
Stage 3 —— 验证 / 验收
Stage 4 —— 循环直到全部完成
↓(进入审查阶段)
Round 0 —— 行为一致性审查(冻结语义,不允许改代码)
Round 1 —— Rust 工程化审查(mod / lib / trait / 生命周期)
Round 2 —— 错误追踪审查(tracing / anyhow / thiserror)
Round 3 —— IO 与并发审查(tokio / rayon / async)
Round 4 —— 算法复杂度审查(需有复杂度证明 + Benchmark)
Round 5 —— 架构与数据结构审查(所有权 / API 设计)
Round 6 —— 产品与人体工学审查(只分析不写代码)
project/
├─ runtime/ # 路由层、运行时模型、适配层
├─ py/ # 旧实现归档 + 仍在运行的 Python
├─ rs/ # 新实现,按脚本同名对应
├─ manifest/ # 迁移状态唯一事实来源(YAML)
└─ tests/ # py 测试 / rs 测试 / 行为对比测试
py/ + rs/,部分 py、部分 rsrs/,py/ 仅作归档rs/,runtime 兼容层可删除所有迁移动作必须先更新运行时模型,再修改代码;所有跨语言调用必须先经过 runtime,再进入具体语言实现。
运行时模型是本 skill 的唯一迁移执行依据。AI 在处理任何脚本迁移、回滚、转发、验证前,都必须先读取并更新它,而不是根据目录是否为空来“猜”。
它把四类信息合并为一个统一知识源:
active / archived / planned / reimplemented / verified / promoted / optimizedplanned
↓
archived(py) # 原文件移入 py/
↓
reimplemented(rs) # rs/ 中建立同名职责实现
↓
verified # py 测试 & rs 测试 & 行为对比 全部通过
↓
promoted # 允许用户真实使用
↓
optimized # 进入 6 轮审查与重构
AI 每次只允许推进一个明确状态,禁止跳过验证直接优化。
runtime 不做业务实现,也不直接污染 py/rs 里的业务逻辑。
它是一个“过渡架构中的 router / temporary adapter / transformer”,属于 Anti-Corruption Layer 的思想——只做翻译,不让旧模型污染新模型。
本 skill 最大的敌人不是“AI 不会写 Rust”,而是:
迁移对象 > 上下文窗口
因此上下文管理是本 skill 的核心工程。
| Agent | 职责 | 读什么上下文 | 不做什么 |
|---|---|---|---|
| Writer(迁移者) | 把 py 脚本改写成行为等价的 rs 脚本 | 原 py 文件 + 当前脚本的 manifest 条目 | 不做架构优化、不做抽象 |
| Reviewer(行为审查) | 寻找行为差异 | py 实现 + rs 实现(不看 Writer 思路) | 不关心代码优雅性 |
| Tester(边界测试) | 生成边界 / 异常 / 压力测试 | 函数签名 + 已知输入输出 | 不改生产代码 |
| Architect(后期优化) | 驱动 6 轮审查与现代化 | 已 verified 的 rs 代码 + 审查报告 | 不在迁移阶段提前介入 |
Agent 之间不通过聊天记录传递上下文,只通过下面三类持久化文件交接:
manifest/*.yaml —— 当前迁移状态机reviews/round-N.md —— 每轮审查报告tests/*_compare.log —— 行为对比测试结果这是确保整个流水线可中断、可恢复、可审计的关键。
每一次让 AI 做迁移时,你传入的上下文应该只包含:
manifest/signatures/)严禁一次喂给 AI 整个项目源码。
本总 skill 不亲自“做事”,它定义做事顺序与准则。具体执行由下列子 skill 承担:
| 子 skill | 作用 |
|---|---|
py2rs-dep-align | 对齐 py/rs/FFI 依赖,拉取并锁定版本 |
py2rs-env-bootstrap | 跑通混合运行环境,验证 FFI / async / 错误追踪 |
| 子 skill | 作用 |
|---|---|
py2rs-runtime | 建立 runtime / manifest / 路由协议 / 状态机读写 |
| 子 skill | 作用 | 允许的修改幅度 |
|---|---|---|
py2rs-review-r0-behavior | 行为一致性审查(第 0 轮,所有后续审查的 gate) | 禁止改代码,仅验证 |
py2rs-review-r1-rust-style | Rust 工程化审查(第 1 轮) | 允许小改(结构) |
py2rs-review-r2-error-tracing | 错误追踪审查(第 2 轮) | 允许小改(增加调试信息) |
py2rs-review-r3-io-concurrency | IO 与并发审查(第 3 轮) | 允许 IO 层面大改;允许算法逻辑小改 |
py2rs-review-r4-algo-complexity | 算法复杂度审查(第 4 轮) | 只在有“复杂度分析 + 理论依据 + Benchmark”三件套时允许改 |
py2rs-review-r5-architecture | 架构与数据结构审查(第 5 轮) | 允许数据结构大改 |
py2rs-review-r6-ergonomics | 产品与人体工学审查(第 6 轮) | 只审查不写代码,输出报告 |
共 7 个独立的审查子 skill。R0 是 R1~R6 启动的强制前置 gate。
py2rs-dep-align
↓
py2rs-env-bootstrap
↓
py2rs-runtime (建立骨架后)
↓
[按脚本循环:Writer → Reviewer → Tester → 用户验收]
↓
py2rs-review-r0-behavior ←— 第 0 轮:行为一致性 gate
↓
py2rs-review-r1-rust-style
↓
py2rs-review-r2-error-tracing
↓
py2rs-review-r3-io-concurrency
↓
py2rs-review-r4-algo-complexity
↓
py2rs-review-r5-architecture
↓
py2rs-review-r6-ergonomics
上一轮没有在 manifest 中标记 verified,下一轮 禁止启动。任何 R1~R6 审查 skill 启动时,如未发现 reviews/r0-*-signature.md 报告则直接拒绝。
manifest/modules.yaml:
modules:
main:
owner: rs # py | rs | runtime
status: verified # planned | archived | reimplemented | verified | promoted | optimized
path_py: py/main.py
path_rs: rs/main.rs
signature: manifest/signatures/main.json
user_service:
owner: py
status: active
path_py: py/user_service.py
path_rs: null
signature: manifest/signatures/user_service.json
manifest/signatures/<name>.json:该脚本对外的函数签名、输入、输出、异常列表——用于行为对比测试自动生成。
reimplemented 直接跳到 optimized。owner 字段。不是“代码生成成功率”,而是: 任意迁移进度下,系统仍然可运行。