跳转到内容
Strata
登录

演示文稿

在 Strata 中创建、编辑和演示幻灯片。你可以从空白演示文稿开始,让 Strata Agent 根据源文档起草,或导入 Markdown。

与您的 AI 智能体一起制作演示文稿。

制作演示文稿

打开工作区中的“演示文稿”。选择“新建演示文稿”并输入标题,或请 Strata Agent 创建。使用 AI 起草时,描述主题、受众和目的,选择篇幅、主题样式及源文档。开始前请确认预计点数和点数上限。

在“演示文稿”和“文档”之间切换,整理幻灯片或编辑源内容及备注。你可以添加、复制、重排或排除幻灯片,并选择主题。选择“演示”即可播放;演讲者视图包含备注、下一张幻灯片和计时器。

在文档开头添加以 --- 行包围的 YAML。使用 presentation: true 采用默认设置,或按下例填写 presentation 映射。aspect 可设为 "16:9"、"16:10" 或 "4:3"。

---
presentation:
  aspect: "16:9"
---
# 董事会报告

## 成果
```slide layout="bullets"
- 收入增长
- 客户留存率提高
```

向观众解释这些数据。

第一个 # 标题是封面;每个 ## 标题开始一张幻灯片。只有标题时,幻灯片仅显示标题。添加一个带 layout="bullets" 的 slide 代码块来显示项目符号列表,或添加一个 html 代码块来制作自定义视觉内容。不要在同一张幻灯片中混用这两种代码块。视觉内容以外的正文是演讲者备注,不会显示在幻灯片上。

只有第一个 # 标题是封面。### 标题仍属于当前幻灯片。以 Appendix 开头的 ## 标题(不区分大小写)会结束幻灯片,之后的内容属于附录。

从对话到幻灯片

使用 strata-presentation,从对话中整理受众、目的以及一系列有依据的论点。设置样式前,先阅读原始资料和公司的设计系统。每张幻灯片使用一个标题,在视觉内容中展示证据,在章节普通正文中编写讲稿。通过 edit_document 保存后重新读取结果;检查可用的 HTML 预览,并说明渲染限制。

每次修改 HTML 时,都以描述明确且在整份演示文稿中唯一的 id 为锚点。在 oldString 和 newString 中都包含该 id,并使用 replaceAll=false,仅匹配当前的一处片段。这是文本替换约定,并非 ID 选择器 API。若找不到匹配或匹配不唯一,请重新读取,不要通过全文重写强行修改。示例中的 documentId 应替换为实际返回的值。 优先使用小范围的锚定编辑:设置 replaceAll=false 时,API 会按照其匹配规则,在处理请求的 ECS 任务的内存 Yjs 副本中拒绝不存在或不唯一的匹配;这些规则可能规范化引号、脚注标记和空白。这既不是逐字节精确检查,也不是分布式 compare-and-swap。其他任务已提交的更改可能尚未到达该副本;在持久化过程中整合竞态 WAL 记录之前,过时的锚点仍可能匹配。字符级编辑仅影响匹配区域;跨节点或块级编辑可能回退到 Markdown 往返转换和结构重写。任何 MCP 正文写入路径都不接受预期 documentVersion,也不保证在并发编辑时安全。如果演示文稿似乎正在被编辑,请告知用户,并协调暂停编辑或准备单独的副本。回读只能确认观测到的结果,不能证明并发安全。

grammarVersion: 1

文档语法

在开头的 YAML 块中设置 presentation: true 即可启用默认值。presentation 映射仅接受 aspect(16:9、16:10、4:3)、transition(fade、none、slide)、form(slides、whole-deck)和 notes(presenter、none)。默认值为 16:9、fade、slides、presenter。YAML 上限为 16 KiB。主题不属于 frontmatter 设置。

在 slides 形式中,第一个顶层 H1 是封面,每个 H2 开始一张幻灯片。H3–H6 和普通块属于备注。后续 H1 及其内容直到下一个 H2 都成为前一章节的备注,并报告 duplicate-cover。若存在封面,前言归入封面备注。第一个去除首尾空白后、忽略大小写以 appendix 开头的 H2 会结束幻灯片处理,后续标题也不再处理。

章节内的第一个 html 围栏块是其视觉内容;额外的 HTML 会被报告且不会被选中。混用 html 和 slide 围栏块会使整个章节被排除。没有 HTML 时,第一个 slide 块选择 layout=title、statement、bullets、big-number、two-column 或 image;布局缺失或无效会报告 unknown-layout,并在结构上使用 statement。后续 slide 块属于备注。两者都没有时,幻灯片只有标题。Layout 仅属于 slide 块;slide 会丢弃 name,但保留 uses:layout=image 的幻灯片用 uses 指定要显示的图片,未声明的幻灯片会报告 image-slide-without-source。Name 声明数据源;HTML 视觉块中的 uses 以逗号分隔列出依赖项。

将绘制的数字绑定到命名的 json/csv/tsv/yaml 块或表格,最好放在附录中。HTML 声明 uses,通过 strata.data.get 读取带类型标记的来源,并在 strata:data 时重绘。按 kind 和 format 解码,也要处理不可用的数据;参阅 interactive-html。聚合来源,使每个来源不超过 128 KiB,总量不超过 256 KiB。给可编辑元素添加 ID,并在 HTML 围栏内加入幻灯片注释;在启用的 shell 中,data-deck-headline 会接收标题。为普通预览保留可读的备用文本。

在 Strata 中创建、编辑和演示幻灯片。你可以从空白演示文稿开始,让 Strata Agent 根据源文档起草,或导入 Markdown。

---
presentation:
  aspect: '16:9'
  transition: fade
  form: slides
  notes: presenter
---
# Launch

```slide layout=title
A smaller first release

Priya Raman, March
```

## Focus

```slide layout=bullets
What ships first:

- One workspace
- One integration
- Nothing else
```

Say the internal negotiation out loud; this paragraph stays a presenter note.

## The room

```slide layout=image uses=launchPhoto
Launch day, Oslo
```

## Adoption

```html
<!-- slide: adoption -->
<main id="s03-adoption" style="padding:var(--deck-padding)">
  <h1 class="deck-title" data-deck-headline>Adoption</h1>
  <p id="s03-rationale">A smaller release gives us a clear learning signal.</p>
</main>
```

## Appendix

<!-- strata:name=launchPhoto -->

![The team on launch day](launch-day.png)

```css name=deckTheme extends=strata-light
:root { --deck-accent: #1d4ed8; }
```
layoutfence
titleslide layout=title
statementslide layout=statement
bulletsslide layout=bullets
big-numberslide layout=big-number
two-columnslide layout=two-column
imageslide layout=image uses="hero"

设计系统与公司主题

查找并阅读公司设计系统,然后将其 CSS 复制到唯一的 css name=theme 围栏块中。若已知真实的文档 ULID 和十进制版本号,请同时记录 source 和 sourceVersion;来源信息必须包含两者。保留已有的 locked=true。复制内容保存在本地,解析时不会获取或刷新源文档。没有可用的公司主题时,从 strata-light 开始。

对于 Claude Design 文件、Figma 变量、Tailwind 或品牌指南,将背景、文本、强调色、次要文本、两组字体栈、内边距和圆角映射到八个令牌。演示文稿专用的调整放入 deckTheme。仅将有权使用的字体文件嵌入为 data: URL,并提供系统备用字体;保留所需字形,检查编码后的 CSS 是否在 256 KiB 内。说明近似颜色和字体替换。

五个层级按优先级从低到高依次为 deck-base、deck-strata、deck-company、deck-deck 和 deck-slide;preview-base 位于它们之前。使用 css name=deckTheme 进行本地覆盖。其 extends 优先于公司主题的 extends,否则默认为 strata-light。内置主题有 strata-light、strata-dark、strata-editorial 和 strata-mono。未知名称会产生报告并回退。内联样式仍遵循普通 CSS 层叠规则。

在简单的顶层 :root 规则中定义下方全部八个公司主题令牌。html、body、混合选择器或嵌套的 @media/@layer 规则中的令牌不会被读取,并报告 theme-token-outside-root。在幻灯片中使用 var(--deck-...)。CSS 应不超过 256 KiB,括号配对,不使用 !important 或外部导入/URL;允许 data: 资源。文字与背景对比度至少为 4.5:1;不支持的颜色表达式会报告对比度未知。重复主题名会禁用对应层。公司锁定会报告演示文稿令牌覆盖,但不会阻止覆盖生效。

```css name=theme extends=strata-light
:root {
  --deck-bg: #ffffff;
  --deck-fg: #111318;
  --deck-accent: #1d4ed8;
  --deck-muted: #586174;
  --deck-font-heading: system-ui, sans-serif;
  --deck-font-body: system-ui, sans-serif;
  --deck-padding: 6cqw;
  --deck-radius: 12px;
}
```
tokenstrata-light
--deck-bg#ffffff
--deck-fg#111318
--deck-accent#2563eb
--deck-muted#6b7280
--deck-font-headingsystem-ui, sans-serif
--deck-font-bodysystem-ui, sans-serif
--deck-padding6cqw
--deck-radius12px
extends--deck-bg--deck-fg--deck-accent--deck-muted--deck-font-heading
strata-light#ffffff#111318#2563eb#6b7280system-ui, sans-serif
strata-dark#0b1020#f4f6fb#5cc8ff#8b93a7system-ui, sans-serif
strata-editorial#faf7f2#1f1b16#b4532a#756c61Georgia, serif
strata-mono#111111#e8e8e8#c8ff00#8a8a8aui-monospace, monospace

共享与导出

所有者和编辑者可以读取完整文档。查看者、评论者和仅能提出建议的用户收到的版本包含已接受的幻灯片标题和视觉内容,但移除了普通备注。请将私人讲稿放在视觉围栏块之外。notes: none 表示面板可见性,并非隐私设置。移除或禁用 presentation 设置会使文档恢复为普通文档,读者可能收到完整正文。

读者版本还保留主题 CSS、被已接受视觉块的 uses 声明引用的命名 JSON/CSV/TSV/YAML 块或表格,以及 presentation 设置。即使资源位于附录中也会保留;slides 形式还会保留附录标题。这些块会被整体复制,因此隐藏 HTML、注释、脚本和未使用的数据字段可能泄露私人内容。普通附录正文和其他 frontmatter 键会被省略。

在 form: whole-deck 中,附录之前的第一个顶层 HTML 围栏块就是整份演示文稿,标题不会生成幻灯片。共享框架可以通过作者编写的 strata.deck.registerAdapter 进行导航,其中包含 count()、current() 和 goTo(index)。该 HTML 内部的备注无法移除:notesPrivacy 为 notStripped,发布需要明确确认。请将机密备注放在 HTML 之外。

使用“导出”获取 PDF 或独立 HTML,也可以让已连接的助手调用 export_presentation。下载链接有效期为十五分钟。PDF 消耗文档所有者的截图配额,HTML 不计入配额。幻灯片中的演讲者备注会被移除。whole-deck HTML 无法可靠移除私密备注,因此不允许导出。不支持 PPTX 导出。

导入现有演示文稿

保留现有文件并检查格式。对于 UTF-8 Markdown,先测量字节数,再调用 edit_document,传入 action=presignUpload、contentLength,以及 documentId 或 title/folderId;使用返回的全部 requiredHeaders,通过 PUT 上传原始字节,然后以 uploadId 调用 finalizeUpload。完成后重新读取。将 HTML 演示文稿改编为 whole-deck Markdown 副本,并检查沙盒依赖及内部备注。Office 文件上传会将 PPTX/PDF/DOCX 转换为普通文档,不保证原始幻灯片的还原效果。不要通过 Markdown 上传流程发送这些二进制文件。 使用现有 documentId 会在 finalizeUpload 时替换全部内容;PUT 仅暂存字节。finalizeUpload 和 action=write 都不接受预期版本,因此替换可能覆盖协作者的更改,且不会报告版本冲突错误。优先使用小范围、唯一锚定的 edit 调用,并设置 replaceAll=false;它们只检查处理请求的任务所持有的副本,块级编辑还可能回退到结构重写。任何 MCP 正文写入路径都不保证在并发编辑时安全。如果演示文稿似乎正在被编辑,请告知用户,并协调暂停编辑或准备单独的副本。如果无法避免替换,请在最终确认前立即重新读取,将 documentVersion 与准备文件时使用的版本比较,若已变化则中止。版本未变只能缩小竞态窗口,不能消除它。

拆分 HTML 演示文稿是由代理编写的转换,不是导入工具。需要通过五项检查:每张幻灯片对应一个节;样式位于本地且没有链接的样式表;除已识别的导航代码外,脚本仅访问本节的 DOM;资源自包含;每节都有标题。如果无法确认脚本隔离,请保留 whole-deck 并指明该脚本。对于用户要求且符合条件的拆分,创建单独文档,将第一节映射为 H1 封面,保留 ID 和各节,并说明渲染还原度未经验证。

验证与修复

演示或导出前请运行验证。validate_presentation 检查布局、对比度、数据绑定、结构和主题,并保存截图。每次调用最多检查一种视口尺寸下的两张幻灯片;当 status 为 more 时,保持选择不变并使用 next 继续。每张幻灯片的每种视口尺寸消耗一次截图,同一计费周期内相同渲染键不会重复计费。查看结果,修正源内容,然后再次检查。

{
  "action": "edit",
  "documentId": "<documentId>",
  "oldString": "<strong id=\"s02-target\">84%</strong>",
  "newString": "<strong id=\"s02-target\">87%</strong>",
  "replaceAll": false
}
code原因与修复方法strataDocumentation
duplicate-cover后续 H1 会开始备注,而不是创建另一张封面。保留一个 H1;其他幻灯片使用 H2。presentation-grammar
extra-visual多余的 HTML 视觉块会被省略。将其移到单独的幻灯片,或合并为所需的视觉内容。presentation-grammar
slide-and-visual同一节中同时存在 HTML 和 slide 围栏,因此该节被排除。只选择一种视觉块类型。presentation-grammar
unknown-layout第一个 slide 围栏没有有效的 layout。请指定所列五个布局名称之一。presentation-grammar
image-slide-without-sourcelayout=image 的 slide 块未声明任何来源。请在 uses 中填入本文档中某张图片的名称,或在演示编辑器中选择一张。presentation-grammar
unknown-theme所选 extends 名称未知。请选择内置主题;目前会回退到 strata-light。presentation-themes
duplicate-theme多个 theme 或 deckTheme 块会停用相应层。请分别合并为一个块。presentation-themes
theme-missing-token公司主题缺少必需的令牌。请在顶层独立的 :root 规则中定义全部八个令牌。presentation-themes
theme-contrast解析后的前景色与背景色对比度低于 4.5:1。请调整配色以达到该比率。presentation-themes
theme-contrast-unknown无法评估前景色或背景色。请使用三位或六位十六进制字面值,或使用整数的 rgb()。presentation-themes
theme-important主题 CSS 含有 !important,该标记会被移除。请删除它并使用文档规定的层叠顺序。presentation-themes
theme-oversize主题 CSS 超过 256 KiB,因此被省略。请减少 UTF-8 字节大小,包括嵌入资源。presentation-themes
theme-external-url检测到 @import 或非 data: URL。请将其移除,或将有权使用的资源嵌入为 data:。presentation-themes
theme-unbalanced主题在规范化前后的括号不匹配,因此该层被省略。请修复 CSS 语法。presentation-themes
theme-token-outside-root演示文稿令牌声明在顶层独立的 :root 规则之外。请将声明移入 :root。presentation-themes
locked-override演示文稿令牌覆盖了锁定的公司主题。请删除覆盖,或协商修改源主题;锁定仅会报告此情况。presentation-themes

保持演示文稿更新

演示文稿自动刷新尚不可用。list_company_themes、get_company_theme 和演示刷新例程的 target/sourceRef/baseVersion 契约尚未实现。通过 find 和 read_document 复制主题,记录已验证的来源,并说明主题及复制的数据都是快照。本章节的存在并不意味着刷新例程已启用。仅在明确请求并审查修改后更新副本。