import { Select } from '../components/ui'; import type { PretrainedInitialization, PretrainedSource } from './types'; import { pretrainedSelectionError } from './pretrainedSelection'; import { PretrainedUpload, type PretrainedUploadConnection } from './PretrainedUpload'; export function PretrainedIdentity({ source }: { source?: PretrainedInitialization }) { if (!source) return

初始化:随机新策略(未选择基础策略)

; return (

初始化:{source.label} · {source.manifest.artifacts.checkpoint.name}

来源与校验详情

checkpoint SHA256:{source.manifest.artifacts.checkpoint.sha256}

{source.manifest.artifacts.upload ? ( <>

上传格式:{source.manifest.sourceFormat} · 原文件:{source.label}

原文件 SHA256:{source.manifest.artifacts.upload.sha256}

模板:{source.manifest.contract} (用户确认缺失的物理语义);继承actor权重,非完整resume。

{source.manifest.sourceFormat === 'onnx' && (

ONNX统计count合成: {source.manifest.derived_fields?.normalizer_count?.value ?? '未知'}; 探索std使用新训练默认,critic/optimizer重新初始化。

)} ) : (

ONNX SHA256:{source.manifest.artifacts.onnx?.sha256 ?? '未知'}

)}

来源迭代 {source.manifest.source_iteration ?? '未知'} ;新训练从0开始,critic/optimizer重新初始化;同trial续训保留自身checkpoint。

); } export function PretrainedSourceSelect({ sources = [], taskId, value, onChange, disabled = false, upload, }: { sources?: PretrainedSource[]; taskId: string; value: string; onChange(value: string): void; disabled?: boolean; upload?: PretrainedUploadConnection; }) { const selected = sources.find((source) => source.id === value); const selectionError = pretrainedSelectionError(sources, taskId, value); return (
{upload && ( )} {!sources.length &&

尚无基础策略

} {sources .filter((source) => source.error) .map((source) => (

{source.label}:{source.error}

))} {selected && (

兼容:{selected.compatibleTasks.join(' / ')};观测 {selected.observationSizes?.join('/')}{' '} → 12动作。只继承actor权重,新训练从0开始。

)} {selectionError ? (

{selectionError}

) : ( )}
); }