在 Markdown 里定义数据源、执行查询、渲染结果。
一个文件,从编写到交付。
How it works
不是模板引擎,不是低代码平台。是让 Markdown 拥有真正的运行时。
在 Markdown 中用 ::define 声明插件实例、配置参数和数据源。每个定义就是一个独立的数据节点。
::define[db]{plugin="postgresql-connection"}
```config
{ "host": "localhost", "database": "mydb" }
```
::插件通过 Sidecar 后端执行真实操作 — 查询数据库、请求 API、读取文件。数据在后台以 JSON-RPC 安全流转。
::define[users]{plugin="postgresql-query"}
```config
{
"connection": "$ref{db.output.connectionParams}",
"query": "SELECT * FROM users WHERE active = true"
}
```
::用 $ref 引用任意节点的输出,用 ::render 把数据变成可视化组件。文档即最终交付物。
共找到 $ref{users.output.rowCount} 个活跃用户。
::render[users]::Architecture
从文档语法到系统调用,四层清晰分离。每一层都可以独立理解和扩展。
↕ 每层通过类型安全的协议通信,无运行时耦合
Plugin Ecosystem
数据库查询、API 请求、文件读取、MCP 调用 — 所有能力都是插件。在文档里自由组合。
Core Concepts
用 ::define 声明插件实例。每个定义有自己的配置和输出,是数据图中的一个节点。
::define[id]{plugin="name"}用 $ref{id.output.path} 引用任意定义的输出。构建定义之间的依赖关系。
$ref{db.output.connectionParams}点击执行,插件通过 Sidecar 后端完成真实操作。结果安全存储在文档上下文中。
context.backend.call("db/query", params)用 ::render 将输出渲染为表格、图表或自定义组件。支持 inline 和 block 两种模式。
::render[id]::