【免费下载链接】mirobody
Turn scattered health data into answers you can trace. Self-hosted AI health data engine for lab reports, wearables and genetics, with a built-in MCP server. Run it with Docker and one LLM key, or keep every model local on llama.cpp.
Mirobody 是一款自托管的 AI 健康数据引擎,能把化验单、可穿戴设备和基因数据汇成一份可追溯的标准化医学记录。它的 AI 健康日记让你用一句话输入"昨晚头疼,血压150/95,没发烧",症状自动获得 ICPC-3 编码、数值获得 LOINC 编码,而"没发烧"永远不会被记成发烧。本文带你拆解 Mirobody 健康日记的工作原理,并用几分钟跑起来。
Mirobody AI健康日记能做什么:一句话记录症状、数值和用药
打开 Mirobody 的「数据 › 记录」页,输入框只有一句话的提示:写什么都行,比如"我头疼,血压150/95,每天早晚吃二甲双胍500mg,午饭吃了面"。提交后,系统把这句话拆成若干条目,各自落入对应的记录:
| 你写的 | 变成了什么 |
|---|---|
| 头疼 | 一条症状记录,编码NS01(ICPC-3) |
| 血压150/95 | 两条读数:收缩压 150(LOINC8480-6)、舒张压 95(LOINC8462-4) |
| 每天早晚吃二甲双胍500mg | 用药清单里的一条用药计划 |
| 午饭吃了面 | 一条备注,按原话保存,不做编码 |
注意一个细节:150/95 没有被当成一个"血压值"存进去,而是拆成两条独立读数。这样日记里的血压和手表、化验单里的血压天然就是同一个序列,可以直接画趋势线。拆句与写入逻辑见 mirobody/collect/sentence.py,日记 API 定义在 mirobody/server/routers/journal_router.py(POST /api/v1/journal/sentence)。
工作原理:模型只管拆句,编码交给离线词表
Mirobody 日记最核心的设计是职责分离:
- 模型只拆句、分类。语言模型把句子拆成"症状 / 数值 / 用药 / 其他"几类,保留你原话的原词——它从头到尾不被要求给出任何编码。
- 编码由词表离线完成。每条记录在写入时,对着随包发布的标准词表做查找:
- ICPC-3:1,218 个症状与诊断代码,中文表述通过自带的映射表(mirobody/res/icpc3/symptoms_zh.tsv、conditions_zh.tsv)命中,如
头疼 → NS01、高血压 → KD73; - LOINC 2.83:63,416 个检验指标代码,支持中、英、繁、日、俄等多语言别名,如
血红蛋白 → 718-7; - UCUM:330 个标准单位,统一量纲。
- ICPC-3:1,218 个症状与诊断代码,中文表述通过自带的映射表(mirobody/res/icpc3/symptoms_zh.tsv、conditions_zh.tsv)命中,如
- 查不到就弃答,不猜。这是一个纯词表层面的保证,和用哪家模型无关。例如"血脂"是一个类别而不是某一项检验,词表对它返回"无法解析",而不是硬凑一个相近代码。
词表解析完全离线、结果确定,不依赖任何模型:
更深入的词表构成与覆盖率数据,见 docs/standardization.zh-CN.md。
"绝不臆断病情"背后的五道防线
"AI 编造病情"是健康类应用最让人担心的问题。Mirobody 在拆句到写入的每一步都做了防臆断设计,且每一条被跳过的部分都会带着原因返回给你看,而不是悄悄丢弃:
- ① 否定不记录。"没发烧"会被标记为否定断言,明确不写进症状记录——它不会变成一条"发烧"。
- ② 猜测不记录。"怕是感冒了"这类假设、疑问("要不要吃点布洛芬?")只被识别、被跳过,不会进入档案。
- ③ 别人的事不记录。"我妈高血压"被判定为关于他人,不会写进你的档案;如果是为家人代记(如关爱圈里代爸妈记录),"我爸咳嗽"里的"我"指的就是档案主人本人。
- ④ 引用必须真实存在。模型输出的每一部分都必须逐字引用原句中的一段;引用在句子里找不到,说明是模型编的,直接丢弃。
- ⑤ 时间不可穿越。句子里解析出的时间("昨晚")必须能解析且不指向未来,否则回退到默认时间,避免小模型张冠李戴。
加上"查不到就弃答"的词表纪律,整条链上没有任何一个环节会给模型"编一个答案"的机会。
日记、化验单和手表如何变成同一份记录
健康日记的价值不在单条记录,而在它和其余数据共用同一套编码。上传一张化验单照片(如 demo/upload/mom_physical_2026-06.jpg 这样的手机拍纸单),或接入 Garmin、Oura、Whoop、Apple Health,读数进入档案后都带 LOINC 代码。
于是"日记里手敲的血压8480-6"和"手表测的血压8480-6"自动落在同一条序列上;不同化验所对同一指标的不同写法(Total Cholesterol-TC与Cholesterol, Total)也归并成同一代码。之后你向 agent 提问,它跨文件作答,每个数字都能点开追溯来源:
完整的"上传文件 → 编码 → 提问 → 记日记"四分钟演示,见 docs/walkthrough.zh-CN.md。
Docker 一键部署 Mirobody 健康日记
跑起来只需 Docker 和一把模型 Key:
git clone --depth 1 https://gitcode.com/gh_mirrors/mi/mirobody && cd mirobody ./deploy.sh脚本会启动 Postgres、服务器、worker 和演示数据,打开页面粘贴一把 OpenRouter、OpenAI、Gemini、DeepSeek 或任意 OpenAI 兼容网关的 Key 即可。用you@mirobody.ai、验证码111111登录,到「数据 › 记录」页写下第一句话。演示数据的每份文件都有说明:demo/README.md。
不想用云端模型?加一个环境变量即可让所有模型跑在本机(llama.cpp CPU 镜像,无需 Key):
COMPOSE_PROFILES=local-cpu ./deploy.sh预留 16 GB 内存即可,模型选择与 Mac/Windows 配置详见 docs/local-models.zh-CN.md。
小结
Mirobody 的 AI 健康日记用一句话把"模型会编"的风险挡在门外:模型只拆句,编码靠词表,查不到就弃答,否定和猜测一律不记录——一句话输入,得到的是一份带 ICPC-3 / LOINC 编码、可与化验单和手表数据互通、且每条都能溯源的标准化医学记录。
【免费下载链接】mirobody
Turn scattered health data into answers you can trace. Self-hosted AI health data engine for lab reports, wearables and genetics, with a built-in MCP server. Run it with Docker and one LLM key, or keep every model local on llama.cpp.
相关推荐
Automatisch健康数据集成:医疗记录与健康监测自动化
Automatisch健康数据集成:医疗记录与健康监测自动化 痛点:医疗健康数据孤岛与手动处理困境 在当今数字化医疗时代,医疗机构、健身应用、可穿戴设备和患者数
工作流自动化后端前端低代码任务调度IoTSharp可视化界面开发:基于Vue3的物联网管理后台搭建教程
IoTSharp可视化界面开发:基于Vue3的物联网管理后台搭建教程 IoTSharp是一款开源物联网平台,专注于数据收集、处理、可视化和设备管理。本教程将带你
物联网后端数字孪生终极指南:无需.proto文件!3步解码Protobuf二进制数据 🚀
终极指南:无需.proto文件!3步解码Protobuf二进制数据 🚀 在当今数据驱动的世界中,Protocol Buffers(protobuf)作为高效的
标准库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考