
【免费下载链接】cindyConsider it done. The open-source AI agent that works out of the box · 想到就能做到。开源、开箱即用的 AI Agent。项目地址https://gitcode.com/GitHub_Trending/cind/cindy点击查看免费下载在 Cindy 的「视频剪辑伙伴」中delivery.md是一份剪辑计划待审交付骨架它把素材权利、目标规格、逐段切点、禁用项和渲染后检查压缩到一页纸内让用户在动手渲染前就能审阅取舍。本文以该模板为主线结合同一伙伴包内的video-editor-ops规程、timeline_check.py离线校验脚本与宿主装载逻辑讲清每一栏该填什么、脚本如何校验、以及为什么没做的事必须写 NOT_RUN。一、模板在伙伴包中的位置与装载链路模板文件位于伙伴包内apps/desktop/resources/bot-packages/video-editor/0.5.1/ ├── manifest.json ├── knowledge/method.md └── skills/ ├── video-editor-ops/ │ ├── SKILL.md │ └── templates/delivery.md ← 本文主角 ├── video-editor-evidence/ │ ├── SKILL.md │ ├── scripts/timeline_check.py │ └── templates/{input.json,contract.md} └── video-editor-getting-started/SKILL.md在 manifest.json 中video-editor-ops这个 Skill 通过resources字段显式声明了模板{ slug: video-editor-ops, bodyPath: skills/video-editor-ops/SKILL.md, scripts: [], resources: [skills/video-editor-ops/templates/delivery.md] }宿主并不会因此随便读一个文件而是做了三重约束见 nativePackage.tsbodyPath必须严格等于skills/slug/SKILL.mdslug 必须匹配^[a-z0-9][a-z0-9-]*$bodyPath、scripts、resources三项合并后不得重复且每一项都必须以skills/slug/为前缀该前缀下的实际文件集合必须与声明列表一一相等——多一个文件、少一个文件都会以INVALID_PACKAGE拒绝。也就是说templates/delivery.md不是可选的随手引用它被写进了包契约每个文件的内容还会走read()与manifest.integrity.files的 SHA-256 校验。装载后文件由 validateBotSkillFiles 进一步检查路径合法性拒绝反斜杠、.、..与绝对路径再落到userData/bot-skills/botId/skills/slug/下由引擎按目录挂载。测试 nativePackage.test.ts 中的SHIPPED_ONLY列表把这套文件清单固化为回归断言因此模板内容与路径都属于可验证的交付事实。一个值得注意的细节video-editor-getting-started在 nativePackage.ts 中被filter掉——它是宿主的开场管线只以问候形式出现不会作为可列出的 Skill 卡片展示。真正进入工作流的是video-editor-ops规程与video-editor-evidence时间线检查。二、模板原文逐行拆解模板全文如下这就是你在伙伴工作目录中会拿到的骨架# 视频剪辑伙伴 # 剪辑计划待审 素材/权利 目标时长/比例/fps/用途 | 段落 | 素材id | in/out | 原话 | 切法及理由 | B-roll/音乐权利 | |---|---|---|---|---|---| 禁用项 渲染后检查切点/字幕/同步/黑帧/音量/导出未做项目明确NOT_RUN。它看起来极简但每一行都对应 SKILL.md 操作顺序中的一个强制动作模板要素对应规程步骤约束含义# 剪辑计划待审第 3 步先交剪辑计划计划是待审状态用户批准前不得渲染素材/权利第 1 步登记实际素材 id、时长、分辨率、来源权利素材必须真实登记权利状态显式声明目标时长/比例/fps/用途第 3 步目标比例和时长四个维度共同决定输出规格与帧边界表格六列第 2、3 步依真实转录取段落段落顺序、in/out、字幕处理、B-roll/音乐来源逐段的因果链必须可审阅禁用项第 1 步用户禁用项用户的绝对禁止项必须落到纸面渲染后检查第 6 步逐段检查首尾、切点、字幕、同步、静音/黑帧与导出参数未执行项必须显示为NOT_RUN2.1 素材/权利栏填写的不是一批素材而是可核对的清单素材 id、时长、分辨率、来源与权利。规程明确要求区分事实/推断/未知所以没有核实到的内容只能写未知不能凭经验补全。若素材放在云盘例如 Google Drive规程允许用用户已有的云盘工具下载到任务目录且默认只读ffprobe只在工具实际存在且获准读取所选文件时才可用不自动安装。这与timeline_check.py的权利字段是同一套语义源素材的rights只接受CLEARED或UNKNOWN两个值timeline_check.py。模板没有大概没问题这种中间态。2.2 目标栏时长/比例/fps/用途四项缺一不可时长对应脚本的maxDuration是总时长的硬上限比例与用途决定竖屏口播的构图与交付渠道fps是整条时间线唯一允许的帧率基准直接决定帧边界计算。fps 的取值范围被限定在0 fps 240maxDuration必须为正数。混合帧率素材必须在计划里先统一否则脚本算出的帧号没有意义。2.3 六列表格段落、素材 id、in/out、原话、切法及理由、B-roll/音乐权利段落输出顺序。脚本用游标累加的方式把段落顺序直接映射为成片时间线计划表里的行序就是成片播放序。素材 id必须能在素材清单里找到否则脚本报missing source reference。in/out原素材的入点与出点不是成片时间。知识文档 method.md 特别强调source in/out 是原素材时间timeline frame 是成片帧二者不同混用是剪辑计划最常见的误判来源。原话必须来自真实转录。规程第 2 步写明没有转录不能伪造说过的话脚本对transcript的要求是必须是字符串空串可以通过结构校验但语义上空转录本身就该在人工审查时被打回。切法及理由为什么在这里进、在这里出——保留原意与关键限定词而不是为凑时长硬切。这列是给用户批准用的脚本不校验。B-roll/音乐权利素材、肖像、音乐与生成图片要分别核权见 method.md。未获许可的音乐或素材不能进成片。2.4 禁用项栏用户说过绝对不要的处理跳切、变速、花字、某类转场……必须逐条写出。它是后续修订的判据也是交付时自检的清单口头答应不算落地。2.5 渲染后检查栏模板给出的检查项是切点 / 字幕 / 同步 / 黑帧 / 音量 / 导出并附一句关键约定——未做项目明确 NOT_RUN。这与脚本输出的固定字段一致render: NOT_RUN、syncAndCaptionAccuracy: NOT_EVALUATED。规程第 6 步还要求记录真实版本和未测项保留原素材与可回退版本只交本地可审阅文件不自动发布。三、把计划变成可校验输入input.json 契约delivery.md的表格是给人看的timeline_check.py的输入是给它自己看的。二者字段一一对应转换时只需机械映射。契约模板见 input.json{ fps: 30, sources: [ { id: clip-a, duration: 20, rights: CLEARED } ], clips: [ { source: clip-a, in: 1, out: 4, transcript: 这是合成转录不是真实用户口播。 }, { source: clip-a, in: 8, out: 10, transcript: 第二段合成转录。 } ], maxDuration: 10 }字段形状由 contract.md 定义顶层只允许fps、sources、clips、maxDuration四个键sources行只允许id、duration、rightsclips行只允许source、in、out、transcript。脚本用record()做精确集合比较timeline_check.py多一个或少一个字段都直接失败重复 id、重复 JSON key 同样拒绝。对应的delivery.md填写示例数据即上面这份合成样例可直接对照# 视频剪辑伙伴 # 剪辑计划待审 素材/权利 - clip-a时长 20s分辨率 1080x1920示例来源用户提供权利CLEARED 目标时长 ≤10s / 9:16 / 30fps / 竖屏口播短视频 | 段落 | 素材id | in/out | 原话 | 切法及理由 | B-roll/音乐权利 | |---|---|---|---|---|---| | 1 | clip-a | 1.0-4.0 | 这是合成转录不是真实用户口播。 | 保留开场完整陈述结尾落在句末停顿 | 无 B-roll背景音乐 UNKNOWN暂不入片 | | 2 | clip-a | 8.0-10.0 | 第二段合成转录。 | 承接上段语义掐掉中间冗余过渡 | 无 | 禁用项无跳切、无变速、不加花字 渲染后检查切点 NOT_RUN / 字幕 NOT_RUN / 同步 NOT_RUN / 黑帧 NOT_RUN / 音量 NOT_RUN / 导出 NOT_RUN注意示例中把 B-roll 与音乐的权利单独标注为UNKNOWN并明确暂不入片——这比笼统写有版权更符合模板意图。四、运行时间线校验命令、输出与退出码脚本的使用方式在 video-editor-evidence/SKILL.md 中规定为先检查脚本、再从 stdin 传 JSONcd apps/desktop/resources/bot-packages/video-editor/0.5.1 python3 skills/video-editor-evidence/scripts/timeline_check.py \ skills/video-editor-evidence/templates/input.json对仓库自带样例的实际输出为{blockers: [], durationSeconds: 5.0, render: NOT_RUN, syncAndCaptionAccuracy: NOT_EVALUATED, timeline: [ {durationSeconds: 3, endFrame: 90, source: clip-a, startFrame: 0, transcript: 这是合成转录不是真实用户口播。}, {durationSeconds: 2, endFrame: 150, source: clip-a, startFrame: 90, transcript: 第二段合成转录。} ]}退出码为0。可以看到三个关键结论帧号由脚本计算不由人算。startFrame round(cursor * fps)、endFrame round((cursor duration) * fps)timeline_check.py3s 段落在 30fps 下为 0–902s 段落接续为 90–150。由于 Python 的round()采用四舍六入五成双手工按普通四舍五入复算极小概率会差一帧以脚本输出为准。durationSeconds是累加值不是maxDuration样例 5.0 秒未超 10 秒上限。render恒为NOT_RUN。脚本只做计划结构检查不碰媒体、不渲染因此它给的任何通过都不等于成片可用。4.1 语义缺口不会被静默吞掉把rights改为UNKNOWN、并把第二段拉到 8–14总长 9s、上限 8s后脚本仍以0退出但blockers变成{blockers: [DURATION_EXCEEDS_TARGET, UNCLEARED_SOURCE:clip-a], ...}也就是说结构合法与语义合规是两回事。当前实现只会产出三类 blockertimeline_check.pyblocker触发条件处置UNCLEARED_SOURCE:id该素材rights ! CLEARED先补授权或从成片候选中剔除EMPTY_TIMELINEclips为空计划尚未成立不能提交审批DURATION_EXCEEDS_TARGET累计时长 maxDuration回表重排 in/out而不是改大目标敷衍4.2 结构错误以退出码 2 终止把某段的out写成超出素材时长例如素材 20s 却写in:19, out:21脚本走异常分支INVALID_INPUT: clip outside source duration退出码2。同类失败还包括顶层/行内字段集合不符、fps超出(0,240]、maxDuration 0、素材duration 0、权利值不在白名单、素材引用缺失、重复 id、重复 JSON key、非有限数值NaN/Infinity、输入超过 1 MiBtimeline_check.py。还有一个容易踩的边界in out且区间合法仍可能因为短于一帧被拒。当round(end*fps) round(start*fps)时报clip shorter than a timeline frame——这正是 method.md 提醒的极短片段可能四舍五入成 0 帧需拒绝。4.3 脚本的运行边界按 SKILL.md 的说明与源码实现该脚本只依赖 Python 3.10 标准库只经 stdin/stdout 通信不访问网络与 Home 目录不写文件不执行子进程安装与打包过程不会执行它单次输入上限 1 MiB数组最多 10000 条。因此它可以安全地在计划评审阶段反复运行但它不产生任何凭证、授权、测试或连通性证明。五、从计划到成片模板如何驱动后续动作模板不是填完就归档的表单它串联着规程的剩余步骤先计划后制作。ops 第 3 步先交剪辑计划第 5 步才在用户批准计划后动手这段顺序在模板里体现为标题的待审。工具缺失时交付缺口不承诺渲染。若本机没有获准使用的视频工具正确产出是批准后的剪辑计划 缺口说明而不是伪造一个输出文件。规程同时禁止自行安装依赖、禁止把缺失的 Whisper/SyncNet 说成可用。逐段自检然后如实记录。首尾、切点、字幕原话、同步、静音/黑帧、导出参数——没做的写NOT_RUN没测的写未测不因为看起来没问题改成 PASS。保留可回退版本。原素材与历史版本不得被覆盖交付只意味着交付一个本地可审阅的文件不自动发布。事实/推断/未知分开。ops 的输出与持续协作一节要求使用本模板并明确三类信息不得混写这也和method.md的口径一致。5.1 两个常见误判把结构 PASS 当成成片 PASSblockers: []只说明时间段没越界、引用没缺失、总时长没超标、权利状态已声明它明确不评价音画同步与字幕准确度输出字段直接写NOT_EVALUATED。把渲染成功当成内容正确method.md 的原话是渲染成功也不能代替目检。模板末行的六项检查就是目检清单缺一项就得写NOT_RUN。六、交付前自检清单按模板逐项核对任一未满足都不要声称已交付成片素材/权利是否登记了实际 id、时长、分辨率、来源与权利且与脚本sources完全一致目标的时长、比例、fps、用途是否齐全fps 是否与脚本顶层fps相同表格行序是否等于成片顺序in/out是否写的是原素材时间且均落在素材时长内原话是否来自真实转录是否存在任何编造或根据大意补写切法及理由是否说明了为什么在这里切而不是只写节奏更好B-roll/音乐权利是否与画面素材分开核权未清权的内容是否已被排除禁用项是否覆盖用户明确说过的所有绝对不要是否运行过timeline_check.py并处理了全部blockers渲染后检查六项是否逐项写成结果或NOT_RUN且没有把未测项写成通过是否保留了原素材与可回退版本且没有自动发布到任何平台七、延伸阅读交付模板本体delivery.md操作规程video-editor-ops/SKILL.md校验脚本与契约timeline_check.py、contract.md、input.json剪辑方法参考method.md包描述与能力声明manifest.json宿主装载与包完整性校验nativePackage.ts、botSkillStore.ts、nativePackage.test.ts伙伴运行时契约cindy-bots-runtime.md一句话收束delivery.md的价值不在那张表而在它把计划—审批—校验—目检—如实记录这条链路变成了可审阅、可复算、也可被脚本与测试验证的固定结构。赞分享【免费下载链接】cindyConsider it done. The open-source AI agent that works out of the box · 想到就能做到。开源、开箱即用的 AI Agent。项目地址https://gitcode.com/GitHub_Trending/cind/cindy点击查看免费下载相关推荐Cindy 视频剪辑伙伴的剪辑计划校验方法source in/out、timeline frame 与不伪造交付Cindy 视频剪辑伙伴的剪辑计划校验方法source in/out、timeline frame 与不伪造交付 本篇围绕 Cindy 内置的「视频剪辑伙伴」深入解析 Cindy 视频剪辑伙伴的时间线证据 Skill让剪辑计划可校验、可追溯深入解析 Cindy 视频剪辑伙伴的时间线证据 Skill让剪辑计划可校验、可追溯 这份文档定义的是 Cindy 内置「视频剪辑伙伴」中的一个离线辅助技能 vCindy 视频剪辑伙伴 video-editor-ops 技能解析素材登记、剪辑计划与交付检查的完整规程Cindy 视频剪辑伙伴 video editor ops 技能解析素材登记、剪辑计划与交付检查的完整规程 本篇技术指南围绕 Cindy 内置伙伴包 vide上一篇前端驱动的OFD文档革命ofd.js技术原理与实战指南下一篇CNL进阶掌握rounding modes与overflow handling的高级技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考