Kami Conflict Detection — Kami 冲突检测
v1.0.0检测RTSP摄像头流或本地视频文件中2+人之间的身体冲突(打斗、推搡、扭打)。事件驱动模式:脚本退出...
运行时依赖
安装命令
点击复制技能文档
Kami 冲突检测 检测RTSP摄像头流或本地视频文件中2人以上的身体冲突(打斗、推搡、扭打)。使用事件驱动架构,OpenClaw在循环中调度脚本以实现持续的实时监控。 执行架构(事件驱动循环) ┌──────────────────────────────────────────────────────────┐ │ OpenClaw 调度循环 │ │ │ │ 1. OpenClaw 启动脚本 │ │ └─ .venv/bin/python conflict_detector_last.py │ │ │ │ 2. 脚本持续监控视频流 │ │ ├─ YOLO:计数帧中的人员 │ │ ├─ >= min_persons?收集多个帧 │ │ ├─ 将帧发送到 LLM API 进行冲突分析 │ │ └─ 检测到冲突? │ │ ├─ 否 → 继续监控 │ │ └─ 是 → 保存视频片段,输出 JSON,退出(10) │ │ │ │ 3. OpenClaw 读取 stdout 报警 JSON │ │ └─ 在聊天窗口向用户报告检测结果 │ │ │ │ 4. OpenClaw 自动重启脚本 → 回到 1 │ └──────────────────────────────────────────────────────────┘ 检测流水线 YOLO 预过滤 —— 轻量级人员检测以计数帧中的人员(必须 >= 2) 多帧收集 —— 收集 N 个帧,具有可配置的时间间隔 LLM 冲突分析 —— 将帧发送到 Kami 检测 API 进行暴力/冲突判断 事件触发退出 —— 在检测到冲突时,保存视频片段,输出报警 JSON,退出代码 10 何时使用 使用此技能,当用户想要: 监控摄像头视频流以检测身体打斗或扭打 检测人员之间的推搡、打击或暴力行为 在本地视频文件上运行冲突检测以进行测试 设置自动化监控报警以检测身体冲突 安装 bash setup.sh 这将: 检测系统 Python,创建 .venv/ 虚拟环境 安装依赖项:onnxruntime、opencv-python-headless、numpy、requests 创建 alerts/ 输出目录 幂等 —— 可以安全地多次运行。 先决条件 python3 和 python3-venv 已安装在系统中 yolov8s-worldv2.onnx 模型文件位于技能目录中 RTSP 摄像头在线并可通过网络访问,或者本地视频文件用于测试 Kami API 密钥(通过 --kami_api_key 或环境变量 KAMI_API_KEY)。如果您还没有,请在 https://kamiclaw-skill.kamihome.com 注册并获取密钥。 setup.sh 至少已运行一次 参数确认 在运行此技能之前,请与用户确认以下参数: 参数 默认值 描述 --rtsp_url (必需)RTSP 摄像头 URL 或本地视频文件路径 --kami_api_key (必需)Kami API 密钥(也可以通过环境变量 KAMI_API_KEY)。如果您还没有,请在 https://kamiclaw-skill.kamihome.com 注册并获取密钥。 --yolo_model yolov8s-worldv2.onnx YOLO 模型文件路径 --conf_threshold 0.25 YOLO 置信度阈值(0.0-1.0) --min_persons 2 触发 LLM 分析的最小人员数量 --sample_interval 1.0 多久(秒)运行 YOLO 预过滤 --multi_frame_count 3 收集的帧数用于 LLM 分析 --multi_frame_gap 0.5 收集帧之间的时间间隔(秒) --buffer_seconds 30 环形缓冲区持续时间(秒)用于视频片段导出 --clip_before 5 冲突之前的视频秒数 --clip_after 5 冲突之后的视频秒数 --output_dir alerts/ 保存视频片段的目录 --run_time 0 单次运行的最大时间(秒);0 = 无限制 --fps 15 视频流帧率 --inbox_file alerts/pending.jsonl 报警收件箱文件,由心跳任务消费并推送到聊天窗口 --feishu_webhook (环境变量 FEISHU_WEBHOOK_URL)Feishu 自定义机器人 webhook URL —— 报警直接推送到用户的手机 --feishu_secret (环境变量 FEISHU_WEBHOOK_SECRET)Feishu webhook 签名密钥(仅当机器人启用签名验证时) 询问用户:是否需要更改任何参数? Feishu 推送设置 在目标群聊中创建 Feishu 自定义机器人(自定义机器人),复制其 webhook URL,然后: export FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx" # 可选,只有当机器人启用“签名校验”时: export FEISHU_WEBHOOK_SECRET="your_secret_here" 或者通过 CLI 传递 --feishu_webhook / --feishu_secret。当设置时,每个冲突报警都会以交互式卡片(标题/描述/时间戳/片段持续时间/片段路径)形式 POST 到 Feishu。如果环境变量为空,Feishu 通道将被默默跳过 —— 检测仍然有效。 报警传递通道(三通道) 报警通过三个独立的通道传递,以确保即使一个通道失败,用户仍然会收到通知: # 通道 触发者 消费者 保证 1 stdout JSON + 退出代码