# Health-Agent：基于三层 Pipeline 的个人健康管理 AI 助手

> Health-Agent 是一个开源的个人健康管理 AI Agent，采用 Triage/Agent Graph/Critic 三层架构，支持语义记忆检索、医学知识库 RAG、联网搜索溯源、结构化问诊流程、健康预警广播和 PDF 健康报告导出。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-25T13:45:27.000Z
- 最近活动: 2026-04-25T13:51:41.776Z
- 热度: 118.9
- 关键词: Health-Agent, AI Agent, health management, personal health, LangGraph, Mem0, RAG, medical AI, symptom tracking, health report
- 页面链接: https://www.zingnex.cn/forum/thread/health-agent-pipeline-ai
- Canonical: https://www.zingnex.cn/forum/thread/health-agent-pipeline-ai
- Markdown 来源: ingested_event

---

## 背景：个人健康管理的数字化困境\n\n在数字化时代，我们的健康信息却呈现出 paradoxical 的状态——一方面，智能手表、健康 App、体检报告产生了海量数据；另一方面，这些信息往往分散在不同平台，难以形成系统性的健康档案。当我们需要就医时，常常记不清上次症状的具体时间、用药历史，更难以发现长期的健康规律。\n\nHealth-Agent 正是为了解决这一问题而设计的。它不仅仅是一个聊天机器人，而是一个完整的个人健康管理系统，通过 AI Agent 技术将健康记录、症状追踪、医学知识查询和预警提醒整合在一个统一的对话界面中。\n\n## 项目架构：三层 Pipeline 设计\n\nHealth-Agent 的核心创新在于其分层处理架构。每条用户消息都会经过严格的三层流水线处理，确保安全性、准确性和合规性：\n\n### L1：Triage Gate（分诊层）\n\n这是整个 Pipeline 的第一道防线。使用 Claude Haiku 4.5 模型进行快速判定（平均响应时间 < 500ms），专门识别紧急医疗情况。当用户描述胸痛、骤停、重度出血等危重症状时，系统会立即短路返回，提示用户拨打 120 急救电话，而不会进入后续的 AI 分析流程。\n\n这种设计体现了医疗 AI 系统最重要的原则——安全优先。在测试中，Triage 层的准确率达到 96.7%（30 条测试用例），能够有效识别绝大多数紧急情况。\n\n### L2：Main Agent Graph（主 Agent 层）\n\n通过分诊层后，消息进入由 Claude Sonnet 4.6 驱动的主 Agent 处理流程。这是一个单节点的 LangGraph 架构，工具循环在节点内部管理（最多 5 轮），决策权始终在同一模型，避免了多节点状态序列化的性能开销。\n\n主 Agent 可以按需调用多种工具：\n\n- **search_memory**：通过 Mem0 检索用户的历史健康记录，实现症状关联和趋势分析\n- **search_rag**：从 Qdrant 医学知识库检索药物说明、疾病描述、临床指南\n- **web_search**：通过 Brave Search API 获取最新医学资讯，回复末尾自动追加可点击的参考来源\n- **generate_report**：生成结构化健康报告\n\n### L3：Critic Review（质检层）\n\n最后一道关卡是合规质检。Critic Agent 使用 Haiku 模型审查每条回复，防止出现明确诊断、不当用药建议等违规输出。如果检测到问题，会追加补充说明并将案例记入 `critic_failures.jsonl`，形成负样本用于后续的自学习优化。\n\n实测显示，Critic 层的拦截准确率达到 100%（13 条测试用例，7 违规 + 6 合规），无漏拦或误拦情况。\n\n## 核心技术特性\n\n### 语义记忆与向量检索\n\nHealth-Agent 使用 Mem0 作为向量记忆层，支持语义搜索和自动去重。当用户描述症状时，系统会自动关联历史记录，主动提示相关信息。例如，当用户提到「最近又头痛了」，Agent 会检索并提示「您上次记录头痛是在两周前，当时伴随的症状是...」。\n\n为了优化性能，系统还实现了记忆预热机制——后端启动和前端页面加载时双重触发 Mem0 检索，结果写入 Redis prefetch 缓存，消除冷启动延迟。\n\n### 医学知识库 RAG\n\n系统内置了基于 Qdrant 的医学知识库，使用 BGE-M3 模型同时生成 dense 向量和 sparse 词袋，通过 Qdrant 原生的 RRF（Reciprocal Rank Fusion）融合两路召回结果。这种双路融合策略比单路检索具有更高的准确率，确保检索到的医学知识既相关又全面。\n\n### 联网搜索与来源溯源\n\n对于新药信息、最新研究等时效性强的内容，系统会强制走联网搜索通道。Brave Search API 的返回结果会在回复末尾以可点击链接的形式呈现，确保信息的可追溯性。这种设计解决了大模型「幻觉」问题，让用户可以验证 AI 提供的信息来源。\n\n### Token 级流式输出\n\n使用 LangGraph 的 `astream_events(version="v2")` 捕获 `on_chat_model_stream` 事件，实现真正的 token 级流式输出。用户无需等待完整回复生成，字符会逐个实时显示，提供接近真人的对话体验。\n\n### 健康预警广播系统\n\n这是一个独立运行的后台模块。APScheduler 每 6 小时执行一次 `alert_monitor.py`，抓取药品召回、疫情预警、健康风险提示等信息。通过关键词匹配用户的 Mem0 档案，相关预警会通过 Redis Pub/Sub + SSE 实时推送到用户界面，并使用 7 天哈希去重机制避免重复打扰。\n\n## 实际使用场景\n\nHealth-Agent 支持多种交互模式，适应不同的使用场景：\n\n### 症状记录与关联\n\n用户可以直接用自然语言描述症状，Agent 会自动提取关键信息并记录。更重要的是，它会主动关联历史记录，帮助用户发现潜在的健康模式。例如，系统可能会提示：「您在过去三个月中记录了 5 次类似症状，都发生在工作压力大的时候。」\n\n### 结构化问诊模式\n\n发送 `/consult` 命令可以启动结构化问诊流程。Agent 会逐步收集完整的症状信息（发病时间、持续时间、伴随症状、既往病史等），然后交由主 Agent 进行综合分析。这种模式特别适合在就医前整理症状描述，提高与医生沟通的效率。\n\n### 个性化健康建议\n\n发送 `/recommend` 命令，系统会基于用户的历史健康记录生成个性化的作息、饮食、运动和就医建议。这些建议不是通用的健康提示，而是真正基于用户个人数据定制的。\n\n### 健康报告导出\n\n用户可以一键生成结构化的 PDF 健康报告。系统使用 Playwright（headless Chromium）进行渲染，完整支持中文，报告包含症状历史、用药记录、健康趋势分析和建议。这在转诊、保险理赔或长期健康管理中非常实用。\n\n## 技术栈与部署\n\nHealth-Agent 采用了现代化的全栈技术方案：\n\n| 层级 | 技术选型 |\n|------|----------|\n| Agent 框架 | LangGraph（单节点 Orchestrator + 工具循环）|\n| 大语言模型 | Claude Sonnet 4.6（主 Agent）/ Claude Haiku 4.5（Triage、Critic）|\n| 向量记忆 | Mem0（语义搜索 + 去重）|\n| 医学知识库 | Qdrant + BGE-M3（dense + sparse 双路 RRF 融合）|\n| 联网搜索 | Brave Search API |\n| 后端框架 | FastAPI + APScheduler |\n| 前端框架 | Next.js 14 + Tailwind CSS |\n| 会话缓存 | Redis（会话历史 / 记忆预热 / 健康预警 Pub/Sub）|\n| PDF 渲染 | Playwright（headless Chromium）|\n| 容器编排 | Docker Compose |\n\n项目提供了完整的 Docker Compose 配置，只需几条命令即可完成部署：\n\n```bash\ngit clone https://github.com/Jennifer-00/health-agent.git\ncd health-agent\ncp .env.example .env\n# 编辑 .env 填入 API Key\ndocker compose up -d\n```\n\n## 性能实测数据\n\n根据 `measure.py` 及 `logs/agent_trace.jsonl` 的实测结果（本地环境）：\n\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| Triage 准确率 | 96.7%（29/30） | 30 条测试用例 |\n| Triage 延迟 avg / p95 | 1470ms / 2533ms | Haiku 快速判定 |\n| Critic 拦截准确率 | 100%（13/13） | 无漏拦/误拦 |\n| Critic 延迟 avg / p95 | 1487ms / 2638ms | 串行追加在主链路后 |\n| 端到端延迟（预热后） | 9.6s – 14.5s | n=3 |\n\n这些数据表明，三层 Pipeline 的设计在确保安全性的同时，保持了可接受的响应延迟。\n\n## 设计亮点与优化细节\n\nHealth-Agent 在工程实现上有几个值得注意的设计选择：\n\n**来源链接确定性追加**：web_search 结果的 URL 在工具循环内用正则提取，存入 AgentState.web_sources，在 Critic Review 之前以 SSE delta 推送给前端。这种设计不依赖 LLM 自行引用来源，确保了溯源的可靠性。\n\n**Critic 自学习闭环**：违规案例持久化为 JSONL 格式，下次对话启动时自动读取最近 3 条注入 system prompt 作为负样本反例，让主 Agent 主动规避同类错误。\n\n**XML 结构化 Prompt**：System prompt 采用 XML 标签划分角色、工具、触发条件与禁止行为，利用 Claude 对 XML 的边界感知提升指令遵循准确性。\n\n**Prompt Cache**：system prompt 使用 Anthropic 的 `cache_control: ephemeral`，在重复对话中减少 token 消耗。\n\n## 总结与展望\n\nHealth-Agent 展示了 AI Agent 在个人健康管理领域的巨大潜力。它不仅仅是一个问答工具，而是一个具备记忆、推理、检索、预警能力的完整系统。通过三层 Pipeline 的架构设计，它在安全性、准确性和用户体验之间取得了良好的平衡。\n\n对于关注健康科技、AI 医疗应用的开发者和研究者来说，Health-Agent 提供了一个优秀的参考实现。它的模块化设计也意味着可以方便地替换组件（如使用其他 LLM 提供商、接入不同的医学知识库），适应不同的部署场景。\n\n项目采用 MIT 许可证开源，社区欢迎贡献新功能，如检查报告图片 OCR 解析、多用户隔离的 RAG 知识库、健康预警前端弹窗 UI 等。
