vss-deploy-detection-tracking-2d

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Purpose

用途

Deploy, debug, and operate the RTVI-CV detection / tracking 2D microservice and drive its REST API.
部署、调试和操作RTVI-CV检测/跟踪2D微服务,并调用其REST API。

Prerequisites

前提条件

  • Active VSS deployment reachable on
    $HOST_IP
    (see
    vss-deploy-profile
    and
    references/
    ).
  • NGC credentials in
    $NGC_CLI_API_KEY
    and
    $NVIDIA_API_KEY
    for any image pulls.
  • curl
    ,
    jq
    , and Docker available on the caller.
  • 可通过
    $HOST_IP
    访问的活跃VSS部署(参考
    vss-deploy-profile
    references/
    目录)。
  • 用于拉取镜像的NGC凭证需配置在
    $NGC_CLI_API_KEY
    $NVIDIA_API_KEY
    中。
  • 调用方环境需安装
    curl
    jq
    和Docker。

Instructions

操作说明

Follow the routing tables and step-by-step workflows below. Each section that ends in workflow, quick start, or flow is intended to be executed top-to-bottom. Detailed reference material lives in
references/
and helper scripts live in
scripts/
— call them via
run_script
when the skill points to a script by name.
遵循下方的路由表和分步工作流。所有以workflowquick startflow结尾的章节需自上而下执行。详细参考资料位于
references/
目录,辅助脚本位于
scripts/
目录——当技能指向某个脚本时,通过
run_script
调用该脚本。

Examples

示例

Worked end-to-end examples are kept under
evals/
(each
*.json
manifest contains a runnable scenario) and inline in the per-workflow
curl
blocks below. Run a Tier-3 evaluation with
nv-base validate <this-skill-dir> --agent-eval
to replay them.
完整的端到端示例保存在
evals/
目录下(每个
*.json
清单包含一个可运行的场景),同时在各工作流的
curl
代码块中也有内嵌示例。运行
nv-base validate <本技能目录> --agent-eval
可执行Tier-3评估,复现这些示例。

Limitations

限制条件

  • Requires the matching VSS profile / microservice to be deployed and reachable from the caller.
  • NGC-hosted models and NIMs may be subject to rate-limits, GPU memory requirements, and license restrictions.
  • Concurrency, GPU memory, and storage limits depend on the host hardware and the profile's compose file.
  • 要求对应的VSS配置文件/微服务已部署,且调用方可访问。
  • NGC托管的模型和NIM可能受速率限制、GPU内存要求和许可证限制。
  • 并发数、GPU内存和存储限制取决于主机硬件和配置文件的compose文件。

Troubleshooting

故障排查

  • Error: REST call returns connection refused. Cause: target microservice not running. Solution: probe
    /docs
    or
    /health
    ; redeploy via
    vss-deploy-profile
    or the matching
    vss-deploy-*
    skill.
  • Error: HTTP 401/403 from NGC pulls. Cause: missing/expired
    NGC_CLI_API_KEY
    . Solution:
    docker login nvcr.io
    and re-export the key before retrying.
  • Error: container OOM or model fails to load. Cause: insufficient GPU memory for the selected profile. Solution: switch to a smaller variant or free GPUs via
    docker compose down
    .
  • 错误:REST调用返回连接拒绝。原因:目标微服务未运行。解决方案:探测
    /docs
    /health
    端点;通过
    vss-deploy-profile
    或对应的
    vss-deploy-*
    技能重新部署。
  • 错误:拉取NGC镜像时返回HTTP 401/403。原因
    NGC_CLI_API_KEY
    缺失或过期。解决方案:执行
    docker login nvcr.io
    并重新导出密钥后重试。
  • 错误:容器内存不足(OOM)或模型加载失败。原因:所选配置文件的GPU内存不足。解决方案:切换到更小的变体,或通过
    docker compose down
    释放GPU资源。

RTVI-CV — Detection & Tracking (Unified Skill)

RTVI-CV — 检测与跟踪(统一技能)

Unified skill for the Real Time Video Intelligence CV (RTVI-CV) microservice. Two action surfaces in one skill:
  • Deploy / operate / debug / tear down the RTVI-CV container locally → see
    references/deploy-vss-detection-tracking-2d.md
  • Call the RTVI-CV REST API (streams, health, metrics, embeddings) on a running instance → see
    references/usage-vss-detection-tracking-2d.md
Service:
rtvi-cv
(
metropolis_perception_app
) Image:
nvcr.io/<org>/<repo>:<tag>
— user-supplied at deploy time REST port:
9000
(
/api/v1
/live
,
/ready
,
/startup
,
/metrics
,
/stream/add
,
/stream/remove
, embeddings) Hardware: x86/aarch64 dGPU (T4, A100, L40, H100, B200, RTX), SBSA (Spark, Grace-Hopper), Jetson (Thor, Orin, Xavier)

针对**实时视频智能CV(RTVI-CV)**微服务的统一技能。一个技能包含两类操作场景:
  • 部署/操作/调试/拆除本地RTVI-CV容器 → 参考
    references/deploy-vss-detection-tracking-2d.md
  • 调用运行中实例的RTVI-CV REST API(流、健康检查、指标、嵌入)→ 参考
    references/usage-vss-detection-tracking-2d.md
服务
rtvi-cv
metropolis_perception_app
镜像
nvcr.io/<org>/<repo>:<tag>
— 部署时由用户提供 REST端口
9000
/api/v1
— 包含
/live
/ready
/startup
/metrics
/stream/add
/stream/remove
、嵌入等端点) 硬件:x86/aarch64独立GPU(T4、A100、L40、H100、B200、RTX)、SBSA(Spark、Grace-Hopper)、Jetson(Thor、Orin、Xavier)

Action routing — pick once per invocation

操作路由 — 每次调用选择一次

User intent (sample phrasing)FlowLoad this reference
deploy rtvi-cv warehouse 2d
,
run rtvicv warehouse-3d with 4 streams
,
start smartcity gdino
,
launch perception app
,
bring up sparse4d
DEPLOY
references/deploy-vss-detection-tracking-2d.md
stop rtvi-cv
,
tear down
,
kill the perception container
,
cleanup rtvicv-perception-docker
TEARDOWN (handled by deploy doc → "Mode Selection")
references/deploy-vss-detection-tracking-2d.md
+
references/teardown-flow.md
check rtvi-cv logs
,
diagnose rtvi-cv crashing
,
troubleshoot healthcheck failing
,
rtvi-cv won't start
DEBUG
references/deploy-vss-detection-tracking-2d.md
+
references/troubleshooting.md
add a stream
,
remove camera
,
list streams
,
health check
,
is rtvi-cv ready
,
get metrics
,
what's the FPS
,
check GPU usage
,
generate text embeddings
,
call rtvi-cv api
API USAGE
references/usage-vss-detection-tracking-2d.md
+
references/api-reference.md
Selection rule: match the user's phrasing against the table above and immediately load the corresponding reference file. Do not mix the flows — DEPLOY assumes no running container yet; API USAGE assumes the container is already running on
http://<host>:9000
.
If intent is genuinely ambiguous (e.g., the user says just "I want to use rtvi-cv"), ask one
AskQuestion
: deploy a new instance, or call an already-running one?

用户意图(示例表述)流程加载参考文档
deploy rtvi-cv warehouse 2d
run rtvicv warehouse-3d with 4 streams
start smartcity gdino
launch perception app
bring up sparse4d
部署
references/deploy-vss-detection-tracking-2d.md
stop rtvi-cv
tear down
kill the perception container
cleanup rtvicv-perception-docker
拆除(由部署文档的“模式选择”章节处理)
references/deploy-vss-detection-tracking-2d.md
+
references/teardown-flow.md
check rtvi-cv logs
diagnose rtvi-cv crashing
troubleshoot healthcheck failing
rtvi-cv won't start
调试
references/deploy-vss-detection-tracking-2d.md
+
references/troubleshooting.md
add a stream
remove camera
list streams
health check
is rtvi-cv ready
get metrics
what's the FPS
check GPU usage
generate text embeddings
call rtvi-cv api
API使用
references/usage-vss-detection-tracking-2d.md
+
references/api-reference.md
选择规则:将用户表述与上表匹配,立即加载对应的参考文档。请勿混合流程——部署流程假设当前无运行中的容器;API使用流程假设容器已在
http://<host>:9000
运行。
若意图确实模糊(例如用户仅说“我想使用rtvi-cv”),请提出一个问题:是部署新实例,还是调用已运行的实例?

What lives where

文件结构

vss-deploy-detection-tracking-2d/
├── SKILL.md          # this file (routing + contracts)
├── assets/           # data files (deploy-defaults.yml — single source of truth for tags / refs / paths / GPU)
├── evals/            # Tier-3 eval manifests (deploy-evals.json, usage-evals.json)
├── scripts/          # 23 bash + python helpers (see `scripts/` for the full inventory)
└── references/       # workflow runbooks (deploy / api-usage / teardown / troubleshooting / …)
For the full per-file inventory and what each reference covers, see
references/workflow-reference.md
.
All scripts are invoked from the skill root via
$SKILL_DIR/scripts/<name>
— paths inside the deploy reference doc are preserved verbatim and resolve correctly when the agent runs from skill root.

vss-deploy-detection-tracking-2d/
├── SKILL.md          # 本文档(路由与约定)
├── assets/           # 数据文件(deploy-defaults.yml — 标签/参考/路径/GPU的唯一可信来源)
├── evals/            # Tier-3评估清单(deploy-evals.json、usage-evals.json)
├── scripts/          # 23个bash + Python辅助脚本(完整清单见`scripts/`目录)
└── references/       # 工作流手册(部署/API使用/拆除/故障排查/…)
如需了解每个文件的详细清单及各参考文档的覆盖内容,请查看
references/workflow-reference.md
所有脚本需从技能根目录通过
$SKILL_DIR/scripts/<name>
调用——部署参考文档中的路径保持原样,当代理从技能根目录运行时可正确解析。

Available Scripts

可用脚本

Helpers live in
scripts/
and are invoked from the skill root by name — call each via
run_script("scripts/<name>")
so the agent records a proper tool invocation.
ScriptPurposeArguments
load_defaults.sh
Detect platform (x86 dGPU / SBSA / Jetson) and resolve YAML defaults from
assets/deploy-defaults.yml
.
--usecase <name>
fetch_resources.sh
Download + extract NGC resources, scan for layout.
--ngc-ref <ref>
(optional)
apply_in_container.sh
Host-side wrapper for Step 4 (
apply_config.sh
inside the running container).
<container_name>
apply_config.sh
In-container path-substitution, batch, sink, sources, engine cache.
<usecase> <stream_count> <sink_type>
start_app_in_container.sh
Host-side wrapper for Step 5 (
run_app_and_wait.sh
).
<container_name>
run_app_and_wait.sh
In-container app launch + readiness + metrics + log.
<config_path>
add_streams.sh
/
update_stream_sources.sh
REST stream lifecycle for Step 6.
<rtsp_or_file_uri>...
collect_metrics.sh
Pull
/api/v1/metrics
snapshot.
none
discover_streams.sh
Enumerate active streams via
/stream/get-stream-info
.
none
synthesize_docker_run.sh
Print the platform-correct
docker run
line for the resolved env.
none
render_box.sh
Render the fixed-width step receipt.
<step_label>
calibration_manager.py
Manage calibration artefacts + per-use-case engine cache invalidation.
--usecase <name> --reset
For the full inventory of helpers (cache, GPU checks, setup) browse
scripts/
; each script's
--help
describes its arguments.
辅助脚本位于
scripts/
目录,需从技能根目录按名称调用—— 通过
run_script("scripts/<name>")
调用每个脚本,以便代理记录正确的工具调用。
脚本用途参数
load_defaults.sh
检测平台(x86独立GPU / SBSA / Jetson)并从
assets/deploy-defaults.yml
解析YAML默认值。
--usecase <name>
fetch_resources.sh
下载并提取NGC资源,扫描资源布局。
--ngc-ref <ref>
(可选)
apply_in_container.sh
步骤4的主机端封装脚本(对应运行中容器内的
apply_config.sh
)。
<container_name>
apply_config.sh
容器内的路径替换、批处理、输出端、数据源、引擎缓存配置。
<usecase> <stream_count> <sink_type>
start_app_in_container.sh
步骤5的主机端封装脚本(对应
run_app_and_wait.sh
)。
<container_name>
run_app_and_wait.sh
容器内应用启动+就绪检查+指标收集+日志记录。
<config_path>
add_streams.sh
/
update_stream_sources.sh
步骤6的REST流生命周期管理。
<rtsp_or_file_uri>...
collect_metrics.sh
拉取
/api/v1/metrics
快照。
discover_streams.sh
通过
/stream/get-stream-info
枚举活跃流。
synthesize_docker_run.sh
打印针对已解析环境的平台适配
docker run
命令。
render_box.sh
渲染固定宽度的步骤回执框。
<step_label>
calibration_manager.py
管理校准工件+按用例的引擎缓存失效。
--usecase <name> --reset
如需查看完整的辅助脚本清单(缓存、GPU检查、设置等),请浏览
scripts/
目录;每个脚本的
--help
选项会描述其参数。

How to use this skill

如何使用本技能

  1. Read this file first. It only routes — it does not contain workflows.
  2. Match the user's intent against the routing table above.
  3. Load exactly one reference doc (DEPLOY or API USAGE). Don't preload both — each reference is large and contains its own full contract.
  4. Follow the loaded reference exactly. The reference docs are the byte-for-byte preserved contracts from the predecessor skills
    vss-deploy-detection-tracking-2d
    (deploy/teardown/debug) and
    rtvicv-api
    (REST API) — every step ordering invariant, bash-batching rule, box-rendering rule, and
    AskQuestion
    contract is retained.
  5. For DEPLOY, the reference doc enforces its own startup contract: one-line acknowledgement → planning-tool call (
    TodoWrite
    array of 5 todos, OR 5 successive
    TaskCreate
    calls on newer Claude Code) → Step 1 question. Do not narrate, do not pre-flight, and never print "loading TodoWrite/TaskCreate" or any deferred-tool resolution prose — the planning tool is loaded silently.

  1. 首先阅读本文档。本文档仅提供路由,不含工作流内容。
  2. 匹配用户意图与上方的路由表。
  3. 仅加载一个参考文档(部署或API使用)。请勿预加载两个文档——每个参考文档内容庞大且包含完整的约定。
  4. 严格遵循加载的参考文档。参考文档完整保留了前身技能
    vss-deploy-detection-tracking-2d
    (部署/拆除/调试)和
    rtvicv-api
    (REST API)的约定——每一步的顺序规则、bash批处理规则、回执框渲染规则和
    AskQuestion
    约定均被保留。
  5. 对于部署流程,参考文档强制执行自身的启动约定:一行确认语 → 调用规划工具(
    TodoWrite
    的5个待办事项数组,或新版Claude Code的5次连续
    TaskCreate
    调用)→ 步骤1的问题。请勿叙述、请勿预检查,且永远不要打印“加载TodoWrite/TaskCreate”或任何延迟工具解析的文本——规划工具需静默加载。

Output contract — DEPLOY flow

输出约定 — 部署流程

When running the DEPLOY / TEARDOWN / DEBUG flow, the agent MUST honour all four items below on every successful deploy. These are the user's only feedback channel between steps; skipping any of them is a behaviour regression.
  1. Render every step's exit in a fixed-width box — Step 1 Deploy targets, Step 2 Pipeline configuration, Step 3 Container, Step 4 Apply configuration, Step 5 Plan + Results. Not just the final summary. The box is the user's step receipt. Geometry is fixed (see § "Universal box format" below). Per-step content rules (what rows go inside each box) live in
    references/deploy-vss-detection-tracking-2d.md
    under "Step N box content rule".
  2. After the Step 5 Results box, issue the Step 6
    AskUserQuestion
    from
    references/next-steps.md
    § "11.c" — never replace it with a free-form Next steps bullet list. The menu is the deploy's exit handle: it lets the user run metrics, manage streams, tail logs, or tear down with one click instead of having to remember curl URLs.
  3. After the user picks a Step 6 bucket, issue the follow-up
    AskUserQuestion
    from
    references/next-steps.md
    § "11.d" — never substitute prose + ready-to-copy curl examples + a free-text "want me to run X?" question. Each bucket has its own menu of concrete actions; the user picks the action, then the skill emits the API box and runs the curl. Per-bucket follow-ups:
    • Manage streams → Add / Remove / List. Remove builds its options dynamically from
      /stream/get-stream-info
      — one option per active stream labelled
      <camera_id> · <camera_url>
      plus "Remove ALL" when
      ACTIVE > 1
      (full spec: § "
      remove_streams
      sub-flow").
    • Stop the deployment → Stop app / Stop container / Full teardown.
    • Check metrics & FPS → no follow-up; run
      collect_metrics.sh
      directly after printing the
      /api/v1/metrics
      API box.
    • Check liveness / readiness → no follow-up; probe all three health endpoints after printing their API boxes.
  4. Render the FULL per-step content, not an overview row — rendering the box is necessary but not sufficient. Each step has a row composition spec in
    references/deploy-vss-detection-tracking-2d.md
    under "Step N box content rule". Step 4 (Apply configuration) is where the agent collapses most often — its canonical per-use-case key list lives in
    references/apply-config.md
    § "Per-use-case complete edit list", and the agent MUST emit one
    ✔ [section] key=value  — annotation
    row per key in that table for the active use case + settings. A section with 5 keys → 5 rows; a section with 6 keys → 6 rows. Never one overview row per section.
Forbidden (these are the shortcuts the agent falls back to under pressure, and they break the user's UX):
  • Internal tool-loading narration. Never print "I need to load TodoWrite (a deferred tool the skill calls for the task widget)", "Loading TaskCreate…", "Calling ToolSearch for the planning tool…", or any other text about resolving / loading / fetching deferred tools. The agent loads tools silently. The user only ever sees the
    ✔ <pinned-values>
    summary line followed by the widget — never any scaffolding around tool resolution.
  • Collapsing all 5 deploy steps into a single
    TaskCreate
    's
    description
    field.
    When
    TaskCreate
    is the available planning tool, issue 5 separate
    TaskCreate
    calls
    back-to-back (one per step). See
    references/task-list.md
    § "Initial
    TaskCreate
    calls" for the verbatim template. Same rule for
    TodoWrite
    — one call with all 5 todos in the
    todos:[…]
    array; never one todo whose
    content
    is a multi-line list.
  • Silently choosing
    dynamic
    stream-mode.
    The skill default is
    stream_mode=static
    — the agent bakes auto-discovered
    file://
    URLs into the DS main config's
    [source-list]
    block before app start. Switch to
    dynamic
    only when the user explicitly asks ("add streams later via REST", "use dynamic stream mode") OR when they pick
    dynamic
    in the Step 2 AskQuestion. Picking
    dynamic
    for a generic "deploy rtvi-cv with N streams" query breaks the deploy rubric and the user's
    /metrics
    expectations. See
    references/pipeline-config.md
    § "Defaults — the skill is static-mode by default" for the full rationale.
  • ❌ A one-line
    ✔ App ready in Ns, N streams, fps total Y
    in place of the Step 5 Results box.
  • ❌ ASCII box-drawing chars (
    +
    ,
    -
    ,
    =
    ,
    *
    ) instead of light box-drawing chars (
    ┌ ─ ┐ │ └ ┘
    ).
  • ❌ Skipping Step 6 on the assumption "the user knows what to do next".
  • ❌ After Step 6, dumping a markdown wall of prose + multiple curl blocks + a closing "want me to run any of these?" — that's the shape the agent falls back to and it bypasses both the 11.d menu and the per-API-call box. The user picks from a menu; the skill shows the resolved API box; the skill runs it. No free-text Q.
  • ❌ Step 4 overview collapses — these are explicitly banned by the deploy doc's Step 4 content rule:
    • ✔ Batch size 3 (tile grid: 1×3)
      → required: 5 separate rows (
      [streammux] batch-size=3
      ,
      [primary-gie] batch-size=3
      ,
      [source-list] max-batch-size=3
      ,
      [tiled-display] rows=1
      ,
      [tiled-display] columns=3
      ).
    • ✔ Output sink eglsink
      → required: one row per sink key (4 keys for eglsink, e.g.
      [sink0] enable=1
      ,
      type=2
      ,
      sync=0
      ,
      qos=0
      — read apply-config.md for the exact list).
    • ✔ Sources static (3 streams, http-port=9000)
      → required: six annotated
      [source-list]
      rows.
    • ✔ Tile grid 1 row × 3 cols
      (single row) → required: two rows,
      [tiled-display] rows=1
      and
      [tiled-display] columns=3
      .
当运行部署/拆除/调试流程时,代理必须在每次成功部署时遵守以下四项要求。这些是用户在步骤间的唯一反馈渠道;跳过任何一项均属于行为退化。
  1. 为每个步骤的结果渲染固定宽度的回执框——步骤1部署目标、步骤2流水线配置、步骤3容器、步骤4应用配置、步骤5计划+结果。不仅是最终摘要。回执框是用户的步骤凭证。格式固定(见下方“通用回执框格式”章节)。每个步骤的内容规则(回执框内应包含哪些行)位于
    references/deploy-vss-detection-tracking-2d.md
    的“步骤N回执框内容规则”下。
  2. 在步骤5结果框之后,提出步骤6的
    AskUserQuestion
    来自
    references/next-steps.md
    的§ "11.c"——永远不要用自由格式的下一步项目符号列表替代。该菜单是部署流程的出口操作入口:用户可一键运行指标收集、管理流、查看日志或拆除服务,无需记住curl命令。
  3. 当用户选择步骤6的选项后,提出后续的
    AskUserQuestion
    来自
    references/next-steps.md
    的§ "11.d"——永远不要用文本说明+可复制的curl示例+自由文本问题“需要我运行X吗?”替代。每个选项组有自己的具体操作菜单;用户选择操作后,技能会生成对应的API回执框并执行curl命令。各选项组的后续操作:
    • 管理流 → 添加/删除/列出。删除操作的选项需从
      /stream/get-stream-info
      动态生成
      ——每个活跃流对应一个选项,标签为
      <camera_id> · <camera_url>
      ;当活跃流数量
      ACTIVE > 1
      时,增加“删除全部”选项(完整规范见§ "
      remove_streams
      子流程")。
    • 停止部署 → 停止应用/停止容器/完全拆除。
    • 检查指标与FPS → 无后续问题;打印
      /api/v1/metrics
      的API回执框后直接运行
      collect_metrics.sh
    • 检查存活状态/就绪状态 → 无后续问题;打印各健康端点的API回执框后探测所有三个端点。
  4. 渲染完整的步骤内容,而非概述行——渲染回执框是必要的,但还不够。每个步骤的行组成规范位于
    references/deploy-vss-detection-tracking-2d.md
    的“步骤N回执框内容规则”下。步骤4(应用配置)是代理最容易简化的环节——其针对各用例的标准键列表位于
    references/apply-config.md
    的§ "按用例的完整编辑列表",代理必须为当前活跃用例+设置生成一行
    ✔ [section] key=value  — annotation
    ,对应列表中的每个键。一个包含5个键的章节→5行;包含6个键的章节→6行。永远不要每个章节只生成一行概述。
禁止操作(这些是代理在压力下会采用的捷径,会破坏用户体验):
  • 内部工具加载叙述。永远不要打印“我需要加载TodoWrite(技能调用的延迟工具,用于任务小部件)”、“加载TaskCreate…”、“调用ToolSearch查找规划工具…”或任何关于解析/加载/获取延迟工具的文本。代理需静默加载工具。用户只能看到
    ✔ <固定值>
    摘要行,随后是任务小部件——永远不要显示工具解析的任何脚手架内容。
  • 将5个部署步骤合并到单个
    TaskCreate
    description
    字段中
    。当
    TaskCreate
    是可用的规划工具时,需连续调用5次
    TaskCreate
    (每个步骤一次)。参考
    references/task-list.md
    的§ "初始
    TaskCreate
    调用"获取逐字模板。
    TodoWrite
    同理——一次调用包含
    todos:[…]
    数组中的所有5个待办事项;永远不要创建一个待办事项,其
    content
    是多行列表。
  • 静默选择
    dynamic
    流模式
    。技能默认模式为
    stream_mode=static
    ——代理在应用启动前会将自动发现的
    file://
    URL写入DS主配置的
    [source-list]
    块。仅当用户明确要求(“稍后通过REST添加流”、“使用动态流模式”)或在步骤2的AskQuestion中选择
    dynamic
    时,才切换到动态模式。对于通用查询“部署rtvi-cv并配置N个流”选择
    dynamic
    会违反部署规则和用户对
    /metrics
    的预期。参考
    references/pipeline-config.md
    的§ "默认值——技能默认使用静态模式"获取完整理由。
  • ❌ 用一行
    ✔ 应用已就绪,耗时Ns,N个流,总FPS为Y
    替代步骤5的结果框。
  • ❌ 使用ASCII框绘制字符(
    +
    -
    =
    *
    )替代轻量框绘制字符(
    ┌ ─ ┐ │ └ ┘
    )。
  • ❌ 假设“用户知道下一步该做什么”而跳过步骤6。
  • ❌ 步骤6之后,输出一大段markdown文本+多个curl代码块+结尾的“需要我运行其中任何一个吗?”——这是代理会 fallback 的形式,会绕过11.d菜单和每个API调用的回执框。用户需从菜单选择;技能显示解析后的API回执框;技能执行该操作。禁止自由文本提问。
  • ❌ 步骤4内容简化——部署文档的步骤4内容规则明确禁止以下操作:
    • ✔ 批处理大小3(平铺网格:1×3)
      → 要求:5行独立内容 (
      [streammux] batch-size=3
      [primary-gie] batch-size=3
      [source-list] max-batch-size=3
      [tiled-display] rows=1
      [tiled-display] columns=3
      )。
    • ✔ 输出端eglsink
      → 要求:每个输出端键对应一行 (eglsink包含4个键,例如
      [sink0] enable=1
      type=2
      sync=0
      qos=0
      ——请查看apply-config.md获取准确列表)。
    • ✔ 数据源静态(3个流,http-port=9000)
      → 要求:6行带注释的
      [source-list]
      内容。
    • ✔ 平铺网格1行×3列
      (单行)→ 要求:两行内容,
      [tiled-display] rows=1
      [tiled-display] columns=3

Universal box format

通用回执框格式

The geometry contract for every step-exit box (Step 1 through Step 5 Results). The same shape across every box; only the title and the body rows change per step.
  • Width: 128 chars corner-to-corner —
    at column 1,
    at column 128. Wider terminals leave the box flush-left; do not stretch it. Inner content area is 124 chars (with one space margin on each side inside the
    borders).
  • Light box-drawing chars only:
    ┌ ─ ┐ │ └ ┘
    . No
    +
    ,
    -
    ,
    =
    ,
    *
    ASCII fallbacks.
  • Top border — title CENTERED:
    + N₁ dashes +
    + title +
    • N₂ dashes +
      , where
      N₁ + N₂ + len(title) + 2 = 126
      . Distribute the pad:
      N₁ = floor((126 − len(title) − 2) / 2)
      ,
      N₂ = 126 − len(title) − 2 − N₁
      . N₁ and N₂ differ by at most 1.
  • Body: one
    │ <content padded to inner-content 124> │
    per fact. Each fact line uses the
      ✔ <key-padded-to-13>  <value>
    form (two spaces in, glyph, key right-padded to 13, two spaces, value).
  • Blank lines between groups: render
    │ <124 spaces> │
    between logical groups (e.g. Identity / Model / Videos in Step 1) so the user can scan the box at a glance.
  • Bottom border:
    + 126 dashes +
    — solid border, no title.
Standard step titles (used at the top of each step's box):
┌─────────────────────────────────────────────────────── Deploy targets ───────────────────────────────────────────────────────┐
┌─────────────────────────────────────────────────── Pipeline configuration ───────────────────────────────────────────────────┐
┌───────────────────────────────────────────────────────── Container ──────────────────────────────────────────────────────────┐
┌──────────────────────────────────────────────────── Apply configuration ─────────────────────────────────────────────────────┐
┌──────────────────────────────────────────────── Perception Application — Plan ───────────────────────────────────────────────┐
┌────────────────────────────────────────────── Perception Application — Results ──────────────────────────────────────────────┐
Per-step content rules (which rows go in which box, mode-aware row hiding, the apply-config sectioned layout, the Step 5 PLAN-then-RESULT pattern, the Step 3
docker run
synthesis requirement) live in
references/deploy-vss-detection-tracking-2d.md
under "Step N box content rule" — read those when rendering the corresponding step.
每个步骤结果回执框(步骤1至步骤5结果)的格式约定。所有回执框形状相同;仅标题正文行随步骤变化。
  • 宽度:128字符——从
    共128列。宽终端下回执框左对齐;请勿拉伸。内部内容区域为124字符
    边框内每侧有一个空格边距)。
  • 仅使用轻量框绘制字符
    ┌ ─ ┐ │ └ ┘
    。禁止使用
    +
    -
    =
    *
    等ASCII替代字符。
  • 顶部边框——标题居中
    + N₁个短横线 +
    + 标题 +
    + N₂个短横线 +
    ,其中
    N₁ + N₂ + len(title) + 2 = 126
    。分配填充:
    N₁ = floor((126 − len(title) − 2) / 2)
    N₂ = 126 − len(title) − 2 − N₁
    。N₁和N₂最多相差1。
  • 正文:每个事实对应一行
    │ <内容填充至124字符> │
    。每行事实采用
      ✔ <键填充至13字符>  <值>
    格式(开头两个空格,符号,键右填充至13字符,两个空格,值)。
  • 组间空白行:在逻辑组之间渲染
    │ <124个空格> │
    (例如步骤1中的标识/模型/视频),以便用户快速扫描回执框。
  • 底部边框
    + 126个短横线 +
    ——实心边框,无标题。
标准步骤标题(用于每个步骤回执框的顶部):
┌─────────────────────────────────────────────────────── Deploy targets ───────────────────────────────────────────────────────┐
┌─────────────────────────────────────────────────── Pipeline configuration ───────────────────────────────────────────────────┐
┌───────────────────────────────────────────────────────── Container ──────────────────────────────────────────────────────────┐
┌──────────────────────────────────────────────────── Apply configuration ─────────────────────────────────────────────────────┐
┌──────────────────────────────────────────────── Perception Application — Plan ───────────────────────────────────────────────┐
┌────────────────────────────────────────────── Perception Application — Results ──────────────────────────────────────────────┐
各步骤的内容规则(哪些行放入哪个回执框、模式感知的行隐藏、应用配置的分段布局、步骤5的计划-结果模式、步骤3的
docker run
生成要求)位于
references/deploy-vss-detection-tracking-2d.md
的“步骤N回执框内容规则”下——渲染对应步骤时请阅读这些规则。

Quick triggers (mnemonic)

快速触发词(助记)

PhraseFlow
deploy rtvicv warehouse 2d with 4 streams and display
DEPLOY
run smartcity gdino on gpu 1
DEPLOY
stop the perception container
TEARDOWN (deploy doc)
rtvi-cv healthcheck failing
DEBUG (deploy doc + troubleshooting)
add a stream to rtvi-cv
API USAGE
is rtvi-cv ready on localhost:9000
API USAGE
get rtvi-cv metrics
API USAGE
generate text embeddings via rtvi-cv
API USAGE
bump:1
表述流程
deploy rtvicv warehouse 2d with 4 streams and display
部署
run smartcity gdino on gpu 1
部署
stop the perception container
拆除(部署文档)
rtvi-cv healthcheck failing
调试(部署文档+故障排查)
add a stream to rtvi-cv
API使用
is rtvi-cv ready on localhost:9000
API使用
get rtvi-cv metrics
API使用
generate text embeddings via rtvi-cv
API使用
bump:1 ",