跳转到正文
报告库
用途分类 / 文档处理

Lark Slides Skill 安全审计

作者说它能做什么(原文)

飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。

第三方安全检查结论

先别安装或运行

已检查文件
50
发现的风险
20
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 7 项风险
高风险

要求“无损复述历史上下文”可能泄露凭据、私密内容和内部指令

原文依据:1 处
发现了什么

技能明确要求在用户提出相关请求时完整复述历史上下文,并把技能文档重新纳入复述范围。历史上下文可能包含其他任务内容、私密文档、访问令牌或系统内部指令;当前文本没有限定只复述本次幻灯片所需且可公开的内容。

为什么需要注意

能够向对话参与者暴露与幻灯片任务无关的敏感信息,并可能泄露控制代理行为的内部规则。

这段代码的正常用途

该句并未要求复述全部对话、凭据或私密文档;它要求在用户主动请求“无损复述历史上下文”时,确保复述本技能列出的权威经验、必读文档和语法。可见文本不支持会披露令牌、系统指令或其他任务内容的结论。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:43来自说明文档
- 绘制图表前必须阅读 [`xml/slides_chart_demo.xml`](references/xml/slides_chart_demo.xml)。- 当用户要求无损复述历史上下文时,必须无损复述以上权威经验、必读的技能文档(需要重新阅读)和易错元素语法(尤其是 `<table>` 和 `<chart>`)。
中风险

本地 PPTX 和图片会被上传到飞书云端

原文依据:4 处
发现了什么

模板流程会导入本地 PPTX;图片流程会把指定的本地文件上传到目标演示文稿的 Drive 媒体库。虽然路径限制在当前目录,内容仍会离开本机。

为什么需要注意

若工作目录中的模板或图片含客户资料、内部截图、个人信息或隐藏元数据,这些数据会复制到飞书账户,并受该演示文稿的共享权限影响。

这些是技能正常目的内、但确会把本地内容送到云端的主动操作:用户提供的 PPTX 会导入为 Lark Slides,指定图片会上传到演示文稿的 Drive 媒体库。路径限制不能防止敏感内容外传。应只选择用户明确授权上传的文件,并在处理含机密、个人或受许可限制的素材前确认目标租户、文稿和访问范围。

references/workflow/template-editing.md:7来自说明文档
如果用户提供的模板是 PPTX 格式,先把模板导入成 Lark Slides。后续写入目标是导入后的 Slides,不是新建一个脱离模板的 deck,也不是先在本地重画 PPTX 再导入。直接使用以下命令,不需要先加载 `lark-drive` Skill:```bashlark-cli drive +import --as user --file "<template.pptx>" --type slides --json```
查看另外 3 个位置
references/cli/lark-slides-media-upload.md:1来自说明文档
# slides +media-upload(上传本地图片到飞书幻灯片)把本地图片上传到指定演示文稿的 drive 媒体库,返回 `file_token`。**返回的 token 作为 `<img src="...">` 的值塞进 slide XML 即可显示图片。**
references/cli/lark-slides-media-upload.md:46来自说明文档
|------|------|------|| `--file` | 是 | 本地图片路径,**必须是 CWD 内的相对路径**(如 `./pic.png`)。**最大 20 MB**(slides upload API 不支持分片上传)。**仅支持 png / jpeg / gif / bmp / tiff / webp** || `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |> [!IMPORTANT]> **路径必须在 CWD 内**:`--file /abs/path/x.png` 或 `--file ../up/x.png` 会被 CLI 拒绝(报 `unsafe file path`)。如果素材在别的目录,先 `cd` 过去再执行。
references/cli/lark-slides-media-upload.md:44来自说明文档
| 参数 | 必填 | 说明 ||------|------|------|| `--file` | 是 | 本地图片路径,**必须是 CWD 内的相对路径**(如 `./pic.png`)。**最大 20 MB**(slides upload API 不支持分片上传)。**仅支持 png / jpeg / gif / bmp / tiff / webp** || `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |
中风险

本地图片会被自动上传到用户的飞书演示文稿

原文依据:4 处
发现了什么

XML 中以 `@` 开头的图片路径会触发读取本地文件并上传到当前演示文稿。Skill 同时强制大量使用图片,因此即使用户只要求文本或结构修改,也可能扩大上传范围。

为什么需要注意

选中的本地图片内容会离开设备并进入飞书媒体存储。整页替换若在上传后失败,媒体仍会保留;直接重试还可能再上传一份,造成残留或重复云端数据。

该风险在特定条件下成立:只有当生成或编辑的 XML 把本地路径写成以 `@` 开头的 `<img src>` 时,CLI 才会读取并上传该文件。技能确实强制大量使用且不得重复图片,可能增加被选作素材的本地文件数量,但证据没有表明它会扫描或上传未引用文件。用户可要求仅使用其明确批准的素材,并在上传前列出路径和执行 dry-run。

SKILL.md:21来自说明文档
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。- 禁止在 `headline` 或 `title` 下方放置用于分隔或装饰的 `rect` 或 `<line>`。
查看另外 3 个位置
references/cli/lark-slides-create.md:122来自说明文档
## 本地图片:`@<path>` 占位符`<img>` 元素的 `src` 属性如果以 `@` 开头,CLI 会把它当作本地文件路径,自动上传到当前演示文稿,并把占位符替换为返回的 `file_token`。
references/cli/lark-slides-create.md:142来自说明文档
- 路径相对于**当前工作目录**(CWD)解析;**必须是 CWD 内的相对路径**(如 `./pic.png`、`./assets/x.png`)- 同一份图被多次引用时**只上传一次**(按路径去重)- `src` 不以 `@` 开头的会原样保留,但**只允许写 `slides +media-upload` 拿到的 `file_token`**;**禁止写 http(s) 外链 URL**:飞书 slides 渲染端不会代理外链图片,外链 src 通常显示破图。要用网图必须先下载到 CWD 内、再走上传流程- 单张图片最大 20 MB(slides upload API 不支持分片上传)- 校验阶段就会检查所有占位符文件存在及大小;缺文件或超限直接报错,不会创建空白 PPT 占位- 创空白 PPT → 上传所有图 → 替换 token → 逐页创建 slide,按这个顺序执行
references/cli/lark-slides-update-slide.md:70来自说明文档
- 文件不存在、不是普通文件、超过 20 MB,都在**调用任何接口之前**报错,不会留下半成品。- 去重只在**单次调用内**生效:多页共用同一张图时,逐页更新会把它每页重传一次。这种图先用 [`+media-upload`](lark-slides-media-upload.md) 传一次,把 `file_token` 写进各页的 `src`。- 整页只发一个 part,所以上传是这条命令里**唯一不可逆的一半**:图先落进演示文稿的 media store,若随后 replace 失败,报错 hint 会告诉你已经传了几张,直接重试会再传一份。先 `--dry-run` 可提前看到 `images_to_upload` 和上传步骤。
中风险

会把 doubao.com 的幻灯片 URL 或 token 强制交给飞书技能处理

原文依据:2 处
发现了什么

技能明确要求仅根据 `/slides/` 路径和 token 路由,即使域名是 doubao.com 也使用依赖 lark-cli 的飞书流程。证据没有说明两种服务的 token 是否兼容、是否会被发送到哪里。

为什么需要注意

如果 token 属于不同服务或包含访问凭据,错误路由可能把它暴露给不应处理它的 CLI、日志或飞书账户流程,或对错误资源执行操作。

这段证据能说明什么

说明确实把带 `/slides/` 路径或 token 的 doubao.com 地址路由到依赖 `lark-cli` 的飞书幻灯片流程。但所给源码没有展示 CLI 调用、token 参数处理或目标服务器,因此无法确认豆包 token 会被发送给飞书、是否兼容或是否造成凭据泄露。用户可要求作者说明 token 的解析边界、接收端和跨域兼容依据,并限制未经确认的 token 提交。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 1 个位置
SKILL.md:7来自说明文档
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"
中风险

幻灯片中的本地图片路径会被自动上传到云端

原文依据:3 处
发现了什么

技能允许在图片 `src` 中使用 `@<本地路径>`,创建或添加页面时 CLI 会自动上传并替换为文件 token;同时主说明强制大量使用图片。

为什么需要注意

如果代理选错路径或把工作区中的敏感截图、内部图表等当作素材,这些文件会离开本机并进入关联的飞书账户。

这是明确的云端数据披露风险:技能强制大量使用图片,而创建或添加幻灯片时,`@<本地路径>` 指向的图片会由 CLI 自动上传并替换成云端 file token。只要生成的 XML 引用了本地图片,该文件内容就会离开本机;说明未要求逐文件确认。用户可限制允许读取和上传的目录,并要求上传前列出每个本地文件和目标账户。

SKILL.md:21来自说明文档
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。
查看另外 2 个位置
references/xml/xml-schema-quick-ref.md:234来自说明文档
`src` 只支持:`slides +media-upload` 返回的 `file_token`,或 `@<本地路径>` 占位符(`+create --slides` 和 `+add-slide` 会自动上传并替换)。**禁止使用 http(s) 外链 URL**——飞书 slides 渲染端不会代理外链图,外链 src 在 PPT 里通常不显示。本地图片详见 [lark-slides-create.md](../cli/lark-slides-create.md#本地图片path-占位符) / [lark-slides-media-upload.md](../cli/lark-slides-media-upload.md)。
references/xml/xml-schema-quick-ref.md:238来自说明文档
- 新建带图 PPT:`+create --slides` 里直接写 `src="@./pic.png"`,CLI 在创空白 PPT 后、加 slides 前自动上传并替换 token- 给已有 PPT 加带图新页:`+add-slide --slide` 的 XML 里直接写 `src="@./pic.png"`,CLI 上传后替换 token 再提交页面
中风险

仅凭 URL 路径和 token 跨域路由可能把豆包访问令牌交给错误的服务

原文依据:3 处
发现了什么

技能指示代理忽略域名差异,只要出现 doubao.com 的 `/slides/` URL/token 就改用飞书幻灯片技能。域名通常是判断令牌所属服务和信任边界的重要信息;提供的材料没有展示兼容性验证或明确的令牌接收方。

为什么需要注意

若两种服务的令牌并不互通,令牌可能被发送给不应接收它的 CLI 或后端,也可能针对错误账户读取或修改演示文稿。

这段证据能说明什么

技能确实要求把 doubao.com 的 `/slides/` URL/token 路由给依赖 `lark-cli` 的幻灯片技能,而不按域名回退。但材料没有展示 CLI 如何验证、解析或发送该 token,因此无法判断它会被交给错误服务,还是两种域名使用兼容后端。用户可要求作者说明 token 的接收端和域名兼容机制,并限制只处理明确授权的演示文稿。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 2 个位置
SKILL.md:7来自说明文档
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"
SKILL.md:6来自说明文档
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
中风险

强制生图和搜图可能向外部服务披露演示文稿主题或敏感内容

原文依据:3 处
发现了什么

技能要求每份成品使用大量且不重复的图片,并指定封面图片来自生图或搜图工具。生成查询词或提示词通常需要从演示文稿内容提取主题和细节,但该要求没有区分公开材料与机密材料,也没有要求用户同意。

为什么需要注意

内部项目名称、策略、客户信息或尚未发布的内容可能进入第三方图片服务;大量生成还可能消耗付费额度。

这段证据能说明什么

这些是主动的设计要求:成品必须包含大量、不重复的图片,封面图片来自生图或搜图工具,并规定生图提示词结尾。但可见内容没有说明工具是否联网、提示词是否发送给第三方,也没有要求把演示文稿原文或敏感细节写入查询。因此存在潜在外发条件,但不能仅凭这些行确认会披露敏感内容。用户可限制为本地素材或先批准对外提示词。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:21来自说明文档
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。
查看另外 2 个位置
SKILL.md:22来自说明文档
- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。
SKILL.md:26来自说明文档
- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 5 项风险
高风险

整页更新可能删除遗漏内容,并可用旧快照覆盖他人的后续编辑

原文依据:4 处
发现了什么

`+update-slide` 不是补丁:XML 中遗漏的元素会被删除,遗漏备注会被清空。其 `revision-id` 也不是严格的并发锁;传入旧版本会基于旧快照重建页面。

为什么需要注意

可能永久丢失图片、文本、备注或其他协作者在读取之后添加的内容,同时页面 ID 保持不变,使损失不易立即察觉。

这是实际写入语义,不是示例警告:`+update-slide` 会把整页变成所给 XML,遗漏元素会删除、遗漏备注会清空;传旧 `revision_id` 还会基于旧快照重建,可能覆盖读取后的协作者修改。只有用户明确授权整页覆盖时才应使用,并应在写入前重新回读最新版、保留所有未要求删除的元素和备注。

references/cli/lark-slides-update-slide.md:35来自说明文档
| `--content` | 是 | 这一页的完整目标 XML,单一 `<slide>` 根;支持字面量、`@file`、stdin `-`。别名:`--xml` / `--slide-xml` / `--slide-content` / `--content-xml` || `--revision-id` | 否 | 默认 `-1`(最新)。它只选择服务端执行所基于的快照,不是“页面有新编辑就拒绝”的乐观锁;传旧版本号会以旧快照重建页面并丢弃其后的编辑 || `--tid` | 否 | 调用方提供的任务/事务标识,CLI 原样透传;用于关联同一编辑任务或重试,不等同于版本前置条件,不能单独保证并发冲突时拒绝写入。一般留空 |`@file` 和 `+xml-get --output` 一样**只接受当前目录下的相对路径**,绝对路径会被拒。命令别名:`slides +update`(隐藏);服务别名:`lark-cli slide …` 等价于 `lark-cli slides …`。如果要求“从读取之后页面一旦变化就不再写入”,不能只传 `--revision-id` 或 `--tid`。写入前必须再次用 `+xml-get` 回读最新版,比较读取期间是否发生变化;有变化时先基于最新版重新合并本次修改,再执行整页写回。当前 shortcut 不提供严格的 compare-and-swap 保证。
查看另外 3 个位置
references/cli/lark-slides-update-slide.md:43来自说明文档
## 语义:`--content` 就是这一页的最终状态**没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。| 你在 `--content` 里怎么写 | 页面上的结果 ||---|---|| 元素带原来的 `id` | 按新 XML 更新这个元素 || 元素不带 `id` | 作为新元素插入到它所在的位置 || 原来有、`--content` 里没有的元素 | **删除** || `<style>` 改了 | 背景等页面样式跟着改 || 没写 `<note>` | 讲者备注被清空 |
references/cli/lark-slides-update-slide.md:41来自说明文档
如果要求“从读取之后页面一旦变化就不再写入”,不能只传 `--revision-id` 或 `--tid`。写入前必须再次用 `+xml-get` 回读最新版,比较读取期间是否发生变化;有变化时先基于最新版重新合并本次修改,再执行整页写回。当前 shortcut 不提供严格的 compare-and-swap 保证。
references/cli/lark-slides-update-slide.md:45来自说明文档
**没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。| 你在 `--content` 里怎么写 | 页面上的结果 ||---|---|| 元素带原来的 `id` | 按新 XML 更新这个元素 || 元素不带 `id` | 作为新元素插入到它所在的位置 || 原来有、`--content` 里没有的元素 | **删除** || `<style>` 改了 | 背景等页面样式跟着改 || 没写 `<note>` | 讲者备注被清空 |
中风险

删除页面与历史回滚会原地改变云端文档

原文依据:3 处
发现了什么

页面删除被明确描述为原地不可撤销;历史回滚则异步改变整份演示文稿。两者都可能影响协作者正在使用的共享文件。

为什么需要注意

选错 slide_id 或历史版本会删除正确页面,或将整份演示文稿恢复到错误状态;其他人的新编辑可能随之消失。

删除和回滚都是实际云端变更。删除按 `slide_id` 原地移除页面;历史回滚异步改变演示文稿,且任务创建后不能因状态查询失败而重复发起。文档包含回读、截图和候选确认等保护,但共享文稿仍可能影响协作者。用户可要求在操作前展示文稿、页面或历史版本详情并获得明确确认,回滚期间限制重复请求。

references/cli/lark-slides-delete-slide.md:48来自说明文档
`slide_id` 是服务端短 ID,**不能从 XML 里推导**。两个来源:1. `+create` / `+add-slide` 的返回值里存下来;2. 事后回读:`slides +xml-get --presentation "$PRES_ID" --output .lark-slides/plan/<deck>/readback.xml`。删错页的代价高于多跑一次回读 —— 不确定就先回读 + `+screenshot` 看一眼再删。## 删错了怎么办删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](lark-slides-history.md)。
查看另外 2 个位置
references/cli/lark-slides-history.md:12来自说明文档
3. 如果用户指定的是某一时刻但没有指定 `revision_id`,按 `entries[].edit_time` 匹配;优先选择不晚于目标时刻的最近一条历史记录,无法明确匹配时先向用户确认候选版本。4. 使用 `+history-revert` 发起回滚。接口会立即返回 `task_id`,回滚任务在服务端异步执行。5. 如果返回 `status: running`,保存 `task_id`,按照返回的 `poll_after_ms` 等待后调用 `+history-revert-status`。任务创建成功后,不得因为状态查询失败而重新发起回滚。6. 状态变为 `done`、`partial_failed` 或 `failed` 后停止轮询;达到整体轮询上限时也停止轮询,并向用户返回 `task_id` 和当前状态。7. 回滚完成后,用 `slides +xml-get` 或 `slides xml_presentations get` 读取演示文稿确认内容。
references/cli/lark-slides-history.md:9来自说明文档
1. 先用分页接口 `+history-list` 找到目标版本的 `history_version_id`。2. 如果用户指定的是 `revision_id`,不要假设它唯一,也不要把 `revision_id` 直接传给 `+history-revert`。先拉一页并在 `entries[]` 中筛选 `revision_id` 相同的候选;如果未匹配到且 `has_more=true`,继续用 `page_token` 翻页;如果已匹配到候选,最多额外再拉一页补齐可能跨页的相邻候选。最终优先根据用户目标时间与 `edit_time` 的接近程度选择最合适的一条,取同一条的 `history_version_id`;如果没有目标时间,或多个候选无法可靠区分,再向用户展示候选版本(`history_version_id`、`revision_id`、`edit_time`、`name/description`)并确认后回滚。3. 如果用户指定的是某一时刻但没有指定 `revision_id`,按 `entries[].edit_time` 匹配;优先选择不晚于目标时刻的最近一条历史记录,无法明确匹配时先向用户确认候选版本。4. 使用 `+history-revert` 发起回滚。接口会立即返回 `task_id`,回滚任务在服务端异步执行。5. 如果返回 `status: running`,保存 `task_id`,按照返回的 `poll_after_ms` 等待后调用 `+history-revert-status`。任务创建成功后,不得因为状态查询失败而重新发起回滚。6. 状态变为 `done`、`partial_failed` 或 `failed` 后停止轮询;达到整体轮询上限时也停止轮询,并向用户返回 `task_id` 和当前状态。7. 回滚完成后,用 `slides +xml-get` 或 `slides xml_presentations get` 读取演示文稿确认内容。
中风险

整页写回可能静默重建元素并使评论和旧链接失效

原文依据:3 处
发现了什么

整页更新依靠读回 XML 中的元素 ID 来识别保留项。如果读取时移除了 ID,写回会把全部元素视为新元素,删除原元素并创建替代项;文档明确说页面外观可能相同且不会报错。

为什么需要注意

锚定旧元素的评论和 block 直达链接会失效,协作历史的引用关系也可能被破坏。视觉回读或截图不一定能发现这种损失。

文档明确说明:整页写回时,保留元素依赖读回 XML 中的 ID;若读取时使用 `--remove-attr-id`,所有元素都会被视为新元素,旧元素被删除,评论和旧 block 链接会在无报错的情况下失效。这不是一般写回必然发生,而是使用该参数后再写回才发生。用户应要求保留原 ID、先 dry-run,并在写后回读核对关键 ID。

references/cli/lark-slides-update-slide.md:75来自说明文档
```bash# 1. 读回当前页(拿到带 id 的完整 XML)lark-cli slides +xml-get --as user \  --presentation "$PRES" --slide-id "$SLIDE" --output page.xml# 2. 编辑 page.xml —— 保留想留下的元素的 id,删掉不要的整段,新元素不写 id# 3. 整页写回lark-cli slides +update-slide --as user \  --presentation "$PRES" --slide-id "$SLIDE" --content @page.xml```先 `--dry-run` 看请求,确认无误再执行。> ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。
查看另外 2 个位置
references/cli/lark-slides-update-slide.md:87来自说明文档
先 `--dry-run` 看请求,确认无误再执行。> ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。
references/cli/lark-slides-update-slide.md:121来自说明文档
写入成功后,必须回读整份演示文稿的最新 XML,而不是只相信写接口的成功响应:```bashlark-cli slides +xml-get --as user \  --presentation "$PRES" --output readback.xml```按当前已加载 `lark-slides/SKILL.md` 指向的 [validation-xml.md](../workflow/validation-xml.md) 完成验证:核对总页数、目标页和关键元素(包括需要保留的 ID、文本、背景与备注),并对回读 XML 运行同一版式 lint;发现差异时先停止后续写入并重新基于最新版处理。
中风险

修改单个属性也会替换整个幻灯片块

原文依据:4 处
发现了什么

底层接口不支持字段级补丁;即使只调整坐标,也必须提交整个块的新 XML。成功提交但重建不完整时,原块中未复制的文本、样式、链接或备注可能被丢弃。

为什么需要注意

用户的在线演示文稿可能发生超出所请求范围的持久更改。批量原子回滚只处理请求失败,不能恢复一个格式合法但内容不完整的替换。

文档明确说明,即使只改坐标,也必须用完整的新 XML 替换整个块,不能只更新一个字段。因此,若重建内容漏掉原有文本、样式或链接,提交后这些内容可能随整块替换而消失。原子事务只能防止一批操作部分成功,并不能保证替换 XML 完整。用户可要求替换前后展示完整块的差异并保留可恢复版本。

references/cli/lark-slides-xml-presentation-slide-replace.md:178来自说明文档
3. **`<img>` 必须用 file_token**:不能用外链 URL——先 [`slides +media-upload`](lark-slides-media-upload.md) 拿 token。4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。7. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
查看另外 3 个位置
references/cli/lark-slides-xml-presentation-slide-replace.md:175来自说明文档
1. **parts 原子事务**:任一条失败整批回滚,不会出现"前几条成功、后几条失败"的中间态。2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。
references/cli/lark-slides-xml-presentation-slide-replace.md:171来自说明文档
| 400 | XML 格式错误 | `replacement` / `insertion` 必须为合法的 XML 片段,标签闭合 + 属性引号 || 403 | 权限不足 | 需要 `slides:presentation:update` 或 `slides:presentation:write_only` |
references/cli/lark-slides-xml-presentation-slide-replace.md:179来自说明文档
4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。
低风险

多页创建不是原子操作,失败后会留下不完整的云端演示文稿

原文依据:3 处
发现了什么

创建流程先建立空白演示文稿,再逐页写入;中途失败不会清理已创建的演示文稿或页面。

为什么需要注意

用户账户中可能留下空白或部分完成的演示文稿,造成混淆、重复分享或后续任务误用错误版本。

文档明确说明带页面创建会先建立空白云端文稿,再逐页添加;该过程不是原子操作,某页失败时已建文稿和成功页面会保留。因此可能留下不完整、仍可访问或被协作者看到的云端内容。用户可要求记录新文稿 ID、失败后立即回读并报告残留状态,在得到确认前不要删除或另建重复文稿。

references/cli/lark-slides-create.md:18来自说明文档
> [!IMPORTANT]> `slides +create` 带页面时底层会逐页创建,不是原子操作。中途失败时先记录 `xml_presentation_id`,回读确认当前状态,再继续修复或追加。**CRITICAL — 提交前必须先跑版式 lint**:把待提交的 `<slide>` XML 存成本地文件,运行 [`scripts/xml_lint.py`](../../scripts/xml_lint.py),`summary.error_count` 必须为 0。
查看另外 2 个位置
references/cli/lark-slides-create.md:58来自说明文档
> [!IMPORTANT]> 不带页面参数时,`slides +create` 只创建空白演示文稿。创建后用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加 slide 内容。>> 带了页面时,CLI 先创建空白演示文稿,再逐页调用 slide 创建接口添加页面。如果某一页添加失败,CLI 会停止并报错,已创建的演示文稿和已添加的页面会保留。>
references/workflow/error-handling.md:16来自说明文档
遇到 `invalid param`、某一页创建失败、页面空白或布局错乱时,按顺序处理:1. 记录 `xml_presentation_id`,不要假设失败代表什么都没创建。2. 用 `slides +xml-get` 回读,确认是否已有部分页面写入。3. 检查失败页是否含未转义字符:`Q&A -> Q&amp;A`,文本 `<` / `>` 写成 `&lt;` / `&gt;`,属性 URL `a=1&b=2 -> a=1&amp;b=2`。
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 6 项风险
中风险

仅按 URL 路径路由而忽略域名,可能把第三方链接当成飞书资源标识

原文依据:4 处
发现了什么

Skill 明确要求对任何域名上的 `/slides/` URL(包括 doubao.com)直接调用该 Skill,并将路径 token 作为演示文稿 ID,而不是验证飞书域名。后续操作默认使用用户身份。

为什么需要注意

恶意或误导性链接可能触发带用户权限的飞书 API 请求;若 token 恰好指向用户可访问的资源,还可能读取或修改并非用户本意指定的演示文稿。

路由指令明确把 doubao.com 这类非飞书域名的 `/slides/` 链接当作 Slides token,并要求默认以当前用户身份继续操作。因此,诱导性第三方链接若携带另一个有效 token,可能把读取或编辑指向非预期文稿。材料未证明 CLI 实现会接受任意域名,但技能的操作决策本身存在风险;用户可要求仅接受可信飞书域名,或在任何写入前显示解析出的文稿并确认。

SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 3 个位置
SKILL.md:122来自说明文档
飞书幻灯片通常是用户自己的内容资源。**默认应优先显式使用 `--as user`(用户身份)执行 slides 相关操作**,始终显式指定身份。- **`--as user`(推荐)**:以当前登录用户身份创建、读取、管理演示文稿。执行前先完成用户授权:
SKILL.md:250来自说明文档
|----------|------|-----------|----------|| `/slides/` | `https://example.larkoffice.com/slides/xxxxxxxxxxxxx` | `xml_presentation_id` | URL 路径中的 token 直接作为 `xml_presentation_id` 使用 || `/wiki/` | `https://xxx.feishu.cn/wiki/wikcn_EXAMPLE_NODE_TOKEN_123456` | `wiki_token` | ⚠️ **不能直接使用**,需要先查询获取真实的 `obj_token` |
SKILL.md:248来自说明文档
| URL 格式 | 示例 | Token 类型 | 处理方式 ||----------|------|-----------|----------|| `/slides/` | `https://example.larkoffice.com/slides/xxxxxxxxxxxxx` | `xml_presentation_id` | URL 路径中的 token 直接作为 `xml_presentation_id` 使用 || `/wiki/` | `https://xxx.feishu.cn/wiki/wikcn_EXAMPLE_NODE_TOKEN_123456` | `wiki_token` | ⚠️ **不能直接使用**,需要先查询获取真实的 `obj_token` |
中风险

Bot 创建流程会尝试自动授予当前 CLI 用户可管理权限

原文依据:4 处
发现了什么

使用应用身份创建演示文稿时,CLI 会尝试把 `full_access` 授予当前 CLI 用户。这是额外的权限变更,不只是创建文件。

为什么需要注意

若 CLI 当前登录的是错误账户、共享终端账户或权限不应扩大的成员,该账户可能获得管理演示文稿、继续授权或修改内容的能力。

使用 `--as bot` 创建时,CLI 不仅创建文稿,还会尝试给当前 CLI 用户授予 `full_access`。这确实是额外权限变更,不过主技能把 bot 身份限制为用户明确要求或 bot 持有资源的工作流,且返回值会报告授权结果。用户可要求仅用 `--as user`,或在 bot 创建前明确确认谁是“当前 CLI 用户”及是否应获得管理权限。

references/cli/lark-slides-create.md:38来自说明文档
# 以应用身份创建(自动授权当前用户)lark-cli slides +create --title "项目汇报" --as bot
查看另外 3 个位置
references/cli/lark-slides-create.md:61来自说明文档
>> 带了页面时,CLI 先创建空白演示文稿,再逐页调用 slide 创建接口添加页面。如果某一页添加失败,CLI 会停止并报错,已创建的演示文稿和已添加的页面会保留。>> 如果演示文稿是**以应用身份(bot)创建**的,如 `lark-cli slides +create --as bot`,CLI 会**尝试为当前 CLI 用户自动授予该演示文稿的 `full_access`(可管理权限)**。>> 以应用身份创建时,结果里会额外返回 `permission_grant` 字段,明确说明授权结果:> - `status = granted`:当前 CLI 用户已获得该演示文稿的可管理权限> - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权> - `status = failed`:演示文稿已创建成功,但自动授权用户失败>
SKILL.md:130来自说明文档
- **`--as bot`**:仅在用户明确要求以应用身份操作,或需要让 bot 持有/创建资源时使用。使用 bot 身份时,要额外确认 bot 是否真的有目标演示文稿的访问权限。**执行规则**:1. 创建、读取、增删 slide、按用户给出的链接继续编辑已有 PPT,默认都先用 `--as user`。2. 如果出现权限不足,先检查当前是否误用了 bot 身份;不要默认回退到 bot。3. 只有在用户明确要求"用应用身份 / bot 身份操作",或当前工作流就是 bot 创建资源后再做协作授权时,才切换到 `--as bot`。
references/cli/lark-slides-create.md:63来自说明文档
>> 如果演示文稿是**以应用身份(bot)创建**的,如 `lark-cli slides +create --as bot`,CLI 会**尝试为当前 CLI 用户自动授予该演示文稿的 `full_access`(可管理权限)**。>> 以应用身份创建时,结果里会额外返回 `permission_grant` 字段,明确说明授权结果:> - `status = granted`:当前 CLI 用户已获得该演示文稿的可管理权限> - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权> - `status = failed`:演示文稿已创建成功,但自动授权用户失败>
中风险

路由规则刻意忽略域名,可能把豆包链接或 token 交给飞书操作流程

原文依据:2 处
发现了什么

Skill 指示只要看到 doubao.com 的 `/slides/` URL 或 token 就直接启用,并明确说路由不以域名为准。域名原本可帮助用户和代理判断账号体系及资源归属。

为什么需要注意

如果路径相似但 token 属于不同服务、租户或身份,后续读取或写入可能作用于错误资源,或把该 token 暴露给不应处理它的 CLI。

这段证据能说明什么

证据确认该技能会按 `/slides/` 路径和 token 路由 doubao.com 链接,而不按域名回退到网页抓取。但现有行没有说明豆包 token 会被发送到哪个后端、是否与飞书 token 兼容,或是否跨账号访问;因此“交给飞书操作流程并造成资源归属混淆”尚不能确定。用户可要求作者说明 token 解析目标、后端域名和账号边界,并在任何读写前展示解析出的演示文稿身份。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 1 个位置
SKILL.md:2来自说明文档
---name: lark-slidesversion: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
中风险

超链接验证规则比文档声称的 http/https 范围更宽

原文依据:3 处
发现了什么

超链接说明称仅支持 http/https,但实际 XSD 同时接受 FTP、SFTP、FTPS、NFS、SSH、邮箱地址以及宽泛的“名称加冒号”形式。该不一致会削弱对生成链接的协议限制。

为什么需要注意

恶意或错误内容可在幻灯片中形成非 Web 链接;用户点击后可能启动邮件、SSH、文件共享或其他本地协议处理程序,连接内部资源或向外部地址发送信息。

文档声称 `href` 仅支持 HTTP/HTTPS,但 XSD 的实际模式还接受 FTP、SFTP、FTPS、NFS、SSH、邮箱地址以及宽泛的“名称加冒号”形式。这意味着仅依赖该 schema 验证不能落实声明的协议限制;用户点击生成链接时可能启动非网页协议或外部客户端。用户可要求渲染或提交层另设 HTTP/HTTPS 白名单,并在交付前列出所有链接。

references/xml/slides_xml_schema_definition.xml:2072来自说明文档
            <xs:documentation>                超链接元素                属性: href (仅支持 http/https)            </xs:documentation>        </xs:annotation>
查看另外 2 个位置
references/xml/slides_xml_schema_definition.xml:2090来自说明文档
            </xs:choice>            <xs:attribute name="href" use="required">                <xs:simpleType>                    <xs:restriction base="xs:anyURI">                        <xs:pattern value="(https?|s?ftp|ftps|nfs|ssh)://\S+"/>                        <xs:pattern value="[\w.-]+[.:]\S*"/>                        <xs:pattern value="(mailto:)?\S+@\S+\.\w{2,}"/>                    </xs:restriction>                </xs:simpleType>
references/xml/slides_xml_schema_definition.xml:2092来自说明文档
                <xs:simpleType>                    <xs:restriction base="xs:anyURI">                        <xs:pattern value="(https?|s?ftp|ftps|nfs|ssh)://\S+"/>                        <xs:pattern value="[\w.-]+[.:]\S*"/>                        <xs:pattern value="(mailto:)?\S+@\S+\.\w{2,}"/>                    </xs:restriction>
中风险

仅凭 `/slides/` 路径和 token 跨域路由,可能把错误或不可信链接交给账户级幻灯片工具

原文依据:3 处
发现了什么

技能明确要求即使域名不是飞书,也把 `doubao.com` 的 `/slides/` URL/token 直接交由本技能处理,并强调路由依据是路径和 token。域名通常是识别服务和信任边界的重要信号;仅看路径模式可能混淆不同服务的标识符或权限范围。

为什么需要注意

如果用户粘贴了伪造、误发或属于另一服务的链接,代理可能尝试用已登录的 `lark-cli` 读取或修改错误的演示文稿,或在命令和日志中暴露该 token。可见片段不能证明该行为实际发生。

这段证据能说明什么

这是生效的路由说明,确实要求将 doubao.com 的 `/slides/` URL/token 交给依赖 `lark-cli` 的幻灯片技能,并称路由依据不是域名。但文本仅指定了一个明确域名,并未要求接受任意域名;所给证据也没有展示 token 如何验证、发送到哪个服务或会使用哪些账户权限。因此存在误路由的理论可能,但无法据此确认会把不可信链接交给错误的账户级服务。用户可要求作者说明 doubao.com 与飞书幻灯片的受信关系及 token 的服务端校验范围。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 2 个位置
SKILL.md:6来自说明文档
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
SKILL.md:7来自说明文档
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"
中风险

仅凭 `/slides/` 路径和 token 跨域路由,可能混淆服务与凭据边界

原文依据:2 处
发现了什么

技能明确要求把 `doubao.com` 的幻灯片 URL/token 交给飞书幻灯片流程,并称路由不以域名为依据。域名通常是判断 token 属于哪个服务的重要边界;所示内容没有证明 `lark-cli` 如何验证该 token 的签发方和目标资源。

为什么需要注意

如果两个服务的 token 不兼容、可被转发,或 URL 被伪装,token 可能交给非预期客户端或后端,或者操作到错误的演示文稿和账号。现有证据不能证明这种泄露或误操作已经发生。

这段证据能说明什么

该说明确实要求将 doubao.com 的 `/slides/` URL/token 路由到 lark-slides,并忽略域名差异;若该 token 被直接发送给不属于其签发服务的后端,可能造成资源标识泄露或误操作。但现有行只描述技能选择,没有显示 token 会被传到哪里、是否属于凭据、或 `lark-cli` 如何校验服务和资源,因此风险无法确认。用户可要求作者说明 token 的性质、接收端及域名/签发方校验,并限制跨域 token 传递。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
查看另外 1 个位置
SKILL.md:7来自说明文档
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 2 项风险
中风险

缺少真实 Logo 时可能生成“近似 Logo”,造成品牌或客户身份误导

原文依据:4 处
发现了什么

规划示例明确指示在真实 Logo 缺失时用生图工具创建“close-enough image”,并把 Logo 的用途定义为表示产品、团队或客户身份。近似生成物没有被要求标记为非官方。

为什么需要注意

演示文稿可能把虚构或变形商标展示为真实品牌资产,误导客户、管理层或公众,并带来品牌规范、商标或商业信誉风险。

这是决策误导风险,而非凭据或文件风险。活动规划规则允许 Logo 缺失时用生图工具制作“近似图片”,示例又把 Logo 用于表达产品、团队或客户身份;提供的规则没有要求把生成图显著标注为非官方。因此在用户未授权品牌仿制时,成品可能让观众误认身份。用户可要求真实 Logo 缺失时使用明确标注的占位符,禁止生成近似品牌标识。

references/planning-layer.md:87来自说明文档
      "visual_focus": "Large title area with one concise supporting statement.",      "asset_need": {        "asset_type": "logo",        "purpose": "Signal product or team identity on the opening page.",        "suggested_query": "product logo",        "fallback_if_missing": "Create a close-enough image with the image generation tool instead of a real logo."      },      "text_density": "low",      "speaker_intent": "Frame the decision and establish the deck's point of view."    }
查看另外 3 个位置
references/planning-layer.md:219来自说明文档
Good examples:- `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"Render the component diagram with <shape> + <line>."}`- `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Create a close-enough image with the image generation tool instead of a real logo."}`- `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Render a native `<chart>` using the provided series when available; otherwise render a native `<chart>` with mock placeholder values and label it as 模拟数据,仅占位,待替换真实数据."}`
references/planning-layer.md:207来自说明文档
`asset_need` is metadata. It can describe a desired figure, diagram, chart, icon, logo, screenshot, or fallback visual.Use an object for one planned asset, an array for multiple real needs, or `asset_type: "none"` when no asset is useful. Each planned asset must include:- `asset_type`: one of `paper_figure`, `architecture_diagram`, `icon`, `logo`, `chart`, `infographic`, `screenshot`, `flow_diagram`, or `none`.- `purpose`: why this asset helps the page's key message.- `suggested_query`: short future lookup hint only; do not execute it unless separately requested.- `fallback_if_missing`: a plan to create a close-enough image with the image generation tool, or a native `<chart>` for data.- `chart_contract`: when `asset_type` is `chart` and the visual is a supported standard data chart, set this optional slide-level field so generation is locked to native `<chart>`.
references/planning-layer.md:221来自说明文档
- `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"Render the component diagram with <shape> + <line>."}`- `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Create a close-enough image with the image generation tool instead of a real logo."}`- `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Render a native `<chart>` using the provided series when available; otherwise render a native `<chart>` with mock placeholder values and label it as 模拟数据,仅占位,待替换真实数据."}`
中风险

强制大量生图或搜图可能产生未预期的调用费用

原文依据:2 处
发现了什么

无论用户是否要求,技能都禁止无图交付,要求大量且不重复的图片,并进一步要求具体物项使用生图工具。

为什么需要注意

连接按次或按量计费的生图、搜索或素材服务时,一份演示文稿可能触发多次调用,增加费用和完成时间。所示内容没有给出图片数量或费用上限。

这是主动的全局要求,不是示例或警告:技能禁止无图交付,要求大量且不重复的图片,并要求封面和具体物项调用生图或搜图工具。若这些工具按次或按量收费,会在用户只要求制作幻灯片时扩大调用次数和费用;同时可能产生额外网络处理。用户可事先限定图片数量、禁止付费生图/搜图,并要求每次外部调用前确认。现有证据支持潜在费用风险,但不证明所用工具一定收费或已经发生调用。

SKILL.md:21来自说明文档
- PPT 的尺寸是 960x540,必须严格确保主体内容在页面边界内。- !!!禁止交付无图产物!!! 必须使用大量图片增强视觉效果!!! 禁止重复使用同一张图!!!- 封面页的主视觉必须是 `<img>`(来自生图工具或搜图工具),不要使用 `<shape>` 或 `<icon>` 拼出封面视觉。- 禁止用 `<shape>` 和 `<line>` 拟形具体物项,必须使用生图工具生成的 `<img>`。- 禁止在 `headline` 或 `title` 下方放置用于分隔或装饰的 `rect` 或 `<line>`。
查看另外 1 个位置
SKILL.md:26来自说明文档
- 禁止在任何页面内部使用无意义的装饰线条或色块条带,页面任何一边都不要使用贴边窄条。- 生图工具的指令参数必须以“不要出现任何文字和颜色色号”结尾,避免生成的图片上出现干扰文字。- 禁止使用 emoji 图标,任何位置都不能出现。

Skill 逻辑拆解

8 个说明模块

此 Skill 默认以当前登录用户身份访问飞书,能够创建、读取、增删和编辑演示文稿;首次使用需要执行 Slides 域登录授权。

查看原文
SKILL.md:122来自说明文档
飞书幻灯片通常是用户自己的内容资源。**默认应优先显式使用 `--as user`(用户身份)执行 slides 相关操作**,始终显式指定身份。- **`--as user`(推荐)**:以当前登录用户身份创建、读取、管理演示文稿。执行前先完成用户授权:```bashlark-cli auth login --domain slides```
SKILL.md:134来自说明文档
1. 创建、读取、增删 slide、按用户给出的链接继续编辑已有 PPT,默认都先用 `--as user`。2. 如果出现权限不足,先检查当前是否误用了 bot 身份;不要默认回退到 bot。3. 只有在用户明确要求"用应用身份 / bot 身份操作",或当前工作流就是 bot 创建资源后再做协作授权时,才切换到 `--as bot`。

新建或大改时会在工作目录保存规划、生成的 XML、回读 XML和截图等中间文件;成功后规划文件可能长期保留。

查看原文
references/planning-layer.md:36来自说明文档
`.lark-slides/` is local agent state. It supports recovery, iteration, and later edits, but it should not be treated as source code or committed by default.Keep:- `.lark-slides/plan/<deck-or-task-id>/slide_plan.json` after successful creation or major rewrite. The plan is the editable design state for the deck.- A small manifest when useful for follow-up work, such as `xml_presentation_id`, slide IDs, `revision_id`, plan path, and verification status.
references/cli/lark-slides-screenshot.md:5来自说明文档
获取幻灯片页面截图并保存为本地图片文件。默认用于已存在 PPT 页面截图;传入 `--content` 时用于直接渲染单个 `<slide>` XML 片段预览。本 shortcut 会在 CLI 进程内解码并写入文件,stdout 只返回文件路径、大小、页面 ID 等元信息,避免把图片 Base64 输出给模型。

随附的图标检索脚本读取 Skill 内的离线 JSON 索引并输出搜索结果;所示实现没有网络调用或命令执行逻辑。

查看原文
scripts/iconpark_tool.py:14来自代码
SKILL_ROOT = Path(__file__).resolve().parent.parentREFERENCES_DIR = SKILL_ROOT / "references"DEFAULT_INDEX_PATH = REFERENCES_DIR / "xml" / "iconpark-index.json"DEFAULT_LIMIT = 8CURATED_ICON_BOOSTS = {
scripts/iconpark_tool.py:147来自代码
def load_index(path: str | Path = DEFAULT_INDEX_PATH) -> dict[str, Any]:    index_path = Path(path)    if not index_path.exists():        fail(f"iconpark index not found: {index_path}")    try:        index_data = json.loads(index_path.read_text(encoding="utf-8"))    except json.JSONDecodeError as error:        fail(f"invalid iconpark index JSON: {error}")    if not isinstance(index_data.get("icons"), list):        fail("iconpark index must contain an icons array")    return index_data

Skill 要求写入后回读并运行本地 XML 校验器;错误会阻断交付,警告要求截图复核。这降低了误写风险,但不能代替确认目标文档和授权范围。

查看原文
references/workflow/validation-xml.md:9来自说明文档
1. 记录创建或编辑返回的 `xml_presentation_id`,以及已知的 `slide_id` / `revision_id`。2. 用 `slides +xml-get` 回读全文 XML 到本地文件。3. 检查实际页数是否符合计划或用户要求。4. 检查每页 `<data>` 内是否有预期主要元素。5. 检查没有明显空白页、破损页、缺失标题或缺失主视觉。6. 检查页面不是全部退化为标题加 bullet list。7. 检查视觉层级:标题、主视觉、支撑信息三者可区分。8. 检查明显溢出和布局风险:重叠、越界、底部拥挤、长文本框。9. 在最终回复中给出简短验证记录。
references/workflow/validation-xml.md:40来自说明文档
- `summary.error_count > 0` 或 `summary.release_ready == false`:阻断创建、替换或交付,必须先修复。- `summary.warning_count > 0`:静态检查不直接阻断,但 `summary.screenshot_review_required == true`,必须复核对应页面截图。- `slides[].status` 为 `blocked`、`needs_screenshot_review` 或 `passed`,可直接决定逐页后续动作。- CLI 在存在 `error` 时退出码为 1;只有 `warning` 时仍输出 JSON 并退出 0,供截图复核链路继续执行。

该 Skill 通过 `lark-cli` 创建、读取和编辑飞书幻灯片;创建时每次最多接收 10 页,更多页面会先创建空演示文稿再逐页添加。

查看原文
SKILL.md:6来自说明文档
metadata:  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"---
references/cli/lark-slides-create.md:77来自说明文档
| `--title` | 否 | 演示文稿标题(不传则默认 "Untitled") || `--slide` | 否 | 一页 `<slide>` XML,或 `@路径`;可重复,最多 10 次。格式见[页面输入形式](#页面输入形式) || `--slides` | 否 | 页面 XML 的 JSON 字符串数组,最多 10 个;支持 `@文件` 和 `-`(stdin)。格式见[页面输入形式](#页面输入形式) |10 页是 CLI 的上限,服务端每次只接收一页。超过 10 页时先用 `+create` 创建空白 PPT,再用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加。两种形式的每一页都会在发请求前校验成「单个完整的 `<slide>` 文档」。不合格的页在创建演示文稿之前报错并指出页序号,不会留下空壳演示文稿。

编辑流程支持按块替换或插入,也支持整页写回。批量块操作被描述为原子事务;整页写回则依赖保留原元素 ID,以维持评论和直达链接。

查看原文
references/workflow/slides-editing.md:101来自说明文档
### 批量 parts一次 `--parts` 最多 200 条,按数组顺序串行执行。`block_replace` 和 `block_insert` 可以在同一批次混用。举例:一次性把标题块替换、然后在末尾追加一个装饰图。```bashlark-cli slides +replace-slide --as user \  --presentation "$PRES_ID" --slide-id "$SID" \  --parts '[{"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"},{"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}]'```整批作为原子事务:任一条失败整批不生效。失败时后端通常返回 3350001;若响应中带 `failed_part_index` / `failed_reason` 字段,shortcut 会原样透传。
references/cli/lark-slides-update-slide.md:80来自说明文档
# 2. 编辑 page.xml —— 保留想留下的元素的 id,删掉不要的整段,新元素不写 id# 3. 整页写回lark-cli slides +update-slide --as user \  --presentation "$PRES" --slide-id "$SLIDE" --content @page.xml```先 `--dry-run` 看请求,确认无误再执行。> ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。

该 Skill 包含本地静态 XML 棭查,并要求写入后回读最新演示文稿;有警告时还要求检查服务端渲染截图。静态检查不是对最终视觉效果的证明。

查看原文
references/cli/lark-slides-update-slide.md:113来自说明文档
和其他整页写入一样,把 `--content` 存成本地文件后先跑版式 lint。先取得当前已加载 `lark-slides/SKILL.md` 的父目录,记为 `<lark-slides-skill-dir>`;不要猜测全局安装路径:```bashpython3 "<lark-slides-skill-dir>/scripts/xml_lint.py" --input page.xml````summary.error_count` 必须为 0 才调接口;`warning_count > 0` 时写完要截图复核。写入成功后,必须回读整份演示文稿的最新 XML,而不是只相信写接口的成功响应:```bashlark-cli slides +xml-get --as user \  --presentation "$PRES" --output readback.xml```按当前已加载 `lark-slides/SKILL.md` 指向的 [validation-xml.md](../workflow/validation-xml.md) 完成验证:核对总页数、目标页和关键元素(包括需要保留的 ID、文本、背景与备注),并对回读 XML 运行同一版式 lint;发现差异时先停止后续写入并重新基于最新版处理。
references/workflow/validation-xml.md:146来自说明文档
最终回复必须包含简短验证记录,建议格式:```text验证记录:- 回读:已执行 slides +xml-get,实际页数 N / 预期 N。- 关键页:架构解释 / Self-Attention / 对比或演进 / 总结页均存在。- 结构:检查了主要 shape/img/table/chart 元素,无明显空白页或破损页。- 布局:检查了标题层级、主视觉、重叠/越界/文本溢出风险。```不要声称完成了人工视觉验收,除非确实打开或获取了可视化结果。仅从 XML 静态检查得出的结论,应表述为“静态检查未发现明显问题”。

规划规则允许在缺少真实数据时使用模拟图表,但明确要求标为占位数据;这降低了模拟数字被误当事实的风险。

查看原文
references/asset-planning.md:71来自说明文档
- Do not imitate supported standard data visuals with manual drawing primitives.- Choose the data source explicitly:  - `user_provided`: when the user provides concrete values, tables, CSV, or metric lists, use those values and do not replace them with mock data.  - `mock_placeholder`: when the user asks for a placeholder, template, example, or chart position to replace later, use mock data in a native `<chart>`.  - `mock_required_by_intent`: when the user does not provide concrete values but asks for data expression, charts, trends, comparisons, or distributions, use mock data in a native `<chart>`.- Mock data must be labeled as `模拟数据,仅占位,待替换真实数据` or equivalent. Do not present mock values as facts.- Manual drawing fallbacks are allowed only for unsupported chart types such as scatter, funnel, waterfall-like custom visuals, or decorative non-data visuals.

该技能声明用于创建、读取、编辑和删除幻灯片,并依赖已安装的 lark-cli;因此实际使用可能读取或更改用户的在线演示文稿。

查看原文
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
SKILL.md:7来自说明文档
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"

修改操作需要飞书幻灯片写入权限;替换接口以原子事务执行,一项失败会使整批回滚。

查看原文
references/cli/lark-slides-xml-presentation-slide-replace.md:171来自说明文档
| 400 | XML 格式错误 | `replacement` / `insertion` 必须为合法的 XML 片段,标签闭合 + 属性引号 || 403 | 权限不足 | 需要 `slides:presentation:update` 或 `slides:presentation:write_only` |
references/cli/lark-slides-xml-presentation-slide-replace.md:175来自说明文档
1. **parts 原子事务**:任一条失败整批回滚,不会出现"前几条成功、后几条失败"的中间态。2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。

演示文稿格式支持图片、表格、图标、嵌入式 SVG、图表和演讲者备注;备注只在演示模式显示。

查看原文
references/xml/slides_xml_schema_definition.xml:1077来自说明文档
            <xs:documentation>                单页幻灯片结构                子元素:                - style: 页面样式(背景色等), style的fill默认颜色为白色rgba(255, 255, 255, 1)                - data: 页面元素容器(shape/line/polyline/img/table/icon/embed/chart/undefined)                - note: 演讲者备注            </xs:documentation>
references/xml/slides_xml_schema_definition.xml:1115来自说明文档
                    <xs:documentation>                        演讲者备注, 仅在演示模式显示                        支持完整的内容结构                        属性:

该技能声称通过必需的 `lark-cli` 创建、读取和编辑幻灯片,并包含页面创建、删除和局部替换等会改变远程演示文稿的操作。

查看原文
SKILL.md:4来自说明文档
version: 1.0.0description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard)、上传或下载普通文件(走 lark-drive)。"metadata:
SKILL.md:7来自说明文档
  requires:    bins: ["lark-cli"]  cliHelp: "lark-cli slides --help"
从这里开始 · 工作说明SKILL.md
lark-slides
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 1 个章节,可在原文件中查看。

文件引用关系图

40 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录50 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • scripts/iconpark_tool_test.py已纳入全文
  • scripts/iconpark_tool.py已纳入全文
  • scripts/sxsd_validator.py已纳入全文
  • scripts/xml_lint_test.py已纳入全文
  • scripts/xml_lint.py已纳入全文
  • scripts/xml_text_overlap_lint_test.py已纳入全文
  • scripts/xml_text_overlap_lint.py已纳入全文
  • references/asset-planning.md已纳入全文
  • references/cli/lark-slides-add-slide.md已纳入全文
  • references/cli/lark-slides-create.md已纳入全文
  • references/cli/lark-slides-delete-slide.md已纳入全文
  • references/cli/lark-slides-history.md已纳入全文
  • references/cli/lark-slides-media-upload.md已纳入全文
  • references/cli/lark-slides-replace-slide.md已纳入全文
  • references/cli/lark-slides-screenshot.md已纳入全文
  • references/cli/lark-slides-update-slide.md已纳入全文
  • references/cli/lark-slides-xml-presentations-get.md已纳入全文
  • references/planning-layer.md已纳入全文
  • references/visual-planning.md已纳入全文
  • references/workflow/error-handling.md已纳入全文
  • references/workflow/slides-editing.md已纳入全文
  • references/workflow/template-editing.md已纳入全文
  • references/workflow/validation-xml.md已纳入全文
  • references/xml/iconpark.md已纳入全文
  • references/xml/slides_chart_demo.xml已纳入全文
  • references/xml/slides_xml_schema_definition.xml已纳入全文
  • references/xml/xml-schema-quick-ref.md已纳入全文
  • references/cli/lark-slides-xml-presentation-slide-get.md已纳入全文
  • references/cli/lark-slides-xml-presentation-slide-replace.md已纳入全文
  • references/xml/iconpark-index.json已纳入全文
  • references/iconpark-index.json已纳入全文
  • references/iconpark.md已纳入全文
  • references/lark-slides-add-slide.md已纳入全文
  • references/lark-slides-create.md已纳入全文
  • references/lark-slides-delete-slide.md已纳入全文
  • references/lark-slides-edit-workflows.md已纳入全文
  • references/lark-slides-history.md已纳入全文
  • references/lark-slides-media-upload.md已纳入全文
  • references/lark-slides-pptx-template-workflows.md已纳入全文
  • references/lark-slides-replace-slide.md已纳入全文
  • references/lark-slides-screenshot.md已纳入全文
  • references/lark-slides-xml-presentation-slide-get.md已纳入全文
  • references/lark-slides-xml-presentation-slide-replace.md已纳入全文
  • references/lark-slides-xml-presentations-get.md已纳入全文
  • references/slides_chart_demo.xml已纳入全文
  • references/slides_xml_schema_definition.xml已纳入全文
  • references/troubleshooting.md已纳入全文
  • references/validation-checklist.md已纳入全文
  • references/xml-schema-quick-ref.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • references/asset-planning.md配套文件
  • references/cli/lark-slides-add-slide.md配套文件
  • references/cli/lark-slides-create.md配套文件
  • references/cli/lark-slides-delete-slide.md配套文件
  • references/cli/lark-slides-history.md配套文件
  • references/cli/lark-slides-media-upload.md配套文件
  • references/cli/lark-slides-replace-slide.md配套文件
  • references/cli/lark-slides-screenshot.md配套文件
  • references/cli/lark-slides-update-slide.md配套文件
  • references/cli/lark-slides-xml-presentation-slide-get.md配套文件
  • references/cli/lark-slides-xml-presentation-slide-replace.md配套文件
  • references/cli/lark-slides-xml-presentations-get.md配套文件
  • references/iconpark-index.json配套文件
  • references/iconpark.md配套文件
  • references/lark-slides-add-slide.md配套文件
  • references/lark-slides-create.md配套文件
  • references/lark-slides-delete-slide.md配套文件
  • references/lark-slides-edit-workflows.md配套文件
  • references/lark-slides-history.md配套文件
  • references/lark-slides-media-upload.md配套文件
  • references/lark-slides-pptx-template-workflows.md配套文件
  • references/lark-slides-replace-slide.md配套文件
  • references/lark-slides-screenshot.md配套文件
  • references/lark-slides-xml-presentation-slide-get.md配套文件
  • references/lark-slides-xml-presentation-slide-replace.md配套文件
  • references/lark-slides-xml-presentations-get.md配套文件
  • references/planning-layer.md配套文件
  • references/slides_chart_demo.xml配套文件
  • references/slides_xml_schema_definition.xml配套文件
  • references/troubleshooting.md配套文件
  • references/validation-checklist.md配套文件
  • references/visual-planning.md配套文件
  • references/workflow/error-handling.md配套文件
  • references/workflow/slides-editing.md配套文件
  • references/workflow/template-editing.md配套文件
  • references/workflow/validation-xml.md配套文件
  • references/xml-schema-quick-ref.md配套文件
  • references/xml/iconpark-index.json配套文件
  • references/xml/iconpark.md配套文件
  • references/xml/slides_chart_demo.xml配套文件
  • references/xml/slides_xml_schema_definition.xml配套文件
  • references/xml/xml-schema-quick-ref.md配套文件
  • scripts/iconpark_tool.py脚本
  • scripts/iconpark_tool_test.py脚本
  • scripts/sxsd_validator.py脚本
  • scripts/xml_lint.py脚本
  • scripts/xml_lint_test.py脚本
  • scripts/xml_text_overlap_lint.py脚本
  • scripts/xml_text_overlap_lint_test.py脚本

代码和说明中提到的操作

运行命令
scripts/iconpark_tool_test.py:6来自代码
import jsonimport subprocessimport sys
scripts/iconpark_tool_test.py:120来自代码
class IconParkToolCLITest(unittest.TestCase):    def run_tool(self, *args: str) -> subprocess.CompletedProcess[str]:        return subprocess.run(
scripts/iconpark_tool_test.py:121来自代码
    def run_tool(self, *args: str) -> subprocess.CompletedProcess[str]:        return subprocess.run(            [sys.executable, str(SCRIPT_PATH), *args],
连接外部网站
scripts/sxsd_validator.py:18来自代码
XS_NS = "{http://www.w3.org/2001/XMLSchema}"SML_NAMESPACE = "https://www.larkoffice.com/sml/2.0"
scripts/sxsd_validator.py:19来自代码
XS_NS = "{http://www.w3.org/2001/XMLSchema}"SML_NAMESPACE = "https://www.larkoffice.com/sml/2.0"SML_LEGACY_HTTP_NAMESPACE = "http://www.larkoffice.com/sml/2.0"
scripts/sxsd_validator.py:20来自代码
SML_NAMESPACE = "https://www.larkoffice.com/sml/2.0"SML_LEGACY_HTTP_NAMESPACE = "http://www.larkoffice.com/sml/2.0"SML_READBACK_NAMESPACE = "/sml/2.0"
读取文件
scripts/iconpark_tool.py:152来自代码
    try:        index_data = json.loads(index_path.read_text(encoding="utf-8"))    except json.JSONDecodeError as error:
scripts/xml_lint.py:88来自代码
def read_file(file_path: str | Path) -> str:    return Path(file_path).read_text(encoding="utf-8")
scripts/xml_lint.py:89来自代码
def read_file(file_path: str | Path) -> str:    return Path(file_path).read_text(encoding="utf-8")
修改文件
scripts/xml_lint_test.py:60来自代码
            requested_path = temp_path / "requested.xml"            resolved_path.write_text(                '<presentation xmlns="https://www.larkoffice.com/sml/2.0" width="960" height="540">'
scripts/xml_lint_test.py:86来自代码
            input_path = Path(temp_dir) / "invalid-slide.xml"            input_path.write_text(                """
scripts/xml_lint_test.py:3161来自代码
                    input_path = Path(temp_dir) / f"{name}.xml"                    input_path.write_text(                        f"""
读取了多少行
55,459
文件校验值(用于核对版本)
c549755e9c6f00bc48cf970886c89369447cb1f8617cd5f917a1c1348177b831