一、 技术人的"家庭技术债"
每天在公司面对着千万级的高并发,处理着 PB 级的大数据,但每次过节回老家,带爸妈去趟医院,我却常被医生问得哑口无言:
"降压药是一天吃一次还是两次?每次几毫克?"
"去年体检那个结节多大了?单子带了吗?"
看着爸妈在包里翻找那一堆皱巴巴的化验单和药盒,作为一名技术人,我深感无力------我们能写出极其优雅的代码架构,却连父母最基本的健康数据都处于"裸奔"状态。这就是我们沉重的"家庭技术债"。
市面上的健康 App 很多,但懂点技术的都知道,把全家人的详细病历、体检指标全传到商业公司的云端,无异于将最核心的隐私拱手让人。医疗数据的主权,必须掌握在自己手里。
本来想自己手搓个全栈项目,但下班实在太累。于是我转换了思路,用最轻量级的解法:基于 Local-First(本地优先)理念,用 Obsidian + 大模型 API,零代码搭了一个绝对隐私的家庭健康中台。
二、 先看效果,再谈技术
废话不多说,先看看这套系统跑起来能覆盖哪些核心场景:
场景 1:非结构化单据"秒变"标准数据库
以前要手动录入的化验单、看不懂的复杂药盒,现在直接拍照发给 AI,自动提取核心指标,并按标准 Schema 填入本地 Markdown 表格。
场景 2:基于本地 Markdown 的数据可视化
利用本地插件(不依赖任何后端),直接抓取散落在各个文件 YAML 属性中的数据,渲染出长期的血糖、血压趋势折线图。高危指标自动标红。
场景 3:自动生成的"就医复查备忘录"
下次带长辈去复查前,一键生成《问诊清单》。带什么单据、问医生什么问题、目前在吃什么药,安排得明明白白。进诊室再也不发怵。
三、 极简的"魔法"机制
这套系统的本质,是将大模型作为"无状态的 ETL 数据管道",将本地笔记作为"数据库与展现层"。
你只需要两个组件:
- Obsidian 本地文件库(Vault): 100% 离线,断网可用,所有数据以纯文本(Markdown)形式保存在你的硬盘里。
- 调优好的系统指令(Prompt): 这也是整个系统最核心的壁垒。
很多同学自己用 AI 提取单据时,经常遇到格式错乱、甚至 AI "捏造(幻觉)"医疗数据的情况。为了解决这个问题,我花了几天时间,设计了 8 组高阶 Prompt。
给大家看一段我写的 System Prompt 切片(用于防幻觉和格式约束):
javascript
// Prompt 节选:强制 Schema 与防幻觉约束
你是一个严谨的医疗数据结构化引擎。请按照以下 JSON Schema 输出提取结果,禁止输出任何其他解释性文本:
{
"指标名称": "string",
"检测结果": "number | string",
"参考区间": "string",
"异常状态": "高 | 低 | 正常"
}
⚠️ 绝对红线:
1. 如果图片模糊或某个指标无法看清,对应的字段必须严格输出 `null`。
2. 绝对禁止根据常识推测或捏造任何不存在的数值。
3. 必须保持原有单位,禁止自动换算。
日常使用工作流极度简单:
拍照发给 AI -> 复制 AI 返回的标准格式 -> 贴进本地 Obsidian 模板 -> 自动生成关联与图表。每天维护成本不到 1 分钟。
四、 为什么建议你直接用"现成包"?
作为技术人,我们最讲究的就是"不重复造轮子"。
这套逻辑看似简单,但如果你自己从头搭,你需要:
- 建立一整套科学的本地文件夹层级和索引关系。
- 设计每一类健康数据的 Markdown 字段字典(YAML frontmatter 规范)。
- 学习 Obsidian 插件语法,手写查询代码来生成趋势图。
- 反复调试那 8 个不同场景的 AI Prompt,填平各种幻觉的坑。
这至少需要耗费你一个完整的周末。既然我已经踩完了所有的坑,并且在自己家跑通了,大家完全可以直接拿去用。