| 名称 | jetson-set-target |
| 描述 | >- 将活动的Jetson目标平台指针切换到一个现有的profile YAML。 在customize/build/flash之前使用以更改目标;不用于编写配置文件 — 请改用jetson-init-target。 |
| 版本 | 0.0.1 |
| 开源协议 | “Apache-2.0” metadata: data-classification: public |
| 作者 | “Jetson Team” tags: - target-platform - configuration - meta domain: meta |
设置目标平台
概述
本技能是
../../context/target-platform-contract.md 中目标平台契约的切换器侧。它仅编辑 target-platform/active_target.yml;从不创建新的 profile YAML。要创建新的 profile,请使用同级技能 jetson-init-target。
单一输出:target-platform/active_target.yml 更新为用户选择的现有 profile。
何时调用
- 用户要求在已存在的 profiles 之间切换/更改/激活另一个目标平台。
- 下游技能以“没有活动目标”拒绝服务 并且
target-platform/中已包含一个或多个 profile YAML。 - 用户通过文件名或产品名称指定目标,且该 profile YAML 已在磁盘上。
如果 target-platform/ 不存在、为空,或仅包含 active_target.yml,则停止并告知用户先运行 jetson-init-target。
操作步骤
检查 profiles 目录
- 读取
target-platform/active_target.yml(对于本技能,将缺失文件视为active: NA— 如有需要,将在“更新活动指针”步骤中创建该文件,并保留模板头部)。 - 列出
target-platform/*.yaml,排除active_target.yml本身。
| 情形 | 操作 |
|---|---|
| 不存在 profile YAML | 拒绝。告诉用户运行 jetson-init-target 来创建一个。 |
| 只有一个 profile,且已激活 | 告诉用户它已激活;无需更改。停止。 |
| 只有一个 profile,未激活 | 与用户确认,然后跳转到“更新活动指针”步骤并选择该 profile。 |
| 多个 profiles | 继续执行“显示列表”步骤。 |
显示列表
按字母顺序打印 profiles,编号。用 (active) 标记当前活动选择,以便用户知道他们要从哪个切换。对于每个 profile,解析其 YAML 并显示一行摘要,使用户无需打开文件即可识别:reference_devkit.name(如果存在则使用 custom_carrier.name)加上 flash_config。
Profiles in target-platform/:
1) acme-vision-x1.yaml — Acme Vision X1 (custom carrier on AGX Thor T5000) — acme-vision-x1.conf
2) jetson-agx-orin-32gb.yaml — Jetson AGX Orin 32GB — jetson-agx-orin-devkit.conf
3) jetson-agx-thor-devkit.yaml — Jetson AGX Thor T5000 — jetson-agx-thor-devkit.conf (active)
4) jetson-orin-nano-8gb.yaml — Jetson Orin Nano 8GB — jetson-orin-nano-devkit.conf
如果某个 profile YAML 解析失败或缺少预期字段,则显示裸文件名并附上 (unparseable — fix or remove) 标记,然后跳过;不要因为一个坏文件而拒绝整个技能。
提示选择
提示:
选择一个数字、裸文件名、产品名称(子字符串匹配)或
cancel。
解析为单个 profile 文件名。如果用户选择了当前活动的 profile,请告知他们并停止,不要重写指针。如果存在歧义,列出候选并再次询问。
更新活动指针
编辑 target-platform/active_target.yml:
- 设置
active: <chosen-filename>.yaml。 - 逐字保留头部注释块 — 只修改
active:行。 - 如果文件不存在(如果用户在没有引导步骤的情况下手动设置了
target-platform/,则可能缺失),从../../references/active_target_template.yaml创建它,然后设置active:。
确认
打印摘要:先前的活动值、新的活动值、所选 profile 的 reference_devkit.name(如果存在则包括 custom_carrier.name),以及提醒:下游技能(jetson-customize-clocks、jetson-customize-nvpmodel、jetson-customize-fan、jetson-optimize-memory)现在将解析到此目标。
如果下游技能触发了此运行,请告诉用户重新发出其原始请求;不要静默地重新触发它。
先决条件
target-platform/存在且包含至少一个*.yamlprofile(不包括active_target.yml)。target-platform/active_target.yml存在,或者../../references/active_target_template.yaml处的模板可用,以便本技能可以重新创建指针。
限制
- 仅编辑
active_target.yml中的active:行;从不写入 profile YAML。 - 当没有 profile YAML 存在时拒绝 — 而是引导用户到
jetson-init-target。 - 不解析超出简单子字符串匹配的模糊产品名称;歧义选择会重新提示。
故障排除
- “未找到 profiles”拒绝 — 目录中除了指针外没有
*.yaml;请先运行/jetson-init-target。 - 指针被重写为缺失的 profile — 不应该发生,因为所选择的文件名在写入前已验证;如果出现,请手动将
active_target.yml编辑回有效的文件名,或使用正确的选择重新运行。 - 活动指针读取为
NA— 合法的“未选择”状态;选择列出的任何 profile,指针将被设置。
注意事项
- 此处不进行创作。 如果用户指定的目标的 profile YAML 不在磁盘上,请拒绝并引导他们到
jetson-init-target。不要静默地进入创作流程。 - 不要将
active_target.yml指向缺失的 profile。 在写入之前,请验证所选择的文件名存在于target-platform/中。 - 编辑时保留
active_target.yml的注释块 — 只应更改active:行。 - 从 profile 列表中排除
active_target.yml。它位于同一目录中,但它是指针,而不是 profile。 active: NA是合法的“未选择”状态。 将其与新的指针一样对待 — 不要拒绝,只需显示列表并让用户选择。- 单 profile 快捷方式。 如果只存在一个 profile,不要跳过用户确认 — 在翻转指针之前仍需确认。
参考
../../context/target-platform-contract.md— 本技能写入的契约。../../references/active_target_template.yaml— 活动目标指针的模式起始文件(如果文件缺失时用于重新创建)。../jetson-init-target/SKILL.md— 同级技能:编写新的 profile YAML。