بنقرة واحدة
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 字段。不是“代码生成成功率”,而是: 任意迁移进度下,系统仍然可运行。