跳转至

扩展任务生产组件

任务生产组件通过 TaskProducerProtocol 接入 Heta。接口与数据类型见任务生产协议。

定义配置与输入

将模型、并发、超时和生产策略放入独立配置类。配置在创建时校验,通过组件的只读 config 属性暴露;单次调用的输入与输出位置由 TaskRequest 提供。

通过 requirements 返回 TaskRequirements,声明每个输入的名称、类型及是否必填。文件使用 ObjectInput,文本使用字符串。支持多种入口的组件按配置返回对应声明。

实现执行入口

produce(request, *, object_store) 负责以下步骤:

  1. 调用 requirements.validate(request),校验输入名称、必填项及交付类型。
  2. 从 object_store 读取所选对象,校验文件格式和完整性。
  3. 准备工作区并运行生产流程。配置、模型调用和内部修订由组件管理。
  4. 执行任务格式与运行验证,记录候选的通过或拒绝原因。
  5. 上传可交付任务、验证证据和报告,保存任务清单。
  6. 返回 TaskResult,提供清单与报告的对象 key。

TaskProducerProtocol 是结构协议,不会自动包装实现方法。自定义组件需自行执行输入校验、工作区清理与结果发布。

文件与产物约定

  • 对象 key 使用相对 POSIX 路径,存储后端由调用者提供的 Object Store 决定。
  • 每次执行使用独立输出前缀,拒绝覆盖已有产物或选中的输入。
  • 任务清单记录文件相对路径、对象 key、摘要和权限,便于完整恢复任务包。
  • 报告记录各阶段结果、实际验证和失败原因,任务文件与运行证据分别归档。
  • 正常返回时,TaskResult 中的清单与报告应已可读取;阻止发布的存储错误向调用者传播。

验证与状态

任务格式检查、参考解执行和负例检查分别记录。未执行的检查不能记作通过。候选未通过验证时保留诊断信息,并从可交付任务集合中排除。

status 使用 succeeded、partial 或 failed。实际交付数量以任务清单为准;正常筛选无匹配结果时可以返回空清单。具体状态条件与验证要求由组件文档说明。

验证结果描述已执行检查的结论,不替代科学内容审阅或任务难度评估。