关于 wuji-cli-viz
wuji-cli-viz 是用于启动 Wuji CLI 实时 Viewer 的技能,支持 Wuji Hand 2 和 Wuji Glove。它涵盖设备选择、启动行为及触觉归零的安全处理;Viewer 展示实时数据,不录制或回放文件。
主要功能
- 01发现并选择支持的设备
- 02在浏览器中打开实时 Viewer
- 03可视化手部姿态与传感器数据
- 04根据设备能力调整触觉视图
- 05输出 JSON 或 JSONL 启动报告
适用场景
- 01检查 Wuji Hand 2 的实时姿态和触觉数据
- 02在浏览器中查看 Wuji Glove 传感器
- 03从 Agent 管理的会话启动 Viewer
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wuji-technology/ wuji-cli --skill wuji-cli-viz安装后在 Claude Code 中输入/wuji-cli-viz确认已加载。
附带文件agents/openai.yaml
详细介绍
启动查看器
viz 支持 Wuji Hand 2 和 Wuji Glove。不带 --sn 时,它会扫描这两种设备:
wuji viz
它会合并统计这两种受支持的设备,且仅在恰好发现一台受支持设备时才直接连接。在交互式终端中,如果发现多台受支持的设备,则会打开可搜索的选择器,其摘要会显示 SN 和设备类型。高亮项会在单独的详细信息行中显示传输方式和地址;仅当 USB Port 或 IP 字段存在时才会显示该字段。只会连接所选设备。在选择器中按 Esc 或 Ctrl+C 会向 stderr 写入 Cancelled.,以代码 9 退出,且不会连接设备或回退到其他设备。连接失败时也不会回退。
使用 wuji viz --sn <SN> 选择特定的受支持设备。如果存在多台受支持的设备,结构化输出和无人值守调用必须指定 --sn;它们绝不会打开选择器。
该命令会输出查看器 URL,并在默认浏览器中打开。它会持续运行设备会话和查看器,直到停止。如果 Agent 在聊天中启动了该命令,请让 Agent 停止 viz;不要在聊天中让用户按 Ctrl+C。只有当用户在自己的终端中直接运行 viz 时,才适合按 Ctrl+C。
仅当主机实际上是无头环境,或者用户明确要求不要打开浏览器或手动打开输出的 URL 时,才使用 --no-open。不要仅因为 Agent 正在运行该命令就推断应使用此选项:
wuji viz --no-open
如需机器可读的启动报告,使用 --json 输出格式化 JSON,或使用 --jsonl 输出一行紧凑的 JSON。根据 Agent 执行约定中的设备特定规则选择归零行为。此示例假定主机为无头环境,且设备为配备触觉硬件或触觉能力未知的 Hand 2,并且未确认指尖未负载:
wuji viz --sn <HAND2_SN> --no-zero --no-open --jsonl
查看器就绪后,stdout 会输出且仅输出一份启动报告,并在命令继续运行前将其刷新:
{
"status": "running",
"device": {
"sn": "WH2-...",
"handedness": "left"
},
"viewer": {
"url": "http://127.0.0.1:...",
"lan": false
}
}
实时传感器帧会保留在查看器中,不会写入 stdout。进度信息、警告和错误会写入 stderr。查看器就绪前发生故障时,stdout 保持为空,并向 stderr 写入常规结构化错误信封。后续运行时发生故障时,启动报告仍保留在 stdout 中,并向 stderr 写入错误信封。Ctrl+C 不会额外写入第二条结构化记录。
该命令不会记录 RRD 文件,也不接受 --address 或 --handedness 作为设备选择器。
所选设备决定查看器页面:
- Wuji Hand 2 显示实时手部姿态,并在可用时显示指尖触觉数据。
- Wuji Glove 显示实时手部和传感器可视化内容。
viz 仅支持实时查看:不会记录 RRD,也不会加载或重放 MCAP/RRD 文件。
解析请求的设备
根据用户对设备的描述限制选择范围:
- “hand”、“Hand 2”、“二代手”或“手”表示
wuji_hand_2。 - “glove”、“Wuji Glove”或“手套”表示
wuji_glove。
当用户指定一种类别时,将设备发现范围限制为该类别,绝不回退到另一类别。如果没有可用的所请求类别设备,应报告这一情况,而不是启动其他类型的设备。
Agent 执行约定
当用户选择此技能来启动、检查或测试 wuji viz 时,请在用户的机器上执行实际命令;不要只贴出命令让用户运行。如果未安装 wuji 二进制文件或没有可用的受支持设备,请说明这一具体阻碍,不要声称 Viewer 已启动。
如果用户提供了可执行文件路径,请在设备发现和每条 viz 命令中使用该确切路径;不要替换为裸 wuji 命令,也不要悄悄选择其他已安装的版本。
在启动长时间运行的进程之前,根据用户的意图选择调用方式:
- 选择设备。 如果用户指定了 SN,请传入
--sn <SN>。否则,先运行wuji devices --json,筛选出wuji_hand_2和wuji_glove,并使用明确标识的单个候选设备。在 Agent 或其他非交互进程中,切勿在未指定--sn的情况下启动选择器;如果仍有多个受支持设备,请停止并询问用户要使用哪个 SN,不要猜测。不要使用--address或--handedness作为选择器。 - 根据设备选择置零行为。 对于 Wuji Glove,或已确认没有触觉硬件的 Hand 2,不要添加
--no-zero,也不要询问指尖是否空载。对于带有触觉硬件或触觉能力未知的 Hand 2,如果用户要求只读启动、要求跳过置零,或尚未明确确认五个指尖都处于空载状态,请添加--no-zero。只有在用户已确认五个指尖都处于空载状态,且未要求只读或跳过置零时,才省略该参数。此规则适用于图形界面、交互式和由 Agent 管理的启动。使用现有设备证据判断触觉能力,不要依据零力值或缺失数据。不要仅为选择此参数而单独进行探测。在普通进度消息中,不要提及置零、指尖空载检查或--no-zero。如果 CLI 出现实际置零错误或安全限制,请说明并停止。对于 Wuji Glove,绝不要执行或提及 Hand 2 置零。 - 选择浏览器和输出处理方式。 在图形桌面上,默认命令会打开浏览器:使用
wuji viz或wuji viz --sn <SN>,不要添加--no-open。在无头主机上,添加--no-open;不要仅仅因为由 Agent 运行就添加此参数。仅当调用方明确需要机器可读的启动记录时,才使用--jsonl(或--json)。只有在出现status: "running"记录后才解析 URL;进度、警告和错误会输出到 stderr。 - 审慎选择网络公开方式。 本地使用时保留默认的环回绑定。只有当用户明确需要远程浏览器且网络可信时,才添加
--lan或--bind <local-IP>;这些模式不提供身份验证或 TLS。 - 保持会话运行。 成功启动不代表进程已结束:
viz会继续流式传输。当 Agent 从聊天中启动它时,请让它在 Agent 管理的终端/会话中持续运行,并返回 URL,不要让用户按 Ctrl+C;该按键可能会中断整个 Agent 对话。如果用户想停止它,请通过 Agent 停止确切的viz会话/进程。仅当用户在自己的终端中直接运行viz时,才提及 Ctrl+C。除非第一个 Viewer 页面已关闭,否则不要启动第二个 Viewer 页面。断开连接后,Viewer 会保留最后的状态,命令不会自动重新连接。如果置零报告操作部分完成或失败,请停止并报告;不要自动重试。
常用调用方式:
# Local interactive desktop, Hand 2 with tactile capability unknown and no unload confirmation
wuji viz --no-zero
# Graphical desktop, Hand 2 with unloaded fingertips confirmed and zeroing allowed
wuji viz --sn <HAND2_SN>
# Graphical desktop, Hand 2 with tactile hardware or unknown capability, no unload confirmation
wuji viz --sn <HAND2_SN> --no-zero
# Graphical desktop, Hand 2 already confirmed to have no tactile hardware
wuji viz --sn <HAND2_SN>
# Graphical desktop, explicit Wuji Glove (opens the browser)
wuji viz --sn <GLOVE_SN>
# Explicitly requested manual URL / machine-readable Glove startup
wuji viz --sn <GLOVE_SN> --no-open --jsonl
# User will open the Glove URL manually on this trusted machine
wuji viz --sn <GLOVE_SN> --no-open
# Remote browser on a trusted LAN, Hand 2 with tactile hardware or unknown capability
wuji viz --sn <HAND2_SN> --no-zero --lan --no-open
Hand 2 触觉行为
Hand 2 会根据连接的硬件自动调整触觉可视化:
- 有触觉硬件时,显示触觉视图和力历史记录。
- 没有触觉硬件时,仅显示关节姿态,并隐藏触觉面板和力历史记录,同时保留完整的手部模型。
- 触觉功能不完整时,保留通用布局,并将不可用手指的视图留空。
不要根据力值推断触觉功能是否可用。如果启动时无法确定触觉功能是否可用,请保留安全的可视化效果,并跳过任何会更改设备的归零操作。
控制运行时触觉归零
该命令的默认调用方式会根据所选 Hand 2 可用的硬件处理触觉归零。无触觉功能的 Hand 2 和 Wuji Glove 会自动跳过此操作;--no-zero 仅适用于配备触觉硬件的 Hand 2。
所选设备为 Wuji Glove 时,面向用户的进度提示应简洁地说明正在启动 Glove 可视化。不要在状态消息中显示仅适用于 Hand 2 的归零细节,例如“只读”、“跳过归零”或 --no-zero。
对于配备触觉硬件或触觉功能未知的 Hand 2,请使用 --no-zero 来阻止归零:
wuji viz --sn <HAND2_SN> --no-zero
只有当 CLI 实际执行归零时,它才会检查全部五个触觉传感器是否符合预期型号且已就绪,将它们的读数记录为运行时归零基线,并等待全部五个传感器恢复到 Ready,然后才启动订阅和 Viewer。在此操作期间,所有指尖都应保持无负载,直到终端显示 Tactile zero: ready.
使用 --no-zero 时,跳过这些仅适用于归零的检查、基线采集和完成等待。在此分支中,不要要求用户为归零确认指尖无负载,也不要等待 Tactile zero: ready.。正常的触觉功能发现和可视化初始化仍会运行。
遵循 Agent 执行约定中的设备专用调用规则。Glove 和已确认无触觉功能的 Hand 2 启动时,无需确认指尖无负载,也无需使用 --no-zero。触觉功能未知并不能证明 Hand 2 没有触觉硬件。CLI 仍负责检查实际的归零条件。允许归零时,所有五个指尖表面都应保持无负载,直到终端报告 Tactile zero: ready.。归零期间存在的负载会成为基线的一部分。此操作不会写入持久化的触觉模型。如果命令报告归零可能不完整,请停止操作并报告错误。未经用户指示,不要重试。
阅读页面
对于配备触觉硬件的 Hand 2,Viewer 包含:
- 由实时关节状态驱动的 3D Wuji Hand 2 模型;
- 手部每个 taxel 的实心力箭头;
- 每根手指各一个合力箭头;
- 五个指尖 3D 面板;
- 五组合力大小序列,显示滚动的 60 秒时间窗口。
无触觉功能的 Hand 2 使用仅显示关节姿态的布局:隐藏触觉矩阵、指尖面板和合力历史记录,同时保留完整的 URDF,包括指尖外壳网格。不要为了隐藏触觉数据而从 URDF 中移除指尖外壳几何;这些网格属于手部模型的一部分。触觉功能不完整的 Hand 2 会保留五个面板位置,并将不可用手指的面板留空。
默认情况下,Viewer 以 Rerun 的深色主题打开,3D 背景为纯黑色。
当触觉数据可用时,力的方向和大小采用 Viewer 显示的坐标约定。Viewer 会显示每根手指的合力及其历史记录。
处理故障
警告 Using a standard model for visualization. 表示 Viewer 正在使用标准模型。
仍可使用实时设备数据继续可视化。
详细的警告和错误会打印在终端中。Viewer 页面不会在面板内添加健康状态标记:
- 指尖生成有效帧后,发生故障时会保留该帧;请在终端中查看受影响的手指和故障原因,其他数据流仍会继续更新;
- 关节数据流发生故障时,会保留最后一个有效手部姿势(如果有),指尖面板仍会继续更新;
- 缺少触觉数据时,仍可查看手部姿势;
- Glove 的更新会以不超过 60 Hz 的频率,根据最新可用状态进行渲染;某个数据流出现无效帧时,会保留该数据流的上一个有效视图,不受影响的数据流仍会继续更新;
- 当设备支持速率控制时,Glove 启动时会请求以 60 Hz 获取上游
emf_poses、tactile、tactile_zones和掌部 IMU 数据,并报告实际速率;不支持速率控制时会发出警告,但 Viewer 的速率仍会限制在 60 Hz。 - 设备断开连接后,Viewer 会保留最后状态,命令会报告故障;请通过 Agent 停止由 Agent 管理的会话,或仅在独立终端中使用 Ctrl+C。
该命令不会自动重新连接。
在可信的局域网上共享
默认情况下,Viewer 使用回环地址。若要通过计算机的私有网络地址开放访问:
wuji viz --lan --no-open
--lan 会选择默认路由上的一个私有地址。如果该路由指向了错误的网络接口,请改为指定一个本地地址:
wuji viz --bind 10.42.0.7 --no-open
--lan 和 --bind 不能同时使用。非回环访问没有身份验证,也没有 TLS。仅在可信网络中使用,并且只将打印出的 URL 分享给预期的查看者。支持的用法仅限每个 wuji viz 会话同时打开一个 Viewer 页面。打开另一个页面前,请先关闭现有页面。