mirobody 目标、运行 Catch2 测试套件。
前置条件
C++11 工具链
GCC ≥ 4.8.1 / Clang ≥ 3.3 / Apple Clang / MSVC 2017+
CMake + Ninja
CMake 和 Ninja 生成器
原生库
libwebsockets、libcurl、OpenSSL、rapidjson、yaml-cpp、hiredis、图像编解码器
一个数据库客户端
默认 PostgreSQL 后端用 libpq(或 SQLite 客户端)
Git
用于版本控制
Catch2 v3
用于单元测试套件(
find_package(Catch2 3))搭建
安装原生依赖
vcpkg 仅用于 Windows;Linux 和 macOS 用系统包管理器。
- Debian / Ubuntu / WSL
- macOS (Homebrew)
- Fedora / RHEL
在 Windows 上,安装 Visual Studio(使用 C++ 的桌面开发 + C++ CMake 工具)。vcpkg 会自动从
vcpkg.json 拉取每一个依赖 —— 包括 Catch2。参见 安装指南。构建
build.sh 包装脚本会配置(Release、PostgreSQL 后端、测试默认开启)并构建:sqlite、legacy、mysql、duckdb、ck)选择其他 SQL 后端;每个后端有各自的 build[_<backend>] 目录,因此多个可以共存:配置并运行
常用 CMake 选项
| 选项 | 默认 | 用途 |
|---|---|---|
MIROBODY_DATABASE_BACKEND | POSTGRESQL | 链接哪个 SQL 后端(SQLITE、MYSQL、DUCKDB、CLICKHOUSE、POSTGRESQL_LEGACY) |
MIROBODY_BUILD_TESTS | ON | 构建 Catch2 测试套件 |
MIROBODY_BUILD_TOOLS | ON | 构建 cli/ 调试二进制 |
MIROBODY_ENABLE_PDF | OFF | 经 PDFium 的 PDF 文本抽取 |
MIROBODY_ENABLE_OCR | OFF | 经 Tesseract 的 OCR(隐含 PDF) |
MIROBODY_ENABLE_XLS | OFF | 经 libxls 的旧版 .xls |
MIROBODY_BUILD_SHARED / _PYTHON / _JNI | 视情况 | 构建共享库 / Python wheel / JNI shim,替代(或并列于)二进制 |
运行测试
测试是一个 Catch2 可执行文件(mirobody_tests),经 catch_discover_tests 注册到 CTest。
tests/ 下(chat/、fhir/、circle/、jwt/、cache/ 等子目录,外加一个 e2e/ 套件)。
调试 CLI
桌面构建会在cli/ 下产出独立的各子系统 CLI(用 -DMIROBODY_BUILD_TOOLS=OFF 切换),它们绕过 HTTP/WS 服务器 —— 便于单独把玩某一个部分:
- LLM 客户端 ——
openai_chat、openai_responses、openai_realtime、gemini、gemini_live、mirothinker - 存储 ——
aws_s3、aliyun_oss、azure_blob - 转码器 ——
image、document、file_parser - FHIR ——
fhir normalize "<5.6 mg/dL",以及fhir token <user_id> --config <yaml>为 FHIR 路由铸出一个 bearer JWT - 鉴权 ——
jwt_keygen(RS256 / JWKS 的 RSA 密钥对)、google_jwt、firebase_jwt - 其他 ——
mcp、agent、vendor
cli/README.md。
新增一个 Agent 或 MCP 工具
两者都在编译期自注册 —— 没有运行时插件目录:- Agent —— 唯一的 agent 是
res/agents/base.cpp。res/agents/下的每个.cpp都会被 glob 进构建。 - MCP 工具 —— 在
res/mcp_tools/里丢一个.cpp,用一行MIROBODY_REGISTER_TOOL(...)声明它的参数表,然后重新构建。最小示例见res/mcp_tools/echo.cpp和 新增工具。
项目结构
下一步
参与贡献
如何提交变更
测试
编写并运行测试
Provider 集成
接入新的健康数据源
部署
发布你的构建