腾讯健康-组学平台-ORI 蛋白序列生成预测模型

Polar Sponsor
爱发电 赞助
.NET 9.0

腾讯健康组学平台(Omics) - ORI Collection 公共应用合集专用运行助手。ORI 是腾讯生命科学实验室自主研发的蛋白质设计系统,包括蛋白质序列生成、结构与功能预测等系列模型,和主流方案相比具备准确率高、推理速度更快等核心优势;本合集(Nextflow,v24.04.3)含 5 个子应用:ORI Generate Protein(蛋白质生成/从头设计)、ORI USMFold Predict(USMFold 结构预测)、ORI Predict Solubility(溶解性预测)、ORI P

ORI Collection Skill (v1.0 · 单合集收窄版)

功能概述

ORI Collection Skill (v1.0 · 单合集收窄版)是一项面向实际任务的技能,主要用于本 SKILL 是 omics-task-skill 的 单合集收窄版 :仅服务于 ORI Collection (Nextflow) 这一个公共应用合集;所有命令拼接走 scripts/omics_cli.py ,统一参数与输出格式;

核心要点

  • 能力范围严格 = omics-platform-cli 7 命令 ∩ 仅。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

ORI Collection Skill (v1.0 · 单合集收窄版)

本 SKILL 是 omics-task-skill 的单合集收窄版:仅服务于 ORI Collection (Nextflow) 这一个公共应用合集。 所有命令拼接走 scripts/omics_cli.py,统一参数与输出格式。 能力范围严格 = omics-platform-cli 7 命令 ∩ 仅运行 ORI Collection 合集下的子应用;任何越界都视为越权。

应用锁定参数(SKILL 内部硬编码,禁止覆盖)

字段 值
合集名称 ORI Collection (Nextflow)
合集 AppId(锁定) c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff
PublicAppId publicapp-nf-ori-collection
应用类型 NEXTFLOW
分组类型 APP_COLLECTION(合集,含多个子应用)
标签 AI 模型

应用简介:ORI(Ontology Reinforcement Iteration)由腾讯生命科学实验室研发的自主迭代式 AI 蛋白质设计系统, 可高效从头设计用户所需生物功能、性质的蛋白质。本合集核心子流程:

  1. 蛋白质生成流程(ORI-PGM) — 基于 ORI-PGM 模型的蛋白质生成
  2. 蛋白质特性预测系列流程(ORI-USM) — 溶解性 / 热稳定性 / 信号肽预测
  3. 蛋白质结构预测系列流程(xFold) — USMFold / ESMFold 蛋白质折叠预测

⚠️ 合集(APP_COLLECTION)本身不能直接 omics run——必须先展开找到具体子应用 AppId,再用子应用 AppId 跑。 这是平台规则;本 SKILL 流程已内化此约束。

能力边界(不可违反 · 最高优先级)

本 SKILL 只能调用以下 7 条 CLI 一级命令的收窄子集:

login   whoami   config   list   run   status   debug

注意:omics list public-apps 仅允许以 --parent-app c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff 形态调用, 用于展开本合集的子应用清单;禁止不带 --parent-app 调用(那会列出全平台所有公共应用,越界)。

omics list apps 整体禁用,但仅允许在导入前同名检查这一处调用。

🚫 严令禁止

  1. 严禁运行除 ORI Collection 之外的任何应用:
    • 禁止使用 omics run --wdl (本地 WDL)
    • 禁止使用 omics run --app (项目内已有应用)
    • 禁止使用 omics run --public-app <非本合集子应用 AppId>
    • 禁止使用 omics run --public-app c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff(合集本身不可直接 run)
    • 唯一允许的 run 形态:omics run --public-app ...
  2. 严禁不带 --parent-app 调 list public-apps——本 SKILL 不需要让用户在全平台公共应用里挑。
  3. 严禁让用户提供合集 AppId / PublicAppId——合集 AppId 已硬编码,用户提供其它 ID 一律拒绝。
  4. 严禁编造其他命令——例如 app list / app templates / import 等都已废弃,调用必失败。
  5. 严禁直接调用 omics 后端 HTTP API(CommonAppService.* / RunService.* / ImportApplication 等)、 SQL、文件系统写入等任何旁路通道。
  6. 严禁通过组合现有命令"模拟"出白名单外的语义——例如不能把"导入公共应用"作为独立动作执行; 导入是 omics run --public-app 的内部步骤,必须随 run 一起发生。
  7. omics login / omics config set 由用户在本机终端执行,SKILL 永远不主动调(OAuth 浏览器 回调 + 交互式输入只能在用户本机完成)。

✅ run 前置确认(必经)

SKILL 触发 omics run ... 前必须按 §5.2 模板完成二次确认:

  1. 拼出完整命令字符串(含所有 flag),AppId 必须来自本合集的子应用展开结果
  2. 输出参数摘要表(合集 / 选定子应用 / 项目 / 环境 / 输入 / NF 版本等关键项)
  3. 询问用户:"以上命令是否执行?(y / 确认 / 继续)"
  4. 仅当收到明确肯定答复(y / yes / 确认 / 继续 / 是 / 执行 / OK)才调用
  5. 用户拒绝(n / no / 取消)→ 终止;模糊回复(嗯 / 好 / 可以)→ 再次明确询问
  6. 用户追加修改 → 回到 1 重拼

✅ 其他命令的确认要求

命令 是否需要确认
whoami / status / debug / config show / clear / list public-apps --parent-app ... / list apps(同名检查) 免确认(只读 / 本地操作)
run 必须
login / config set 不调,引导用户本机执行

退出码 & 鉴权失败处理

退出码 含义 SKILL 处理
0 成功 解析 stdout
1 业务错误 把 stderr 转述给用户。如果是"未配置"错误,按 Step 2 引导用户去本机跑 omics config set
2 鉴权失败 按 Step 1 引导用户去本机跑 omics login,不要循环重试

stderr 中以 ❌ 开头的行为可读错误描述,可直接转述。

另外:scripts/omics_cli.py 启动时若在 PATH 与 OMICS_CLI_PATH 都找不到 omics 可执行文件, 会以 FileNotFoundError 退出(非 0/1/2 业务退出码),SKILL 必须按下文 Step −1 引导用户安装 CLI, 不要自动尝试下载、不要 pip/brew/curl 替用户装。

Step −1:CLI 存在性检查(最先执行)

任何业务命令之前,SKILL 必须先确认本机已安装 omics-platform-cli。 最简单的方式是直接尝试 omics whoami / omics version:

  • 如果 python3 scripts/omics_cli.py whoami / omics whoami 抛出 FileNotFoundError、 shell 提示 command not found: omics、Windows 提示 'omics' 不是内部或外部命令, 或者 stderr 出现 未找到 'omics' 命令 —— 都视为 CLI 未安装。
  • 命中以上任一情况,立即给用户下面这段话并终止流程,等待用户安装完成回执:

检测到本机尚未安装 omics-platform-cli,无法继续。

请前往下载页,按页面提供的安装脚本和使用指南完成安装: https://cnb.cool/tencenthealthcareomics/omics-platform-cli

安装完成后回到我这里告诉我「已安装 / done」,我会验一次 omics version 再继续。

强约束:

  • 绝不在 SKILL 端用 curl / wget / brew / pip / npm 等任何方式自动下载或安装 CLI; 也不要自行编写解压、加 PATH、导 OMICS_CLI_PATH 之类的操作步骤——下载页已提供官方的安装脚本和使用指南,按页面执行即可。
  • 绝不继续调用任何 python3 scripts/omics_cli.py ... 命令(CLI 不存在时这些命令必失败)。
  • 用户回执「已安装」后,重新跑一次 omics version 确认通过后才进入 Step 0; 若仍失败,仅需再次把下载页链接给用户,让其参照页面指南排查,不要替用户猜路径。

Step 0:鉴权与配置双重检查(每次启动必做)

任何业务命令前必须先验证两个条件:

┌──────────────────────────┬──────────────────────────────┐
│ 检查项                   │ 命令 / 期望                  │
├──────────────────────────┼──────────────────────────────┤
│ 已登录                   │ omics whoami → exit 0        │
│ 已配置 region/proj/env   │ omics config show -o json    │
│                          │ → exit 0 且字段都不为空      │
└──────────────────────────┴──────────────────────────────┘

Step 0.1:whoami

python3 scripts/omics_cli.py whoami

退出码 0 → 进入 Step 0.2;退出码 2 → 跳到 Step 1(登录引导)。

Step 0.2:config show

python3 scripts/omics_cli.py config show -o json

判定:

  • 退出码 0 + JSON 字段齐全(Region/ProjectId/EnvironmentId 都不为空)→ 进入业务流程, 复述当前配置给用户:

    当前配置:地域 ap-guangzhou,项目 prj-xxx (xxx),环境 env-yyy (yyy),COS Bucket my-bucket。如需切换请告诉我。

  • 退出码 1(文件不存在 / 字段缺失) → 跳到 Step 2(配置引导)。

Step 1:登录引导(鉴权失败时使用)

SKILL 不要自己调 omics login。 一旦 whoami 返回退出码 2 或任何业务命令报"鉴权失败 / session 过期 / 401",立即给用户下面这段话:

检测到当前会话的登录状态已失效或不存在。

请在你本机的终端中执行下面这条命令完成授权:

omics login

完成后回到我这里告诉我「已登录」,我会继续后续操作。

强约束:

  • 不要在 SKILL 端启动 omics login 子进程
  • 不要循环 whoami 等待用户登录
  • 不要给用户复制授权 URL 让其在远程粘贴(OAuth 回调地址 localhost:18000 必须落到用户本机的 CLI 进程上)

收到用户「已登录 / done」类肯定答复后,重新跑一次 omics whoami 确认 → exit 0 才进入 Step 0.2。

Step 2:配置引导(config 缺失或字段不全时使用)

SKILL 不要自己调 omics config set。 它是交互式命令,会逐项提示输入 region/projectId/environmentId/bucketName, SKILL 跑在远程 agent 里无法替用户输入;同时 SKILL 也不应猜测或编造这三个 ID。

一旦 omics config show 返回退出码 1,立即给用户下面这段话:

检测到本地尚未完成 region / projectId / environmentId 的配置。

请在你本机的终端中执行下面这条命令完成配置:

omics config set

CLI 会依次提示输入 Region → ProjectId → EnvironmentId → COS BucketName。 COS BucketName 为必填项。

完成后回到我这里告诉我「已配置」,我会继续后续操作。

收到用户「已配置 / done」类肯定答复后,重新跑一次 omics config show -o json 确认 → exit 0 + 字段齐全才进入业务流程。

命令意图映射表(ORI Collection 收窄版)

用户说 CLI 命令 场景
「我没装 CLI / 提示 command not found」 告诉用户去 https://cnb.cool/tencenthealthcareomics/omics-platform-cli 下载安装,SKILL 不调 Step −1
「我登录了吗 / 当前账号是谁」 omics whoami Step 0.1
「我没登录 / session 过期了」 告诉用户在本机终端跑 omics login,SKILL 不调 Step 1
「现在用的是哪个项目和环境」 omics config show -o json Step 0.2
「配下默认项目 / 切到 xx 项目」 告诉用户在本机终端跑 omics config set,SKILL 不调 Step 2
「清掉本地配置」 omics config clear —
「跑 ORI」「做蛋白质生成」「做蛋白质结构预测」 先 §3 展开子应用清单 → 用户挑子应用 → §4 同名检查 → §5 run §3~5
「ORI 里有哪些子流程」 omics list public-apps --parent-app c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff -o json §3
「跑 ORI 的某子应用,参数我自己改过」 omics run --public-app <子应用AppId> --public-app-name --nf-version --input

§5
「看任务进度」「查批次状态」 omics status -o json §6
「rg-xxx 跑完了吗 / 看子任务」 omics status -o json §6
「rg-xxx 哪些子任务挂了」 omics debug -o json §7.1
「这个失败子任务到底为啥挂的」 omics debug --run -o json §7.2
「钻下 plan-xxx 这个作业的 stderr」 omics debug --run --job -o json §7.3
「列下平台公共应用」「跑别的应用」 ❌ 拒绝——本 SKILL 仅服务 ORI Collection;建议用户改用 omics-task-skill —

❌ 用户说「跑本地 WDL」「跑别的公共应用 X」「跑项目里那个 app-xxx」「跑 ORI 合集本身不挑子应用」: 本 SKILL 必须拒绝,引导用户: 「我只能帮你跑 ORI Collection 下的某一个具体子应用;如需运行其他应用,请使用 omics-task-skill。」

Step 3:展开本合集子应用(必经第一步)

合集(APP_COLLECTION)本身不可直接 omics run,必须先展开找到具体子应用。

python3 scripts/omics_cli.py list public-apps 
  --parent-app c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff -o json

⚠️ --parent-app 值固定为 ORI Collection 的 AppId,不接受替换。

JSON 关键字段(每个子应用):

  • AppId:用于 omics run --public-app <子应用AppId>
  • AppName:用于 --public-app-name 兜底(合集子应用必须显式传名,否则 CLI 报错)
  • AppType:本合集应固定为 NEXTFLOW
  • AppDesc:简要描述
  • NextflowVersion[]:候选 NF 版本列表(必须从中挑一个)
  • AppTags[]

3.1 转述给用户

ORI Collection 包含以下子应用,请挑一个具体的子流程:

① () — · NF 版本候选: , ... ② () — · NF 版本候选: ... ...

你想跑哪一个?(请直接告诉我编号或 AppName)

约束:

  • SKILL 不要替用户随便选——必须让用户明确指定子应用
  • 用户回复模糊(如"都行"/"随便")→ 再次明确询问
  • 用户指定的子应用 AppId 必须严格来自上面 JSON 的 Apps[].AppId,不接受用户自填的其它 AppId

3.2 记录字段

用户挑定后,SKILL 内部记录:

  • :将作为 --public-app 入参
  • :将作为 --public-app-name 默认候选(也是同名检查的 candidateName)
  • :从该子应用的 NextflowVersion[] 列表中挑一个(多个时让用户挑,不要替选)

Step 4:导入前同名检查(必经)

进入 omics run --public-app ... 之前,SKILL 必须先在 config 项目里检查是否已存在同名应用,避免:

  • service 端 CreateApplication 因 Name 唯一约束直接报错;
  • SKILL 自动加后缀(如 <原名>-1、<原名>-cli)替用户决策,污染应用列表。

检查方法(例外允许的 list apps 调用)

本 SKILL 整体禁用 omics list apps,但仅允许在导入前同名检查这一处调用, 其结果只能用于"是否已有同名应用"的二选一判断,禁止用于让用户挑别的应用运行。

python3 scripts/omics_cli.py list apps -o json

在返回 JSON 的 Applications[] 中查找 Name == (或用户提供的自定义 candidateName):

命中情况 SKILL 行为
0 条命中 用 作为 --public-app-name(合集子应用必传)
≥ 1 条命中 必须停下来,把命中条目的 ApplicationId / Name / Type / VersionCount / CreateTime 列给用户,二选一询问

命中同名时的话术

项目里已经存在一个叫 的应用:

  • ApplicationId:app-xxxx
  • Type:NEXTFLOW,版本数:3,创建时间:2026-05-20 10:11

我不会自动改名,请你二选一:

A. 重命名后导入(推荐):给一个新的导入名,比如 -v2 / -2026q2 → 我会用你给的新名字重新导入这个子应用并运行。

B. 终止本次运行:本 SKILL 仅服务于公共应用 ORI Collection 的子应用导入与运行; 如需直接复用项目里已有的 app-xxxx 应用,请使用 omics-task-skill(form C:omics run --app app-xxxx)。

你选哪个?或者直接告诉我新名字。

强约束:

  • SKILL 不要自动给候选名加 -1 / -2 / -cli / 时间戳之类的后缀
  • 如果用户在本 SKILL 内选 B(复用已有应用),必须拒绝——本 SKILL 不能调 omics run --app <已有 AppId>,请引导用户去 omics-task-skill

Step 5:运行(仅形态 B · 公共应用 · 自动模板路径)

omics run 在本 SKILL 中只接受以下命令骨架:

omics run --public-app  
          --public-app-name  
          --nf-version  
          [--input ] 
          [--name ] 
          -o json
  • --public-app 值必须来自 §3 展开本合集的 Apps[].AppId,不接受其它 AppId。
  • --nf-version 值必须来自该子应用的 NextflowVersion[] 候选;NEXTFLOW 应用必传,CLI 否则报 MISSING_NF_VERSION。
  • --public-app-name 必须显式传入(合集子应用没有 CLI 兜底)。
  • --input 仅在用户明确要求自定义参数时显式传入(覆盖自动 InputTemplate)。

CLI 内部链路:ImportCommonApplication → DescribeInputTemplates → GetInputTemplateFile → baseline+override → RunApplication。

⚠️ 合集子应用的导入路径:omics run --public-app <子应用AppId> 会直接把子应用 AppId 作为 CommonAppUuid 调 ImportCommonApplication, 不需要也不应该传合集 AppId。 service 端 DescribeCommonApp 默认强制 f_parent_app_id='' 过滤,所以单独探测元信息可能查不到子应用——这是正常现象。 如果导入失败提示"AppId 不存在",第一时间核对:传入的是不是合集自身 AppId?应当传 §3 展开后的子应用 AppId。

5.1 完整流程

  1. Step 0 鉴权 + 配置双重检查(必经)
  2. Step 3 展开合集子应用 → 让用户挑(必经)
  3. Step 4 导入前同名检查(必经)
  4. 决定 --public-app-name:用户原话 / 兜底
  5. 决定 --nf-version:让用户从 NextflowVersion[] 挑(多个时不要替选)
  6. 二次确认(按 §5.2 模板)
  7. 一步直达运行:
    python3 scripts/omics_cli.py run --public-app  
      --public-app-name  --nf-version  [--name run-1] -o json
    
  8. 若 CLI 报 PARAM_MERGE_FAILED:按 §5.4 处理。
  9. 如果用户主动要求改参数 → 显式传 --input 覆盖自动模板:
    python3 scripts/omics_cli.py run --public-app  
      --public-app-name  --nf-version  --input ./run.json -o json
    

5.2 二次确认模板(必经)

向用户汇总后等"确认/继续/OK/y"再执行。

即将运行任务,请确认:
  ┌──────────────────────────────────────────────────┐
  │ 形态        : 公共应用(form B,自动模板)        │
  │ 来源合集    : ORI Collection                      │
  │ 子应用      :                    │
  │ AppId       :                      │
  │ AppType     : NEXTFLOW                            │
  │ NF 版本     :                  │
  │ 导入后命名  :                       │
  │ 项目        : prj-yyy (..., ap-guangzhou) ← config│
  │ 环境        : env-zzz (...)               ← config│
  │ 参数模板    : 自动取该应用第一个 InputTemplate    │
  │ 运行名称    :                               │
  └──────────────────────────────────────────────────┘
完整命令:
  omics run --public-app  
            --public-app-name  
            --nf-version  
            --name run-1 -o json

确认无误请回复「确认 / 继续 / y」;如需自定义参数请告诉我(可改走 --input 模式)。

用户回复识别

用户回复 SKILL 行为
y / yes / 确认 / 继续 / OK / 是 / 执行 / 开始跑 调用 cli.execute(...)
n / no / 取消 / 等等 / 先别 终止流程,等待用户进一步指示
任何含修改意图的句子("改下 X" / "把 Y 换成 Z") 解析修改意图 → 重拼命令 → 重走确认
模糊回复("嗯" / "好" / "可以" / "试试") ⚠️ 不算肯定 → 再次明确询问"是否执行 y/N?"
用户改口"换一个子应用" 回到 §3 重新展开 / 让用户重选

5.3 运行参数:合并模式

CLI 的 omics run 内部按 final = baseline + override 合并参数 JSON:

  • baseline = WDL/NF 中显式声明的默认值(ValidateApplication.Inputs[].Default)
  • override = form B 默认自动取该应用第一个 InputTemplate;用户给 --input 时则替换
场景 SKILL 行为
omics run 直接 exit 0 + 输出 RunGroupId 一切顺利,转述结果给用户即可
stderr 出现 ❌ 参数模板校验失败 或 JSON 输出 Error: PARAM_MERGE_FAILED 解析其中的 Report.MissingRequired / TypeErrors / ExtraFields,把缺失字段及类型告诉用户;用户给值后 SKILL 写入本地 run.json 再 --input 重跑

5.4 PARAM_MERGE_FAILED 处理

JSON 报错的关键字段:

  • Error:固定为 "PARAM_MERGE_FAILED"
  • ApplicationId / WorkflowName:定位上下文
  • Specs[]:每项 { Name, Optional, TypeName, Default }
  • Baseline / UserOverride / FinalParsed:合并各阶段快照
  • Report.MissingRequired[] / EmptyRequired[] / ExtraFields[] / TypeErrors[]
  • PartialSkeleton:CLI 已拼好的"可保存即用"的 JSON
  • Hint[]:CLI 给的下一步重跑命令模板

典型话术:

跑这次任务时 CLI 已经把 NF 的默认值和模板拼好,但还有 N 个必填项缺值:

  • .input_fasta:File(必填)
  • .target_property:String(必填,例如 solubility / thermostability / signal_peptide)

请把这些值告诉我,或者直接给我一份本地 JSON 路径,我帮你按 --input 传回去重跑。

5.5 流水线失败提示

错误 处置建议
参数模板校验失败 / PARAM_MERGE_FAILED 解析 Report.MissingRequired / TypeErrors,按 §5.4 引导用户给值后通过 --input 传回重跑
MISSING_NF_VERSION 让用户从 §3 展开结果中该子应用的 NextflowVersion[] 列表挑一个;不要替选
公共应用 X 是一个合集 / AppId 不存在 立即核对:--public-app 是否传成了合集 AppId 而非子应用 AppId?合集 AppId(c798f9c0-...)不可作为 run 的 --public-app
环境 X 不可用 / 不存在 提示用户重跑 config set 或去控制台检查
环境 X 下未绑定默认缓存卷 提示用户去控制台为该环境配置默认 Volume
Result=CONFLICT 反复出现 CLI 内部已尝试回退;说明应用被并发修改,提示用户等待或换新名重新导入
鉴权失败(exit 2) 不重试,引导用户在本机跑 omics login

Step 6:状态查询

# 列批次(固定走 config 项目)
python3 scripts/omics_cli.py status -o json

# 列子任务
python3 scripts/omics_cli.py status rg-xxx -o json

status 不支持跨项目查询。如需查别的项目,先重新 omics config set。

JSON 关键字段:

  • 列批次:RunGroupId / Name / Status / TotalRun / RunStatusCounts / ExecutionTime
  • 列子任务:RunUuid / RunGroupId / UserDefinedId / Status / ExecutionTime / ErrorMessage

紧凑总结:最近 N 个 ORI 批次:✅ 已完成 X / ❌ 已失败 Y / 🔄 运行中 Z。

⚠️ omics status 列出的是当前项目所有批次(不限于 ORI),SKILL 转述时 应优先突出 ORI 相关批次,但不强制过滤——这是平台原生能力。

Step 7:异步失败取证(debug 三段式)

触发条件:omics status 看到子任务 Status=Failed / Aborted / Error,或用户问「rg-xxx 为啥挂了」。

工具:omics debug 三段式(CLI 端只取证,不做规则匹配;症状判断由 SKILL 模型对照 references/runtime_error_kb.md 决定)。

7.1 段 1:列批次失败子任务

python3 scripts/omics_cli.py debug  -o json

输出关键字段:

  • TotalRuns / FailedCount
  • FailedRunUuids[]
  • Runs[]:完整子任务列表

SKILL 行为:

  1. FailedCount == 0 → 告诉用户"该批次没有失败子任务,可能是运行中或已成功"
  2. FailedCount == 1 → 直接进入段 2
  3. FailedCount > 1 → 询问用户先看哪一个,或主动取前 1~2 个钻一遍找共性

7.2 段 2:单子任务现场

python3 scripts/omics_cli.py debug --run  -o json

输出关键字段(详见 references/cli_commands.md debug 段):

  • Status:顶层 RunMetadata(RunType / Status / JobId / ErrorMessage / Input / Output / Command)
  • Calls[]:cromwell call 元数据
  • JobLogs[]:CLI 已自动钻取最多 5 个失败 call 的真实 stderr 与 K8s 事件
    • Stderr / StderrTruncated:实际日志正文(已截尾,头 4KB + 尾 24KB)
    • PodEvents[]:保留 FailedMount(前端会过滤但 AI 排障必须看)

症状识别流程:

  1. 优先看 Status.ErrorMessage
  2. 逐个看 JobLogs[].Stderr 末尾
  3. 看 JobLogs[].PodEvents
  4. 对照 references/runtime_error_kb.md 决策快速表
  5. 都不命中 → 走兜底,把现场原文贴给用户做透明分析

7.3 段 3:精确钻取某个 Job

python3 scripts/omics_cli.py debug --run  --job  -o json

输出与段 2 同结构,但 Calls / JobLogs 都按 JobId 过滤。

7.4 关键守则

  1. CLI 端绝不主动调 omics debug —— 用户问"为啥挂了"才用
  2. 不要替用户做症状判断 + 自动改代码 —— 看到 OOMKilled 不要直接改 memory,要先告诉用户"目测内存不足"并询问是否调整
  3. stderr 内容是用户应用代码 —— 转述时整段贴出来,不要总结/二次加工
  4. 修复后统一走 omics run 重发 —— 本 SKILL 的重发仍然只能走 form B + 本合集子应用:
    omics run --public-app  
              --public-app-name  --nf-version  --input  -o json
    
    ⚠️ 严禁本 SKILL 用 --app <已导入的 ApplicationId> 复用——那会越界进入 form C,请引导用户去 omics-task-skill。

典型会话场景

场景 A0:用户没装 CLI

  1. 任意命令报 FileNotFoundError / command not found: omics / 未找到 'omics' 命令 → 告知用户去 https://cnb.cool/tencenthealthcareomics/omics-platform-cli 下载页按页面安装脚本和使用指南安装,SKILL 不自动装;
  2. 等用户回执「已安装」→ 跑 omics version 验证 → 通过后进入场景 A。

场景 A:用户首次使用本 SKILL

  1. whoami → 退出 2 → 告知用户去本机终端跑 omics login,等用户回执「已登录」
  2. 重新 whoami ✓ → 跑 config show → 退出 1 → 告知用户去本机终端跑 omics config set,等用户回执「已配置」
  3. 重新 config show ✓ → 进入业务流程

场景 B:跑 ORI Collection 下的某子应用(标准链路)

  1. whoami ✓ + config show ✓ → 复述当前配置
  2. 用户:"跑 ORI" 或 "做蛋白质生成" 或 "跑 ORI-PGM"
  3. §3 展开合集:list public-apps --parent-app c798f9c0-... -o json → 把子应用清单转述给用户
  4. 用户挑定子应用(例如 ORI-PGM、USMFold)→ 记录 / /
  5. §4 同名检查:list apps -o json,匹配 Name ==
    • 0 条命中 → 通过
    • ≥1 条命中 → 停下,请用户选「重命名」或「终止改用 omics-task-skill」
  6. 二次确认(按 §5.2 模板)
  7. 一步直达运行:
    python3 scripts/omics_cli.py run --public-app  
      --public-app-name  --nf-version  --name run-1 -o json
    
  8. 解析 RunGroupId → 提示 omics status

场景 C:用户要求自定义参数

  1. 走完场景 B 第 1~5 步
  2. 用户:"参数我想改 input_fasta 文件路径"
  3. 收齐参数 → 写 /tmp/run.json
  4. 二次确认(命令带 --input /tmp/run.json)
  5. 执行 run --public-app --input /tmp/run.json

场景 D:用户问"跑别的应用"

  1. 拒绝:"本 SKILL 只能帮你运行 ORI Collection 下的子应用。如需运行其他应用(本地 WDL / 其他公共应用 / 项目内已有应用), 请使用通用版的 omics-task-skill。"
  2. 不调任何命令。

场景 E:用户说"直接跑 ORI 合集"不挑子应用

  1. 拒绝:合集(APP_COLLECTION)本身不可直接运行,必须挑一个具体子应用。
  2. 回到 §3 展开后让用户挑。

场景 F:业务命令报鉴权失败

  1. 任何业务命令 exit 2 → SKILL 不重试
  2. 告知用户去本机终端跑 omics login → 等用户回执
  3. 重新跑原命令一次

计算资源说明

ORI Collection 子应用支持 GPU 资源(T4 及以上),可通过用户的 --input run.json 内 nextflow config 段配置:

  • process.resourceLabels = ["gpuType":"T4", "gpuCount": "1"]

SKILL 不主动替用户决定 GPU 型号与数量;如用户问"用哪个",告知候选并询问其偏好与数据规模(特别是 xFold / ESMFold 类结构预测需要更高规格 GPU)。

高级用法

详细参数与状态枚举:references/cli_commands.md。 症状识别知识库:references/runtime_error_kb.md。 边界契约:CONTRACT.md。

脚本 API 参考

scripts/omics_cli.py 也可作为 Python 模块导入:

from scripts.omics_cli import OmicsCLI

cli = OmicsCLI()

# ✅ 检查类
cli.execute(cli.build_whoami())
cli.execute(cli.build_config_show(output="json"))

# ✅ 唯一允许的 list public-apps 形态:展开本合集
cli.execute(cli.build_list_public_apps(
    parent_app="c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff",
    output="json",
))

# ✅ 仅在导入前同名检查时使用
cli.execute(cli.build_list_apps(output="json"))

# ✅ 唯一允许的 run(AppId 来自上面合集展开后的子应用 AppId)
cli.execute(cli.build_run(
    public_app="<合集展开后的子应用AppId>",
    public_app_name="",
    nf_version="<候选 NF 版本>",
    name="run-1",
    output="json",
))

# ✅ 用户自定义参数时
cli.execute(cli.build_run(
    public_app="<合集展开后的子应用AppId>",
    public_app_name="",
    nf_version="<候选 NF 版本>",
    input_json="./run.json",
    output="json",
))

# ❌ 禁止:以下任何形态在本 SKILL 中均不允许
# cli.execute(cli.build_run(wdl="./hello.wdl", ...))                                        # form A
# cli.execute(cli.build_run(app="app-xxx", ...))                                            # form C
# cli.execute(cli.build_run(public_app="c798f9c0-cd28-446c-b8e4-3ec30ec1a7ff", ...))         # 合集本身不可 run
# cli.execute(cli.build_run(public_app="cm-other-collection-xxx", ...))                     # 其它合集
# cli.execute(cli.build_list_public_apps(output="json"))                                    # 不带 parent-app 列全平台

# ✅ 状态
cli.execute(cli.build_status(output="json"))
cli.execute(cli.build_status(run_group_id="rg-xxx", output="json"))

# ✅ debug 三段式
cli.execute(cli.build_debug(run_group_id="rg-xxx", output="json"))
cli.execute(cli.build_debug(run_uuid="uuid-xxx", output="json"))
cli.execute(cli.build_debug(run_uuid="uuid-xxx", job_id="plan-xxx", output="json"))

环境变量 OMICS_CLI_PATH 可覆盖 CLI 可执行文件路径。

相关专题

更多
OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

0

20

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

2026.10.15

0

18

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

2026.10.15

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习