From 3f993ea7724ba7fadd1b7bbd8fddd8fd8db36c04 Mon Sep 17 00:00:00 2001 From: zhanghuanxu Date: Wed, 24 Jun 2026 18:05:14 +0800 Subject: [PATCH] fix(lark-slides): detect double escaped entities --- skills/lark-slides/SKILL.md | 2 +- .../references/lark-slides-edit-workflows.md | 2 +- ...rk-slides-xml-presentation-slide-create.md | 2 +- .../lark-slides/references/troubleshooting.md | 7 ++- .../references/validation-checklist.md | 2 + .../scripts/xml_text_overlap_lint.py | 52 +++++++++++++++- .../scripts/xml_text_overlap_lint_test.py | 59 +++++++++++++++++++ 7 files changed, 119 insertions(+), 7 deletions(-) diff --git a/skills/lark-slides/SKILL.md b/skills/lark-slides/SKILL.md index 4630b663c..11e7a179a 100644 --- a/skills/lark-slides/SKILL.md +++ b/skills/lark-slides/SKILL.md @@ -36,7 +36,7 @@ metadata: **CRITICAL — 新建演示文稿或大幅改写页面时,规划 `asset_need` MUST 遵循 [asset-planning.md](references/asset-planning.md):只做元数据规划,必须有 `fallback_if_missing`,不得要求真实搜索、下载或上传素材。** -**CRITICAL — 创建或大幅改写后,MUST 按 [validation-checklist.md](references/validation-checklist.md) 做显式验证:回读全文 XML、核对页数和关键元素、检查空白/破损页、明显溢出、布局风险;XML 语法和文本重叠静态检查优先使用 [`scripts/xml_text_overlap_lint.py`](scripts/xml_text_overlap_lint.py)。** +**CRITICAL — 创建或大幅改写后,MUST 按 [validation-checklist.md](references/validation-checklist.md) 做显式验证:回读全文 XML、核对页数和关键元素、检查空白/破损页、明显溢出、布局风险;XML 语法和文本重叠静态检查优先使用 [`scripts/xml_text_overlap_lint.py`](scripts/xml_text_overlap_lint.py),不得交付 `double_escaped_entity` 问题。** **CRITICAL — 创建前自检或失败排障时,MUST 按 [troubleshooting.md](references/troubleshooting.md) 检查 XML 转义、结构、shell 截断、图片 token、3350001 和布局风险。** diff --git a/skills/lark-slides/references/lark-slides-edit-workflows.md b/skills/lark-slides/references/lark-slides-edit-workflows.md index 63f6ce5ec..53cebadfe 100644 --- a/skills/lark-slides/references/lark-slides-edit-workflows.md +++ b/skills/lark-slides/references/lark-slides-edit-workflows.md @@ -46,7 +46,7 @@ REV=$(lark-cli slides xml_presentation.slide get --as user \ # 写时传该版本号,服务端以此为 base lark-cli slides +replace-slide --as user \ --presentation "$PID" --slide-id "$SID" --revision-id "$REV" \ - --parts '[{"action":"block_replace","block_id":"bUn","replacement":""}]' + --parts '[{"action":"block_replace","block_id":"bUn","replacement":""}]' ``` 注意:传不存在的版本号(超过当前 revision)会返回 3350002 not found;不确定时用 `-1` 即可。 diff --git a/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md b/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md index d636b0aa9..068c851c1 100644 --- a/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +++ b/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md @@ -103,7 +103,7 @@ lark-cli slides xml_presentation.slide create --as user --params '{ "xml_presentation_id": "slides_example_presentation_id" }' --data '{ "slide": { - "content": "

数据展示

" + "content": "

数据展示

" } }' ``` diff --git a/skills/lark-slides/references/troubleshooting.md b/skills/lark-slides/references/troubleshooting.md index 9fbfd6932..480ccf006 100644 --- a/skills/lark-slides/references/troubleshooting.md +++ b/skills/lark-slides/references/troubleshooting.md @@ -7,6 +7,7 @@ 在真正创建或替换前,至少检查: - 特殊字符已转义:正文和标题里的 `&`、`<`、`>` 不能裸写;属性值里的裸 `&` 也必须写成 `&`。 +- 普通可见符号直接写 Unicode,不要输出 HTML/XML entity 后再转义:`«姓名»`、`●`、`✓` 是正确文本;`&#171;姓名&#187;`、`&#9679;`、`&nbsp;` 会在页面中泄漏成字面量。 - 属性引号安全:XML 属性、shell 引号、JSON 字符串包装之间没有互相打断。 - 结构合法:`` 下只放 `