跳转到主要内容
Mirobody 是一个 C++11 代码库,用 CMakeNinja 构建(Windows 上加 vcpkg)。在它上面做开发,意味着安装原生工具链、构建 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)

搭建

1

克隆仓库

2

安装原生依赖

vcpkg 仅用于 Windows;Linux 和 macOS 用系统包管理器。
在 Windows 上,安装 Visual Studio(使用 C++ 的桌面开发 + C++ CMake 工具)。vcpkg 会自动从 vcpkg.json 拉取每一个依赖 —— 包括 Catch2。参见 安装指南
3

构建

build.sh 包装脚本会配置(Release、PostgreSQL 后端、测试默认开启)并构建:
用一个 token(sqlitelegacymysqlduckdbck)选择其他 SQL 后端;每个后端有各自的 build[_<backend>] 目录,因此多个可以共存:
或者直接驱动 CMake 以获得更精细的控制(Debug 构建、额外标志):
4

配置并运行

config.yml 里设置一个 LLM 密钥(以及默认后端所需的 PG_* 连接),然后运行:
服务器在 http://localhost:8080 启动。完整键列表见 配置
要一个无需外部数据库的零依赖开发循环,构建 SQLite 后端(./build.sh sqlite)并运行 ./build_sqlite/mirobody

常用 CMake 选项

运行测试

测试是一个 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_chatopenai_responsesopenai_realtimegeminigemini_livemirothinker
  • 存储 —— aws_s3aliyun_ossazure_blob
  • 转码器 —— imagedocumentfile_parser
  • FHIR —— fhir normalize "<5.6 mg/dL",以及 fhir token <user_id> --config <yaml> 为 FHIR 路由铸出一个 bearer JWT
  • 鉴权 —— jwt_keygen(RS256 / JWKS 的 RSA 密钥对)、google_jwtfirebase_jwt
  • 其他 —— mcpagentvendor
各二进制的标志和凭据见仓库中的 cli/README.md

新增一个 Agent 或 MCP 工具

两者都在编译期自注册 —— 没有运行时插件目录:
  • Agent —— 唯一的 agent 是 res/agents/base.cppres/agents/ 下的每个 .cpp 都会被 glob 进构建。
  • MCP 工具 —— 在 res/mcp_tools/ 里丢一个 .cpp,用一行 MIROBODY_REGISTER_TOOL(...) 声明它的参数表,然后重新构建。最小示例见 res/mcp_tools/echo.cpp新增工具

项目结构

完整目录树以及其他构建工件见 安装指南 → 仓库结构

下一步

参与贡献

如何提交变更

测试

编写并运行测试

Provider 集成

接入新的健康数据源

部署

发布你的构建