用途
该技能适用于用户需要执行 vs app dataset bind 的场景。绑定时,它负责推断并确认应用侧字段设置,而不是直接复用或省略这些字段。
使用前提
- 已提供 application-id 与 dataset-id。
- 能够访问足够的代表性数据集上下文,以便推断绑定时字段配置。
- 优先使用已有的 plan 目录或原始源文件,因为推断提示需要 Dataset_Description、Data 和 Meaning。
- schema 与数据集侧字段属性已向用户展示,并在绑定时推断开始前被显式重新确认。
- 不要假设数据集创建阶段的 field-config.json 已包含绑定阶段字段,如 IndexFields、FilterFields、SuggestFields、ImageIndexFields 或 VideoIndexFields。
- 若已拉取的数据集元数据包含上述字段,除非人工评审显式验证,否则视为遗留/非标准数据。
相关命令
- app dataset bind:使用显式 --field-config 将数据集绑定到应用。
- app dataset-config get / app dataset-config list:在修改前检查当前已绑定的数据集配置。
- dataset schema get / dataset get:检查字段推断所需的数据集 schema 与元数据。
工作流程
- 先检查当前应用与数据集上下文:现有数据集配置、数据集 schema,以及可用的源 plan 或原始样本数据。
- 构建推断流程所需的三类提示输入:
- Dataset_Description:优先使用已有数据集描述或 plan 输出;缺失时从绑定所用的同一源上下文推导。
- Data:收集最多 10 条代表性 JSON/JSONL 记录。
- Meaning:按提示推断所需的树形结构准备字段含义。
- 复用 schema.prompt,并应用以下模板:
- filter_infer_prompt 推断 FilterFields
- suggest_infer_prompt 推断 SuggestFields
- index_infer_prompt 推断 IndexFields
- 组装用于绑定的字段配置 JSON:
- 若数据集侧 FieldDescMap 已存在则保留。
- 准备绑定时配置时忽略从数据集元数据拉取的 IndexFields;IndexFields 取自 index_infer_prompt 的搜索输出。
- 忽略拉取的 FilterFields;基于 FieldDescMap 中的字段描述,用 filter_infer_prompt 重新推断 FilterFields。
- 忽略拉取的 SuggestFields;SuggestFields 取自 suggest_infer_prompt 的输出。
- 忽略拉取的 ImageIndexFields 与 VideoIndexFields;根据 schema、含义与样本值,选择真实的图片 URL 或图片资产字段来推断 ImageIndexFields,选择真实的视频 URL 或媒体资产字段来推断 VideoIndexFields。
- 将拟定的 IndexFields、FilterFields、SuggestFields、ImageIndexFields、VideoIndexFields 展示给用户,并在绑定前显式确认。
- 由 agent 对话驱动时,确认必须遵循 vs-item-onboarding/references/agent-confirmation-ux.md 中的 Stage B 约定:先渲染每组一个表格(列为 Field / Type / Meaning / Reason to include / Risk or note),再通过交互式问题对话框询问。
- 若 CLI 之后打印仅含摘要的确认步骤,不得将其视为 agent 自身表格加对话框评审的替代。
- 绑定视频数据集时,拟定字段组还必须满足下方 Video Dataset Field Constraints 中描述的 DefaultFieldStrategy 服务端约束;须在请求确认前修正提案,而不是让用户确认一个会被拒绝的载荷。
- 运行:vs app dataset bind --application-id <id> --dataset-id <id> --field-config @field-config.json
- 绑定后,用 app dataset-config get 校验生效配置。
- 绑定成功即视为第一阶段结束;除非用户明确要求就绪或运行时验证,否则不等待应用就绪。
视频数据集字段约束(DefaultFieldStrategy)
视频数据集(Dataset.Type = 3,使用 onboarding 技能中的 --type video 生成)在绑定阶段字段组上带有服务端硬性约束。违反约束会导致 BindAppDataset / CreateDataset 失败,报错:
- Error.Code = MissingParameter.DefaultFieldStrategy
- Error.Message = The default field strategy is missing.
这些规则由服务端 checkFieldConstraint 强制执行,无法通过推断、提示调优或用户偏好绕过。任何违反约束的绑定提案都必须在绑定前修正。
字段约束如下:
- video_url:IndexFields 必须包含;FilterFields 禁止;SuggestFields 禁止
- content_id:IndexFields 禁止;FilterFields 必须;SuggestFields 禁止
- content_type:IndexFields 禁止;FilterFields 必须;SuggestFields 禁止
- parent_content_id:IndexFields 禁止;FilterFields 必须;SuggestFields 禁止
- sequence_index:IndexFields 禁止;FilterFields 必须;SuggestFields 禁止
其中“必须”表示该字段必须出现在对应组中,“禁止”表示该字段不得出现在对应组中。其他字段(title、director、actors、genres、duration、language、alias 等)无服务端约束,可根据业务目标与推断输出选择。ImageIndexFields 与 VideoIndexFields 独立于实际图片/视频资产字段进行选择;video_url 通常也会加入 VideoIndexFields,这与上表相互独立。
在调用 vs app dataset bind 之前,agent 必须逐行核对上表与当前提案。若提案违反任意一行:修正提案(移动/新增/删除受限字段)、重新渲染受影响的每组表格、通过 Stage B 对话框请用户重新确认,之后才能运行 vs app dataset bind。权威参考见 vs-item-onboarding/references/video-field-constraints.md。
客户环境原则
在客户环境中,假设无法访问仓库源代码。仅使用已安装的技能、打包的 vs CLI 表面(--help、命令输出与观察到的运行时行为)以及用户明确提供的信息来执行任务。不要依赖阅读本地仓库源文件、生成的仓库快照或实现细节来决定运行时动作。若已安装 CLI 的行为与技能冲突,优先信任已安装 CLI 的行为。若技能与打包 CLI 仍不足以安全推进,应停下并询问用户,而不是搜索源代码。
限制
- 当用户请求涉及可搜索/过滤/建议/图片/视频字段时,不得使用猜测或空的绑定时 field-config 运行 app dataset bind。
- 在 schema 与数据集侧字段属性与用户明确重新确认之前,不得开始绑定时推断。
- 不得跳过用户对 IndexFields、FilterFields、SuggestFields、ImageIndexFields 或 VideoIndexFields 的确认。
- agent 对话驱动绑定时,确认必须使用每组表格加交互式问题对话框;不得降级为单一纯文本摘要、自由格式的是/否聊天回复或 CLI 终端 y/N。
- 不得代表用户自动确认 CLI 摘要步骤;agent 侧表格加对话框评审仍是唯一事实来源。
- 复用 schema.prompt 中的提示契约;不要为这些推断步骤发明替代输出键。
- 将数据集创建与数据集绑定视为独立阶段:FieldDescMap 属于数据集创建,而 IndexFields、FilterFields、SuggestFields、ImageIndexFields、VideoIndexFields 在绑定时推断。
- 默认将从数据集侧拉取的 IndexFields、FilterFields、SuggestFields、ImageIndexFields、VideoIndexFields 视为不可信历史数据;使用 FieldDescMap 加代表性样本重新推断绑定时字段组。
- 将提示输出视为提案而非基准事实;当样本数据或业务目标与提示结果矛盾时,移除噪声字段。
- 对视频数据集,绑定时提案必须满足 DefaultFieldStrategy 服务端约束表;在渲染 Stage B 对话框之前和调用 vs app dataset bind 之前核对本表;无论 LLM 推断或用户覆盖如何建议,都不得提交违反约束的提案。
- 绑定成功后,除非用户明确要求第二阶段验证,不得调用 app wait-ready 或以就绪状态阻塞。
- 若数据集缺少足够样本数据支撑提示,应停下并请求更好的源样本,而不是盲目绑定。