MMagic MDGitHub
Home

Runtime Capability Layer

Sidecar 赋予文档系统级能力

Sidecar 是 Magic MD 的后端能力总线。由 Rust 实现,通过 JSON-RPC 2.0 与编辑器通信,把数据库、网络、文件系统操作安全暴露给插件层。

protocol
Editor (Tauri)
  ↕ stdin / stdout
Sidecar (Rust)

Content-Length: N\r\n\r\n
{"jsonrpc":"2.0","id":7,"method":"db/query","params":{...}}
🔐

Env Sidecar

magic-md-env-backend

按规则读取环境变量并进行安全输出,避免敏感信息扩散。

rustJSON-RPC 2.0Sidecar

概述

Env Sidecar 是一个轻量级的 Rust 后端进程,专门用于安全地读取系统环境变量。通过 Sidecar 而非直接在前端 JavaScript 中读取,既保证了跨平台一致性,又增加了安全隔离层。使用 JSON-RPC 2.0 协议通过 stdin/stdout 通信。

特性

  • 极简依赖,编译体积小
  • 支持按名称批量读取环境变量
  • 安全隔离,前端无法直接访问系统变量

技术栈

  • serde / serde_json — JSON 序列化
  • std::env — 标准库环境变量读取

通信协议

使用 LSP 风格的 Content-Length 帧格式进行消息交换:

消息格式
Content-Length: 123\r\n\r\n{"jsonrpc":"2.0","id":1,"method":"env/get","params":{...}}

能力 (Capabilities)

方法说明
env/get读取指定名称的环境变量

env/get

读取指定名称的环境变量

参数类型
namesstring[] — 要读取的环境变量名称列表
请求json
{
  "names": [
    "DATABASE_HOST",
    "DATABASE_PORT",
    "DATABASE_NAME"
  ]
}
响应json
{
  "DATABASE_HOST": "localhost",
  "DATABASE_PORT": "5432",
  "DATABASE_NAME": "myapp"
}

构建

构建命令bash
cd sidecars/env
cargo build --release
# 产出: target/release/magic-md-env-backend

架构

Editor (Tauri)
  │
  ├── stdin ──▶ magic-md-env-backend
  │              │
  │              ├─ initialize
  │              ├─ env/get
  │              └─ shutdown
  │
  └── stdout ◀── JSON-RPC responses
systemenvironment