workflow

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Workflow 编排层

Workflow Orchestration Layer

本 skill 不重复实现底层逻辑,只做发现、选择、串联和聚合。
observe
阶段当前会给出
jlink:rtt
jlink:swo
openocd:semihosting
openocd:itm
probe-rs:rtt
这几类候选后端。
This skill does not reimplement underlying logic, only handles discovery, selection, chaining, and aggregation.
The
observe
phase currently provides candidate backends including
jlink:rtt
,
jlink:swo
,
openocd:semihosting
,
openocd:itm
,
probe-rs:rtt
.

命令

Commands

bash
python <skill-dir>/scripts/workflow_plan.py --json
python <skill-dir>/scripts/workflow_run.py plan --json
python <skill-dir>/scripts/workflow_run.py build --json
python <skill-dir>/scripts/workflow_run.py build-flash --json
python <skill-dir>/scripts/workflow_run.py build-debug --json
python <skill-dir>/scripts/workflow_run.py observe --json
python <skill-dir>/scripts/workflow_run.py diagnose --json
bash
python <skill-dir>/scripts/workflow_plan.py --json
python <skill-dir>/scripts/workflow_run.py plan --json
python <skill-dir>/scripts/workflow_run.py build --json
python <skill-dir>/scripts/workflow_run.py build-flash --json
python <skill-dir>/scripts/workflow_run.py build-debug --json
python <skill-dir>/scripts/workflow_run.py observe --json
python <skill-dir>/scripts/workflow_run.py diagnose --json

配置说明

Configuration Instructions

workflow 不再维护独立的工程配置结构,所有工程参数统一从
.embeddedskills/config.json
读取。
Workflow no longer maintains an independent project configuration structure; all project parameters are read uniformly from
.embeddedskills/config.json
.

配置结构

Configuration Structure

.embeddedskills/config.json
中的
workflow
段仅包含首选后端配置:
json
{
  "workflow": {
    "preferred_build": "auto",
    "preferred_flash": "auto",
    "preferred_debug": "auto",
    "preferred_observe": "auto"
  }
}
workflow 通过读取
.embeddedskills/config.json
中其他 skill 的配置段来获取工程参数(如
keil.project
jlink.device
probe-rs.chip
等)。
The
workflow
section in
.embeddedskills/config.json
only contains preferred backend configurations:
json
{
  "workflow": {
    "preferred_build": "auto",
    "preferred_flash": "auto",
    "preferred_debug": "auto",
    "preferred_observe": "auto"
  }
}
Workflow obtains project parameters (such as
keil.project
,
jlink.device
,
probe-rs.chip
, etc.) by reading configuration sections of other skills in
.embeddedskills/config.json
.

参数解析顺序

Parameter Parsing Order

按以下决策树依次判断,命中即停止:
  1. CLI 参数(优先级最高)
    • 条件:用户在命令行传入
      --build-backend
      --flash-backend
      等参数
    • 示例:
      workflow_run.py build-flash --build-backend=keil --flash-backend=jlink
    • 行为:直接使用该参数指定的后端,跳过后续步骤
  2. 配置文件(次优先)
    • 条件:CLI 未指定,且
      .embeddedskills/config.json
      workflow
      段中对应
      preferred_*
      字段不为
      "auto"
    • 示例:
      "preferred_build": "keil"
      → 使用 keil 作为构建后端
    • 行为:读取配置值并使用,跳过自动发现
  3. 自动发现(兜底)
    • 条件:CLI 未指定,且配置中
      preferred_*
      "auto"
      或字段缺失
    • 示例:
      "preferred_flash": "auto"
      → 扫描 workspace 自动推断可用 flash 后端
    • 行为:枚举候选后端列表;若唯一则直接使用,若多个则返回列表请用户确认
成功执行后,实际使用的后端会自动写回
.embeddedskills/config.json
workflow
段。
Judge in sequence according to the following decision tree, stop once a match is found:
  1. CLI Parameters (highest priority)
    • Condition: The user passes parameters like
      --build-backend
      ,
      --flash-backend
      via command line
    • Example:
      workflow_run.py build-flash --build-backend=keil --flash-backend=jlink
    • Behavior: Directly use the backend specified by the parameter, skip subsequent steps
  2. Configuration File (second priority)
    • Condition: Not specified via CLI, and the corresponding
      preferred_*
      field in the
      workflow
      section of
      .embeddedskills/config.json
      is not
      "auto"
    • Example:
      "preferred_build": "keil"
      → Use keil as the build backend
    • Behavior: Read the configuration value and use it, skip automatic discovery
  3. Automatic Discovery (fallback)
    • Condition: Not specified via CLI, and
      preferred_*
      in the configuration is
      "auto"
      or the field is missing
    • Example:
      "preferred_flash": "auto"
      → Scan the workspace to automatically infer available flash backends
    • Behavior: Enumerate the list of candidate backends; if there is only one, use it directly; if there are multiple, return the list for user confirmation
After successful execution, the actually used backend will be automatically written back to the
workflow
section of
.embeddedskills/config.json
.

规则

Rules

  • 发现多个工程或多个候选后端时,只返回候选列表,不自动猜测
  • 构建、烧录、调试、观测之间优先通过
    .embeddedskills/state.json
    串联
  • observe
    只生成推荐命令,不在 workflow 内直接长时间占用观测通道
  • 失败时优先返回哪个阶段失败,以及底层脚本的结构化错误
  • workflow 与其他 Skill 的协同只通过
    .embeddedskills/config.json
    .embeddedskills/state.json
    和子进程调用底层 Skill
  • When multiple projects or multiple candidate backends are discovered, only return the candidate list without automatic guessing
  • Prioritize connecting build, flash, debug, and observe via
    .embeddedskills/state.json
  • observe
    only generates recommended commands, and does not directly occupy the observation channel for a long time within the workflow
  • When a failure occurs, prioritize returning which phase failed and the structured error of the underlying script
  • Collaboration between workflow and other Skills only happens via
    .embeddedskills/config.json
    ,
    .embeddedskills/state.json
    , and subprocess calls to underlying Skills