Extelligence-ai/bagel

Query robotics, drone, and IoT data in plain English through an MCP server, with an intelligent edge data reduction pipeline that keeps only the data that matters.

📦 Bagel – 面向機器人、無人機與 IoT 日誌的自然語言分析工具

這是什麼 – Bagel(由 Extelligence 所開發)是一項基於 Docker 的服務,讓您能以自然語言與您的機器人、無人機或 IoT 資料對話。您提出問題(例如 「我的 IMU 是否過熱?」「在每次急煞前後各保留 10 秒」),Bagel 會將請求轉換為可確定性的 DuckDB SQL,並在日誌資料上執行。產生的 SQL 會顯示給您,因此答案可審核,而非黑箱式的 LLM 推測。

為什麼重要 – 在許多機器人工作流程中,資料量龐大且儲存在如 ROS 2 bag、PX4 日誌、MCAP、CAN 捕獲、MQTT 流等格式中。提取洞見通常需要撰寫腳本、使用 grep,或手動將資料載入 PlotJuggler 等工具。Bagel 將語言理解部分交由 LLM(Claude Code、Gemini、Codex、Ollama 等)處理,但所有繁重運算——過濾、聚合、聯結——皆保留在本地執行的 SQL 中,於機器人或邊緣伺服器上運行。這為您帶來:

  • 自然語言介面 – 無需記住精確的主題名稱或 SQL 語法。
  • 透明且可重現的查詢 – 您可看見產生答案的完整 SQL,並可進行編輯。
  • 邊緣資料壓縮 – 一句話即可定義一個在裝置上執行的偵測器,只保留相關時間窗,並傳送極小的資料包,而非數 GB 的原始資料。
  • 廣泛的格式支援 – 支援 ROS 1/2、PX4、ArduPilot、Betaflight、汽車 MDF4/CAN、MQTT、PostgreSQL/TimescaleDB、InfluxDB 3 等。

🚀 主要功能(依 README 列出)

  • 自然語言查詢 – 無需學習 DSL,即可就日誌內容提出任何問題。
  • 可確定性 SQL 後端 – 每個計算都是您可審核的 DuckDB 查詢。
  • 自然語言流程 – 用一句話描述事件驅動的資料壓縮,預覽流程,再於整個機隊或邊緣設備上執行。
  • 支援 MCP 的 LLM – 可搭配 Claude Code、Gemini CLI、Codex、Cursor、Ollama 等使用。
  • Docker 容器化 – 提供 ROS 2(Kilted、Jazzy、Iron、Humble)、ROS 1、PX4、ArduPilot、Betaflight 及通用 IoT 的即時運行映像。
  • 透過 POML 可擴充 – 僅需放置 .poml 檔案即可新增「技巧」(自訂功能),無需重新建置。
  • 整合功能 – 可將結果匯出至 PlotJuggler、Rerun、Foxglove/Lichtblick、Cloudini 點雲壓縮、Slack 警報,以及 LeRobot 訓練資料集。

🛠️ 運作方式(高階流程,來自 README)

  1. 元資料探勘 – Bagel 讀取日誌的結構(主題、欄位、時間戳)。
  2. 提示解析 – LLM 解析您的自然語言請求,判斷哪些主題相關。
  3. Arrow 轉換 – 相關訊息寫入 Apache Arrow 檔案。
  4. SQL 生成 – LLM 產出實作所需計算的 DuckDB SQL 查詢。
  5. 執行與迭代 – DuckDB 執行查詢;若答案仍不夠詳細,循環重複直到獲得滿意回應。
  6. 結果傳遞 – 答案(及 SQL)送回 LLM 客戶端;可選的流程步驟可匯出 MCAP 片段、CSV/Parquet,或推送至雲端儲存。

🎯 典型應用情境

情境 您如何向 Bagel 提問
快速健康檢查 「總結這個 ROS2 bag 的元資料。」 → 回傳簡明報告卡。
故障偵測 「IMU 感測器是否過熱?」 → 對溫度主題執行統計檢驗。
事件驅動的剪裁 「在每次減速度超過 –10 m/s² 前後各保留 10 秒,其餘刪除。」 → 建立邊緣壓縮流程,將 2 GB 日誌縮小至約 160 MB。
跨主題分析 「/spot/status/battery_states 中電流與電壓的相關性為何?」 – 一句 SQL 聯結即可計算 corr()
批次處理 「在資料夾 X 中的所有 bag 上執行此流程。」 – Bagel 在整個機隊上執行相同可確定的流程,並產生合併報告。
離線作業 使用 Ollama(例如 qwen3:8b)搭配 ollmcp 在本地執行,確保資料與模型均留在機器上。

🏁 快速入門(來自 README 的快速步驟)

  1. 安裝 Docker Desktop,並安裝支援 MCP 的 LLM(Claude Code 為預設範例)。
  2. 克隆程式碼庫,並啟動相應的 Docker Compose 服務,例如:
    git clone https://github.com/Extelligence-ai/bagel.git && cd bagel
    docker compose run --service-ports ros2-kilted
    
  3. 連接 LLM(以 Claude Code 為例):
    claude mcp add --transport sse bagel http://localhost:8000/sse
    
  4. 提示模型 – 開啟 Claude(或任何 MCP 客戶端),向您的日誌提出問題。
  5. 可選離線模式 – 安裝 Ollama,下載本地模型,並執行 ollmcp 指向相同的 MCP 伺服器。

也提供一鍵示範:

docker run -it --rm ghcr.io/extelligence-ai/bagel/px4:latest demo

此指令會列印內建 PX4 飛行日誌的健康報告。


⚠️ 已知限制(依列出)

  • 汽車 MDF4/CAN 支援仍處於 測試版(僅針對產生的檔案測試過)。
  • 資料壓縮比率取決於工作負載,且 未經過基準測試;README 中的數字僅供示意。
  • MCP 末端 無認證機制,且僅綁定至 localhost – 若要公開,必須自行加入代理伺服器。
  • 小型本地 LLM(4–8 B)可能在多步流程中表現困難;較大型模型能提供更可靠的工具選擇。
  • InfluxDB/Postgres 的即時資料庫端到端測試僅針對使用者提供的實例執行,不在 CI 中執行。

📄 授權條款

Apache License 2.0(開源)。


總結 – Bagel 是自然語言 LLM 介面與嚴謹、基於 SQL 的機器人、無人機與 IoT 遙測分析之間的實用橋樑。它讓工程師能提出高階問題,審核底層運算,並自動在邊緣壓縮巨量日誌,所有操作皆在 Docker 隔離環境中完成。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案