mcpField
W
wuji-cli-base

wuji-cli-base

github.com/wuji-technology其他5205 次安装4 天前更新
代码仓库

关于 wuji-cli-base

wuji-cli-base 是通过 `wuji` 命令行操作 Wuji 设备的 Agent Skill,涵盖设备发现、参数和实时数据访问、诊断、校准及固件更新,并支持结构化输出。

主要功能

  1. 01扫描并探测设备
  2. 02读取和写入设备参数
  3. 03订阅实时数据
  4. 04运行诊断和校准
  5. 05更新固件及 CLI Skills
  6. 06输出 JSON 和 JSONL

适用场景

  1. 01检查已连接设备和固件
  2. 02读取或更改设备设置
  3. 03记录触觉或运动数据
  4. 04检查设备健康状况并校准模型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wuji-technology/wuji-cli --skill wuji-cli-base

安装后在 Claude Code 中输入/wuji-cli-base确认已加载。

详细介绍

运行命令前

将这些技能同步到已安装的 CLI 版本:

wuji update --skills

如果本地技能已与 CLI 版本匹配,该命令不会安装任何内容,但仍会报告过期的技能目录;使用 --yes 或确认提示后,会将这些目录移出 ~/.agents/skills(见下文“过期技能目录”部分)。只有同步未能收敛时,命令才会以非零状态退出。

心智模型

  • 无状态:每条命令都会独立执行连接 → 操作 → 断开。命令之间不会保持连接,因此无需单独执行“连接”步骤。
  • 单占用:设备固件一次只允许一个直接会话。主机应用(例如 Wuji Studio)占用设备时,CLI 会自动回退到通过 Zenoh 桥接进行只读访问(此模式下会拒绝设置写入)。
  • 退出代码:0 = 成功;非零 = 失败(任何设备的 ping 失败,或 doctor 报告 Fail,都会以 1 退出),可直接用于脚本。

命令概览

命令用途
wuji devices扫描并列出设备(USB/UDP)
wuji ping握手探测;报告 SN/固件/IP(默认探测所有设备)
wuji resources列出可读/可写参数和可订阅主题
wuji get <path>读取参数(根据架构自动解码为 JSON)
wuji set <path> <value>写入参数(值为 JSON;0x 前缀表示原始十六进制字节)
wuji sub <topic>订阅实时数据(--count N 在收到 N 帧后退出)
wuji viz --sn <SN>可视化 Wuji Hand 2 实时数据(见 wuji-cli-viz 技能)
wuji calib hand-model手部模型校准(见 wuji-cli-calib 技能)
wuji calib tactile触觉接触模型校准(见 wuji-cli-calib 技能)
wuji doctor设备健康自检(见 wuji-cli-doctor 技能)
wuji upgrade检查并升级固件(见 wuji-cli-upgrade 技能)
wuji user管理 SDK 用户并导出/导入校准数据(见 wuji-cli-user 技能)
wuji update更新 CLI 及其 Agent Skills(--check 仅检查,--skills 仅同步 Skills)
wuji completions <shell>生成 Shell 补全脚本

在任意命令后添加 --help,即可查看详细帮助。

选择设备

大多数命令都接受以下三种互斥选择器之一:

--sn WG1KXXXXXXXXXXX            # By serial number (recommended, most precise)
--address 192.168.1.100:50000    # By address: ip:port for UDP, /dev/ttyACM0 for USB
--handedness left                # By handedness left/right (two-handed setups)

未指定设备选择器时:ping / doctor 会处理所有设备;get / set / sub / resources 需要指定设备,否则会报错并列出候选 SN。

典型工作流

wuji devices --json                            # 1. What devices are there
wuji ping --json                               # 2. Can they all connect (confirm SN/firmware/IP)
wuji resources --sn <SN> --json                # 3. What params / topics are available
wuji get data_port --sn <SN> --json            # 4. Read a parameter
wuji set data_port 50001 --sn <SN>             # 5. Write a parameter (JSON value)
wuji sub tactile --sn <SN> --count 10 --jsonl  # 6. Capture 10 tactile frames

常用资源速览

wuji resources --sn <SN> --json 是权威列表;以下是常用项:

  • 常用参数(get/set):hand_side、firmware_version、serial_number、ip_address、data_port — 各设备支持的能力不同,以 wuji resources --sn <SN> 中的 GET/SET 列为准
  • 常用主题(sub):tactile(触觉矩阵)、emf_poses(EMF 姿态)、imu_data/palm(IMU)、tip_poses(指尖姿态)、hand_joint_angles(关节角度)、hand_skeleton、tf

将数据录制到文件

--jsonl 每行打印一帧,因此只需使用管道即可轻量录制:

wuji sub tactile --count 500 --jsonl > data/tactile.jsonl             # Silent recording
wuji sub emf_poses --count 500 --jsonl | tee data/emf.jsonl | jq      # Record and watch

常见错误及处理

症状含义和处理
found N devices: ...未指定设备且总线上有多个设备;按提示使用 --sn
Session already exists (0x0013)另一个进程持有直接会话;使用 --sn 或未指定目标时,CLI 会自动回退到 Zenoh 只读模式
connected to wrong device: requested sn=X, got sn=Y多个设备共用一个地址,或扫描条目已过期;重新运行 wuji devices 进行确认
virtual parameter 'X' currently has no value虚拟参数没有默认值,且无状态 CLI 不会持久化写入;这是预期行为
'X' does not support set. Supported operations: get该资源不支持此操作,因此 CLI 不会向设备发送任何内容,并以代码 1 退出。请在 wuji resources --sn <SN> 中检查资源的 GET、SET 或 SUB 列。使用 --json 或 --jsonl 时,错误还会包含 kind: "unsupported_operation"、path、operation、device 和 capabilities
set rejected (direct_only)目前通过 Zenoh 桥接时为只读;待直接会话持有者释放设备后重试
set succeeds but wuji devices shows no changeip_address/data_port 等网络参数会在设备重启后生效

大多数命令都支持 --json,可为 Agent 提供更详细的结构化输出。

不使用 --json 时,输出更便于人类阅读,例如:

$ wuji devices
found 1 device(s)
┌──────────────────┬───────────┬──────────┬─────────────────────┬─────────────────────┐
│ SN               ┆ Transport ┆ USB Port ┆ IP                  ┆ Address             │
╞══════════════════╪═══════════╪══════════╪═════════════════════╪═════════════════════╡
│ WG1KXXXXXXXXXXX  ┆ Udp       ┆ -        ┆ 192.168.1.100:50001 ┆ 192.168.1.100:50001 │
└──────────────────┴───────────┴──────────┴─────────────────────┴─────────────────────┘
💡 run `wuji ping` to get device type and firmware version

$ wuji devices --json
{
  "devices": [
    {
      "sn": "WG1KXXXXXXXXXXX",
      "transport": "Udp",
      "usb_port": null,
      "ip": "192.168.1.100:50001",
      "address": "192.168.1.100:50001"
    }
  ]
}

此处不会显示设备类型和固件版本:发现过程是广播扫描,不会进行握手。使用 wuji ping 获取这些信息。

使 CLI 和 Skills 保持最新

wuji update --check --json   # {"current": ..., "latest": ..., "update_available": true/false}
wuji update                  # Download, verify, and replace the binary in place
wuji update --skills         # Sync Agent Skills to this CLI's companion version only

update --check 在检查本身成功时始终以 0 退出。应根据 JSON 字段 update_available 进行判断,而不是依据退出代码。后台检查每 24 小时最多运行一次,并在 stderr 上打印通知——不会阻塞命令,也不会触及 stdout。设置 WUJI_NO_UPDATE_CHECK=1 可禁用检查。

检查确切版本
wuji --version          # Two lines: short commit and version
wuji --version --long   # Four lines: full commit, version, build target, profile
wuji --version --json   # {"version", "commit" (full sha or "unknown"), "target", "profile"}

--long 输出是供脚本使用的稳定逐行文本:每行格式为 key: value,顺序为 commit、version、target、profile。commit 是构建此二进制文件所用的 40 个字符的 sha;对于在 Git 检出目录之外构建的版本,则为 unknown。

Agent Skills

wuji update 和 wuji update --skills 会确保 ~/.agents/skills 中的 Wuji CLI Skills 版本不低于随 CLI 附带的版本。报告的 skills.status 字段有三种状态:

状态含义
up-to-date已安装的 Skills 版本不低于 CLI 附带的版本
update-required已安装的 Skills 版本较旧,或无法读取其版本。二进制文件成功升级后会自动同步 Skills;也可运行 wuji update --skills
not-installed未找到 Wuji CLI Skills。wuji update 会报告此状态,而 wuji update --skills 会安装它们

wuji update --skills 会同步 Skills,而不触及二进制文件,因此无需升级 CLI 即可让 Skills 达到 CLI 所附带的版本或更高版本。如果同步后 Skills 仍低于该版本,或其版本仍无法读取,该命令将以 1 退出。

过期的技能目录

重命名或停用的技能在同步后仍会保留在磁盘上的目录中,因为安装程序只会写入文件。同步后,CLI 会列出这些目录、在 stderr 中发出警告,并在将它们移出 ~/.agents/skills 前征求确认。移出的目录会保留在临时目录中,报告会列出每个目录及其新路径,并标记 "action": "moved"。不会删除任何内容。

在 JSON 输出中,这些目录会显示在 stale_skills 下;没有过期目录时会省略该字段。每个条目包含 name、action(moved、kept 或 failed),以及在适用时包含 version、path 和 error。

传入 --yes 可跳过确认,例如 wuji update --yes 或 wuji update --skills --yes。在没有终端的情况下运行时,会报告过期目录,并将其保留在原处,除非同时传入 --yes。传入 --yes 后,无论是否有终端,这些目录都会被移出;因此,传入该标志的自动化运行会修改 ~/.agents/skills。

wuji update --skills --json   # Report stale directories without moving them (no --yes)
wuji update --skills --yes    # Move them out without asking, with or without a terminal

wuji update --check 不会移动目录。

安装 Shell 补全(可选)

# bash example; for other shells (zsh/fish/powershell/elvish), see wuji completions --help
mkdir -p ~/.local/share/bash-completion/completions
wuji completions bash > ~/.local/share/bash-completion/completions/wuji
exec bash   # Takes effect in the current session

评论

支持 Markdown