关于 Bagel Robotics MCP Server
Bagel Robotics MCP Server 面向机器人、无人机和 IoT 团队,通过自然语言分析记录数据。它以可审计的 DuckDB SQL 执行计算,并提供事件驱动的数据缩减;LLM 不进入机器人的控制回路。
主要功能
- 01自然语言分析日志
- 02可审计的 DuckDB SQL 计算
- 03基于事件的边缘数据缩减
- 04支持 ROS、飞行日志和 IoT 格式
- 05写入前预览数据管道
适用场景
- 01排查传感器或机器人健康状况
- 02概述 ROS 和飞行日志
- 03保留事件窗口并丢弃其他数据
MCP 相关
通过 MCP 服务向 MCP 客户端提供机器人数据分析和缩减能力。记录数据可通过 stdio 运行,Docker 部署则可使用 SSE 端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/extelligence-ai/bagel/ros2-kilted:2.4.1本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/extelligence-ai/bagel/ros2-kilted:2.4.1SSE工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
比特化为原子。
原子化为比特。
如果你还留着一个名为 parse_bag_final_v7.py 的脚本,我们得聊聊。
Extelligence 推出的 Bagel,让你可以用日常语言询问机器人、无人机和 IoT 数据。 针对消息数据执行的所有计算都使用 DuckDB SQL,而不是依赖模型猜测;Bagel 还会展示查询语句,方便你审查。
我的 IMU 传感器是不是过热了?
Bagel 还配备了智能边缘数据缩减流水线:描述一个事件,Bagel 就会在机器人上运行检测,只保留重要的时间窗口,丢弃其余数据。MCP 服务让你可以通过大模型使用这一切:Claude Code、Gemini、 Cursor,或完全本地运行的模型。
Bagel 是首个为机器人数据提供真正分析工具包的 MCP 服务,它让大模型待在该待的位置:查看你的日志,而不是进入机器人的控制回路。
📦 安装
Bagel 已在 PyPI 上发布,包名为 bagel-mcp。分析录制的数据无需 Docker
或安装 ROS。
Claude Code,一行命令(需要 uv):
claude mcp add bagel -- uvx --from "bagel-mcp[ros]" bagel-mcp --transport stdio
pip,安装到任意 Python 3.10 到 3.12 环境中:
pip install "bagel-mcp[ros]"
然后,将 MCP 客户端指向它安装的 bagel-mcp 命令(Claude Desktop、Cursor 和 Codex 的配置方法见快速入门)。
打开你的 Agent 并询问:
总结一下数据包 "~/logs/run_42.mcap"。
ros extra 可读取 ROS 1 和 ROS 2 数据包。飞行日志、CAN / MDF4、实时 MQTT
等也都可以通过额外组件安装。实时 ROS
机器人(rosbridge)以及机群/边缘流水线则通过 Docker 运行。
🥯 主要功能
- 用自然语言提问:无需深厚的领域专业知识。
- 计算过程透明:使用确定性的 SQL 查询,不靠黑盒大模型计算。
- 自然语言流水线:“在每次急刹车前后保留 10 秒,删除其余数据”: 一句话即可生成可审计的流水线:写入任何数据前先预览,然后可运行一次、应用于整个机群,或在边缘端持续运行。
- 广泛支持大模型:Claude Code、Gemini、Cursor、Codex 等。
- 按需安装:处理录制数据可使用
pip/uvx,处理实时机器人和边缘端数据可使用 Docker 镜像。 - 可扩展的能力:Bagel 可以学会新本领。
- 广泛支持多种格式:不支持你的数据格式?提交工单。
🥯 60 秒快速体验
无需 MCP 客户端、无需大模型、无需配置:对捆绑的示例日志运行同样的确定性检查,并直接在终端中查看机器人健康状况报告。
docker run -it --rm ghcr.io/extelligence-ai/bagel/px4:latest demo
sample.ulg - 41.5s, 2018 messages, 77 topics
Power ⚠️ min 21.07V, largest drop 2.37V at ~t=+4.8s, end 23.45V (battery_status_0)
IMU ✅ accel_z stddev 1.6x the log baseline at ~t=+36.8s (sensor_combined_0)
GPS — skipped: no GPS topic
Data gaps ✅ no gap > 1.05x median interval (checked battery_status_0, sensor_combined_0)
...
ROS2 镜像(ros2-kilted、ros2-jazzy、ros2-iron、ros2-humble)也能以相同方式运行
demo,使用较精简的捆绑示例(只有随附飞行日志的 px4 示例足够丰富,能展示所有检查项)。使用 demo /path/to/log 指定你自己的日志(先用 -v 挂载),或者继续阅读下方的完整 MCP 配置说明。
⚡️ 快速入门
运行 Bagel 有两种方式,按数据类型选择:
| 你拥有的数据 | 运行 Bagel 的方式 |
|---|---|
录制数据:ROS 1 .bag 和 ROS 2 .db3 / .mcap 数据包、飞行日志(PX4、ArduPilot、Betaflight)、CAN / MDF4、CSV / JSON / Parquet、ROS 文本日志;实时 MQTT 机器人 | uvx 或 pip,见下文:无需 Docker,也无需安装 ROS |
| 实时 ROS 机器人(rosbridge)、机群和边缘部署 | Docker,见下文:镜像内含 ROS 技术栈和持续运行流水线的运行时 |
🐍 使用 uvx 或 pip 安装(无需 Docker)
MCP 客户端会通过 stdio 自行启动服务,因此无需手动启动或保持运行。选择 uvx(无需管理:首次使用时会获取并缓存 Bagel)或 pip(由你控制的常规安装)。
使用 uvx。 安装 uv
(在 macOS 和 Linux 上运行 curl -LsSf https://astral.sh/uv/install.sh | sh),然后:
Claude Code:
claude mcp add bagel -- uvx --from "bagel-mcp[ros]" bagel-mcp --transport stdio
适用于任何接受 JSON MCP 配置的客户端(Claude Desktop、Cursor、Codex 等):
{
"mcpServers": {
"bagel": {
"command": "uvx",
"args": ["--from", "bagel-mcp[ros]", "bagel-mcp", "--transport", "stdio"]
}
}
}
使用 pip。 Python 3.10 至 3.12;使用虚拟环境可以保持整洁:
python3 -m venv ~/.bagel-venv
~/.bagel-venv/bin/pip install "bagel-mcp[ros]"
claude mcp add bagel -- ~/.bagel-venv/bin/bagel-mcp --transport stdio
对于 JSON 配置,将完整路径用作命令:
"command": "/Users/you/.bagel-venv/bin/bagel-mcp", "args": ["--transport", "stdio"]。
**Apple Silicon Mac:**请使用 ARM 版 Python,而不是通过 Rosetta 运行的 Intel 版 Python。运行 python3 -c "import platform; print(platform.machine())" 检查;输出应为 arm64。如果输出为 x86_64,请创建单独的原生环境:
uv venv --seed --python cpython-3.12-macos-aarch64-none ~/.bagel-arm-venv
~/.bagel-arm-venv/bin/python -m pip install "bagel-mcp[ros]"
claude mcp add bagel -- ~/.bagel-arm-venv/bin/bagel-mcp --transport stdio
这样可以避免从源码构建 cryptography:上游已在版本 49 中移除对 Intel macOS 的支持。
目前,全新安装会选择 MCP 1.30.0,其依赖链为
bagel-mcp → mcp → pyjwt[crypto] → cryptography。这适用于基础包和 bagel-mcp[ros],即使不安装 upload extra 也是如此。
在 Intel Mac 上,如果安装时构建 cryptography 失败,请使用下方的 Docker 方案。请勿降级 cryptography 来恢复旧版 wheel;旧版本缺少安全修复。
格式支持通过 extras 提供,因此 PX4 用户不会下载汽车解析器。请用逗号分隔列出所需项:
uvx --from "bagel-mcp[ros,px4,automotive]" bagel-mcp --transport stdio,或
pip install "bagel-mcp[ros,px4,automotive]"。如果你请求的格式缺少对应 extra,Bagel 会在错误信息中给出添加它所需的确切命令。
| Extra | 添加内容 |
|---|---|
ros | ROS 1 .bag 和 ROS 2 .db3 包(读取,以及 reduce / snippet 写入器),使用纯 Python 实现 |
px4 | PX4 .ulg |
ardupilot | ArduPilot .bin |
betaflight | Betaflight .bbl / .bfl |
automotive | CAN 采集文件(.blf、.asc + DBC)和 ASAM MDF4 |
iot | 实时 MQTT(包括 Sparkplug B)和 InfluxDB 数据源 |
viz | Rerun 导出 |
upload | GCS 和 Azure Blob 上传任务 |
cloudini | Cloudini 点云任务 |
MCAP、CSV / JSON / Parquet、ROS 文本日志、PlotJuggler / Lichtblick / LeRobot 导出和 S3 上传均无需 extra。
PX4 日志解析不需要 Git。Git 和网络访问仅用于获取可选的字段说明;在工具的 args 中传入 download_description: false 即可跳过获取这些说明。
升级时,请重复指定已安装的 extras,以便同时更新其依赖项。uvx 会自动获取新版本(使用 uvx --refresh --from "bagel-mcp[ros,px4]" bagel-mcp --help 强制刷新);使用 pip 时,运行 pip install -U "bagel-mcp[ros,px4]",并换成你自己的 extras 列表。
然后输入提示词,指向你自己的文件:
总结 MCAP 包
"~/logs/run_42.mcap"的元数据。
说明
读取 bag 文件无需安装 ROS:
rosextra 使用纯 Python rosbags 库进行读写 (支持 sqlite3 和 MCAP 存储、zstd / bz2 / lz4 压缩,以及来自 bag 本身或 Humble 及之后各发行版捆绑接口定义的消息类型)。实时 ROS 话题(rosbridge)以及 fleet / edge 运行时仍通过 Docker 提供。
🐳 使用 Docker 运行(实时机器人、fleet 和 edge、特定发行版的 ROS)
提示
**已经在使用 Claude Code?**只需粘贴此仓库的链接,并告诉 Claude 你需要的环境:
为 ROS2 Kilted 设置 https://github.com/Extelligence-ai/bagel。
Claude 会克隆仓库、启动 Docker,并为你配置 MCP 连接。
📋 前置条件
安装 Docker Desktop 和 Claude Code(或其他支持 MCP 的大模型)。
说明
**arm64 主机(Apple Silicon、Raspberry Pi、Jetson、Graviton):**默认服务
ros2-kilted(也是server.json固定使用的服务)提供多架构镜像,因此 Docker 会拉取原生 arm64 构建版本。无需额外设置。其他服务仅发布 amd64 版本。Docker Desktop 会自动进行模拟,因此它们也能在 Apple Silicon 上运行(速度较慢,但可用)。在使用纯 Docker Engine 的 arm64 Linux 上,默认不提供模拟功能,这些服务会立即因
exec format error而失败——请先安装 QEMU/binfmt:docker run --privileged --rm tonistiigi/binfmt --install amd64
1. 克隆并启动 Bagel
git clone https://github.com/Extelligence-ai/bagel.git && cd bagel
docker compose run --service-ports ros2-kilted
提示
端口 8000 已被占用?将
MCP_SERVER_PORT设为其他值,例如MCP_SERVER_PORT=8100 docker compose run --service-ports ros2-kilted,并在第 2 步使用 该端口。
选择与你的环境匹配的服务:
| 服务 | 用途 |
|---|---|
ros2-kilted | ROS2 Kilted(最新) |
ros2-jazzy | ROS2 Jazzy |
ros2-jazzy-jev | ROS2 Jazzy + 机器人端决策模型(GPU,测试版) |
ros2-iron | ROS2 Iron |
ros2-humble | ROS2 Humble |
ros1-noetic | ROS1 Noetic |
ros1-noetic-cv | ROS1 Noetic + CV |
px4 | PX4 飞行日志 |
ardupilot | ArduPilot 飞行日志 |
betaflight | Betaflight 飞行日志 |
iot | IoT / MQTT(实时) |
-jev 镜像(测试版)添加了 PyTorch,用于在机器人上运行决策模型
(在异常检测门控中设置 backend: local)。其他服务也可以通过相同方式构建,只需使用 --build-arg JEV_MODE=true。仅使用 CPU 的机器人不需要此镜像:托管 Jev 后端可在所有镜像中使用。
提示
如需让 Bagel 访问本地文件,请在启动 Docker 前编辑
compose.yaml: 取消注释并更新所选服务下的volumes部分。
等待出现以下输出:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
2. 连接 Claude Code
在新的终端中:
claude mcp add --transport sse bagel http://localhost:8000/sse
说明
出于安全考虑,MCP 端点仅绑定到
localhost(不会暴露在局域网中)。 如需与其他机器共享,请从compose.yaml中移除127.0.0.1前缀, 并在前面配置经过身份验证的代理:请参阅 SECURITY.md。
3. 提示词
claude
总结 ROS2 bag "./data/sample/ros2/mcap" 的元数据。
就是这样:现在你可以与数据对话了。
🔒 想要完全离线使用?
将第 2 步替换为本地模型:你的数据和大模型都留在本机上:
brew install ollama && ollama serve & # or ollama.com
ollama pull qwen3:8b
uvx ollmcp --mcp-server-url http://localhost:8000/sse --model qwen3:8b
模型选择、预期情况和故障排除:参阅本地大模型指南。
📚 使用其他大模型?
Bagel 适用于任何支持 MCP 的大模型。以下是经过测试的替代方案设置指南:
- Claude Code(详细指南)
- Gemini CLI
- Codex
- Cursor
- Copilot
找不到你的大模型?提交工单。
Bagel 附带一个 Agent 插件:其中包含四项技能,教 Agent 何时以及如何驱动服务(日志分诊、管线编写、实时接收端、可视化导出),并自动配置 MCP 连接。Claude Code 和 OpenAI Codex 共用同一个 plugin/ 目录。
/plugin marketplace add Extelligence-ai/bagel
/plugin install bagel@bagel
Codex 和 ChatGPT 用户:从 OpenAI 插件目录一键安装 bagel,或克隆仓库并将其添加为插件市场(仓库中包含 .agents/plugins/marketplace.json)。从目录安装只会打包技能(该目录仅接受公开的 HTTPS MCP 服务,而 Bagel 运行在你的机器上),因此还需通过 codex mcp add bagel --url http://localhost:8000/mcp 连接一次服务,或者在 ~/.codex/config.toml 中配置:
[mcp_servers.bagel]
url = "http://localhost:8000/mcp"
从仓库市场和 Claude Code 安装时,会自动配置此连接。维护者可使用
uv run python scripts/package_codex_directory.py 构建目录 ZIP。
然后启动适用于你的数据格式的容器(参见 Quickstart):插件默认连接到 http://localhost:8000/mcp。其他任何 MCP 客户端都可以通过 list_agent_capabilities 工具,在服务端发现相同的工作流。
留下重要数据,丢弃其余部分
机器人记录的数据远超你能负担得起的传输量。Bagel 将问题转化为检测器,在数据记录位置运行检测器,并且只传输真实事件周围的数据窗口。
下面是一次对话中的操作:
如果事先不知道事件是什么?异常门控 *(测试版)*会在机器人上学习正常状态,让 Jev为异常情况命名,并且只保留这些切片;每个切片都带有一个 JSON 标签,支持任意存储桶:S3、GCS、Azure、MinIO 或 R2。
上面的会话:一段 20 分钟(1,200 s)的录制,提示词为 “保留每次减速度超过 −10 m/s² 时前后各 10 秒的数据”。预览检测到 7 个事件,将它们合并为 4 个窗口,并从 1,200 s 中保留 92 s(7.6%);运行后,2.1 GB 的 bag 缩减至 161 MB。这些数字是示例演示输出,并非实测基准:该比例为事件窗口时长与总时长之比,因此完全取决于你的工作负载。
✅ 支持的数据格式
| 行业 | 格式 |
|---|---|
| 机器人技术 | ROS1、ROS2、MCAP(任意配置文件)、Copper(通过 MCAP 导出)、ROS 文本日志(~/.ros/log) |
| 机器人学习 | Gantry Bench 证据包——数据集判定的工作产物(每个片段的信号检查、机器人测试阶梯、发现项),以可查询的表格形式提供 |
| 无人机 | PX4、ArduPilot、Betaflight |
| 汽车 | ASAM MDF4(.mf4)、CAN 记录(.blf/.asc + DBC) · 测试版 |
| 物联网 | MQTT(实时、Sparkplug B)、PostgreSQL / TimescaleDB、InfluxDB 3 |
| 硬件状态 | WaffleForm 快照(.waffleform.yaml),由 waffle-iron 自动检测 · 测试版 |
🆚 Bagel 与你已经在使用的工具
你已经有了 ros2 *、PlotJuggler 和 grep。Bagel 不会取代它们:它能回答那些需要你费力才能找到答案的问题,然后把结果交给它们:
| 你现在的做法 | 改为询问 Bagel |
|---|---|
用 ros2 bag info 查看元数据 | “总结这个 bag”:同一个提示词也适用于 PX4、ArduPilot、MCAP、MQTT、Postgres |
用 ros2 topic echo /imu 查看原始数值 | “/imu 中的 z 轴减速度峰值是多少?5 s 内的运行平均值呢?” · 底层使用真正的 SQL:峰值、运行平均值、百分位数、跨主题关联 |
| 在 PlotJuggler 时间线上来回拖动,寻找事件 | “找出所有小于 −10 m/s² 的减速度,并截取前后各 30 s 的片段”:然后用 预设好视图的布局 在 PlotJuggler 中打开结果 |
使用 rqt_console,或 grep ~/.ros/log | “读取 ~/.ros/log 中的 ERROR,并告诉我出了什么问题”:包含回溯信息,无需 bag |
| 在两个终端中分别查看两个主题,再用电子表格进行关联 | “电流和电压之间的相关性是多少?”:所有主题都位于同一个 SQL 关系中,因此联接和 corr() 只需一个问题 |
使用 ros2 bag record -a,还得盯着磁盘空间 | 一个常驻边缘管道:持续录制,只保留事件窗口,丢弃其余数据 |
| 用 bash 循环处理 200 个 bag | “在文件夹中的每个 bag 上运行这个管道”:一个管道,覆盖整个机群,并生成一份汇总报告 |
编写 scp/aws s3 sync 脚本,将数据从机器人传出 | 将数据上传到 S3、GCS 或 Azure,作为管道步骤;对已存在的文件跳过校验和传输 |
| 每种格式都用不同的查看器:PX4 用 FlightPlot,ArduPilot 用 MAVExplorer,Betaflight 用 Blackbox Explorer | 用同一段对话处理所有这些格式,还包括 ROS、MCAP、MQTT、Postgres、InfluxDB |
| 每个问题都写一个临时的 pandas 脚本 | 直接提问;Bagel 会编写并运行查询 |
用一句通俗的话,就能获得一个答案,不必执行一连串命令,也不用编写一段明天就会删除的脚本。
💬 我可以提什么问题?
你几乎可以问 Bagel 任何问题。例如:
/spot/status/battery_states主题中,电流和电压之间的相关性是多少?
我觉得机器人撞上了一个坑。能检查一下 z 轴是否出现突然减速来确认吗?
每当无人机的减速度大于 10 m/s² 时,保留前后各 10 秒。丢弃其余所有数据。
自上周以来,这台机器人有什么变化吗?
是时候让 Bagel 接受考验了:它能发现正在做横滚动作的无人机吗?剧透:🎉 完全可以。
当你提出问题时,Bagel 会分析数据源的元数据和主题,以建立高层次的理解。
根据你的提示词,如果需要进一步检查,Bagel 会找出最相关的主题,并解读其含义和结构。随后,Bagel 会将相关主题消息写入 Apache Arrow 文件,并使用 DuckDB 生成和执行查询。
根据需要重复这一过程,运行新的查询,直到 Bagel 找到问题的最佳答案。
大模型擅长语言,但不擅长数学。Bagel 通过生成确定性的 DuckDB SQL 查询来弥补这一不足。这些查询会显示出来供你审查,你也可以引导 Bagel 修正错误。
🐶 教 Bagel 新技能
Bagel 通过 POML 文件学习新能力:一组结构化指令,用于描述某项“技能”,例如计算延迟统计数据。
✍️ 创建 .poml 文件
例如,我们来定义 ./bagel_mcp/agent/examples/woof.poml。
<poml>
<task>
Count the topics in the data source.
If the count is odd, say "woof", else say "meow".
</task>
<output-format>
Return the sound, the topic count, and a few cute emojis. Nothing else.
</output-format>
</poml>
🗣️ 使用该能力
向 Bagel 提示:
对 ROS2 包 "./data/sample/ros2/mcap" 运行 POML 能力 "./bagel_mcp/agent/examples/woof.poml"。
结果:
meow 🐱 4 topics 🐱💤🎯
教它你自己的技能(无需重新构建)
Bagel 会从 ~/.bagel/capabilities/ 中发现你自己的能力:
- 在对话中: 先执行一次工作流,然后说 “将它保存为名为 battery-triage 的能力” — Claude 会调用
save_agent_capability,之后便可在任何未来会话中重复使用。 - 作为文件: 将包含步骤的 Markdown 文件(如果需要参数化模板,也可以使用 POML 文件 — 房间内的格式示例请参见
bagel_mcp/agent/compose/pipeline.poml)放入~/.bagel/capabilities/。
无论哪种方式,它都会以 user/<name> 的形式显示在 list_agent_capabilities 中,并可通过 run_poml_capability 运行 — 无论是在 Claude Code、Claude Desktop 还是任何 MCP 客户端中。团队使用时:将该目录保存在自己的 git 仓库中,并同步到每台机器人;它只是一些文件。在 Linux 上,请在启动容器前运行一次 mkdir -p ~/.bagel/capabilities,这样挂载目录便归你所有,而不是 root。
📚 指南
- 自然语言流水线 · 模型:一种节奏、关卡和任务;预览 → 运行 → 保存 → 批处理 → 在边缘持续运行
- 事件驱动的数据精简 · 检测事件,保留事件前后的窗口(片段或一个精简包),跨设备群组批处理,然后上传到云端
- 使用 Jev 进行异常检测 (测试版) · 在机器人上学习正常状态,让 Jev 标记异常内容,并仅上传带有 JSON 标签的相应片段;
preview_anomalies会先试运行筛选 - 通过 rosbridge 连接实时 ROS2 机器人 · 分步教程
- ROS 文本日志 · 检查
~/.ros/log中的错误和警告,无需打开 bag - MQTT · 实时 IoT 主题、Sparkplug B、边缘录制
- PostgreSQL / TimescaleDB · 每张表都是一个主题
- InfluxDB 3 · 每个测量项都是一个主题
- 汽车 MDF4 与 CAN (测试版) · 通道组和 DBC 消息都是主题;单位也会一并保留
- 本地大模型 · 使用 Ollama 完全离线运行:你的数据和模型永远不会离开本机
📦 集成
- Rerun · “在 Rerun 中显示该事件”:将任意时间窗口转换为可直接打开的录制文件
- Lichtblick / Foxglove · 将事件窗口转换为 MCAP,并为任一查看器预先配置布局
- PlotJuggler · 直接打开 Bagel 的 MCAP 输出;提供一句话即可生成预先配置的会话,并导出扁平化的 CSV/Parquet 文件
- Cloudini · 解码经过 cloudini 压缩的点云,或将 bag 中的 PointCloud2 主题压缩为 CompressedPointCloud2
- Slack · 流水线触发时会向你的运维频道发送消息:“🚨 {asset} 急刹车”
- LeRobot (测试版) · 将检测到的事件转换为训练回合:LeRobotDataset v3.0
🚧 限制
我们已知的一些不足,提前告知,免得你亲自踩坑:
- 两种格式仍处于 beta 阶段。 汽车领域的 MDF4/CAN 读取器已使用生成这些文件的同一批库(
asammdf、python-can)进行验证;真实的 CANape/INCA/Vector 生成的记录尚未经过我们的测试。 LeRobot 导出文件已使用真实的lerobot软件包通过加载测试,但尚未使用 Bagel 导出文件训练过策略。 - Jev 集成处于 beta 阶段;在我们从真实部署中积累经验之前,它会一直保持 beta。 这包括
anomaly和decide门控(记录日志和实时订阅)、preview_anomalies、机器人端的local后端以及ros2-jazzy-jev镜像。其 Jev 后端已在真实行驶过程中,通过 Vercel AI Gateway 对接实时 Jev 运行,也已针对合成故障日志和实时 MQTT 流运行;尚未测试直接使用 TypeSafe 密钥的情况,也尚未在包含已知事件的日志上评估检测质量。对于实时订阅,带标记的时间窗口会保存为 Parquet(write_topics_to_file);MCAP/rosbag 片段需要使用记录日志,因此在此场景下会被拒绝。基线按每次运行学习,并会随进程重启,因此在屏幕模式下,每次运行开始后的几分钟内都不会标记异常。标签、设置和默认值可能会在不同版本间发生变化。 - 数据缩减比例取决于工作负载,且尚未经过基准测试。 比例为事件时间窗口时长除以总时长:安静的记录会大幅缩减,事件较多的记录缩减幅度则小得多。本 README 中的数值是演示输出示例,并非实测基准数据。
- MCP 端点没有身份验证。 按设计,它只绑定到 localhost;请像对待数据库套接字一样谨慎处理,并在将其共享到本机之外之前查看 SECURITY.md。
- 小型本地模型难以应对多步骤管道。 4-8B 模型可以处理工具选择和简单 SQL;事件时间窗口缩减和多主题联接则需要更大的模型。请参阅本地 LLM 指南。
- 实时数据库端到端测试在 CI 之外运行。 InfluxDB 和 Postgres 测试套件中的纯测试会在 CI 中运行;其实时端到端测试仅会针对你指定的实例执行。其他所有测试(包括 ROS 包写入路径)都会在 CI 中运行。
🫶 参与贡献
欢迎你来帮忙!支持本项目最简单的方式是在 GitHub 上点个 ⭐。
其他很棒的贡献方式:
- 请求新功能
- 报告错误
- 改进文档
- 添加新能力
贡献之前,请先查看指南。
欢迎加入我们的 Discord 服务器参与讨论。 我们经常在那里交流。
📄 许可证
Bagel 是基于 Apache License 2.0 开源的。
Agent 发现与可复现工作流
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。