بنقرة واحدة
py2rs-runtime
[DRAFT] 建立 py2rs 的运行时骨架:manifest 注册、迁移状态机读写、路由协议、跨语言调用桥。是 py2rs 总 skill 的唯一事实来源和决策层。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
[DRAFT] 建立 py2rs 的运行时骨架:manifest 注册、迁移状态机读写、路由协议、跨语言调用桥。是 py2rs 总 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-runtime |
| description | [DRAFT] 建立 py2rs 的运行时骨架:manifest 注册、迁移状态机读写、路由协议、跨语言调用桥。是 py2rs 总 skill 的唯一事实来源和决策层。 |
DRAFT(草稿状态)。下面的目录、文件名、manifest schema 都是猜想;跑不通就改。 本 skill 目前是 AI 的 SOP,不是编译器能直接跑的代码 —— 这是刻意的,因为现在还不知道实战项目需要什么形状。
manifest/modules.yaml 只登记项目里的脚本 / 模块 / 服务 / CLI / 批处理任务——Web 后端接口脚本在这里登记没问题,Web 端本身(HTML/CSS/JS)不需要登记runtime/router.py 只在 Python 进程内做“走 py 实现还是走 rs 实现”的分派,不做 HTTP 路由选择的改动、不做前端请求转发runtime/bridge/py2rs_bridge.py 只负责 Python ↔ Rust 的 FFI 调用,不引入任何 GUI 框架cargo add 新 cratemanifest/modules.yaml —— 模块清单 + owner + status + history(字段都可能改)manifest/signatures/<module>.json —— 每个脚本的对外接口签名(参数 / 返回 / 异常 / 副作用)manifest/history/YYYY-MM-DD-<action>-<module>.log —— 每次状态变更的审计日志runtime/router.py —— Python 侧唯一入口,读 manifest 分派到 py / rs / runtimeruntime/bridge/py2rs_bridge.py —— FFI 桥:加载 Rust .so、参数翻译、异常翻译、trace_id 注入runtime/state.py —— manifest 读写 + 状态机合法性校验 + 一个极简 CLI python -m runtime.state <action> <module>runtime/__init__.py —— 让 router / state 成为包(也可能不这么组织)runtime/examples/ 目录 —— 最小 demo,演示「改 manifest 一行 owner 就切实现」的感觉上面每一个文件都可能在实战里被删掉、改名、合并。猜想而已。
本 skill 是 Stage 1 骨架 + Stage 2~4 的控制器。 它定义:
- 哪些脚本存在、当前归谁(py / rs)、处于什么状态
- 外部调用该走 Python 还是 Rust
- 每一次迁移 / 回滚 / 验证如何更新状态
核心信条:所有迁移动作必须先更新运行时模型,再修改代码;所有跨语言调用必须先经过 runtime,再进入具体语言实现。
manifest/
├─ modules.yaml # 模块清单 + 迁移状态机
├─ signatures/
│ ├─ <module>.json # 每个脚本的对外接口签名
│ └─ ...
└─ history/
└─ <YYYY-MM-DD>-<action>.log # 每次状态变更的审计日志
runtime/
├─ router.py # Python 侧入口路由(决定走 py 还是 rs)
├─ bridge/
│ └─ py2rs_bridge.py # FFI / subprocess / IPC 桥的统一入口
└─ state.py # manifest 读写 + 状态迁移合法性校验
py2rs_manifest/
└─ runtime.yaml # runtime 自身的版本与配置
version: 1
modules:
<module_name>:
owner: py | rs | runtime
status: planned | archived | reimplemented | verified | promoted | optimized
path_py: py/<module>.py # 可 null(代表未归档 / 未存在)
path_rs: rs/<module>.rs # 可 null(代表未实现)
signature: manifest/signatures/<module>.json
verified_at: "2026-01-01T00:00:00Z" # 或 null
owner_history:
- { at: "...", owner: py }
- { at: "...", owner: rs }
planned
↓ (归档旧实现)
archived(py)
↓ (在 rs/ 中建立同名职责实现)
reimplemented(rs)
↓ (py 测试 + rs 测试 + 行为对比 全部通过)
verified
↓ (用户真实使用验收)
promoted
↓ (进入 6 轮审查)
optimized
状态机操作规则:
archived → verified 是非法的verified → reimplemented),并写一条 historyowner 设为 py,再处理manifest/signatures/<module>.json用于行为对比测试的自动生成,以及 Writer Agent 迁移时的契约。
{
"module": "user_service",
"functions": [
{
"name": "get_user",
"args": [{"name": "user_id", "type": "int"}],
"returns": "dict | None",
"raises": ["UserNotFoundError", "IOError"],
"side_effects": ["read_db", "read_cache"]
}
]
}
字段说明:
returns:Python 侧的返回类型描述(文字即可,用于生成对比测试)raises:该函数可能抛出的异常side_effects:副作用列表(非常重要——决定了行为对比测试需要 mock 哪些外部依赖)逻辑伪码:
def call(module: str, function: str, *args, **kwargs):
# 1. 读 manifest
entry = manifest.get(module)
# 2. 根据 owner 决定路由
if entry.owner == "py":
return call_py(entry.path_py, function, *args, **kwargs)
if entry.owner == "rs":
return call_rs_via_bridge(function, *args, **kwargs)
if entry.owner == "runtime":
return call_runtime_handler(function, *args, **kwargs)
raise RuntimeError(f"module {module} has no owner in manifest")
关键点:
统一的 Python→Rust 调用桥。负责:
maturin develop 产出)logging / opentelemetry 的 trace_id 传给 Rust,让两侧日志可串联注意:bridge 只做技术翻译,不做业务逻辑聚合。业务逻辑必须在 py/ 或 rs/ 里。
manifest/modules.yaml,确认当前脚本的状态planned),再做其它事active → archived),不要直接删文件archived → reimplemented)verifiedpromotedoptimized每一步都必须 先写 manifest / history,再碰代码。
manifest/modules.yaml 已初始化(至少包含一个 _example 模块说明格式)runtime/router.py 能跑通一个手动测试:对一个 owner=py 的模块调用,走 Python;对 owner=rs 的模块调用,走 Rustruntime/state_machine_test.py,验证:
archived → verified 这种跳步会被拒绝reimplemented → archived 这种合法回滚可以通过history/ 日志py2rs_manifest/runtime.yaml 中声明了 runtime 版本py2rs-dep-align / py2rs-env-bootstrap:在它们完成后才启动本 skillruntime/state.py 暴露的 API 来推进状态py2rs-review-rN-* 审查 skill:启动前会读 manifest,只有 verified 状态的模块才允许被审查;审查结束后会把状态推进到 optimized