创建 Job
用途
根据已发布的 BioLine Flow 版本和 JSON spec 创建一次云端 Job。本命令只负责提交和查询 BioLine Job;统计分析、绘图、表格和报告由独立下游 skill 处理。
语法
fkit job create [OPTIONS] <SPEC>SPEC 格式
SPEC 是本地 JSON 文件。推荐使用下面的精简格式:fkit job create 会读取所选 Flow 版本的服务端任务模板,再套用外部输入和参数覆盖。无需复制整张任务图。
先读取真实节点名、端口和参数,不得猜测:
fkit flow inspect <FLOW_VERSION_ID> --json
fkit job template <FLOW_VERSION_ID> --jsonjob template 只读取、不创建 Job。返回的 tasks[].name 是节点名,tasks[].cmdParams[] 是 Flow 保存的参数及默认值;它不是必须原样提交的 CLI spec。模板可能只有 inputFiles 而没有顶层 inputs,因此不能直接保存后就提交。
| 字段 | 修改规则 |
|---|---|
name | Job 名称。建议沿用模板生成的 <流程名>_<时间戳> 形式,便于用 fkit job list 检索。 |
flowVersionId | 必填,使用查询确认的精确 Flow 版本 ID。 |
outputDir | 只写输出目录名(例如 metagenome_20261013_0651);不要带 /output/ 前缀,写成 /output/xxx 会变成 /output/output/xxx;也不要保留模板默认值 /output/(服务端会报输出目录错误),必须替换为具体目录名。 |
inputs | fkit CLI 必填,每条为 {"fileId": ..., "taskName": ..., "taskPortName": ...}。无外部输入的 Flow 也要写 "inputs": [];有必填输入的 Flow 必须提供绑定。 |
params | 可省略。只写要覆盖的参数,每条为 {"taskName": ..., "paramKey": ..., "paramValue": "..."};未列出的参数保留 Flow 保存值。 |
inputs[].taskName 必须是 Flow 内的真实节点名(如 SOAPnuke、fastq2fa),taskPortName 是该节点的端口显示名,可从 fkit flow inspect --json 的 inputs[](taskName + name)对照得到;不能把流程级输入名当作 taskName。fileId 来自 fkit file search --json、fkit ls --json 或 fkit upload --json。如果已有模板的 inputFiles 绑定,将需要的绑定填入 CLI spec 的 inputs,不需要维护两份列表。
I/O 端口必须通过 inputs 绑定,不能写进参数覆盖;文件、文件组和目录必须匹配 Flow 端口类型及 pattern。不要给 tasks[] 里的节点写 outputDir。
示例:把 sleep 180 秒改成 30 秒
先从真实模板中确认:哪个节点的哪个参数控制等待秒数,并确认其保存值是 "180"。下面的 <真实节点名>、<真实参数键> 和 <FLOW_VERSION_ID> 都必须替换成查询结果,不能根据命令 sleep 猜节点名或参数键。
对于没有外部输入的等待流程,推荐的 job_spec.json:
{
"name": "sleep_20261016120000",
"flowVersionId": "<FLOW_VERSION_ID>",
"outputDir": "sleep_20261016120000",
"inputs": [],
"params": [
{
"taskName": "<真实节点名>",
"paramKey": "<真实参数键>",
"paramValue": "30"
}
]
}这里只把该参数的保存值 "180" 覆盖为 "30",不修改已发布 Flow。若所选流程有外部输入,应在 inputs 中提供真实绑定。
兼容写法:tasks[].cmdParams
也支持将相同覆盖写在 tasks[].cmdParams 中:
{
"name": "sleep_20261016120000",
"flowVersionId": "<FLOW_VERSION_ID>",
"outputDir": "sleep_20261016120000",
"inputs": [],
"tasks": [
{
"name": "<真实节点名>",
"cmdParams": [
{
"paramKey": "<真实参数键>",
"paramValue": "30",
"isSelect": 1
}
]
}
]
}tasks[].name按模板中的节点名匹配,cmdParams[].paramKey按该节点的参数键匹配;未知节点或参数会报错。- 同一节点有多个相同
paramKey时,附上真实模板中的index消除歧义,不要猜序号。 - 嵌套参数可覆盖
paramValue(字符串,包括空字符串)和isSelect(0表示不选,1表示选中);缺失的字段保留模板值,null不表示“保留”。只修改选中状态时可省略paramValue。 - 原有顶层
params[]继续支持。两种写法同时指定同一参数时,相同值可以合并,相冲突的覆盖会报错,不按出现顺序决定谁生效。通常只用一种写法。 - 参数类型、前缀等元数据,命令、端口连线和节点资源均以服务端模板为准;本地
tasks不会替换整张任务图。完整模板中的 I/O 参数保持原样,文件仍通过inputs提供。
AI 调用流程
- 用
fkit flow list --json确定精确 Flow 版本。 - 用
fkit flow inspect --json读取输入输出、节点和参数契约。 - 用
fkit job template --json读取真实任务模板、保存参数和资源。 - 用
fkit ls或fkit file search定位并校验用户文件。 - 根据查询结果生成精简
job_spec.json,补齐inputs并填写显式参数覆盖。 - 展示 Job 计划并等待确认。
- 确认后执行
fkit job create <SPEC> --json。 - 用
fkit job get <JOB_ID> --json查询状态;失败停止,不盲目重试。 - 成功后返回 Job ID、状态、输出目录和外部输出。下游统计、绘图和报告交给独立 skill。
用户确认
只展示 Flow、输入文件、参数、资源、输出目录和风险;不展示原始 API、命令输出或下游 Docker 细节。
参数与选项
--json— 输出机器可读的 Job 创建结果。
影响范围
正式执行会向 BioLine 提交 Job,不会修改 Flow,也不会执行本地下游分析。
输出
成功结果包含 Job ID、名称、Flow 版本、状态和输出目录。创建结果不明确时先用 fkit job list 或 fkit job search 确认;不要用同一名称重复提交(同名会被拒绝)。
读取本页
添加 --docs 可从 BioLine 官方 AI 文档读取本页;--docs-json 返回 JSON 包装。
