跳转至

Python Node

Python 是当前最快的 Studio 项目 Node 开发路径。文本 Source、Transform 与 Sink Package 可以通过可信本地 Python 开发 Host 运行。

import muxiva

class Uppercase:
    def on_process(self, frame, ctx):
        ctx.emit(
            "text_out",
            muxiva.TextFrame(frame.text.upper(), sequence=frame.sequence),
        )
        ctx.publish_notification("example.text.uppercased", {"sequence": frame.sequence})

class ClientEvent:
    def on_process(self, frame, ctx):
        ctx.emit("event_out", muxiva.EventFrame(
            "example.client.message", '{"text":"ready"}',
            source="example.client_event", sequence=frame.sequence,
        ))

ctx.emit(port, frame) 可以在不结束回调的情况下发送数据; ctx.emit_signal(name, payload) 用于相邻图控制; ctx.publish_notification(topic, payload) 用于向 Runtime NotificationBus 发布低频进程内通知; ctx.schedule_next_tick(delay_ms) 请求一次无输入的 Runtime 内部回调,适合有界排空后台结果, 无需声明 tick_in 或连接 Clock Node。 返回 Frame 或 Port 映射仍作为兼容写法保留,新 Node 应优先使用显式 Context 动作。

声明匹配的 Port:

[
  {"name": "text_in", "direction": "input", "frame_type": "text"},
  {"name": "text_out", "direction": "output", "frame_type": "text"}
]

加载边界

保存、列出或校验 Package 都不会 Import Python 源码。只有可信本地用户点击 Run 后,Studio 才启动受管 Host 并加载 Manifest 声明的入口。

当前边界

  • Studio 项目 Host 支持 Text、Audio 输入和 Signal 回调;
  • 输出 Port 可声明 Text、Audio、Event 和 Signal;Node 通常通过 ctx.emit_signal(...) 发出 Signal,通过 ctx.emit(...) 发出 Event Frame;
  • 该开发 Host 尚未实现 Byte 与 Video 项目 Node Frame;
  • 支持 Source、Transform 与 Sink;
  • 进程隔离和多模态项目 Package 传输仍在规划中;
  • 独立 Python SDK 已为代码开发提供多模态 Frame 与 Hosted Graph Factory API。