扩展任务生产组件
任务生产组件通过 TaskProducerProtocol 接入 Heta。接口与数据类型见任务生产协议。
定义配置与输入
将模型、并发、超时和生产策略放入独立配置类。配置在创建时校验,通过组件的只读 config 属性暴露;单次调用的输入与输出位置由 TaskRequest 提供。
通过 requirements 返回 TaskRequirements,声明每个输入的名称、类型及是否必填。文件使用 ObjectInput,文本使用字符串。支持多种入口的组件按配置返回对应声明。
实现执行入口
produce(request, *, object_store) 负责以下步骤:
- 调用
requirements.validate(request),校验输入名称、必填项及交付类型。 - 从
object_store读取所选对象,校验文件格式和完整性。 - 准备工作区并运行生产流程。配置、模型调用和内部修订由组件管理。
- 执行任务格式与运行验证,记录候选的通过或拒绝原因。
- 上传可交付任务、验证证据和报告,保存任务清单。
- 返回
TaskResult,提供清单与报告的对象 key。
TaskProducerProtocol 是结构协议,不会自动包装实现方法。自定义组件需自行执行输入校验、工作区清理与结果发布。
文件与产物约定
- 对象 key 使用相对 POSIX 路径,存储后端由调用者提供的 Object Store 决定。
- 每次执行使用独立输出前缀,拒绝覆盖已有产物或选中的输入。
- 任务清单记录文件相对路径、对象 key、摘要和权限,便于完整恢复任务包。
- 报告记录各阶段结果、实际验证和失败原因,任务文件与运行证据分别归档。
- 正常返回时,
TaskResult中的清单与报告应已可读取;阻止发布的存储错误向调用者传播。
验证与状态
任务格式检查、参考解执行和负例检查分别记录。未执行的检查不能记作通过。候选未通过验证时保留诊断信息,并从可交付任务集合中排除。
status 使用 succeeded、partial 或 failed。实际交付数量以任务清单为准;正常筛选无匹配结果时可以返回空清单。具体状态条件与验证要求由组件文档说明。
验证结果描述已执行检查的结论,不替代科学内容审阅或任务难度评估。