uds-diagnostic-test

UDS 诊断测试技能。Use when: 收到诊断调查表、UDS diagnostic survey table、生成 UDS 测试脚本、基于诊断资料生成测试、执行 UDS 诊断测试、CAN 测试、DID 测试、DTC 测试、IOControl 测试、RoutineControl 测试、诊断服务测试、diagnostic test script generation and execution via SocketCAN

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "uds-diagnostic-test" with this command: npx skills add tongli0406/uds-diagnostic-test

UDS 诊断测试技能

目标

这个 skill 只解决三件事:

  1. 用固定 Python 环境解析调查表
  2. 生成并验证 UDS 测试脚本
  3. 在 SocketCAN 环境下执行测试

详细驱动安装、WSL2 USB 透传、SecurityAccess 替代方案、NRC 说明、调查表默认值参考,统一放在 README.md,不要在当前技能主流程里重复展开。

唯一规则

  • 唯一环境入口:先进入 skill 根目录,再执行 bash ./scripts/setup_env.sh
  • 唯一环境来源:~/.uds_env
  • 唯一 CAN 后端:SocketCAN(can0 / can1),不要使用 PCAN_*
  • 唯一正确包名:python-can,不要执行 pip install can
  • 环境修复默认只允许重跑 setup_env.sh;除非用户明确要求,否则不要手工执行 pip uninstall/install
  • 默认工作目录:$HOME/.uds_workspace

高频错误快查

现象处理
Invalid CAN Bus Type - None先修 Python 环境,不要先查硬件;先进入 skill 根目录,再执行 bash ./scripts/setup_env.sh
No module named 'can' / can.interfaces.socketcan先进入 skill 根目录,再执行 bash ./scripts/setup_env.sh
pip 只能装出 can-0.0.0python-can 1.5.x不要循环重装;这是包源/镜像问题。停止重试,把当前 pip 源异常报告给用户
装成 can-0.0.0先重跑 bash ./scripts/setup_env.sh;如果脚本仍然报告 can-0.0.0python-can 1.5.x,停止重试并报告包源异常
No such interface: can0 / Network is down执行 "$PYTHON" "$UDS_SKILL_DIR/scripts/can_init.py"
SyntaxError: closing parenthesis 执行 .sh 脚本.sh 文件不能用 python3 执行。改用 "$PYTHON" "$UDS_SKILL_DIR/scripts/can_init.py"
Permission deniedsudo 执行 can_init.py
zipfile.BadZipFile调查表文件损坏或加密,要求用户提供无密码文件
生成器拒绝生成(关键CAN参数使用默认值)调查表缺少 TX/RX CAN ID 或波特率。向用户展示缺失参数表格,获取确认后使用 --confirmed 重新生成
./scripts/setup_env.sh 不存在 / SKILL.md 缺失技能目录不完整。不要手工补目录或补文件,重新获取完整的 uds-diagnostic-test 目录

会话初始化

每次开始任务前,只做这一段:

source ~/.uds_env 2>/dev/null || { echo "[ERROR] ~/.uds_env 不存在,请先进入 skill 根目录,再执行 bash ./scripts/setup_env.sh"; exit 1; }
PYTHON="$UDS_PYTHON"
SKILL_DIR="$UDS_SKILL_DIR"
UDS_WORK="${UDS_WORK:-$HOME/.uds_workspace}"
test -x "$PYTHON" || { echo "[ERROR] UDS_PYTHON 无效: $UDS_PYTHON"; exit 1; }
[ -f "$SKILL_DIR/SKILL.md" ] || { echo "[ERROR] UDS_SKILL_DIR 无效: $SKILL_DIR"; exit 1; }
mkdir -p "$UDS_WORK"

标准流程

1. 环境准备

前提:当前目录必须是包含 SKILL.mdscripts/uds-diagnostic-test 目录。

执行命令:

bash ./scripts/setup_env.sh

2. 解析调查表

source ~/.uds_env
PYTHON="$UDS_PYTHON"
SKILL_DIR="$UDS_SKILL_DIR"
UDS_WORK="${UDS_WORK:-$HOME/.uds_workspace}"
mkdir -p "$UDS_WORK"

"$PYTHON" "$SKILL_DIR/scripts/uds_survey_parser.py" \
  --input "<调查表文件路径>" \
  --output "$UDS_WORK/uds_parsed.json"

然后读取 $UDS_WORK/uds_parsed.json,检查以下三项并展示给用户:

  • can_config: 调查表中的 CAN 配置(TX/RX ID、波特率、CAN FD 等)
  • defaults_used: 使用了默认值的 DID/IO/Routine 字段
  • missing_attributes: 调查表中完全缺失的属性

2.5 强制确认(阻断点)

在生成脚本之前,必须执行以下检查,缺一不可:

  1. 如果 can_config 缺少 tx_idrx_idbitrate必须询问用户提供真实值
  2. 如果 defaults_used 非空,必须以表格展示给用户确认
  3. 如果 missing_attributes 非空,必须告知用户哪些属性缺失

确认表格必须包含:

参数调查表值将使用的值来源
TX CAN ID0x671 / 缺失0x7E0调查表 / 硬编码默认
RX CAN ID0x679 / 缺失0x7E8调查表 / 硬编码默认
CAN FDY/N / 未指定Classic CAN调查表 / 默认
仲裁域波特率500000 / 未指定500000调查表 / 硬编码默认
采样点0.8 / 未指定0.8调查表 / 硬编码默认
是否需要 $27Y/NY/N调查表
安全日志输出路径 / 无路径 / 无调查表

用户明确确认后,生成命令必须带上 --confirmed 标志。未确认禁止跳过此步骤直接生成。

3. 生成脚本

source ~/.uds_env
PYTHON="$UDS_PYTHON"
SKILL_DIR="$UDS_SKILL_DIR"
UDS_WORK="${UDS_WORK:-$HOME/.uds_workspace}"

"$PYTHON" "$SKILL_DIR/scripts/uds_test_generator.py" \
  --input "$UDS_WORK/uds_parsed.json" \
  --output "$UDS_WORK/uds_test.py" \
  --confirmed

"$PYTHON" -m py_compile "$UDS_WORK/uds_test.py"

4. 初始化 CAN

默认 CAN FD 模式(向下兼容 Classic CAN,无需区分):

source ~/.uds_env
"$PYTHON" "$UDS_SKILL_DIR/scripts/can_init.py"

如 ECU 明确只支持 Classic CAN,加 --classic 参数。

5. 验证连接

source ~/.uds_env
PYTHON="$UDS_PYTHON"
UDS_WORK="${UDS_WORK:-$HOME/.uds_workspace}"

"$PYTHON" -c "import can, importlib.metadata as md; print('python-can', md.version('python-can'), '@', can.__file__)"
"$PYTHON" "$UDS_WORK/uds_test.py" --test-connection

6. 执行测试

source ~/.uds_env
PYTHON="$UDS_PYTHON"
UDS_WORK="${UDS_WORK:-$HOME/.uds_workspace}"

"$PYTHON" "$UDS_WORK/uds_test.py" \
  --report "$UDS_WORK/uds_report.md" \
  --can-log "$UDS_WORK/can_trace_$(date +%Y%m%d_%H%M%S).asc"

何时使用 pipeline

只有在用户明确要求“直接生成并执行,不需要中间确认”时,才使用:

source ~/.uds_env
PYTHON="$UDS_PYTHON"
SKILL_DIR="$UDS_SKILL_DIR"
UDS_WORK="${UDS_WORK:-$HOME/.uds_workspace}"

"$PYTHON" "$SKILL_DIR/scripts/uds_pcan_runner.py" pipeline \
  --input "<调查表文件路径>" \
  --output-dir "$UDS_WORK/pipeline_output"

默认不要直接走 pipeline。默认流程始终是:解析 → 用户确认(阻断点) → 生成(带 --confirmed) → 验证 → 执行。跳过确认直接生成是不可接受的。

详细资料

以下内容不要继续堆在当前技能主流程里,统一去 README.md

  • WSL2 USB 透传
  • 原生 Linux 驱动安装
  • SecurityAccess Linux 替代方案
  • NRC 0x78 / P2 / P2* 说明
  • 调查表属性默认值表
  • 深度 CAN 故障排查
  • Agent 在确认阶段如发现 DLL 路径以 .dll 结尾且运行在 Linux,必须主动告知用户此限制

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

OpenClaw Doctor

一键检查 OpenClaw 系统健康状态(配置、模型、cron、记忆)

Registry SourceRecently Updated
2890Profile unavailable
General

OpenClaw Doctor

一键检查 OpenClaw 系统健康状态(配置、模型、cron、记忆)

Registry SourceRecently Updated
3360Profile unavailable
Coding

Google ads for OpenClaw

Управление кампаниями Google Ads. Используйте этот навык, когда пользователь хочет просмотреть статистику, изменить бюджет, включить или выключить кампании в...

Registry SourceRecently Updated
7091Profile unavailable
Security

Setup Doctor

Diagnose OpenClaw setup in one command. Auto-detects issues with Node, npm, gateway, config, and workspace. Quick mode (~10s) or Full mode. Multi-language. C...

Registry SourceRecently Updated
2880Profile unavailable
uds-diagnostic-test | V50.AI