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)
- 元資料探勘 – Bagel 讀取日誌的結構(主題、欄位、時間戳)。
- 提示解析 – LLM 解析您的自然語言請求,判斷哪些主題相關。
- Arrow 轉換 – 相關訊息寫入 Apache Arrow 檔案。
- SQL 生成 – LLM 產出實作所需計算的 DuckDB SQL 查詢。
- 執行與迭代 – DuckDB 執行查詢;若答案仍不夠詳細,循環重複直到獲得滿意回應。
- 結果傳遞 – 答案(及 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 的快速步驟)
- 安裝 Docker Desktop,並安裝支援 MCP 的 LLM(Claude Code 為預設範例)。
- 克隆程式碼庫,並啟動相應的 Docker Compose 服務,例如:
git clone https://github.com/Extelligence-ai/bagel.git && cd bagel docker compose run --service-ports ros2-kilted - 連接 LLM(以 Claude Code 為例):
claude mcp add --transport sse bagel http://localhost:8000/sse - 提示模型 – 開啟 Claude(或任何 MCP 客戶端),向您的日誌提出問題。
- 可選離線模式 – 安裝 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 隔離環境中完成。
相關
- 專案
- 專案
- 專案
- 專案
- 專案