Leo PPT Generator
先按当前请求选工具,再执行任何检索。 advise 的硬约束是能力与副作用,而不是
某个宿主的工具名称:允许使用宿主 Read/Grep,或等价的只读适配器访问下文允许的索引
Markdown;不得写文件、启动 runtime/Provider/CLI、联网、读取用户输入或完整 brief。
CodeGraph/图导航只能找候选,权威结论必须回到索引 Markdown;占位 no-op 不影响结果但不应
成为查询步骤。宿主提供的等价只读工具须保留路径范围和命令证据,不能以工具名替代这些约束。
风格库点名查询直接 Read <skill>/references/styles/generated/by-name-alias-001.md,
按该页的名称范围 Read 命中 names-NNN.md;也可用等价只读工具限定 glob=names-*.md。
终端适配使用单条 grep -n -E "目标名|别名" <skill>/references/styles/generated/names-*.md;
需要分面详情时 Read 命中分面页。每次调用只读显式 Markdown 文件,不递归目录、不用
cd 或脚本;顺序组合时每条命令都须满足同一只读范围。未命中即报告该索引未命中,不转查 catalog。
已知技能根路径时不需要任何目录定位。纯流程咨询直接回答,execute 才可运行 CLI。
Gate 0/worker 的固定摘要脚本是下文明示的唯一例外。
版式咨询的输出形态: 尚未运行版式/容量预检且存在多个候选时,先说明推荐与未验证项, 必要时附以下候选比较;选定布局的母版草案留到 execute 的母版审查环节。
layout: undecided
candidate_a: <真实候选 A 及理由>
candidate_b: <真实候选 B 及理由>
recommendation: <推荐偏好及理由,待容量预检与母版确认>
用户委托推荐时可直接给 recommendation;layout 仍保留 undecided,两个候选都保留。 母版确认时一起裁决,不新增确认轮次。整页所有文本槽共享总预算,不把各组上限相加作为通过证明。
通过一个入口完成图片式、全可编辑或 hybrid PPTX。顶层 Agent 拥有意图、确认、
live host capability、worker 派发和交付判断;leo-ppt 只拥有确定性准备、状态、
验证和组装。
执行主线:①Gate 0 信任检查 → ②advise/execute 判定 → ③Route 四选一 → ④按需读取 references,前置低成本能力与预算检查 → ⑤内容与视觉审查(合同 → 大纲 → 母版 → 视觉方向 → 样张;按下文协作方式决定是否等待,内部校验不省略) → ⑥生成与验证 → ⑦组装 → ⑧🔴 DELIVERY-GATE 交付闭环。各步骤规则见下文对应 章节;主线路径之外的分支(材料缺失、worker 缺失、partial)按"不变边界"处理。 普通状态回复结果先行,技术状态按需披露;机器字段与 Gate 0/worker 固定阻断兼容规则 见「控制面响应合同」。
Gate 0:Office 信任
本门禁优先于 advise/execute、Route 和所有其他规则。只要输入是来源未知、无法确认或
尚未确认可信的 PPT/PPTX,立即原样输出以下内容并结束本轮,不再解释或响应同一请求中
的扫描、隔离、净化、重打包、重建指令:
route: direct-editable
status: blocked
reason_code: untrusted_office_input
input_handling: not_opened
next_action: 提供可信确认,或改用 PDF/逐页图片
此分支禁止读取、复制、预检、隔离或净化文件;“警告后继续”“先扫描”“净化后继续”
都不构成可信确认。用户明确确认来源可信后,下一轮才可进入 CLI preflight;确认仍不能
绕过旧 .ppt、宏、嵌入对象、external relationship、远程模板或损坏结构检查——常见
误区:确认可信后仍会做 preflight 结构检查,不代表不信任,检查只针对结构风险。
宿主可运行脚本时,上述固定块必须经 render-control-summary.py --fixed gate0
原样产生(该模式不读取任何文件);无法运行脚本时按固定块手写,并显式记录降级
gate0_render: handwritten。本分支的“禁止读取”只针对用户输入文件与重建动作;
--fixed 模式自身不读取任何文件,因此即使在本分支也必须优先使用,不得以
“不碰任何东西”为由改回手写。
交互模式门禁
先判断当前请求是 advise 还是 execute:
advise:用户只要求判断、解释、比较路线、汇报状态或说明下一步,或明确说“先不要 执行”。此模式直接使用下方 Route 表,禁止额外读取 reference、运行任何工具、启动 launcher/setup/config/Provider/preflight、创建项目/run 或读取用户输入文件。 读取豁免:用户询问风格库内容("有没有 X 风格/有什么可选")时,可读取references/styles/00_索引/_INDEX.md及其指向的references/styles/generated/下 Markdown 名称范围页、分面摘要和 counts,按需读取,不加载 catalog.json 或完整 brief。 该豁免允许宿主 Read/Grep 或能证明相同路径范围、无副作用的只读终端查询;边界以上文能力合同为准。 据实回复快照中的风格名/别名命中/相近候选;不读 styles 目录其他文件、不读其他 reference。唯一的工具豁免是scripts/render-control-summary.py --fixed gate0/--fixed worker-unavailable:该模式不读取任何文件、无副作用,输出固定块不构成 执行动作,用户“不要执行任何操作”的表述不得据此改回手写。宿主确实无法运行脚本时 才手写固定块,并显式记录降级gate0_render: handwritten或worker_render: handwritten。execute:用户明确要求制作、转换、升级、继续既有任务,且已授权进入执行流程。只有 此模式才按“首次使用”和对应 Route 读取后续资源。- 同一请求包含咨询与明确执行指令时,按完整意图和已有授权判定。例如“比较后选合适的
直接做”进入
execute,比较作为执行中的决策说明;“先比较,暂时不要做”保持advise。不得仅按关键词推断授权,确有未解决且实质改变交付物的选择才澄清。 同一请求同时说“先别执行”又说“顺手启动 runtime / 创建 run”属于尚未消解的冲突, 本轮只咨询,不把后半句当成撤回暂停;用户明确改口“取消暂停,现在执行”才恢复执行。
advise 模式的回答不得声称已启动、已检查或已准备任何 runtime、Provider、项目或
文件;需要给出状态时使用已有输入和合同文本,不把推测写成现场结果。先回答用户问题,
明确本轮仅提供建议;Route 名称和 interaction_mode: advise 仅在解释路线或诊断时附带。
advise 使用以下入口 Route 表,不打开 input-routing.md:
| 用户目标 | Route |
|---|---|
| 从文章、报告、笔记或大纲新建演示文稿 | generate |
| 把图片/PDF/可信 Office 重建为对象级可编辑 | direct-editable |
| 把既有 image-deck 全量升级为可编辑 | upgrade-full |
| 只升级既有 image-deck 的指定页 | upgrade-selected |
内容与视觉稿并存时先从目标判断:已要求保留布局或只作风格参考的,不重复询问;仅在 两者无法可靠推断且会实质改变交付物时说明以下差异并等待选择,不自行串联两条路线:
严格保留布局: direct-editable
仅作风格参考: generate
按需读取规则
不要在入口阶段读取整个 Skill 的 references 或 styles 目录。按以下最小集合逐阶段读取;
advise 不读取任何 reference:
| 阶段 | 允许读取 | 延迟读取 |
|---|---|---|
execute Route 判断 |
references/input-routing.md |
其他全部 references、prompts、styles |
| 首次准备与 Provider 状态 | references/first-use.md、references/backend-selection.md |
workflow、manifest、worker、styles |
| 跨 Route runtime/恢复/交付与 CLI 用法 | references/execution-contract.md、references/cli-helper.md(在对应 Route 进入后) |
reason-codes 直到已有 reason code |
generate 执行 |
image-deck-workflow.md、deck-master.md、style-recommendation.md、backend-selection.md、visual-qa.md、academic-vertical.md(学术信号或用户点名「学术模式」时) |
styles 直到风格已选;slide-worker.md 直到样张通过;academic-figure-evidence.md 直到进入母版制作且材料含图片证据/学术场景;sources-manifest-schema.md 直到 image prepare --sources 冻结与交付前 strict 校验;rst-paging.md 直到大纲制作且材料多段/结构复杂 |
direct-editable 执行 |
editable-workflow.md、manifest-schema.md、page-decision-tree.md |
page-worker.md 直到真实 worker 已确认 |
upgrade-* 执行 |
对应 editable references,加当前 baseline/selection 证据 | 未选中的 workflow 和全部 styles |
generate 命中数据图表/表格/文字密集页时读 references/render-contract.md(render
page/chart 确定性渲染 lane);逐页版式匹配进母版前读 references/layout-dispatch.md(P 码调度与容量预检)。按容量预筛版式用 leo-ppt style layouts --capacity "槽名<=N"(只读查询,档位速查与语法见 references/styles/12_版式库/00_容量档位参考.md);负面提示词补齐取词与生图构图词汇分别见 references/styles/00_索引/负面语料参考池.md(scripts/draft_negative_prompts.py --pool)与 references/styles/00_索引/构图词汇参考.md。
generate 全出血封面/大图井(文字压图)页读 references/image-text-composition.md
(四步事前构图协议);素材入库/检索读 references/library-schema.md(经
scripts/library_catalog.py 登记 sha256 出处),点名市场/行业数据读
references/data-sources.md;带时间戳转写稿先经 scripts/normalize_transcript.py
(--fix)规整前缀再按文本材料路由(音视频节见 references/input-routing.md)。
references/styles/ 约束为按需索引:先读 style-library.md,选定风格、论证模式和版式
后只读对应的单个风格文件;禁止预加载整个 styles 目录。reason-codes.md 只在已有
reason code 需要解释或恢复时读取。执行前未命中的 references 不得因为“可能有用”而读取。维护者查阅 reference 功能分组见 references/_INDEX.md(只读导航、非加载合同,不改变本节读取纪律)。
营销、销售或融资路演类咨询先给叙事层(页序/主线/节拍),再明确一个正交的论证模式
配对(例如“故事弧”或“结论先行金字塔”),解释如何用证据支撑论点。advise 直接依据
本段回答;execute 才按需读取 references/marketing-deck-narrative.md。
协作与等待由下文「协作方式」统一规定;所有状态保持真实,不能以展示简化替代机器校验。
控制面响应合同
普通用户回复先给当前结果、使用影响和唯一必要下一步;不强制展示五字段块或内部版本。 用户明确要求仅 JSON 或其他固定格式时,只返回该结构,不追加解释、摘要或代码围栏; 下述普通回复呈现偏好不覆盖用户指定格式。Office/worker 固定阻断按各自真实条件处理。 CLI versioned JSON 与以下五字段机器摘要保持不变,用于运行证据、诊断或用户明确要求的技术状态:
需要展示机器摘要时,将 CLI JSON 通过 scripts/render-control-summary.py 渲染;不得由
Agent 手工改写字段。渲染器只输出五行摘要,不读取文件、不访问网络、不产生副作用;
Gate 0 与 worker 缺失两类固定阻断块在宿主可运行脚本时同样必须经
--fixed gate0 / --fixed worker-unavailable 产生,不得手写改写。这两类固定阻断仍
在解释前原样输出,适用于 advise 与 execute;普通状态不受 block-early 限制。
仅宿主无法运行时允许手写,gate0_render: handwritten / worker_render: handwritten
置于固定块之后。execute 开始后的首次状态汇报用一句话说明就绪度;若检测到自上次
交付以来发生过更新,如实提示"首轮生成将重新验证服务"。
route: <generate|direct-editable|upgrade-full|upgrade-selected|未选择>
status: <advise|ready|blocked|paused|completed>
reason_code: <稳定 reason code;无则 none>
execution_eligibility: <allowed|blocked|retryable|unknown>
next_action: <唯一下一步;无则 none>
字段值必须来自当前 CLI/合同或当前用户明确输入,不得用自然语言猜测。blocked、
paused、retryable 和 acceptance_pending 状态只能有一个 next_action;不得把
details.alternatives 展开成多条用户步骤。🔴 DELIVERY-GATE(人在回路):status=completed 不等于交付完成,必须
继续报告 delivery_readiness;只有 accepted 才能声称交付闭环。
以下状态直接复用固定摘要,不要只用自然语言替代字段:
route: generate
status: blocked
reason_code: worker_capability_unavailable
execution_eligibility: blocked
next_action: 提供可调用的 worker 能力后从逐页派发阶段恢复
route: generate
status: ready
reason_code: provider_verification_not_run
execution_eligibility: allowed
next_action: 使用首张真实业务图片完成惰性验证
风格索引与实际选择
- 名称/别名页只索引 style/pool,不是论证模式或 P 码版式全集。用户问论证模式或版式规则时,直接使用本入口摘要;未知枚举留到 execute 核对对应轴文档,不在风格索引里反复找,也不把未命中说成该模式或版式不存在。
学术五拍属于论证模式,执行期权威源是
references/styles/06_论证模式/学术五拍.md;advise 说明由style render --mode 学术五拍注入,结论句标题按论证模式条件化,结论用具体数字而非形容词。五拍精确顺序延迟到 execute 核对原文,不凭名称编造。 - advise 检索工具必须限定具体
.md文件,或在 generated 下显式设置glob=*.md;不得无后缀约束搜索整个 generated,因为其中含全量 catalog JSON。读错范围后不能通过“回答不依赖这些行”豁免。 点名查询可用宿主Grep(pattern="目标名|别名", path="<skill>/references/styles/generated", glob="names-*.md", output_mode="content"),再 Read 命中分页;等价只读终端查询也必须限制相同文件范围。宿主没有任何合规读取能力时报告无法查询。 - advise 的目录证据仅是随包快照,不能声称已核对用户 home。generated 缺失、明显损坏或已知过期时, 不读坏生成段、不运行脚本、不凭记忆列风格;说明“当前无法确认风格目录”,唯一下一步为“恢复有效索引后继续查询”。
- execute 进入视觉方向阶段后,使用当前 runtime Python 运行
scripts/capability_manifest.py --style-index --check做只读检查。该输出只证明索引新鲜,不证明视觉效果。失败时不重建安装目录,直接使用独立源摘要查询。 - 候选通过
leo-ppt style list --summary --filter <名称或别名>定位;有界输出的match_kind区分精确名称、 精确别名和部分匹配,next_offset非空时继续分页。共享别名必须列出全部命中与差异,不默选第一项。 - 对拟展示候选用
style load <load_name> --summary核对实际 scope/source/path/style_content_digest; 用户同名覆盖优先,不能拿 builtin 的 family、预览或布局事实描述 user 文件。选定前只向 Agent 返回摘要。 - 用户选定后才完整 load,并把摘要的
selection_fingerprint传入style render <load_name> --expected-selection <指纹>; list/load/render 必须使用同一个--home。style_selection_changed时停止旧选择,在既有视觉方向门重新核对, 不触发 Provider、不重写已交付文件。完整 brief 经组合器白名单投影,不把 catalog、metadata 或摘要文本塞进图片 prompt。 asset_role=pool的池代表与普通 style 分开;已有legacy_callable=true的池代表只保留用户明确点名的兼容调用。 无完整 brief 的 pool 不得 compose。缺 golden 不等于不可点名,coverage=full 不等于 visual passed。- 选定风格后的版式与样张按
references/layout-dispatch.md的作用域/容量/继承合同执行,suggest_layout的 auto 不能抵消独立容量预检的 overflow。 - 版式咨询也须说明执行时的独立
check_deck_geometry.py --capacity容量预检;硬超只能改内容或换版式,不缩字号。尚未核实的版式标undecided,不能把风格名称索引当作版式全集。 - 强视觉复用遵循既有 sidecar 的
max_per_deck;P9 Closing Manifesto 每个 deck 最多一页,不能连续两页使用。定稿前由scripts/check_layout_reuse.py复核,用户点名不绕过结构上限。 该上限只约束已登记版式,不自动套用到手绘箭头等装饰元素;装饰是否延续由样张反演证据和用户选择决定。 - 用户要沿用可信 PPTX 的主题色和字体时,执行期先用
scripts/extract_pptx_theme.py确定性提取;distill_deck_style.py是后续完整视觉风格蒸馏,不能代替主题 XML 的读取。advise 只解释此路径,不读取用户文件。 提取的角色色只走 deck 级--color锚点覆盖通道,不能回写共享风格 brief 的color_palette。 - 用户描述已选定本次任务的样张时,解释锁定后的三组反演:明确应延续的稳定视觉 / 需确认是否整套延续 / 偶然成立不锁死;随样张确认同一轮呈现,结论随 spec 落盘。不要把本次已选样张默认当成新外来参考图,重新启动整套推荐和确认流程。 锁定依据是读回样张的真实视觉证据,优先于 prompt 的预期措辞;仅有文字描述时只给暂定判读,执行时核对样张实证,不宣称已看图或已完成锁定。
- 新版式提交到
references/styles/12_版式库/必须同时提供同名.layouts.jsonsidecar,并通过scripts/lint_layout_grid.py与scripts/lint_style_governance.py。六字段 Markdown 不能代替 sidecar,也不能先入库后补门禁;个人未登记草稿应留在库外。advise 可直接说明此规则,不需读取额外 reference。
首次使用
仅在 execute 模式且 Route 已冻结后读取 首次使用 和
执行合同。由 Agent 自动运行当前平台 launcher 和
setup;普通用户只在确实缺少凭据时执行一个返回的本地终端动作。凭据与渠道也可经本地
控制台 leo-ppt ui(或 config ui)自助管理(仅 127.0.0.1 + 一次性 token:渠道发现、新增/
修改/删除/切换/排序;密钥可网页一次性录入直写系统钥匙串——页面与接口零回显——或
终端录入/环境变量引用)。同一控制台的「生成任务」Tab 提供生成过程的只读可视化
(进展/页网格预览/事件时间线/链路/交付,轮询刷新,不驱动运行)。不得从 PATH 猜测 CLI,
不得在聊天中接收 secret,也不得把内部 runtime 步骤当作普通用户教程。
不变边界
协作方式(CONFIRM-GATE):执行请求默认委托执行,按已有授权自主完成可逆的 合同、大纲、母版、风格和样张制作、审查及范围内修复。用户明确选择逐阶段共创时, 在约定里程碑呈现具体工件后等待;合同与大纲、视觉方向与样张可同轮呈现,修订展示差异。 内部内容、来源、容量与样张质量检查始终保留。“确认/批准”在后续 reference 中指完成 对应决策节点,不自动意味着每件工件都要等待人工;真实工具的人工状态条件另行遵守。 内容文档保留
confirmation: pending|confirmed:confirmed 表示已审查并可作为生产 基线,同时记录decision_source: user-confirmed|user-delegated与decision_basis(会话依据 和委托范围)。user-delegated 不代表用户逐项审阅,也不能据此填写 CLI 的人工验收字段。 关键事实无法核实时只阻塞依赖动作;新增费用、扩大范围、当前失败集合的 partial 接受、 Office 信任和真实人工验收条件仍需相应授权或证据。已覆盖同一动作的授权不重复索取。 对缺材料的回复说明具体缺口即可,无需复述全流程;可以承诺范围内自主推进,不能承诺 “以后任何事项都不再确认”,因为未来新增费用、范围变化与人工验收仍可能需要参与。 数据分级(data_classification)据材料和已有声明确定,存疑且影响可用范围时才问; 机密/绝密直接拒做。内部数据不等于涉密,未公开经营数据定级内部即可继续。 首轮简述产出与真正需要用户参与的节点,不把内部步骤数量当成对话承诺。 学术场景(论文/答辩/组会/文献汇报信号)合同另含 三字段必填——数学量级(math_load)、图表取向(figure_orientation)、分节 优先级页数分配(section_priority),通用 deck 可选不强制,取值词表进 execute 后按工作流 reference 核实;敏感文本候选扫描:定级存疑或素材入库前跑
scripts/check_sensitive_text.py(命中仅掩码输出;候选非结论,裁决仍归data_classification分级门)。学术场景按已声明用途确定组会简报(minimal)或答辩证据密集(dense-defense);无法推断且影响交付时询问,不擅自取密集档。学术场景的一条龙指认(入口信号、五拍/RST/图证据/风格推荐/样张锚点映射)见
academic-vertical.md,用户说「学术模式」即声明该场景;交付档案:用户保存的交付档案(
${LEO_PPT_HOME}/profiles/<名称>.md)可预填 合同草案并逐项标注来源,用户只确认差异项;档案只存偏好字段、绝不存业务数据, 分级与答辩档位按本次材料重新核对,缺口遵守协作方式(见references/image-deck-workflow.md步骤 1 交付档案预填节;保存前过scripts/check_delivery_profile.py);模版推荐与选择:风格候选由合同信号驱动、默认推荐必须带归因一句;用户指定 优先序=点名 > 参考图 > 推荐(给了参考图就跳过推荐直行,只提取视觉系统并经 样张并排比对验证);错配首次必须提示一句风险与替代建议(用户预先说"别劝"也不豁免首次告知),之后尊重选择并在 style 合同记录用户选择依据、不再重复劝阻;品牌 VI 经
style render --brand注入——${LEO_PPT_HOME}/brands/用户档案优先于内置 10_品牌身份 预设,浅底对比度 <4.5:1 报错并给最近合规建议色;用户纠结或双参考图时提议 样张双生(两张使用同一内容页,仅改变视觉风格;多一张图成本先告知,点头才出,二选一落选即弃不追加第三方向)——全部寄生既有视觉方向确认与样张点,不新增 确认门(见references/style-recommendation.md)。委托执行可由 Agent 完成样张审查并据实记录决策来源;不能跳过真实出图、读回和质量检查。generate 路线的大纲与逐页母版必须在<project-root>/content/下落盘(outline-v<N>.md/deck-master-v<N>.md),头部携带confirmation和决策依据,聊天只引用路径与变更摘要;该文档门仅在 execute 模式生效。 advise 回答点名错配时也须保留“一次风险提示 + 后续记录选择依据”的承诺;记录用户实际给出的理由,未给理由标未提供,不把口头锁定冒充已落盘。 被问“这个风格能不能做”时,先分别说明真实索引命中与能力状态:已有 renderability 证据才说“可以做/可渲染”,否则说“可进入样张验证”并保留未验证边界,不承诺立即出图或已完成渲染。 风格候选先过scripts/style_hard_rules.py --check-brief(排除错配/锁定强语境,用户 点名即 bypass);在可行候选内优先给出跨家族差异,不为配额引入不适用方向;点名不存在时列相近候选(子串/别名/同轴 邻近)不静默替换;点名资产可为可信标杆 deck 蒸馏档案(scripts/distill_deck_style.py, Gate 0 信任先行)。风格库治理用generate_style_gallery.py --check(金样板回归, 漂移 exit 1)与audit_style_families.py(家族分布只读盘点)。比例合同:页图与交付画布必须同比例:generate 路线 slide 图片像素尺寸档必须为交付画布宽高比(默认 16:9,基准 2560×1440)。样张提交、样张方法继承与交付前都必须断言该比例;交付前必须运行
scripts/check_deck_geometry.py(非 0 退出阻止交付)。继承既有 sample_generation_method 前必须核验其像素尺寸档,比例不符(如历史 3:2 素材)不得继承,视为 generation method 变更,须重新生成并确认样张。文字保真降级链:文字错误先 TF-1 压文本预算回母版减法重生成(至少一轮);TF-2 留白贴字(
scripts/overlay_text.py,底图仍来自确认 backend、逐字来自 required_text 白名单)属 generation method 变更,须样张重确认——这是唯一允许的 确定性贴字例外,未经确认不得贴字交付。母版真值:逐页母版是内容真值工件:每页四段——结论句标题(按论证模式条件化)、要点 (按页面角色禅档位:陈述/氛围 0–1 条、论点页 ≤3、台账页 ≤6,每条 ≤2 行;论点/ 证据/方案页正文合计 ≤80 字,每要点行 ≤40 字)、 视觉行(容器清单 + 每个要点落位声明 + 图像来源三级)、备注(speaker_script 与 engineering 分栏);内容层失败先改母版再重建受影响页, 不绕过母版直接改图(见
references/deck-master.md)。 页数未明确“正文”时默认成品总页数,结构页从总数内分配;三点叙事是短演讲建议, 不强迫独立决策合并。图表即使数据点少,只要依赖精确几何、多轴或后续编辑也走原生图表。 母版落盘后跑scripts/check_deck_prose.py(文案纪律线索,翻案腔超限 exit 1)与check_number_ledger.py --diff(TF-1 后 verified 数字留存断言);高保障档冻结后 派发前另跑scripts/check_content_facts.py(数字断言回读材料,有界 2 轮); post-confirm 写回与恢复按 执行合同「内容层状态与恢复」(CAS verify / run ledger / reproject)。三级标注:数字与断言三级标注:引用(有出处)/ 估算(标"估算"或"经验值")/ 示意(标"示意", 不得用图表版式);三级之外来源不足一律标
unknown求证,不得直接写入页面。材料 整体缺失属于输入层的 unknown:先说明缺少哪些依据、影响什么产出和唯一下一步, 机器状态保留input_material_missing;可继续不依赖缺失事实的已授权准备。 四级(含用户确认)与要点级 source_ref 语法见references/deck-master.md。 材料缺失的解释部分按 输入路由「材料缺失 → 研究代采 轻形态」节附研究问题清单与建议检索渠道/素材类型,经合同确认门确认(零宿主依赖、 不联网;用户要求代采而 R-69 条件未齐备时如实说明能力边界并指回清单自取材)。再检要求:打回重做后的再检必须同时写出目标判据结论与波及面结论(如改文字→复查密度与 截断);qa_note 只写"已修复"不构成通过。 改母版重生成前用
scripts/compute_impact.py推导受影响页清单;含目录/agenda 的 deck 母版携带 deck-promises 承诺表(见references/deck-master.md)。护栏最小完备:收束页与认错/失效线的每个动作项必须携带 owner 与时限, 验证类动作必须附交付物定义与验收标准(可核条件+验收人);共享资源动作项 须核对并行冲突;每条失效触发附一句分支预案。请求金额须有登记表测算行或 显式
unknown+补齐时限(细则见 image-deck-workflow 第 1 步与 deck-master 纪律;check_master_contract⑪⑫ WARN 判据为机器子集)。CLI 真值:只依据 CLI 的 versioned JSON、状态、manifest、validation 和 artifact 推进;不手写 领域状态,不直接 import
_vendor,聊天声明不构成完成证据。真实派发:多页任务必须核对用户授权、宿主能力、容量和真实派发;主 Agent 不模拟 scheduler。
宿主能力表述:宿主能力缺失只能用 CLI 结论或对应固定块的
reason_code表述;不得枚举、点名或 诊断宿主的 Agent/子代理清单、注册表或目录来解释缺失原因,也不得据此提出改造 宿主的步骤建议。worker 缺失固定块:多页 worker 缺失、未知或调用失败时,先原样输出下面五行,再结束本轮;不得先写 “当前无法生成”等自然语言,也不得由主 Agent 静默串行替代(宿主可运行脚本时以
render-control-summary.py --fixed worker-unavailable输出;无法运行脚本时手写 并显式记录worker_render: handwritten):route: generate status: blocked reason_code: worker_capability_unavailable execution_eligibility: blocked next_action: 提供可调用的 worker 能力后从逐页派发阶段恢复只有用户明确提供 worker 能力后才能离开该状态。恰好一页也必须由 CLI 返回
single_unit_current_agent_allowed。凭据边界:凭据只由宿主或 allowlist reference 管理;不得读取私有认证文件、保存明文 secret, 或把 token、完整环境和用户正文写入日志。
Provider 三态:
configured_unverified允许开始任务;只有not_configured/invalid才暂停 图片节点并只给一个run_cliPrimary_Action;unknown不得当作available。验证分报告:结构验证、provider、OCR、viewer、desktop、独立渲染和人工视觉证据分别报告;只有
delivery_readiness=accepted才能声称交付闭环。能力与成本前置:长时间整理内容前,先核对当前宿主 worker 声明、所需能力与本地 Provider 配置,区分配置可用和真实生成已验证;不额外发起付费探针。按页数、样张与 重试假设给出初步费用区间和授权范围,未知价格如实说明;不能以未知作零费用或无限预算。 首个收费动作前核对已有授权,未覆盖新增费用才询问;样张承担首张业务验证。逐页派发前 用最终页计划更新本次 deck 的 token/成本预估区间并披露依据 (有历史
backend_stats用历史均值×重试系数,无历史或not-recorded用保守假设区间并 如实标注假设;scripts/estimate_run_cost.py生成,估算是区间不是承诺);交付披露须与backend report实际tokens_total对账一句,超出预估带上限要说明原因。指纹收据门:交付声明前必须
delivery receipt create(五类 sha256 指纹落<run>/reports/delivery-receipt.json);交付或导出前必须delivery receipt verify全一致(delivery_receipt_fresh)——收据缺失按 not_run 披露、漂移 (delivery_receipt_stale)阻断交付并按波及面处置;accepted隐含收据存在 且 fresh,不得以聊天声明或手写收据替代。交付披露:最终回复必须包含 PPTX 与必要逐页/notes/failure report 路径、结构验证结果,以及 provider/OCR/viewer/desktop/人工视觉验证中所有未运行项。含图片证据的交付披露还须包含 来源清单校验状态(交付前
scripts/check_sources_manifest.py <run> --strict,非 0 退出 阻断,WARN 项逐条披露)与 TF-2 fallback 页清单。用户要求讲稿交付物时,经scripts/export_speaker_notes.py(--pptx成品 /--master母版)导出,缺备注页 如实列出,不得编造口播稿(可加--prose-check顺手输出讲稿口语化 PROSE-WARN, 建议项不阻断)。用户要求讲义 PDF / 长图交付物时,经scripts/export_deck.py导出(started / completed / failed 三态回执,failed_pages 逐页列缺页/坏页), 导出属交付动作、同过 🔴 DELIVERY-GATE 披露。
红灯清单(反模式速查)
以下动作一律禁止;判据全文见对应章节,命中即按该章固定块或规则处理:
| 红灯动作 | 正确处置 | 出处 |
|---|---|---|
| 读取、扫描、隔离、净化来源未知的 PPT/PPTX | Gate 0 固定阻断;"警告后继续/净化后继续"均无效 | Gate 0 |
| 纯文档排版、单张配图/封面/图表素材、网页/表格微改 | 不属本 Skill,礼貌指路 | frontmatter 边界 |
| 主 Agent 串行替代缺失的 worker | 固定块 worker_capability_unavailable,不得静默替代 |
不变边界 |
手写领域状态、直接 import _vendor、以聊天声明充当完成证据 |
只依据 CLI versioned JSON 推进 | 不变边界 |
| 枚举/点名宿主子代理清单来解释能力缺失 | 用固定块 reason_code 表述,不诊断宿主 |
不变边界 |
| 经聊天接收 secret 或写入日志/私有认证文件 | 凭据只经宿主或 allowlist reference | 不变边界 |
| 把委托执行冒充人工批准,或跳过样张检查/数据分级 | 记录真实决策来源,保留质量检查与重要授权边界 | 不变边界 |
以 status=completed 声称交付闭环 |
须 delivery_readiness=accepted |
🔴 DELIVERY-GATE |
| 未经当前成功/失败集合确认即交付 partial | 🔴 PARTIAL-GATE:先展示集合再明确接受 | upgrade-selected |
| 用整页截图叠少量文本冒充对象级可编辑 | 禁止;真实 spawn 前不得记录 dispatch | 执行导航 direct-editable |
| 编造素材链接/来源直接出图 | 素材先过 validate_assets.py 校验,失败标 unknown 禁止入页,替换或降级示意后重验 |
图片式工作流 3b 步 |
执行导航
进入具体 Route 后才读取对应 reference;跨 Route 的 runtime、项目、worker、恢复和 交付规则统一读取 执行合同。
generate
读取 图片式工作流、 Backend 选择 和 视觉质检规范。
按协作方式完成完整内容、风格、backend 和一个样张的审查后(样张默认恰好 1 张且锚定正文页角色; 目录/封面等结构页加样必须先告知多一张图的成本并经用户点头才出;仅点名两张或说 “不用再问”不构成已接受尚未披露的额外成本,不得写“点头视为已给”。已披露且获明确 授权的同一加样不重复询问;advise 只说明成本及待确认项,不预记同意或承诺直接加样。 选定后同一轮呈现 风格反演三组判读——明确应延续的稳定视觉 / 需确认是否整套延续 / 偶然成立不锁死, 以样张读回实证为准,反演结论随 spec 落盘),按需读取 风格库 和 slide worker prompt。style/layout 必须由确定性模板生成; 缺页、未完成状态或任一页 QA 失败都阻止组装。组装复验时逐页核对合同约定的版面 固定件(页码/页脚位置与字号一致),页内文本引用与实际页码核对存在。用户要求高保障 档位时,启用 视觉质检规范 第六节多轮审查协议(镜头池轮换, 连续两轮无 P1/P2 才收敛;台账记录,驳回须给依据;高保障档另可选 rubric 合成分与迭代硬预算,默认不启用)与交付双评审官可选档 (见 执行合同,分歧 ≥2 分复议,不替代三证)。
direct-editable
读取 可编辑工作流、 Manifest Schema 和 Page Decision Tree。
图片/PDF 可直接 prepare;PPT/PPTX 必须先通过可信确认与 preflight。真实 worker 可用 后才读取 page worker prompt。不得以整页截图叠少量文本冒充 对象级可编辑,也不得在真实 spawn 前记录 dispatch。
editable 组装内核为双 builder 等价(LEO_EDITABLE_BUILDER=pptx|legacy,默认 legacy):
对象级 object_builder 对非法 preset 在 build 期 ValueError 拒绝而非透传,见 执行合同。
upgrade-full
冻结原 image-deck 的页面、hash、尺寸和 notes,再按 direct-editable 处理全部页面;
失败不得破坏原图片交付物,全部页面和 deck validation 通过后才能声明全可编辑。
upgrade-selected
冻结选中页集合,只升级选中页。默认任一失败都不交付 partial;🔴 PARTIAL-GATE:只有展示当前成功/失败
集合并取得明确接受后才能生成 partial-hybrid,且不得声称全可编辑。失败集合变化时
必须重新确认并保留旧 artifact revision。
用户要求“失败页保留原图并直接交付”但尚未看过当前成功/失败集合时,即使处于
advise 也必须明确回答:本轮不会执行;先展示当前成功/失败清单,再由用户明确接受
partial-hybrid。普通执行授权不能替代对当前失败集合的精确确认。