字段提取结果
执行 processor.runSync(tree, file) 之后,标准化字段元数据会写入 file.data.aimdFields。
保持为数组的部分
下面这些 scope 仍然是 string[],数组里的每一项都是 id:
varstepcheckref_stepref_varref_figref_mediacite
使用对象结构的部分
var_definitions[]对应普通var字段,包含id、type、default、title、description、examples与原始 AIMDkwargsvar_table[]提供规范字段id,以及可选的表级title、description、examples和原始 AIMDkwargsvar_table[].subvars[]提供规范字段id,以及可选的列级title、description、examplesclient_assigner[]提供id、mode、dependent_fields、assigned_fields、function_source,它们来自assigner(config, function ...)形式的前端代码块workflow[]提供 fencedworkflow代码块中的 workflow 定义,包括version、id、nodes、assigners、transition id、归一化后的from/to数组、transitioninputs、按目标分组的assign、logic和default_initial_nodequiz[]本来就使用idfig[]提供 fencedfig代码块中的id、src、title、legendmedia[]提供 fencedmedia代码块中的id、kind、src、mime、provider、poster、title、legendrefs[]提供 fencedrefs代码块中的 BibTeX 条目,包含id、entry_type、raw、标准化fields,以及title、author、year、doi、url等展示字段step_hierarchy[]提供id、step、parent_id、prev_id、next_id、estimated_duration_ms、timer_mode、has_check、has_children
示例
json
{
"var": ["temperature"],
"var_definitions": [
{
"id": "temperature",
"type": "float",
"default": 36.5,
"title": "Temperature",
"description": "Ambient temperature in Celsius",
"examples": [25.0, 37.0],
"kwargs": {
"title": "Temperature",
"description": "Ambient temperature in Celsius",
"examples": [25.0, 37.0],
"gt": 0
}
}
],
"var_table": [
{
"id": "samples",
"scope": "var_table",
"title": "Samples",
"description": "Measured sample rows",
"examples": ["S-001 row"],
"subvars": [
{
"id": "sample_id",
"title": "Sample ID",
"description": "Tube identifier",
"examples": ["S-001"]
},
{
"id": "concentration",
"title": "Concentration",
"examples": [1.0]
}
]
}
],
"client_assigner": [
{
"id": "calculate_total",
"runtime": "client",
"mode": "auto",
"dependent_fields": ["a", "b"],
"assigned_fields": ["total"],
"function_source": "function calculate_total({ a, b }) { return { total: a + b }; }"
}
],
"workflow": [
{
"version": "airalogy.workflow.v1",
"id": "parameter_optimization",
"title": "Parameter Optimization Workflow",
"nodes": [
{
"id": "prep",
"protocol": "./protocols/sample-prep/protocol.aimd",
"title": "Sample Preparation"
},
{
"id": "analysis",
"protocol": "./protocols/analysis/protocol.aimd",
"title": "QC Analysis"
}
],
"assigners": [
{
"id": "optimize_parameters",
"runtime": "python",
"entrypoint": "./assigners/optimize_parameters.py:assign"
}
],
"transitions": [
{
"id": "retry_after_qc_failure",
"from": ["analysis"],
"to": ["prep"],
"when": "${analysis.check.pass_qc.checked} == false",
"run": "optimize_parameters",
"inputs": {
"summary": "${analysis.var.summary}",
"failed_metrics": "${analysis.var.failed_metrics}"
},
"max_iterations": 5,
"assign": {
"prep": {
"var.target_temperature_c": "${retry_after_qc_failure.outputs.recommended_temperature_c}",
"var.target_concentration_m": "${retry_after_qc_failure.outputs.recommended_concentration_m}",
"var.retry_note": "${retry_after_qc_failure.outputs.retry_reason}"
}
}
}
],
"default_initial_node": "prep"
}
],
"refs": [
{
"id": "yang2025airalogyaiempowereduniversaldata",
"entry_type": "misc",
"title": "Airalogy: AI-empowered universal data digitization for research automation",
"author": "Zijie Yang and Qiji Zhou and Fang Guo and Sijie Zhang and Yexun Xi and Jinglei Nie and Yudian Zhu and Liping Huang and Chou Wu and Yonghe Xia and Xiaoyu Ma and Yingming Pu and Panzhong Lu and Junshu Pan and Mingtao Chen and Tiannan Guo and Yanmei Dou and Hongyu Chen and Anping Zeng and Jiaxing Huang and Tian Xu and Yue Zhang",
"year": "2025",
"url": "https://arxiv.org/abs/2506.18586"
}
],
"media": [
{
"id": "lecture_video",
"kind": "video",
"src": "files/videos/lecture.mp4",
"mime": "video/mp4",
"poster": "files/videos/lecture-poster.jpg",
"title": "Lecture Video"
}
],
"step_hierarchy": [
{
"id": "sample_preparation",
"level": 1,
"sequence": 0,
"step": "1",
"next_id": "data_analysis"
}
]
}如果你在升级旧接入,需要注意旧的 name 别名已经移除。详见迁移说明。