# Health Vault

> Use when 归档体检/化验单/就医记录/处方进 Obsidian 病历管理库(电子病历库).

- Skill: `lumin278/health-vault` (Agent Skill, multi-file: 14 files)
- Install (CLI): `npx skillmds@latest add lumin278/health-vault`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lumin278/health-vault/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: Lumin278 (https://skillmd.com/u/lumin278)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/lumin278/health-vault

---


# Health Vault（个人／家庭健康档案归档）

把体检报告、化验单、处方、就医记录的照片/文字，归档进 Obsidian 健康库：**检查报告（汇总页 + 单报告页 + 原图）+ 就医记录 + 指标表 + 用药流水**。只做整理与引用。

**先读 vault 里的 `AGENTS.md`——它的规矩优先于本技能**（用户在仓库里维护的那份是权威口径）。

## 硬边界（永不违反）

- ❌ **不诊断**：不做诊断推理、鉴别诊断、可能性排序、漏诊评估。医生写的是「记录」，没写的**不许推断**。
- ❌ **不给用药建议**：不推荐、不调整、不替换、不停药。
- ❌ **不判断紧急度**：出现胸痛、呼吸困难、大出血、意识丧失、自杀念头、突发严重神经症状等描述时，**先让用户就医/呼叫急救**，再继续归档。
- ❌ **不补造数据**：缺失标 `[信息缺失]`；推断的标 `[推断]` 并说明依据；数值拿不准标 `[待核对]` 并留空。
- ✅ 保留不确定性；结尾提醒：档案是整理，请与医生确认。
- ✅ **备注只写事实与口径，不写“给未来 agent 的提醒”**（如“别删它”“故意留着”“此处不可动”）—— 用户明确反对：那是污染。要一句就够的话就只写那一句。

## 六条交互规矩（用户明确要求）

1. **分不清就问**：单据类型 / 患者是谁 / 机构日期 / 项目名不在词表 / 是否同一次活动 → 一律先问用户，绝不猜、不编。
2. **命名统一走词表**：项目名只能取自 vault 里的 `8-知识库/项目名规范.md`；遇到新项目先问用户，再补进词表（连同别名）。禁止同义异写（心电图 ≠ ECG ≠ 心电检查）。
3. **多份单据先问归属（跨天必问住院）**：一次归档涉及多天 / 多份单据，**先问归属再归类，绝不自行合并或拆分**。
   - **任意跨天** → 问「这几天是不是住院 / 是不是同一次安排」。
   - **一批单据的日期落在 7 天以内**（含同一天多张）→ 问「这是不是同一次看病开的检查合集」。
   - **确认同一次 → 合并为 1 个检查活动目录 + 总表 1 行**：目录名与汇总页 frontmatter `日期` 取**其中最早那天的检查日期**，`结束日期` 填最晚那天；总表只加一行（两边同名互链）；就诊日期与最早检查日不同 → 问用户以哪个为准。
   - **各单据自己的日期照抄、不随活动日期改写**：单报告页 `日期` / 原图文件名 / `指标总表.csv` 的 `日期` 都用**这张单子自己的日期**（统一改写会毁掉「近 N 次血常规」的时间线）。
   - **确认不是同一次 → 各成一个活动目录**；**超过 7 天默认不合并**（除非用户说是同一次安排 / 住院）。
4. **规矩写在 vault 里，不写进 agent 记忆**（记忆会被压缩磨损）：约定、词表、口径的变更都改 vault 的 `AGENTS.md` 或 `8-知识库/`。
5. **冲突必问**：同一件事在两处对不上（既往史与报告不符、日期/剂量两说、同一检查两次描述不同）→ **不自行取舍、不静默覆盖**，把两处原文并排列出，问用户「**按哪个？改还是不改？**」；用户定了再动，且**两处都要落到一致**（只改一处 = 待核对）。用户说“重复了、以某处为准”时，另一处留**链接 + 一句指针**，不删原文。
   - **不适用于 `1-基本信息/`** —— 那是基准线，见下一条。
6. **`1-基本信息/` 是基准线：默认只读、不主动问**：
   - **不主动改**：除本人**主动要求**增 / 改 / 删，本页**一个字都不动**；别处新到的数据**不回流**到这里。
   - **不主动问**：新数据与本页不一致（例：体重、既往史年份）→ **不问“改不改 / 按哪个 / 要不要同步”**，把新数据照常记到它该去的地方（报告页 / 指标 / 体重管理 / 就医记录）。
   - **他主动问起时才并列**：把两处并排列出 + 各自出处，**不判读、不替他取舍、不追问**。
   - **理由**：数字每次总有细微差别，每次追问“改不改”效率太低 —— 本页是**基准线**；差异不是冲突，是不同时间的两次记录。

## 重复来源：手机端 App 截图 vs 纸质报告

同一份报告可能从两条路进来：纸质版（扫描/拍照）和医院 App／公众号的手机截图。**先比对再动手**：把截图里的异常项和关键数值与已有活动逐项对（异常项组合、关键数值、「阴性」类定性结论能一眼认出来）——对得上就是同一份，**问用户确认后不新建活动、不重复进指标表**（截图可作补充原图，命名约定由用户定）；对不上才按新活动走。

- **App 截图的「异常」列照抄**：有些医院 App 单据用 `H`（偏高）/ `M`（仪器正常标记）代替 ↑/↓ → 报告页与总表**照抄原标记**，并在一处说明「H/M 为该院仪器标记，本档不做判定」；写进指标总表时 `H` → 「异常」列填 `H`，`M` → 留空。App 单据的项目名（白细胞计数(WBC)、血红蛋白量(HGB)、红细胞比积(HCT)、RDW-SD…）要落到词表标准名，写在 `报告页` 的「单据」块里。
- **App 截图右下角常有「转发截图」浮层**：会压住最后 1–2 行的单位与参考范围 → 先放大确认，仍读不全就记 `[待核对]` 并注明「截图上被浮层遮挡」（可附同院同类单据的写法供参考）。
- **App 上的「发布时间」= 结果推到手机的时间，不是检查日期**（例：某次 11-30 的体检，胸片 12-09 发布、总检 12-29）→ 不能拿来当活动日期。
- 同一份报告两个来源的文字可能不同（纸质版「无 / 阴性」 vs App 版「未检出」）→ 按"冲突必问"交给用户定，不自行取舍。
- 用户说"既然都有了，就不录入了"时就**一行都不写**（不建活动、不建报告页、不动指标表、不 commit），只在回复里说明已比对过。

## 单据未载明的后续结果（如「14 天后取报告」）

单据栏位空白、结果要之后才取回的情况（培养 / 细菌鉴定 / 补发报告等）：

- **报告页照抄单据**：栏位是空白就写空白，参考值栏印什么抄什么——不把后续结果填进单据的栏位里。
- **另一行记后续结果**，出处写明「本人述（日期）」；取回日期按单据印的期限推算并标 `[推断]`（如单据印「14 天后取」→ 约 14 天后，本人未记确切日期）。
- 这种情况**不新建检查活动**：同一张单据的结果返回，不是新一次检查；跨天也不触发「7 天合并」那一条。
- **处方出处也要回填**：本人述「医生开的药」若能在后来的单据里找到更早的医嘱日，按冲突必问确认后，把用药流水那一行的「处方出处＝某日某机构」补上（实际开始服用日另记），不要改写剂量。

## 读图：机器印的小字表格（听阈 / 声反射 / 检验细项）

- 列多、字号极小的打印表，直接照抄容易**错列**。**先用可交叉验证的量反推**：例纯音听力检查表头的 AC/BC PTA 是 500 / 1k / 2k / 4k 的平均值 → 用它验证数字到底落在哪一列；对得上再照录，对不上就标 `[待核对]` 并留空，**别猜**。
- 逐格小字（如声导抗声反射阈值的 0.00–0.03 ml）宁可只记「该格有数值 + 数值区间」并指向原图，**不把可能读错的具体数字写进档案** —— 错的数字比缺的数字更糟。
- 单据上手写批注（耳鸣频率 / 响度、医生补充）**逐字回读给用户确认后再落笔**，并在报告页注明「本人 <日期> 确认」。

## 边界：只在库内工作（用户明确要求）

- **先看会话的工作目录（cwd）**：
  - cwd 在库根目录（及其子目录）内 → **直接干**，不用问。
  - cwd **不在库内**（外部项目 / 任意目录）→ **先问用户**：“要把这个记进病历库吗？” 得到确认后再写。
- **用户确认后，仍然按本技能的完整流程与库内规矩办**（不要因为不在库内就简化：9 步流程、受控词表、只增不改、原图复制、commit 一个都不能省）。
- **绝不主动写**：只有用户明确要求归档 / 记录时才动笔；闲聊、提问、查资料不写库。
- 库内会话的权威口径是库根 `AGENTS.md`（优先级高于本技能）；库外会话只能依据本技能。

## vault 位置

默认 vault：`〈库根目录〉`。**当前成员：张三**（成员目录 `〈库根目录〉/张三/`，归档直接写这个目录下）。结构是**库 → 人 → 档案**：库根只放 `AGENTS.md`、`README.md`、`8-知识库/`（共享规范与药品索引）、`9-模板/`；每个成员一个目录（以人名命名），里面才是 `1-基本信息/`…`8-体重管理/`（**顺号，不跳号**；注意成员级 `8-体重管理/` 与库根 `8-知识库/` 同号但不同层）。新增成员时**不要**在成员目录里复制 `8-知识库/` 与 `9-模板/`。若 `$OBSIDIAN_VAULT_PATH` 有值，以它为准。
**`1-基本信息/` = 基准线（默认只读）**：除本人主动要求，**不改、不主动问、不回流新数据**（细则见交互规矩 6）。

```
电子病历库/                    ← 库根（Obsidian 打开这一层）：AGENTS.md / 8-知识库/ / 9-模板/
└── 张三/                      ← 当前成员（新增成员 = 并列一个同名目录）
    ├── 1-基本信息/       姓名、过敏史、慢病、紧急联系人（**用药不在此**，见 6-用药/）
    ├── 2-检查报告/       YYYY-MM-DD-机构-活动/  ← 一次检查活动一个目录（汇总页 + 报告/ + attachments/）
    ├── 3-不适记录/       不适记录.md ← 自述不适的纯记录（没看病也记）：日期 / 感受 / 怎么处理 / 持续多久
    ├── 4-就医记录/       就医记录总表.md（唯一手写源）+ 年子表 ← 一行一次医疗接触（含 自查）；行内含「用药/治疗」快照
    ├── 5-指标/           指标总表.csv（跨来源数值长表）
    ├── 6-用药/           用药流水.md（顶部「当前在服」表 + 按药分节时间线：长期 / 医嘱 / 自用）
    ├── 7-视图/           给医生看的三件套：主档案 / 用药记录 / 化验指标追踪
    ├── 8-体重管理/       体重管理总表.csv（**自己测的**体重/体成分长表：一次测量=一组行；**不进 5-指标**、**不留原图**）
    └── attachments/      待归类原图（暂存，不编号）
```

## 核心模型：就医记录（上位）↔ 检查报告（下位）

- **就医记录** = 一次医疗接触，**表格里的一行**：日期、机构/医生、类型、科室、症状/主诉、判断/结论、医嘱、下次复查、检查报告、ID；`类型` = 体检/就诊/住院/复查/**自查**。总表是唯一手写源，年子表由总表派生。含「用药」/「治疗」列（本次开药与处置的快照，**与用药流水有意交叉**）。
- **检查报告** = 一次检查活动，一个目录：`汇总页.md` + `报告/<标准名>-YYYY-MM-DD.md` + `attachments/`。
- **一次体检 = 1 行就医记录 + 1 个检查活动目录**（两边同名互链；表格行挂不了块 ID，靠 `ID` 列 ↔ 活动页 frontmatter `就医ID` 配对）。
- **同一次看病的多份检查（日期在 7 天内）= 仍是 1 行 + 1 个活动目录**：活动日期取**最早那天**（`结束日期` 记最晚那天）；单报告页 / 原图 / 指标行仍用各自单据的日期。
- **没有报告的就医**（打针/输液/口头医嘱）→ 只有总表里那一行。
- **自查**（没看医生）→ `类型: 自查`，「判断」写 `自主判断：xxx`，医嘱与检查报告留空；用药照记到 `用药流水.md`。
- **为什么汇总页与单报告页并存**：汇总页给人回看；单报告页给检索聚合（“近 10 次血常规”），且是**图像型/描述型报告（心电图、CT、超声、内镜）的唯一载体**——它们进不了数值表。

## 归档流程（9 步）

> **开工前先 `git status`**：工作区应干净。若某文件近期被**其他会话**改过（工具会提示 sibling 改动），**先 `read_file` 读最新内容 + `git diff HEAD` 比对**，再用定点 `patch` 改；**绝不整篇重写别人刚改过的文件** —— 并发会话会把未提交的改动冲掉。

> **另一条入口：只汇报不适（没看病）** → 追加 `<成员>/3-不适记录/不适记录.md` 一行（**照原话**；只有四列：日期 / 不适的感受 / 我怎么处理的 / 持续多久）；若同时自己吃了药 → 按 6b 记 `用药流水.md`。**不建检查活动、不加就医记录行**。与「自查」的区别：自查 = 自己判断+自己吃药处理了（算一次医疗接触），不适记录 = 只是有感受。

> **再一条入口：体重管理记录（体脂秤 / 身体成分截图）** → 追加 `<成员>/8-体重管理/体重管理总表.csv` 一组行（一次测量 = 一组），**只提取文字、不留原图**。**不建检查活动、不加就医记录、不进指标总表**。

1. 读图 → 确认 **类型 / 机构 / 日期 / 患者 / 项目名**（任一项不确定 → 问用户）
2. 多天 / 多份单据（日期落在 7 天内）→ **先问归属**：是不是住院、是不是同一次安排、是不是同一次看病的检查合集。确认同一次 → **合并为一个检查活动**，**活动日期（目录名 + 汇总页「日期」）取最早那天**，`结束日期` 填最晚那天；确认不是 → 各成一个活动
3. 在 **`4-就医记录/就医记录总表.md`** 加一行（填 `ID`），并按年**重生成该年份子表**
4. 建或更新**检查活动目录**（`2-检查报告/`）：汇总页 + `报告/` + `attachments/`
5. **复制原图**进该活动 `attachments/`，重命名为 `YYYY-MM-DD_<标准名>_原图[_pN].ext`（上传缓存目录里的图只是临时文件，**必须复制**）。**一张单据含多个检查项目时，项目名用 `+` 连接**（按单据顺序），如 `2024-12-02_电解质+肾功_原图.jpg`；各报告页共用这一张原图，用任一项目名都能捞到它
6. 数值型 → 追加 `5-指标/指标总表.csv` 行；图像型/描述型 → 原图内嵌 `![[...]]` + 写结论（`数值已入表: false`）
6b. **用药** → 在 `6-用药/用药流水.md` 按药追加/更新（动作 / 剂量 / `依据`=医嘱或自主 / `停止原因` / 来源链接）；长期服用的同时更新顶部「当前在服」表；就医记录那一行的「用药/治疗」列写同一份快照（两处交叉、都要写）
7. 更新 `7-视图/`：`用药记录.md`、`化验指标追踪.md` 由上游派生重生成；`主档案.md` 追加更新
8. 按 `references/validation_rules.md` + `references/completeness_checklists.md` 自检，列“待核对”
9. `git add -A && git commit -m "归档: <事件>"`

单报告页 frontmatter 必填：`类型`(化验/影像/功能检查/病理) `项目`(词表) `日期` `机构` `患者` `检查活动` `就医记录` `数值已入表`。

## 用药与药品库

- **用药唯一源头 = `6-用药/用药流水.md`**：`1-基本信息/` **不存任何用药信息**（避免两处重复）；给医生看的用药视图由它派生到 `7-视图/用药记录.md`。
- **记录位置**：`6-用药/用药流水.md` —— 按「药」为主线，覆盖 (a) 长期服用/保健品（顶部「当前在服」表）(b) 看病开的药（开了什么 / 实际怎么吃 / 吃多久）(c) 自我用药（含 `停止原因`）。**就医记录总表的「用药/治疗」列写本次快照，两处有意交叉、都要写**（只更新一处视为待核对）。
- **药名规范**：`通用名（剂型）`，如 `布洛芬（缓释胶囊）`；需要时后接**大概规格 / 剂量**（用户说明才追加，如 `地芬尼多（片）25mg`），不猜。
- **不记频次（一天几次）**：用户回忆不准，记了只会产生 `[信息缺失]` 噪声 → **不记、不问、也不留空占位**；只记 药名 + 大概规格/剂量 + 开始/停/依据/`停止原因`。用户报商品名（优甲乐/芬必得）→ 查库 → **回问确认** → 落通用名；库中没有的药 → 请用户看药盒，不编。
- **药品库（可选）**：`〈药品库目录〉/drugs.sqlite`（上万条中文说明书 + 上万条相互作用），查询脚本 `〈药品库目录〉/q.py`，建库 `build.py`，用法见 `drug-lookup` 技能。**绝不把库读进上下文**，只查、只引用命中行。⚠️ 公开可得的中文说明书整理集**许可不明**，仅本机个人参考，**不得再分发**；授权来源（RxNorm/RxNav、openFDA）见 `8-知识库/用药指南/索引.md`。
- **边界**：只照录说明书原文（适应症/禁忌/不良反应/相互作用 + 风险等级），**不给用药建议、不做判断**。

## 面向医生的病历报告（PDF）

- 素材 = `7-视图/` 三件套 + 本次症状（可从 `3-不适记录` 抽同类不适的时间线）+ 指标时间对比
- 四段：① 本次不适（症状描述）② 近期用药 ③ 相关化验指标（带时间对比，标上涨/下降）④ 既往要点
- **脱敏**：只放 性别 / 年龄段 / 身高体重 / 过敏史 / 慢病 / 用药 / 指标；**不放**全名（用 ××）、身份证、电话、住址、单位
- **居住信息只写常驻地城市**（如「常驻地：某某市」）；海拔 / 气候等环境细节留在 `1-基本信息/` 的隐私版
- 实现：HTML + 打印 CSS → 无头浏览器打印为 PDF（`firefox --headless --print-to-pdf` 之类；本机有 libreoffice / Chromium 也可）

## 指标总表（`5-指标/指标总表.csv`）

列固定：`日期,患者,来源类型,机构,检查活动,项目,指标名,值,单位,参考范围,异常,来源笔记`

- **一张总表**：某次就医的数据 → 按 `检查活动`/`来源笔记` 筛；某指标近 N 次 → 按 `指标名` 分组
- 只装数值型；数值照抄（含单位），**不换算、不推断**，缺失留空
- **定性判定值不进本表**（例：幽门螺杆菌呼气试验的 DPM 只是报告的判定值 → HP 阴性/阳性 写在报告页）
- **同一指标在不同单据里单位写法不一致时各抄各的**，不换算、不统一（看趋势时自己留意单位）
- **体重 / BMI / 体成分这类自测数据不进本表**：身高留在 `1-基本信息/`；体重、BMI、体脂率等进 `<成员>/8-体重管理/体重管理总表.csv`。**本表只装“有检验报告”的临床数值**

## 体重管理（`<成员>/8-体重管理/`）

**放什么**：**自己测的**体态数据（体重 / 体成分）—— 高频、无报告、无参考范围，与“有检验报告的临床数值”分开（曲线才干净）。另有成员级 `8-体重管理/` 与库根 `8-知识库/` **同号不同层**，引用带路径。

**文件**：`<成员>/8-体重管理/体重管理总表.csv` —— 唯一数据源，长表：**一次测量 = 一组行，一行一个指标**。
**不留原图**：体脂秤/身体成分截图**只提取文字**，不复制进库、不留备份（复查看表即可，存图没意义）。

列固定：`日期,时间,患者,来源类型,项目,机构/设备,指标名,值,单位,参考范围,判定,笔记`

- `来源类型`：**自测**（家用设备）／体检／就诊 —— 「自测」是本目录专有值，不进 `5-指标` 的枚举
- `项目`：词表标准名（当前 `体脂秤`）；`指标名` 取自词表「体重管理指标名」
- `单位` / `参考范围`：**设备上印了才写**；App 只给定性标签时 `参考范围` 留空
- `判定`：**照抄 App 标签**（标准 / 偏高 / 过高 / 偏低），不自己判读、不换算
- 同一天多次称重：**逐条追加，不合并、不取平均**；设备没给的项**不写行**
- **不建检查活动、不加就医记录、不进 `5-指标`** —— 它不是一次医疗接触

## 命名规范

- 就医记录页 / 检查活动目录：`YYYY-MM-DD-机构-活动`（两边**同名**，便于互链）；**合并活动（7 天内的同一次看病）取最早那天的日期**
- 单报告页：`<标准名>-YYYY-MM-DD.md`；汇总页：同活动名
- 原图：`YYYY-MM-DD_<标准名>_原图[_pN].ext`；**一张单据含多个检查项目时项目名用 `+` 连接**（按单据顺序，如 `2024-12-02_电解质+肾功_原图.jpg`），各报告页共用该原图，任一项目名都能捞到
- **一份报告（如体检）跨多页、且一页含多个项目时**：每页存一份原图，`_pN` 记该页在这批检查单据里的页序；同一检查跨页时相邻两页的文件名里都带它的标准名（如 `血常规_原图_p1` + `血常规+血糖+肝功+肾功_原图_p2`）
- **不是检查项目的页**（封面、检查项目清单、总检报告）：按页名命名 `YYYY-MM-DD_<页名>_原图.ext`
- **同一张照片上既有检查项目、又有门诊病历 / 处方**：按检查项目命名（页名不写），在汇总页注明该照片另含门诊病历 / 处方
- **用户可指定排除某些检查项** → 不建单报告页、名字不进原图名、数值不进表；原报告页里若含被排除项，`+` 连接里不写它
- 标准名一律取自 `8-知识库/项目名规范.md`

## 逆向导出（靠命名规则保证）

- 近 10 次心电图原图：`find 2-检查报告 -path "*attachments*" -name "*心电图*" | sort | tail -10`
- 近 10 次血常规报告页：`find 2-检查报告 -name "血常规-*.md" | sort | tail -10`
- 某部位不适历史（溯源）：`grep -n "太阳穴\|头疼" 3-不适记录/不适记录.md`
- 收齐后可打包 zip 交用户，或生成对照页

## 读图技巧（旋转 / 长条单据）

- **内容相对照片旋转 90° 的单据**（热敏打印条、横向长条、扫描时放倒的报告）先转正再读：`PIL Image.transpose(Image.ROTATE_90 / ROTATE_270)` 各出一张，用视觉模型各看一角判断哪个方向是正立的，再按块裁剪。
- **视觉识图工具的裁剪参数（如 `region`）用原图像素坐标**，裁剪后再放大时坐标要按比例换算回去；小字（分区数值、表格行）要专门放大到 1.5–2× 才读得准，别在整图缩略图上猜。
- **读不出就不猜**：机器分区值、未辨字符（如某些符号被渲染成方块字）→ 原页写「见原图 / 未辨字符」并说明，不编。
- **打印条 / 机器读数的单位以单据自己印的为准**：单据没印单位的段落，写「单据未印单位」，不按惯例替它补 D / mm。
- 同一批单据里若有单据**姓名栏空白、机构名被遮挡**：先问用户，并把「为何判定为本人的」依据（同次另一张单据印的姓名 + 本人确认）写进汇总页。

## 术语与表述

- 用户口语（「肚子疼」「发烧」）写成标准表述（腹痛、发热）：对照 `references/terminology_map.md`；有歧义先追问。
- 通俗解读（给父母看的版本）严格按 `references/plain-language-rules.md`：只反映文档内容，不解释、不推断、不排序；给 3–5 个「可以问医生的问题」。

## 检索与对照

- 程序侧：Obsidian 官方 CLI（`obsidian search query="甲状腺"`、`obsidian vault`；Linux 下需 `XDG_RUNTIME_DIR=/run/user/<uid>`，且要有 Obsidian 进程在跑）。
- 文件侧：直接 `search_files` / `read_file` 读 vault（更快，纯无头也能用）。
- 历史对话：全库检索历史会话记录（含聊天软件、桌面端来源）。
- 回答健康问题前：**先查 vault（结构化事实+趋势），需要原话再回会话库**，两边都给出处。

## 运维注意（Obsidian 侧）

- `~/.config/obsidian/obsidian.json` **同时存 vault 注册表和 app 级设置**（`"cli":true` 就是官方 CLI 开关）。改它必须**读-改-写**，整体覆盖会静默关掉 CLI 开关与硬件加速设置。
- 搬动/重命名 vault：先停掉 Obsidian 进程（或 `systemctl --user stop obsidian.service`），改完路径再启动，用 `obsidian vault` 验证新路径。
- GUI 自动化：`xdotool` 之类的外部工具比通用键鼠注入更可靠；操作前先 `windowactivate` 激活主窗口。

## 会话怎么用（用户约定）

- **会话只是投递窗口，不是分拣口**：用户往哪个会话说都行，agent 按单据类型分发到 `2-检查报告` / `3-不适记录` / `4-就医记录` / `5-指标` / `6-用药`。用户不需要为“该放哪个会话”纠结。
- **带照片的会话要短**（图片每轮重发，涨得快、最易触发压缩）；一批单据一个会话，归档完提示用户开新会话或归档会话。纯文字会话可以很长。
- **归档完成后**用户删/归档那个会话都不影响库（数据在磁盘文件里）；**但删太早会丢掉“当时原话”的对照** → 回复里必须明确说“已归档 + 已 commit”，用户才动手。
- **库只增不改**：就医记录/指标/用药/不适记录都只追加行；历史行不动。修正 = **追加 + 标注**。
- **唯一例外**：`7-视图/` 三件套是从上游**重生成**的派生文件（源数据不动，丢了可再生成）。
- 每次归档收尾 `git add -A && git commit`（**本地 git，无远程仓库、不上云**），任何提交都能回滚。

## 参考文件

- `references/field_schema.md` / `references/entity-schema.md` / `references/terminology_map.md` / `references/validation_rules.md` / `references/completeness_checklists.md` / `references/plain-language-rules.md`
- `references/medchrono-SKILL.md`、`references/medchrono_medical_tracker.py` — 参考项目的 OCR 流水线
- `9-模板/`（库根共享）— 归档模板与视图模板；含 `检查活动-汇总页模板.md` / `单报告页模板.md` / `主档案.md` / `用药记录.md` / `化验指标追踪.md` / `体重管理总表.csv`（表头）
- **vault 内**：`AGENTS.md`（权威规矩）、`8-知识库/项目名规范.md`（受控词表）、`8-知识库/设计说明.md`（为什么这么定）

## 来源与取舍

吸收：`canvas-stardust/medchrono`（模板与工作流）、SkillHub「病历分析专家包」（字段规范、术语表、校验规则）、`patiently-ai`（通俗解读铁律）、`medical-entity-extractor`（实体结构）。**不采用**：其中面向医生的「辅助诊断/鉴别诊断/临床评分」与「就医建议/科室推荐/用药指导」。

