@cyber-dash-tech/revela 0.15.2 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -104
- package/README.zh-CN.md +59 -104
- package/designs/starter/DESIGN.md +33 -14
- package/designs/starter/preview.html +23 -16
- package/designs/summit/DESIGN.md +35 -42
- package/designs/summit/preview.html +49 -49
- package/lib/commands/brief.ts +1 -1
- package/lib/commands/designs-new.ts +6 -6
- package/lib/commands/designs.ts +9 -9
- package/lib/commands/domains.ts +9 -9
- package/lib/commands/edit.ts +1 -1
- package/lib/commands/help.ts +34 -37
- package/lib/commands/init.ts +1 -1
- package/lib/commands/inspect.ts +2 -20
- package/lib/commands/narrative.ts +3 -3
- package/lib/commands/pdf.ts +3 -3
- package/lib/commands/pptx.ts +2 -2
- package/lib/commands/review.ts +13 -6
- package/lib/decks-state.ts +6 -6
- package/lib/edit/deck-state.ts +1 -1
- package/lib/edit/resolve-deck.ts +1 -1
- package/lib/inspect/server.ts +2 -2
- package/lib/prompt-builder.ts +20 -14
- package/package.json +1 -1
- package/plugin.ts +133 -283
- package/skill/NARRATIVE_SKILL.md +15 -17
- package/skill/SKILL.md +220 -477
- package/tools/edit.ts +1 -1
- package/tools/inspection-result.ts +1 -1
- package/lib/commands/disable.ts +0 -14
- package/lib/commands/enable.ts +0 -48
package/README.zh-CN.md
CHANGED
|
@@ -17,8 +17,8 @@ Revela 是一个 [OpenCode](https://opencode.ai) 插件,用来把工作区来
|
|
|
17
17
|
|
|
18
18
|
## 它能做什么
|
|
19
19
|
|
|
20
|
-
- 为 `/revela init`、`/revela story`、`/revela make deck` 等显式命令注入一次性 workflow instructions
|
|
21
|
-
- 只有在显式运行 `/revela make deck` 时,才切换到 deck-render prompt mode
|
|
20
|
+
- 为 `/revela init`、`/revela story`、`/revela make --deck` 等显式命令注入一次性 workflow instructions
|
|
21
|
+
- 只有在显式运行 `/revela make --deck` 时,才切换到 deck-render prompt mode
|
|
22
22
|
- 支持工作区文档扫描,以及 `.pdf`、`.docx`、`.pptx`、`.xlsx` 的透明文本提取和嵌入素材缓存提取
|
|
23
23
|
- 将 `DECKS.json` 作为当前 workspace state engine,持续记录来源材料、调研动作、findings、claims、证据、叙事意图、render targets 和 readiness
|
|
24
24
|
- 先检查 narrative readiness,再用独立 deck/artifact gate 保护 deck HTML 写入
|
|
@@ -94,8 +94,8 @@ export { default } from "/absolute/path/to/revela/index.ts";
|
|
|
94
94
|
|
|
95
95
|
```text
|
|
96
96
|
/revela design
|
|
97
|
-
/revela design use summit
|
|
98
|
-
/revela
|
|
97
|
+
/revela design --use summit
|
|
98
|
+
/revela domain --use deeptech-investment
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
然后先打磨、调研或检查 story。叙事 ready 并获得批准后,再生成 deck:
|
|
@@ -103,32 +103,14 @@ export { default } from "/absolute/path/to/revela/index.ts";
|
|
|
103
103
|
```text
|
|
104
104
|
/revela story
|
|
105
105
|
/revela research
|
|
106
|
-
/revela make deck
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
如果只需要检查写 HTML 前的 deck/artifact gate,使用:
|
|
110
|
-
|
|
111
|
-
```text
|
|
112
|
-
/revela make deck --review
|
|
106
|
+
/revela make --deck
|
|
113
107
|
```
|
|
114
108
|
|
|
115
109
|
需要导出时,可以手动调用,也可以让 agent 直接导出:
|
|
116
110
|
|
|
117
111
|
```text
|
|
118
|
-
/revela pdf decks/humanoid-robotics.html
|
|
119
|
-
/revela pptx decks/humanoid-robotics.html
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
如果希望普通聊天消息在显式命令之间也保持 Revela narrative mode,可以启用可选 ambient mode:
|
|
123
|
-
|
|
124
|
-
```text
|
|
125
|
-
/revela enable
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
完成后关闭 ambient mode:
|
|
129
|
-
|
|
130
|
-
```text
|
|
131
|
-
/revela disable
|
|
112
|
+
/revela export --deck pdf decks/humanoid-robotics.html
|
|
113
|
+
/revela export --deck pptx decks/humanoid-robotics.html
|
|
132
114
|
```
|
|
133
115
|
|
|
134
116
|
---
|
|
@@ -136,67 +118,51 @@ export { default } from "/absolute/path/to/revela/index.ts";
|
|
|
136
118
|
## 命令
|
|
137
119
|
|
|
138
120
|
```text
|
|
139
|
-
/revela
|
|
140
|
-
/revela enable 可选:让普通聊天保持 ambient narrative mode
|
|
141
|
-
/revela disable 关闭 ambient Revela mode
|
|
121
|
+
/revela show REVELA help
|
|
142
122
|
|
|
143
123
|
/revela init 初始化或刷新 narrative workspace state
|
|
144
124
|
/revela research 调研、绑定证据,并减少 story gaps/caveats
|
|
145
125
|
/revela story 打开只读 story workspace UI
|
|
146
|
-
/revela make deck
|
|
147
|
-
/revela make
|
|
148
|
-
/revela
|
|
149
|
-
/revela
|
|
150
|
-
/revela
|
|
151
|
-
/revela inspect deprecated,兼容到 /revela refine Inspect mode
|
|
152
|
-
|
|
153
|
-
/revela review legacy story readiness report
|
|
154
|
-
/revela narrative 兼容别名,等同 /revela story
|
|
155
|
-
/revela deck 兼容别名,等同 /revela make deck
|
|
156
|
-
/revela brief [file.md] 兼容别名,等同 /revela make brief
|
|
126
|
+
/revela make --deck 从已批准 story 生成 deck
|
|
127
|
+
/revela make --brief [file.md] 从已批准 story 渲染 executive brief
|
|
128
|
+
/revela refine --deck 打开统一的 deck 阅读、检查和编辑 workspace
|
|
129
|
+
/revela export --deck pdf [file] 将 HTML deck 导出为同目录 PDF
|
|
130
|
+
/revela export --deck pptx [file] [--notes] 将 HTML deck 导出为可编辑 PPTX
|
|
157
131
|
|
|
158
132
|
/revela design 列出已安装 design
|
|
159
|
-
/revela design use <name>
|
|
160
|
-
/revela design new <name>
|
|
161
|
-
/revela design edit <name>
|
|
162
|
-
/revela design preview [name]
|
|
163
|
-
/revela design add <source>
|
|
164
|
-
/revela design rm <name>
|
|
165
|
-
|
|
166
|
-
/revela
|
|
167
|
-
/revela
|
|
168
|
-
/revela
|
|
169
|
-
/revela
|
|
170
|
-
/revela designs-add <source> 从 URL、本地路径或 github:user/repo 安装 design
|
|
171
|
-
/revela designs-rm <name> 删除已安装 design
|
|
172
|
-
|
|
173
|
-
/revela domains 列出已安装 domain
|
|
174
|
-
/revela domains <name> 激活某个 domain
|
|
175
|
-
/revela domains-add <source> 从 URL、本地路径或 github:user/repo 安装 domain
|
|
176
|
-
/revela domains-rm <name> 删除已安装 domain
|
|
177
|
-
|
|
178
|
-
/revela pdf <file> 将 HTML deck 导出为同目录 PDF
|
|
179
|
-
/revela pptx <file> 将 HTML deck 导出为同目录可编辑 PPTX
|
|
133
|
+
/revela design --use <name> 激活某个 design
|
|
134
|
+
/revela design --new <name> 通过 AI 创建一个自定义 design
|
|
135
|
+
/revela design --edit <name> 通过 AI 调整已有自定义 design
|
|
136
|
+
/revela design --preview [name] 在浏览器中打开 design preview
|
|
137
|
+
/revela design --add <source> 从 URL、本地路径或 github:user/repo 安装 design
|
|
138
|
+
/revela design --rm <name> 删除已安装 design
|
|
139
|
+
|
|
140
|
+
/revela domain 列出已安装 domain
|
|
141
|
+
/revela domain --use <name> 激活某个 domain
|
|
142
|
+
/revela domain --add <source> 从 URL、本地路径或 github:user/repo 安装 domain
|
|
143
|
+
/revela domain --rm <name> 删除已安装 domain
|
|
180
144
|
```
|
|
181
145
|
|
|
182
|
-
大多数 `/revela` 命令都在本地执行,不消耗 LLM token。`/revela init`、`/revela research`、`/revela story`、`/revela
|
|
146
|
+
大多数 `/revela` 命令都在本地执行,不消耗 LLM token。`/revela init`、`/revela research`、`/revela story`、`/revela make --deck`、`/revela design --new`、`/revela design --edit` 和 `/revela export --deck pptx --notes` 会启动 AI 辅助流程,因为它们需要读取或更新项目状态。这些 workflow command 只在可见聊天里显示短意图,详细内部说明通过一次性的 system-prompt command intent 注入。`/revela refine --deck` 是统一的 post-artifact workspace,会打开一个本地浏览器 workspace,里面有 Edit 和 Inspect 两个 tab,并共享同一套 Cmd/Ctrl-click 元素引用。Edit 会把精准修改评论发回当前 OpenCode 会话;Inspect 会把 grounded selection context 发给当前 OpenCode 会话,并渲染本地化的 Narrative Reading、Exploratory Reading、Source、Purpose 卡片。确定性预处理保留为 fallback context,而不是默认先展示的 UI。如果生成结果缺少较新的 reading 卡片,Refine 会保留确定性 Narrative Reading 和 Exploratory Reading,而不是丢掉这些上下文。Narrative Reading 还会显示所选 canonical claim 的 artifact coverage,包括每个已记录 artifact 是否包含该 claim,以及 coverage 是 current、stale、partial 还是 missing。Exploratory Reading 明确是非官方阅读辅助,只能基于已记录 claim、evidence、caveat、objection、risk 和 artifact coverage。它没有聊天框,也不会修改 deck。`/revela edit` 和 `/revela inspect` 不再是公开命令;请使用 `/revela refine --deck`。
|
|
183
147
|
|
|
184
148
|
---
|
|
185
149
|
|
|
186
150
|
## 工作原理
|
|
187
151
|
|
|
188
|
-
显式 Revela workflow command 会把一次性 command instructions 追加到当前 agent 的 system prompt
|
|
152
|
+
显式 Revela workflow command 会把一次性 command instructions 追加到当前 agent 的 system prompt 中。你不需要先运行 ambient enable/disable;公开入口都在 `/revela` help 中列出。
|
|
189
153
|
|
|
190
|
-
默认 prompt 是 narrative-first:它遵循 `Init -> Research -> Story -> Make -> Refine`,关注受众信念变化、decision/action、thesis、claims、证据边界、objections、risks、research gaps 和 approval。Active design CSS、layout catalog、component index、chart rules 和 deck HTML skeleton 在 `/revela make deck` 切换到 deck-render mode 或 `/revela design` 进入显式设计工作流前不会注入。
|
|
154
|
+
默认 prompt 是 narrative-first:它遵循 `Init -> Research -> Story -> Make -> Refine -> Export`,关注受众信念变化、decision/action、thesis、claims、证据边界、objections、risks、research gaps 和 approval。Active design CSS、layout catalog、component index、chart rules 和 deck HTML skeleton 在 `/revela make --deck` 切换到 deck-render mode 或 `/revela design` 进入显式设计工作流前不会注入。
|
|
191
155
|
|
|
192
|
-
Deck-render mode 由
|
|
156
|
+
Deck-render mode 由 2 层组成:
|
|
193
157
|
|
|
194
158
|
1. `skill/SKILL.md` - 核心 deck-render 流程
|
|
195
|
-
2. 当前 active
|
|
196
|
-
|
|
159
|
+
2. 当前 active design - 视觉系统、layout、component 和图表规则
|
|
160
|
+
|
|
161
|
+
Active domain 只进入 narrative pipeline。它帮助 `init`、`research`、`story`
|
|
162
|
+
形成 canonical narrative;`make --deck` 只渲染已批准的 narrative,不再重复注入完整 domain prompt。
|
|
197
163
|
|
|
198
164
|
持久化配置保存在 `~/.config/revela/config.json`。
|
|
199
|
-
|
|
165
|
+
显式 workflow command 会自动选择 narrative 或 deck-render prompt mode。
|
|
200
166
|
|
|
201
167
|
### Workspace State
|
|
202
168
|
|
|
@@ -210,7 +176,7 @@ ambient enable/disable 状态只在当前会话生效。
|
|
|
210
176
|
- active HTML deck 以及派生 PDF、PPTX 等 render targets
|
|
211
177
|
- 带 input hash 的 review snapshots,使重要状态变化后旧的 readiness 自动变 stale
|
|
212
178
|
|
|
213
|
-
已有的根目录 `DECKS.json` 工作区继续兼容。对旧项目运行 `/revela init` 或 `/revela
|
|
179
|
+
已有的根目录 `DECKS.json` 工作区继续兼容。对旧项目运行 `/revela init` 或 `/revela story` 时,可以安全 normalize canonical narrative state 并刷新 projection 字段;用户不需要手动迁移、不需要移动文件,也不需要把 `DECKS.json` 换成数据库。`writeReadiness.status: "ready"` 只代表 deck/artifact readiness,永远不等于 narrative approval。
|
|
214
180
|
|
|
215
181
|
Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace state 渲染出来的目标之一。后续 briefs、appendix material、Evidence Inspector views、Q&A 和 interactive reading layers 都可以复用同一套来源/证据逻辑,而不是各自生成孤立内容。
|
|
216
182
|
|
|
@@ -224,26 +190,18 @@ Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace s
|
|
|
224
190
|
2. 如果 story gaps 或 unsupported central claims 需要外部证据,用 `/revela research` 定向调研;它应循环执行 research、证据绑定、claim/relation 收窄和 re-review,直到公开调研无法继续改善状态。
|
|
225
191
|
3. 用 `/revela story` 打开 story workspace UI,查看 claim flow、证据、caveats、research gaps、approval state 和 artifact coverage。
|
|
226
192
|
4. 批准 narrative 或要求修改。如果需要在完整战略批准前渲染,必须记录 explicit render override。
|
|
227
|
-
5. 运行 `/revela make deck`,把已批准 narrative 编译成 deck slide specs 并进入 deck-render mode,或运行 `/revela make brief` 渲染 executive brief。
|
|
228
|
-
6. 只在 deck handoff 阶段选择或确认 design
|
|
193
|
+
5. 运行 `/revela make --deck`,把已批准 narrative 编译成 deck slide specs 并进入 deck-render mode,或运行 `/revela make --brief` 渲染 executive brief。
|
|
194
|
+
6. 只在 deck handoff 阶段选择或确认 design;`/revela make --deck` 会在 deck plan 确认后运行 deck/artifact gate。
|
|
229
195
|
7. 只有 artifact gate ready 后,才让 agent 把 HTML deck 写到 `decks/` 下。
|
|
230
|
-
8. 用 `/revela refine` 对选中 deck 元素做可视化评论、精准修改、只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 检查,以及 claim-to-artifact coverage 查看。
|
|
231
|
-
9. post-artifact 修改统一使用 `/revela refine`;`/revela edit`
|
|
232
|
-
10. 用 `/revela pdf <file>` 或 `/revela pptx <file>` 导出。
|
|
233
|
-
|
|
234
|
-
只有当你希望普通聊天消息,而不只是显式 `/revela ...` 命令,也保持 Revela narrative mode 时,才需要使用 `/revela enable`。
|
|
196
|
+
8. 用 `/revela refine --deck` 对选中 deck 元素做可视化评论、精准修改、只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 检查,以及 claim-to-artifact coverage 查看。
|
|
197
|
+
9. post-artifact 修改统一使用 `/revela refine --deck`;`/revela edit` 和 `/revela inspect` 不再是公开命令。
|
|
198
|
+
10. 用 `/revela export --deck pdf <file>` 或 `/revela export --deck pptx <file>` 导出。
|
|
235
199
|
|
|
236
|
-
|
|
200
|
+
普通聊天不需要 ambient command。需要 Revela 工作流时,直接运行对应的 `/revela ...` 显式命令。
|
|
237
201
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
记住长期偏好请使用:
|
|
241
|
-
|
|
242
|
-
```text
|
|
243
|
-
/revela remember 我偏好中文、咨询风格、每页只表达一个核心观点。
|
|
244
|
-
```
|
|
202
|
+
`/revela story` 打开只读 story workspace UI,用于检查受众不清、缺信念变化、缺 decision/action、thesis 弱、central claims 无证据、evidence 弱、unsupported scope、objection 未处理、缺风险/假设处理、approval stale 或缺 approval。它不检查 design/layout readiness,也不会写最终 deck。
|
|
245
203
|
|
|
246
|
-
|
|
204
|
+
如果 Revela 阻止写入 deck,直接让 agent 继续 `/revela make --deck`,根据报告补齐 artifact 缺口后再写。这样可以避免在 slide specs、evidence projection、design/layout readiness、review snapshot 和 deck HTML contract 还不完整时覆盖真实 deck 文件。
|
|
247
205
|
|
|
248
206
|
---
|
|
249
207
|
|
|
@@ -295,7 +253,7 @@ Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace s
|
|
|
295
253
|
|
|
296
254
|
## Designs 与 Domains
|
|
297
255
|
|
|
298
|
-
用 `/revela design` 和 `/revela
|
|
256
|
+
用 `/revela design` 和 `/revela domain` 查看你当前环境里实际安装的内容。旧的 `/revela designs*` 和 `/revela domains*` 命令只显示迁移帮助,不再执行旧行为。
|
|
299
257
|
|
|
300
258
|
仓库内置的 domains:
|
|
301
259
|
|
|
@@ -322,8 +280,7 @@ Deck 仍然是主要 authored artifact,但现在它是从同一份 workspace s
|
|
|
322
280
|
你也可以让 Revela 交互式创建一个新的本地 design:
|
|
323
281
|
|
|
324
282
|
```text
|
|
325
|
-
/revela
|
|
326
|
-
/revela design new my-design
|
|
283
|
+
/revela design --new my-design
|
|
327
284
|
```
|
|
328
285
|
|
|
329
286
|
Agent 会先询问你的审美参考,整理设计 brief 并等待确认,然后把 `DESIGN.md` 和 `preview.html` 保存到本地 Revela designs 目录。对 AI 生成的 design,`preview.html` 是必需验收面:它必须包含 cover 和 closing 页,并且必须展示所有 `@component:*`,否则 `revela-designs-author` 不会接受这个包。默认结构底座是内部中性 `starter` design,它不会出现在普通 design 列表中。只有当你明确想从 `summit` 或 `monet` 的具体风格派生时,才建议使用 `--base summit` 或 `--base monet`。
|
|
@@ -331,8 +288,7 @@ Agent 会先询问你的审美参考,整理设计 brief 并等待确认,然
|
|
|
331
288
|
调整已有本地 design:
|
|
332
289
|
|
|
333
290
|
```text
|
|
334
|
-
/revela
|
|
335
|
-
/revela design edit my-design
|
|
291
|
+
/revela design --edit my-design
|
|
336
292
|
```
|
|
337
293
|
|
|
338
294
|
Agent 会询问你想修改什么,读取当前 design,整理 edit brief 并等待确认,然后通过受控 authoring tool 覆盖保存本地 design 包。
|
|
@@ -340,8 +296,7 @@ Agent 会询问你想修改什么,读取当前 design,整理 edit brief 并
|
|
|
340
296
|
在浏览器中打开某个 design 的 preview:
|
|
341
297
|
|
|
342
298
|
```text
|
|
343
|
-
/revela
|
|
344
|
-
/revela design preview my-design
|
|
299
|
+
/revela design --preview my-design
|
|
345
300
|
```
|
|
346
301
|
|
|
347
302
|
省略 name 时会打开当前 active design 的 preview。如果该 design 没有 `preview.html`,Revela 会提示没有可用 preview。
|
|
@@ -548,9 +503,9 @@ Prompt 注入规则:
|
|
|
548
503
|
安装自定义 design:
|
|
549
504
|
|
|
550
505
|
```text
|
|
551
|
-
/revela design add github:your-org/your-design
|
|
552
|
-
/revela design add https://example.com/my-design.zip
|
|
553
|
-
/revela design add ./path/to/local/design-folder
|
|
506
|
+
/revela design --add github:your-org/your-design
|
|
507
|
+
/revela design --add https://example.com/my-design.zip
|
|
508
|
+
/revela design --add ./path/to/local/design-folder
|
|
554
509
|
```
|
|
555
510
|
|
|
556
511
|
---
|
|
@@ -560,7 +515,7 @@ Prompt 注入规则:
|
|
|
560
515
|
自定义 domain 是一个包含 `INDUSTRY.md` 的文件夹。
|
|
561
516
|
|
|
562
517
|
```text
|
|
563
|
-
/revela
|
|
518
|
+
/revela domain --add github:your-org/your-domain
|
|
564
519
|
```
|
|
565
520
|
|
|
566
521
|
`INDUSTRY.md` 是为兼容历史版本保留的文件名。
|
|
@@ -572,10 +527,10 @@ Prompt 注入规则:
|
|
|
572
527
|
正常的写后 review 和修改建议使用统一 refinement workspace:
|
|
573
528
|
|
|
574
529
|
```text
|
|
575
|
-
/revela refine
|
|
530
|
+
/revela refine --deck
|
|
576
531
|
```
|
|
577
532
|
|
|
578
|
-
`/revela refine` 会打开 active HTML deck,并提供两个 tab。使用 `Ctrl`/`Cmd` + click 先引用 deck 元素,然后在 Edit 里快速写自然语言修改评论,或在 Inspect 里做只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 和 artifact coverage 检查。Inspect 不会修改 deck;真正的 mutation 仍然只走 Edit。这是 post-artifact 阅读、检查和编辑的推荐入口。
|
|
533
|
+
`/revela refine --deck` 会打开 active HTML deck,并提供两个 tab。使用 `Ctrl`/`Cmd` + click 先引用 deck 元素,然后在 Edit 里快速写自然语言修改评论,或在 Inspect 里做只读 Narrative Reading、有边界的 Exploratory Reading、Source、Purpose 和 artifact coverage 检查。Inspect 不会修改 deck;真正的 mutation 仍然只走 Edit。这是 post-artifact 阅读、检查和编辑的推荐入口。
|
|
579
534
|
|
|
580
535
|
已移除命令:
|
|
581
536
|
|
|
@@ -583,25 +538,25 @@ Prompt 注入规则:
|
|
|
583
538
|
/revela edit
|
|
584
539
|
```
|
|
585
540
|
|
|
586
|
-
`/revela edit` 已移除。请使用 `/revela refine` 打开统一的阅读、检查和编辑 workspace。
|
|
541
|
+
`/revela edit` 已移除。请使用 `/revela refine --deck` 打开统一的阅读、检查和编辑 workspace。
|
|
587
542
|
|
|
588
543
|
使用 `Ctrl`/`Cmd` + 点击 deck 元素来引用它们,在 Edit tab 写一段自然语言评论,然后发送回 OpenCode。Revela 会把 deck 文件、slide 上下文、选中元素 metadata 和你的评论整理成结构化 edit prompt。
|
|
589
544
|
|
|
590
545
|
对应的 LLM tool:`revela-edit`,不需要 target。这个 tool 仍作为兼容入口保留,当你说“我要编辑这个 deck”时,agent 会打开 Refine 的 Edit mode。
|
|
591
546
|
|
|
592
|
-
对于已有 HTML deck,`/revela refine` 会自动准备必要的最小项目上下文,让后续精准修改仍然经过正常安全检查。
|
|
547
|
+
对于已有 HTML deck,`/revela refine --deck` 会自动准备必要的最小项目上下文,让后续精准修改仍然经过正常安全检查。
|
|
593
548
|
|
|
594
549
|
---
|
|
595
550
|
|
|
596
551
|
## Evidence Inspector
|
|
597
552
|
|
|
598
|
-
用 `/revela refine` 做 evidence inspection 和 narrative reading
|
|
553
|
+
用 `/revela refine --deck` 做 evidence inspection 和 narrative reading。已移除的兼容命令:
|
|
599
554
|
|
|
600
555
|
```text
|
|
601
556
|
/revela inspect
|
|
602
557
|
```
|
|
603
558
|
|
|
604
|
-
`/revela inspect` 不再打开独立 inspector shell
|
|
559
|
+
`/revela inspect` 不再打开独立 inspector shell。请使用 `/revela refine --deck` 的 Inspect tab。Inspect tab 会在固定 Source 和 Purpose 卡片之外显示 Narrative Reading 和 Exploratory Reading 卡片。当选中元素能映射到 canonical narrative state 时,Narrative Reading 会保留 canonical claim id、evidence binding id、supported scope、unsupported scope、caveat、objection、risk 和 artifact coverage。Coverage 会显示所选 claim 是否出现在已记录的 deck/brief/export artifact 中,以及这些 artifact 相对当前 narrative hash 是 current、stale、partial 还是 missing。Exploratory Reading 提供非官方的 objection prep、audience reframing 边界、appendix leads 和 meeting-prep cues,并且只能使用同一份已记录 context。使用 `Ctrl`/`Cmd` + click 引用 deck 元素,然后点击 `Inspect Selection`。请求处理期间,deck 选择会被锁定。
|
|
605
560
|
|
|
606
561
|
Inspector 不是聊天,也没有自由输入框。它不会修改 `DECKS.json` 或 deck HTML。它使用已记录的 slide spec、narrative state 和 slide-level evidence trace 作为 grounded context。Inspect 的用户界面是 LLM-first:先显示 reading/loading 状态,再渲染结构化生成卡片。确定性预处理仍作为内部 fallback context,仅在生成失败或超时时显示。Inspect tab 提供固定 display-language 下拉选项;语言只影响卡片文案,不会改变 claim id、evidence id、source path、URL、数字、引用或 canonical facts。如果旧版或不完整的生成结果只返回 Source/Purpose,Refine 会保留确定性 reading 卡片,避免 generated inspection 静默移除 claim、evidence boundary、artifact coverage 或 exploratory context。
|
|
607
562
|
|
|
@@ -614,7 +569,7 @@ Refine 会使用 workspace state 中记录的 active HTML deck render target。D
|
|
|
614
569
|
PDF 导出:
|
|
615
570
|
|
|
616
571
|
```text
|
|
617
|
-
/revela pdf decks/my-deck.html
|
|
572
|
+
/revela export --deck pdf decks/my-deck.html
|
|
618
573
|
```
|
|
619
574
|
|
|
620
575
|
对应的 LLM tool:`revela-pdf`,参数为 `{ "file": "decks/my-deck.html" }`。
|
|
@@ -622,12 +577,12 @@ PDF 导出:
|
|
|
622
577
|
可编辑 PPTX 导出:
|
|
623
578
|
|
|
624
579
|
```text
|
|
625
|
-
/revela pptx decks/my-deck.html
|
|
580
|
+
/revela export --deck pptx decks/my-deck.html
|
|
626
581
|
```
|
|
627
582
|
|
|
628
583
|
对应的 LLM tool:`revela-pptx`,参数为 `{ "file": "decks/my-deck.html" }`。
|
|
629
584
|
|
|
630
|
-
命令和 tool 都会把结果写到源 HTML deck 同目录。如果希望 agent 在 deck 工作流中自动完成导出,可以让它调用 tool,而不需要用户手动执行 `/revela pdf` 或 `/revela pptx`。
|
|
585
|
+
命令和 tool 都会把结果写到源 HTML deck 同目录。如果希望 agent 在 deck 工作流中自动完成导出,可以让它调用 tool,而不需要用户手动执行 `/revela export --deck pdf` 或 `/revela export --deck pptx`。
|
|
631
586
|
|
|
632
587
|
---
|
|
633
588
|
|
|
@@ -32,8 +32,8 @@ Starter is the neutral structural base for generating new Revela designs. It sho
|
|
|
32
32
|
--accent-soft: #dbeafe;
|
|
33
33
|
--accent-danger: #dc2626;
|
|
34
34
|
--shadow-soft: rgba(15, 23, 42, 0.16);
|
|
35
|
-
--font-display: '
|
|
36
|
-
--font-body: '
|
|
35
|
+
--font-display: 'Montserrat', ui-sans-serif, sans-serif;
|
|
36
|
+
--font-body: 'Montserrat', ui-sans-serif, sans-serif;
|
|
37
37
|
--font-size-body: 17px;
|
|
38
38
|
--font-size-meta: 12px;
|
|
39
39
|
--font-size-body-strong: 20px;
|
|
@@ -48,13 +48,13 @@ Accent usage guidance:
|
|
|
48
48
|
|
|
49
49
|
### Typography
|
|
50
50
|
|
|
51
|
-
- **Display / heading font**: `
|
|
52
|
-
- **Body font**: `
|
|
51
|
+
- **Display / heading font**: `Montserrat` — geometric sans-serif base for all headings and display text
|
|
52
|
+
- **Body font**: `Montserrat` — geometric sans-serif base for copy, captions, labels, and UI text
|
|
53
53
|
- Font link tag:
|
|
54
54
|
```html
|
|
55
55
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
56
56
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
57
|
-
<link href="https://fonts.googleapis.com/css2?family=
|
|
57
|
+
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
58
58
|
```
|
|
59
59
|
- cover h1: `88px` to `116px`, weight `700` to `800`, line-height `0.92` to `1.0`
|
|
60
60
|
- inner-layout h2: `34px` to `56px`, weight `650` to `800`, line-height `1.02` to `1.12`
|
|
@@ -114,7 +114,7 @@ Every generated presentation must use this exact HTML skeleton:
|
|
|
114
114
|
<title>{Presentation Title}</title>
|
|
115
115
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
116
116
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
117
|
-
<link href="https://fonts.googleapis.com/css2?family=
|
|
117
|
+
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
118
118
|
<!-- <script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script> only if charts are needed -->
|
|
119
119
|
<style>/* all CSS here */</style>
|
|
120
120
|
</head>
|
|
@@ -655,17 +655,36 @@ Full-bleed cover, section divider, closing, or strong visual statement with opti
|
|
|
655
655
|
Table of contents or section index.
|
|
656
656
|
|
|
657
657
|
```html
|
|
658
|
-
<div class="toc-panel"
|
|
658
|
+
<div class="toc-panel">
|
|
659
|
+
<div class="toc-panel-inner">
|
|
660
|
+
<div class="toc-header">
|
|
661
|
+
<h2>Table of<br>Contents</h2>
|
|
662
|
+
<p class="toc-note">Brief context note describing the scope of the sections that follow.</p>
|
|
663
|
+
<p class="toc-footer">Creative-Curious-Cooperation</p>
|
|
664
|
+
</div>
|
|
665
|
+
<ol class="toc-list">
|
|
666
|
+
<li class="toc-item"><span>01</span><strong>The vision of a changing world</strong></li>
|
|
667
|
+
<li class="toc-item"><span>02</span><strong>Smart home solutions</strong></li>
|
|
668
|
+
<li class="toc-item"><span>03</span><strong>Smart city innovations</strong></li>
|
|
669
|
+
<li class="toc-item"><span>04</span><strong>Smart office revolution</strong></li>
|
|
670
|
+
<li class="toc-item"><span>05</span><strong>Wearable technology</strong></li>
|
|
671
|
+
<li class="toc-item"><span>06</span><strong>The future of connected work</strong></li>
|
|
672
|
+
</ol>
|
|
673
|
+
</div>
|
|
674
|
+
</div>
|
|
659
675
|
```
|
|
660
676
|
|
|
661
677
|
```css
|
|
662
|
-
.toc-panel { height: 100%; padding:
|
|
663
|
-
.toc-panel-inner { display:
|
|
664
|
-
.toc-header {
|
|
665
|
-
.toc-
|
|
666
|
-
.toc-
|
|
667
|
-
.toc-
|
|
668
|
-
.toc-
|
|
678
|
+
.toc-panel { height: 100%; padding: 86px 118px 58px; display: flex; overflow: hidden; background: var(--bg-page); }
|
|
679
|
+
.toc-panel-inner { width: 100%; display: grid; grid-template-columns: 37% 1fr; align-items: stretch; gap: 76px; }
|
|
680
|
+
.toc-header { display: flex; flex-direction: column; min-height: 100%; }
|
|
681
|
+
.toc-header h2 { margin-top: 32px; max-width: 360px; font-size: 46px; line-height: 1.04; letter-spacing: 0.02em; text-transform: uppercase; font-weight: 650; }
|
|
682
|
+
.toc-note { margin-top: 230px; margin-bottom: 0; max-width: 300px; font-size: 14px; line-height: 1.7; letter-spacing: 0.02em; color: var(--text-muted); }
|
|
683
|
+
.toc-footer { margin-top: auto; font-size: 11px; line-height: 1.4; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 750; color: var(--text-primary); }
|
|
684
|
+
.toc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; gap: 42px; height: 100%; }
|
|
685
|
+
.toc-item { display: grid; grid-template-columns: 80px 1fr; gap: 44px; align-items: center; }
|
|
686
|
+
.toc-item span { font-style: normal; font-family: var(--font-display); font-size: 42px; line-height: 1; letter-spacing: 0.03em; color: var(--text-primary); font-variant-numeric: tabular-nums; }
|
|
687
|
+
.toc-item strong { font-size: 17px; line-height: 1.35; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 500; color: var(--text-primary); }
|
|
669
688
|
```
|
|
670
689
|
<!-- @component:toc:end -->
|
|
671
690
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>Starter Design System — Preview</title>
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
-
<link href="https://fonts.googleapis.com/css2?family=
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
10
10
|
<script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
|
|
11
11
|
<style>
|
|
12
12
|
:root {
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
--accent-soft: #dbeafe;
|
|
26
26
|
--accent-danger: #dc2626;
|
|
27
27
|
--shadow-soft: rgba(15, 23, 42, 0.16);
|
|
28
|
-
--font-display: '
|
|
29
|
-
--font-body: '
|
|
28
|
+
--font-display: 'Montserrat', ui-sans-serif, sans-serif;
|
|
29
|
+
--font-body: 'Montserrat', ui-sans-serif, sans-serif;
|
|
30
30
|
--font-size-body: 17px;
|
|
31
31
|
--font-size-meta: 12px;
|
|
32
32
|
}
|
|
@@ -124,13 +124,16 @@
|
|
|
124
124
|
.image-title h1 { color: #f8fafc; font-size: 104px; line-height: 0.92; letter-spacing: -0.055em; }
|
|
125
125
|
.image-title-eyebrow { font-size: 12px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(248,250,252,0.62); margin-bottom: 20px; }
|
|
126
126
|
.image-title-subtitle { margin-top: 24px; font-size: 18px; line-height: 1.56; color: rgba(248,250,252,0.78); max-width: 520px; }
|
|
127
|
-
.toc-panel { height: 100%; padding:
|
|
128
|
-
.toc-panel-inner { display:
|
|
129
|
-
.toc-header {
|
|
130
|
-
.toc-
|
|
131
|
-
.toc-
|
|
132
|
-
.toc-
|
|
133
|
-
.toc-
|
|
127
|
+
.toc-panel { height: 100%; padding: 86px 118px 58px; display: flex; overflow: hidden; background: var(--bg-page); }
|
|
128
|
+
.toc-panel-inner { width: 100%; display: grid; grid-template-columns: 37% 1fr; align-items: stretch; gap: 76px; }
|
|
129
|
+
.toc-header { display: flex; flex-direction: column; min-height: 100%; }
|
|
130
|
+
.toc-header h2 { margin-top: 32px; max-width: 360px; font-size: 46px; line-height: 1.04; letter-spacing: 0.02em; text-transform: uppercase; font-weight: 650; }
|
|
131
|
+
.toc-note { margin-top: 230px; margin-bottom: 0; max-width: 300px; font-size: 14px; line-height: 1.7; letter-spacing: 0.02em; color: var(--text-muted); }
|
|
132
|
+
.toc-footer { margin-top: auto; font-size: 11px; line-height: 1.4; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 750; color: var(--text-primary); }
|
|
133
|
+
.toc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; gap: 42px; height: 100%; }
|
|
134
|
+
.toc-item { display: grid; grid-template-columns: 80px 1fr; gap: 44px; align-items: center; }
|
|
135
|
+
.toc-item span { font-style: normal; font-family: var(--font-display); font-size: 42px; line-height: 1; letter-spacing: 0.03em; color: var(--text-primary); font-variant-numeric: tabular-nums; }
|
|
136
|
+
.toc-item strong { font-size: 17px; line-height: 1.35; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 500; color: var(--text-primary); }
|
|
134
137
|
.quote-block { height: 100%; display: flex; flex-direction: column; justify-content: center; gap: 24px; max-width: 980px; }
|
|
135
138
|
.quote-mark { font-size: 96px; line-height: 0.7; color: var(--accent-primary); }
|
|
136
139
|
.quote-block blockquote { font-family: var(--font-display); font-size: 54px; line-height: 1.06; letter-spacing: -0.04em; color: var(--text-primary); }
|
|
@@ -204,13 +207,17 @@
|
|
|
204
207
|
<div class="page" style="padding:0;">
|
|
205
208
|
<div class="toc-panel">
|
|
206
209
|
<div class="toc-panel-inner">
|
|
207
|
-
<div class="toc-header reveal"
|
|
208
|
-
|
|
209
|
-
<
|
|
210
|
-
<
|
|
211
|
-
<div class="toc-item"><span>03</span><strong>Data, flow, and evidence</strong><em>05</em></div>
|
|
212
|
-
<div class="toc-item"><span>04</span><strong>Motifs and closing states</strong><em>06</em></div>
|
|
210
|
+
<div class="toc-header reveal">
|
|
211
|
+
<h2>Table of<br>Contents</h2>
|
|
212
|
+
<p class="toc-note">Starter preview demonstrates the core structure available to derived themes.</p>
|
|
213
|
+
<p class="toc-footer">Structure-First-Design</p>
|
|
213
214
|
</div>
|
|
215
|
+
<ol class="toc-list reveal">
|
|
216
|
+
<li class="toc-item"><span>01</span><strong>Foundation and visual schema</strong></li>
|
|
217
|
+
<li class="toc-item"><span>02</span><strong>Layouts and content modules</strong></li>
|
|
218
|
+
<li class="toc-item"><span>03</span><strong>Data flow and evidence</strong></li>
|
|
219
|
+
<li class="toc-item"><span>04</span><strong>Motifs and closing states</strong></li>
|
|
220
|
+
</ol>
|
|
214
221
|
</div>
|
|
215
222
|
<div class="page-number">02</div>
|
|
216
223
|
</div>
|