slexkit
v0.2.0
Published
Zero-build, Markdown-friendly reactive UI runtime for AI output.
Maintainers
Readme
把 Markdown 变成实时交互块
SlexKit 会把显式 slex Markdown fence 变成带状态的实时 UI 块。Slex 源码只是一个 JavaScript 对象字面量:g 保存状态和逻辑,layout 描述组件树,浏览器运行时在原位置渲染结果。
它适合聊天消息、文档、Agent 面板、工具结果和 AI 生成的仪表盘。它不是完整应用框架。
安装
npm install slexkitimport { mount } from "slexkit";
import "slexkit/style.css";使用
<div id="app"></div>
<script type="module">
import { mount } from "slexkit";
import "slexkit/style.css";
mount(
{
slex: "0.1",
namespace: "hello",
g: { name: "World", count: 0 },
layout: {
"card:greeting": {
title: "Greeting",
"text:message": {
"$text": "'Hello, ' + g.name + '! Count: ' + g.count"
},
"button:add": {
label: "+1",
onclick: "g.count++"
}
}
}
},
document.getElementById("app")
);
</script>Markdown 原生输出
支持 SlexKit 的宿主只处理显式 slex fence。普通 js、json 和未标记代码块都保持惰性,不会被猜测执行。
```slex
{
slex: "0.1",
namespace: "status",
g: { done: 3, total: 4 },
layout: {
"badge:state": { label: "Ready", tone: "success" },
"text:summary": { "$text": "g.done + '/' + g.total + ' complete'" }
}
}
```
**状态:** Ready。3/4 complete.不支持 SlexKit 的 Markdown 平台会显示 fallback 文本;支持 SlexKit 的宿主会渲染交互 UI。
能力概览
- 零构建 Slex 源码:生成结果是对象字面量,不需要 imports、脚手架或组件打包。
- 响应式
g/layout模型:状态和逻辑集中在g,UI 结构由组件树声明。 - 表达式管道:
$读表达式用于动态属性,on*写表达式用于事件。 - 指令系统:
$if和$for支持条件渲染和带 key 的列表协调。 - 官方 Svelte 组件:40+ 个 layout、input、content、display、disclosure、feedback、tooling 组件。
- 可扩展注册表:支持自定义组件类型、Svelte renderer 和组件状态模式。
- 可信与安全双运行时:可信内容在宿主域渲染,不可信源码在 sandbox iframe 中隔离渲染。
- ToolHost:为 AI tool-call 提供确认、选择、填表等结构化交互模板。
- AI 友好文档面:提供
llms.txt、skills 和只读@slexkit/mcpMCP 服务。
包
| 包 | 安装 | 内容 |
| --- | --- | --- |
| slexkit | npm install slexkit | Runtime、Svelte 组件、ToolHost、样式 |
| @slexkit/runtime | npm install slexkit @slexkit/runtime | 无组件运行时封装 |
| @slexkit/components-svelte | npm install slexkit @slexkit/runtime @slexkit/components-svelte | Svelte 组件注册 |
| @slexkit/theme-shadcn | npm install @slexkit/theme-shadcn | CSS 主题 token |
| @slexkit/streamdown | npm install slexkit @slexkit/theme-shadcn @slexkit/streamdown streamdown react react-dom | React / Streamdown Markdown 渲染器 |
| @slexkit/obsidian | npm install slexkit @slexkit/obsidian | Obsidian 插件适配器 |
| @slexkit/mcp | npx -y @slexkit/mcp | 面向文档、示例和源码校验的只读 MCP 服务 |
更多说明见 Package Boundaries。
集成
| 宿主 | 路径 |
| --- | --- |
| 浏览器 DOM | mount()、ingest()、boot()、disposeNamespace() |
| Markdown 渲染器 | createSlexKitMarkdownRuntimeHost() |
| React / Streamdown | @slexkit/streamdown |
| Obsidian | @slexkit/obsidian |
| AI Agents | @slexkit/mcp、llms.txt、SlexKit skill 文档 |
| 自定义组件 | register()、registerSvelteComponent()、registerSubset() |
安全运行时
可信模式在宿主域内运行,适合应用自己生成或经过审核的源码。安全模式会把不可信 Slex 源码隔离到 sandbox iframe 中,并使用 opaque origin、基于 nonce 的 CSP、锁定全局变量、宿主代理网络访问和心跳 watchdog。
渲染未审核的用户输入或模型输出前,请先阅读 Security Runtime。
文档
| 文档 | 主题 |
| --- | --- |
| 快速开始 | 安装并渲染第一个 Markdown 友好的 Slex 源码 |
| 集成指南 | Streamdown、Obsidian 和自定义宿主路径 |
| 运行时模型 | 挂载、更新、命名空间存储、生命周期 |
| Slex 用法参考 | 源码结构、指令、表达式、事件、自定义组件 |
| 安全运行时 | 威胁模型、sandbox iframe、策略、postMessage 桥接 |
| Slex 规范 | 协议 v0.1、类型、合并规则、生命周期钩子 |
| ToolHost | Tool-call 渲染和自定义模板 |
| 图标系统 | Phosphor 图标、自定义注册、Iconify fallback |
| AI / Agents | llms.txt、MCP 服务、skills 和创作规则 |
| 更新日志 | 发布说明和重要变更 |
版本信息
import { SLEXKIT_VERSION, SLEX_PROTOCOL_VERSION, getSlexKitInfo } from "slexkit";npm 包版本、组件实现版本和 Slex 协议版本会分别暴露。当前公开协议是 v0.1。
许可协议
MIT
