config.yml 里填一个 LLM 密钥,然后运行 mirobody 二进制。它在 http://localhost:8080 上提供 HTTP + WebSocket API —— 以及内置的 Web 客户端。
只有一条构建路径:安装原生依赖,运行
./build.sh,再运行产出的 ./mirobody 二进制。前置条件
C++ 工具链
C++11 编译器、CMake 和 Ninja
原生库
libwebsockets、libcurl、OpenSSL 等(下面会装)
Git
用于克隆仓库
从源码构建
安装原生依赖
桌面默认的数据库后端是 PostgreSQL,所以下面这些也会一并装上 Postgres 客户端(在 Windows 上,安装 Visual Studio 并勾选 使用 C++ 的桌面开发 工作负载和 C++ CMake 工具 组件(它自带 Ninja 和一份内置的 vcpkg),然后运行
libpq)。- Linux (Debian/Ubuntu/WSL)
- macOS (Homebrew)
- Fedora / RHEL
build.cmd —— vcpkg 会自动从 vcpkg.json 拉取原生依赖。参见 安装指南。构建
build.sh 用 CMake + Ninja 配置(Release、PostgreSQL 后端)并构建 mirobody 二进制。在 Windows 上运行 build.cmd → build\mirobody.exe。构建成功会产出
build/mirobody。创建你的配置
把提交在仓库里的模板复制成 然后在
config.yml(已被 git 忽略),编辑它:config.yml 里至少设置一个 LLM 密钥:config.yml
键名包含
_KEY、_PASSWORD、_PASS、_PWD、_SECRET、_SK、_TOKEN 的值,会在设置了 CONFIG_ENCRYPTION_KEY 时用它自动加密(Fernet)—— 于是密钥可以加密存放。参见 配置。运行
--config <path> 或环境变量 MIROBODY_CONFIG 覆盖配置路径。Ctrl-C(SIGINT/SIGTERM)会触发优雅关停。服务器在
http://localhost:8080 启动(由 config.yml 里的 HTTP_HOST / HTTP_PORT 决定)。打开 Web 应用并登录
访问 http://localhost:8080。登录页提供邮箱验证码登录;用
EMAIL_PREDEFINE_CODES 里预置的 demo 账号:demo2@mirobody.ai 和 demo3@mirobody.ai 用同一个验证码。登录后即可:- 上传文件 —— 化验单、病历、图像(参见 文件处理)
- 与 Agent 对话 —— 挑一个提供商,提问你的数据
- 关联 Provider —— 接入可穿戴或 EHR(参见 使用 Providers)
Web 客户端是一个静态单页应用,从
htdoc/ 构建到 res/htdoc(即 HTTP_ROOT 指向处),由独立二进制托管。新检出的仓库已包含构建好的资源;要重新构建,运行 cd htdoc && npm install && npm run build。用 Docker 运行
仓库自带一个多阶段Dockerfile,它会编译出二进制并产出一个精简的运行时镜像。
构建镜像
镜像默认链接 PostgreSQL 后端。要构建其他 SQL 后端,传入例如
--build-arg MIROBODY_DATABASE_BACKEND=POSTGRESQL_LEGACY。运行
镜像内部把 容器监听 80 端口;上面的示例把宿主机 80 端口映射到它。然后打开 http://localhost,用上面的 demo 凭据登录。
HTTP_PORT=80 固定好,并把 config.example.yml 烘焙成优先级最低的默认层。把你自己的 config.yml(含 LLM 密钥)挂载到 /app/config.yml:Docker 镜像用的是桌面 PostgreSQL 后端,所以要把挂载的
config.yml 里的 PG_HOST(及其他 PG_* 键)指向一个可达的 Postgres。要一个零依赖的单文件方案,改用 SQLite 后端构建 —— 参见 Docker 部署。验证 API
- 健康检查
- MCP tools/list
- FHIR 能力
ok。各端点
Web 应用
内置 UI:文件上传、对话、Provider
MCP 服务器
给 ChatGPT / Claude / Cursor 用的 JSON-RPC 2.0
Chat API
SSE(
POST)+ WebSocket 实时(GET)FHIR R4
内嵌的 RESTful FHIR 端点
MCP_PUBLIC_URL 为一个公网 HTTPS URL,使 MCP 服务器可在 <MCP_PUBLIC_URL>/mcp 上访问 —— 详见 ChatGPT Apps。
故障排查
构建失败:缺少头文件或库
构建失败:缺少头文件或库
重新执行上面对应平台的依赖安装。在 Ubuntu 上,libwebsockets 包必须够新(≥ 4.1);很老的发行版自带的版本太旧,无法编译 WebSocket 客户端。
8080 端口被占用
8080 端口被占用
修改 然后重启
config.yml 里的 HTTP_PORT:./mirobody。对话无法启动
对话无法启动
没有配置 LLM 密钥,或所选提供商的密钥缺失。在
config.yml 里至少设置 OPENAI_API_KEY / GOOGLE_API_KEY(或 MIROTHINKER_API_KEY)之一并重启。默认提供商回退是 gemini-2.5-flash,所以 GOOGLE_API_KEY 是最省事的第一个密钥。./build.sh 或 ./mirobody 权限被拒
./build.sh 或 ./mirobody 权限被拒
Postgres 连接失败
Postgres 连接失败
桌面构建期望有 PostgreSQL。检查
config.yml 里的 PG_* 键是否指向一个可达的数据库,或用 SQLite 后端重新构建(./build.sh sqlite)得到一个自包含的方案。下一步
配置
config.yml 的每个键:LLM 提供商、数据库、存储、鉴权、健康圈探索 API
chat、data、files 和 MCP 端点
理解架构
五个 C++ 部分以及数据如何流动
接入新 Provider
接入新的可穿戴、手机存储或 EHR
生产部署请参见 生产部署,含安全与后端说明。