# Omni 条件与派生链

> 设置固定策略、三值条件、产物选择器和有界的媒体处理链。

- 网址：https://funcoding.ai/agents/qwen-code/configuration/omni-policies/
- 核实日期：2026-10-08（命令、配置和价格以官方文档为准）
- 官方来源：[Qwen Code 官方文档：Omni Media Policies](https://github.com/QwenLM/qwen-code/blob/main/docs/users/features/omni-media-policies.md)

---
以下字段属于 omni 实验分支的 processing.fixedPolicies。先确定哪些资源应处理，再选工具和产物去向；不要将它当作能执行任意代码的自动化语言。

## 策略身份与顺序

策略 ID 匹配 `^[A-Za-z0-9][A-Za-z0-9._-]*$`。同名值设为 null 可以删除低层合并来的固定策略；传输守卫另有不可删除规则。

priority 默认 0，按数值从高到低执行，同分按 ID 升序。mediaTypes 必填且非空，可选 image、video、audio。origins 默认 user 和 tool；派生资源属于 policy，需要显式接收。

## 执行控制

| 字段 | 默认与行为 |
| --- | --- |
| when | 不设则总是匹配 |
| onConditionUnavailable | skip；也接受 run，保留设计值 abortTurn 当前会被拒绝 |
| toolName | 必填，必须是已注册策略工具；被 tools.disabled 排除的工具不可引用 |
| arguments | 空对象，按工具设置 schema 校验 |
| maxRunsPerLineage | 1，限制同一资源谱系的同一策略次数 |
| onFailure | continue，可设 abort 中止该根资源处理 |
| output.reprocessMedia | false，开启后派生媒体再次匹配策略 |
| output.source | omit，用派生结果替换源；keep 同时保留源 |
| output.artifacts | 默认所有产物 include |

inputPath、outputDir、resourceId 由编排器注入，不能在固定 arguments 中手填。未知键会报错。abort 的范围是当前根资源处理，不应自行扩写为关闭整个会话。

## 条件表达式

例如只处理超过二十分钟且不少于 1MiB 的音视频：

```json
[
  "all",
  [">", ["field", "resource.durationMs"], 1200000],
  [">=", ["field", "resource.sizeBytes"], 1048576]
]
```

比较支持 >、>=、<、<=、==、!=，两个操作数为字段引用或数字/字符串/布尔字面量，排序比较要求数字。all、any、! 组合条件；不支持任意 JavaScript、JSONPath 或通用嵌套求值。

resource 可读 sizeBytes、durationMs、width、height、maxWidth、maxHeight、frameRate、frameCount、bitRate、sampleRateHz、channels、estimatedTokenCount。maxWidth/maxHeight 是宽高别名。

session 可读 contextWindowTokens、promptTokenCount、reservedOutputTokens、availableContextTokens。request.totalEstimatedMediaTokens 是当前 pass 中该资源及派生物的估算，按资源分别计算，不是本次全部附件之和。

## 未知条件不是 false

无法探测字段时得到 unavailable。all 中存在确定 false 则为 false；any 中存在确定 true 则为 true；其余不确定性继续向上传递，最后由 onConditionUnavailable 决定跳过或执行，并记录缺少哪些字段。

memory.hasTranscript、hasOcr、hasCaption、hasSummary、hasKeyframes、hasClip 用 1/0 表示资源媒体记忆中的已存在产物，覆盖派生链。记忆关闭、没有绑定或存储不可读时为 unavailable，不能按“还没转写”处理。

## 派生链与产物去向

要让视频抽出的音轨继续压缩和转写，上游设 output.reprocessMedia:true，下游 origins 包含 policy。若开启重新处理却没有任何策略接受 policy，启动校验会拒绝这条无出口的链。

output.artifacts 使用 role:transcript、kind:image 或 * 选择器，优先级 role 高于 kind 高于 *。include 加入投递集，retain 只存储不发送。显式映射中未匹配的产物按 retain 处理；选择器指向工具不可能生成的种类或角色会报错。

链还受最大深度、每根资源总执行次数和派生字节预算约束。source:keep 会继续保留原媒体，不适合希望真正降低最终投递体积的所有步骤；结合[传输守卫](https://funcoding.ai/agents/qwen-code/configuration/omni-delivery/)检查结果。
