moonslide

moon add MYmodddd/moonslide@0.1.0
Download zip
Author
Version
0.1.0
License
Apache-2.0
Last updated
last month
Downloads
8
README

#MoonSlide AI

MoonSlide AI 是一个结合大语言模型(LLM)对话能力与 MoonBit 强类型特性的次世代演示文稿(PPT)生成引擎与前端交互展示平台。本项目旨在验证“前端纯净输入 -> 极速底层核心解析 -> 前端边缘端物理打包”的终极架构。

#简介

当前的 AI PPT 工具多依赖于沉重的 Python 后端栈或复杂的纯前端组件框架。MoonSlide AI 旨在探索以轻量级、高性能、对 WASM 原生支持的 MoonBit 语言作为后端解析与生成核心,结合极具现代感的 Vanilla 前端界面,打造一款端到端的对话式 PPT 生成工具。

#目的

本项目的愿景是提供一套可脱离沉重后端计算资源、能在浏览器或极简边缘设备上独立高效运行的 PPT 生成器,让任何创意或灵感通过对话即可瞬间转换为标准结构化、且能被本地 Office 直接打开的 .pptx 文件。

#功能特性 (Core Features)

  • 参数动态下发管道:通过 Node.js 中间件,前端用户输入的 prompt 能够无缝、动态地传递给底层的 MoonBit 引擎。
  • 大模型架构兼容 (Mock LLM):内建了灵活的大语言模型参数接口,目前使用动态组装的 Mock 数据,未来可无缝对接 OpenAI/Moonshot 等真实 API。
  • 纯净版 PPTX 组装引擎:基于 MoonBit 构建底层的 XML 节点树,并在内存中组装出 .pptx 必需的全部底层 XML 结构,通过安全的自定义定界符全量透传。
  • 浏览器端边缘打包 (Browser-Side ZIP):引入了 JSZip 技术,后端无需涉及文件 IO,前端即可在浏览器内存中直接将 XML 虚拟树打包压制为真实的 .pptx 文件并触发下载。
  • 商业级前端工作流界面
    • 多模态语音输入 (Speech-to-Text):原生集成了 Web Speech API,一键即可通过麦克风将语音实时转写为 Prompt,实现动嘴做 PPT。
    • 极致视觉:采用 Glassmorphism(毛玻璃)、霓虹辉光背景、全响应式的暗黑科技风格。
    • 模块化页面:包含完整顺滑的登录 / 注册界面的切换。
    • 沉浸式布局:带有左侧可收起历史记录栏 (Sidebar)、全局设置模态框 (Settings Modal),以及极致的移动端自适应排列。

#状态

项目状态:活跃 (Alpha 完整版)。目前核心解析引擎、前后端交互数据流与边缘物理打包已彻底完备,形成了首个真正的全栈业务闭环。

#技术栈

  • 后端 / 核心引擎MoonBit
  • 中间件服务器:原生 Node.js (0 npm 依赖)
  • 前端 / UI:原生 HTML5 + Vanilla CSS3 (CSS Variables, Flexbox/Grid, Animations) + Vanilla JavaScript
  • 序列化与打包:Office Open XML 规范 + JSZip

#兼容性

  • CLI 核心库:跨平台(Windows, macOS, Linux),支持编译为 WebAssembly (Wasm-GC) 及 JavaScript。
  • 前端界面:兼容所有现代浏览器(Chrome, Edge, Firefox, Safari),支持 PC 与移动端的无缝响应式切换。

#安装指南

在本地运行本项目,您需要安装 MoonBit 工具链与 Node.js 环境。

  1. 安装环境
  2. 克隆项目
    git clone <repository_url> cd "MoonSlide AI"

#快速运行

需要本机已安装 MoonBit 工具链,并确保 moon 在 PATH 中,以及 Node.js 环境。

moon fmt --check moon info moon check --deny-warn moon test --deny-warn moon run src/cli
也可以直接运行内置的全栈服务器:

node server.js
终端提示启动成功后,请在浏览器中打开:👉 http://localhost:3000

#一个具体例子

仓库里的核心解析引擎模拟了一次从前端输入走向 XML 生成并最终打包的流程:

前端接收输入和 Node.js 启动 CLI 可以快速完成;之后进入底层的 AST 解析和 XML 生成;最后传递给浏览器进行内存物理打包。

user_input node_server \ / v v moon_run_cli | v parse_markdown | v generate_xml_tree | v jszip_pack -> download_pptx

MoonSlide 最终输出:
  • XML 字符串流:通过安全分隔符(---MOONSLIDE_FILE_START--- 等)包裹的 PPTX 底层文件树结构。
  • 物理 .pptx 文件:由浏览器端拦截字符串流,调用 JSZip 进行打包并供用户下载。
  • Web UI 渲染:直观展示虚拟文件树生成状态与进度。

如果只想验证后端核心渲染逻辑:
moon run src/cli

#API 示例

核心库(src/moonslide)提供了易于调用的 PPTX 组装接口:

let prompt = get_prompt()
let md_content = @moonslide.fetch_presentation_from_llm(prompt)
let presentation = @moonslide.parse_markdown(md_content)

let files = @moonslide.generate_pptx_files(presentation)

for f in files {
let (path, content) = f
println("---MOONSLIDE_FILE_START---")
println(path)
println("---MOONSLIDE_CONTENT_START---")
println(content)
println("---MOONSLIDE_FILE_END---")
}

常用功能点:
  • 动态替换 prompt 并调用 Mock LLM 获取 Markdown
  • 调用 MoonBit 原生解析器生成幻灯片 AST
  • 组装包含完整页面与布局的 OpenXML 标签

#当前状态

当前 MoonSlide AI 版本为 v0.2.0 (全栈闭环架构)。 本地硬门槛使用最新版 MoonBit 验证:moon fmt --checkmoon infomoon check --deny-warn 核心解析引擎、前后端交互数据流与边缘物理打包已彻底完备。 node server.js 可以直接运行,并展示毛玻璃视觉、语音转文字和真实 PPTX 下载流程。

#项目链接

  • GitHub:
  • GitLink:
  • MoonSlide: