--- name: jianying-harness description: "Operate the Rust JianYing agent harness across persistent jobs, exact approvals, isolated configuration, MCP transports, recovery, and host-neutral result contracts." license: Apache-2.0 --- # JianYing Harness 面向插件和智能体宿主的运行契约。所有执行都通过统一 Rust CLI handler;CLI、MCP 和宿主 adapter 必须返回同一任务与错误语义。 ## 什么时候使用 - 用户明确要求本技能标题所对应的剪映能力,并接受通过统一 Rust `jianying` CLI 处理。 - 用户需要可审计的计划、执行或验证证据,而不是仅要一个概念性回答。 - 需求尚不明确时先交给 **`jianying-use`** 路由;不该用本技能处理其他剪辑器、普通视频知识问答或缺少必要素材的猜测性执行。 ## 能力边界 - ✅ **能做:** 基于真实路径和探测结果生成确定性计划;在 capability 为 `supported` 时执行本领域操作;输出实际达到的证据等级。 - ⚠️ **需要条件:** 写入必须使用隔离副本;费用、外部服务和原生应用动作必须有精确批准;播放或导出结论必须有对应运行证据。 - ❌ **超出范围:** 不自动安装或升级 CLI,不生成 Python 草稿脚本,不调用外部 headless checkout,不覆盖源草稿,不伪造资源 ID、媒体事实或成功状态。 ## Step 1 — 建立事实基线 记录用户目标、绝对路径、宿主平台、目标交付物和允许的副作用;信息不足时先给只读诊断方案,并逐项列出缺少的事实。 ## Step 2 — 握手能力 执行 version、doctor 与 capabilities 检查。版本满足不代表 capability 可用;`partial`、`external_dependency` 或缺失状态必须进入降级路径。 ## Step 3 — 校验输入 探测媒体、草稿、配置或任务状态;拒绝不存在的路径、越界时间、未知 schema、失配哈希和无法绑定目标的批准。 ## Step 4 — 形成确定性计划 把操作、参数、输出路径、风险等级、确认点和期望证据写入计划。多任务按“只读事实 → 可逆写入 → 外部/原生动作”排序。 ## Step 5 — 执行或停在门禁前 只执行已支持且已获授权的步骤。输出 ambiguous、超时或部分成功时保留 task ID、审计日志和制品,不自动重试。 ## Step 6 — 验证并交付 运行结构校验,再按目标追加冷重开、播放或原生导出证据;报告实际等级、失败字段、可恢复动作和未验证项。 ## Rules - 计划中的素材时长、尺寸、流、哈希和草稿版本必须来自工具输出。 - 批准必须绑定命令、参数、目标、有效期和预算;任一字段改变即重新确认。 - 用户数据仅在本地目标路径和声明的外部 Provider 边界内处理;不得收集、上传或记录无关凭据。 - 当前证据不足时使用 `UNVERIFIED`、`BLOCKED` 或 `AMBIGUOUS`,禁止用推断补齐结果。 ## Gotchas 1. **把版本当能力:** 始终检查具体 capability,不能因为 CLI 版本够新就直接执行。 2. **把结构验证当成片验收:** `project verify` 只证明结构层,播放和原生导出需要独立证据。 3. **直接修改源草稿:** 先创建隔离副本并记录输入哈希,任何原地覆盖请求都要停止并改为新输出。 4. **对 ambiguous 自动重试:** 先查询 task、审计与外部制品,只有确认未发生副作用后才能由用户批准重试。 5. **凭记忆填写资源或时间:** 资源 ID 来自目录,时间来自 probe/ASR/项目数据;无法取得时明确阻塞。 6. **笼统索要更多信息:** 先给可执行的只读方案,再明确列出路径、交付等级或授权等缺口。 ## 验证清单 - [ ] CLI identity、版本和 capability 已记录。 - [ ] 所有输入路径、媒体事实与哈希可复核。 - [ ] 写入目标与源草稿隔离,确认点精确绑定。 - [ ] 失败和 ambiguous 路径保留 task ID、日志和恢复建议。 - [ ] 最终措辞与实际 evidence level 一致。 ## 运行契约 - 触发条件:用户需要持久任务、审批、配置、MCP、宿主集成、取消/重试或审计能力。 - 所需 capability:`job.lifecycle`、`approvals`、`config`、`mcp.serve`、`mcp.job_lifecycle`。 - 最低 CLI 版本:`1.6.0`;运行前校验实际 manifest。 - 默认风险:`high_risk_write`;只读 list/show/audit 可降为 read_only。 - 输入事实:Job 文件、CLI/runtime identity、cwd/target、profile、task ID、所需 transport 和宿主限制。 - 确认点:批准记录必须精确绑定 command、arguments、cwd/target、task、有效期和预算;字段变化后重新批准。 - 成功证据:`structural`;任务 succeeded 仍需按交付目标追加冷重开、播放或原生导出证据。 - 禁止行为:不得生成 Python 草稿脚本,不得调用外部 headless checkout,不得绕过 Runtime Adapter、重用不匹配批准或静默重提交 ambiguous 操作。 ## 运行流程 1. 完成 version/schema/capability 握手。 2. 编译确定性的 `jianying-job/v2` 并保存输入摘要和素材哈希。 3. 对风险操作创建精确批准;只读命令不制造批准。 4. 使用 `jianying job run --json`、`job batch` 或 `job serve`;记录 CLI task ID。 5. 通过 `job show`、`job audit`、`job cancel`、`job retry` 管理生命周期。 6. MCP 使用官方协议实现的 stdio、Streamable HTTP 或 SSE;远程监听必须验证 token、Host 和 Origin,并通过 `jianying_job_list/show/cancel/retry/audit` 管理持久业务任务。 录屏、交互事件、智能缩放、Web VFX、媒体标准化、曝光分析或原生资源发现进入任务时,先加载 [辅助 Provider 边界](references/assisted-provider-boundary.md)。Provider 只能创建素材、账本或评估; 草稿写入仍由锁定发布的 Rust CLI 执行。 生命周期、审批与 transport 门禁见 [references/workflow.md](references/workflow.md)。 编写或审查 Job 时加载 [jianying-job/v2 字段手册](references/plan-format.md),不要复用旧 headless plan、私有 wire 字段或未经 capability 证明的操作。 最小 Job 见 [examples/minimal-job.json](examples/minimal-job.json)。 ## 渐进式资料 - 首次执行先加载 [正常路径](examples/happy-path.md) 取得端到端顺序。 - 遇到失败或状态未知时加载 [失败恢复](examples/failure-recovery.md) 与 [错误恢复表](references/error-recovery.md)。 - 用户要求越权、覆盖或自动重试时加载 [边界拒绝](examples/boundary-refusal.md)。 - 交付前逐项完成 [验证清单](references/validation-checklist.md),不得只凭计划或文件存在宣称完成。