Posts for: #Tools

OSCAR:看 CPAP 真实在做什么

之前那篇 Apple Watch 数据分析说过,Apple Watch 推断的"夜间呼吸异常事件"不准。要看 CPAP 真实效果只能看机器本身的 SD 卡——那里有每一晚每两秒采样的数据。

把 SD 卡从呼吸机里拔出来插到电脑上,里面有个 DATALOG 文件夹,按日期一晚一个子目录。导出来扔给 Claude 跑脚本,14 晚的数据 30 秒就出来了。

下面分开说:CPAP 是什么、OSCAR 是什么、SD 卡里有什么文件、这些数据能算出什么、我自己最近两周的情况。


CPAP 是什么

Continuous Positive Airway Pressure,持续气道正压通气。一台小机器,靠管子和面罩把空气持续吹进鼻腔,用正压撑开睡觉时容易塌掉的上气道。专门治阻塞性睡眠呼吸暂停(OSA,Obstructive Sleep Apnea)。

OSA 的机制:睡着后喉咙后面的软组织松弛塌下来,把气道堵住,呼吸短暂停。停几秒大脑缺氧自动惊醒一下,气道打开,又睡着,几分钟后再来一次。一晚循环几十上百次,自己感觉不到。

CPAP 不吃药、不开刀,靠空气压力机械上不让气道塌。

我用的是 ResMed AirSense 10,自动调压(AutoSet)模式——机器实时检测气道塌陷的程度,自动在 5-15 cmH₂O 范围内调整压力。


OSCAR 是什么

Open Source CPAP Analysis Reporter。开源软件,Mac/Windows/Linux 都能装。专门解析 ResMed、Philips DreamStation、Fisher & Paykel 这几家主流厂商 CPAP 机器 SD 卡的数据。

呼吸机厂商通常有自家 App(ResMed 的 myAir、Philips 的 DreamMapper),但只给摘要:昨晚 AHI 多少、漏气是否合格、星星几颗。

OSCAR 直接读底层 EDF 文件,能看到每一晚每两秒的漏气、压力、流量限制、潮气量、呼吸频率,以及每一个被检测出来的呼吸暂停或低通气事件。还能画图,把 5 个小时的数据铺成一张大图。

[阅读全文]

Apple Watch 九年数据让我盯上三件事

断断续续带了几块不同的表,数据都在苹果手机里。

五月初我把数据导出来扔给 Claude,让它跑 Python 脚本逐项分析。三件事最值得管:

  1. 阻塞性睡眠呼吸暂停(OSA),要重新用 CPAP 呼吸机
  2. HRV 偏低
  3. VO2max 这一年在跌

下面分开说。


数据怎么来

苹果手机的「健康」app 里有「导出健康数据」按钮,生成一个 zip。解压后是一个 export.xml 文件,所有指标按时间顺序记在里面:心率、HRV、血氧、睡眠分段、呼吸频率、跑步路径、ECG 波形。戴表的每一秒它都在记。

最早一条是 2017 年。文件大,直接打开看不了,但 Python 脚本一两分钟就能跑完。

让 AI 写脚本,可以按自己想看的方式切。HRV 不看整天均值(白天工作时本来就低),只看凌晨 3-5 点睡眠最深的时段。跑步心率不看总均值,看各心率区间的占比。血压不看一两次读数,看 300 次测量里有多少次踩进高血压区。


三件事

OSA 和 CPAP

睡觉的时候,喉咙后面的软组织松弛塌下来,把气道堵住,呼吸短暂停。停几秒大脑缺氧自动惊醒一下,气道打开,又睡着,几分钟后再来一次。一晚循环几十上百次,自己感觉不到。

数据里能看出来。90 天里血氧有 12 次低于 92%;夜间呼吸异常事件均值 3.5 次/小时,最高 9.6 次/小时。

这事不是「打呼噜的小毛病」。每次呼吸暂停身体都进入一次窒息-惊醒应激,长年累月推高血压,加速心血管病变。我的血压 306 次测量里 62% 已经踩进 130/80 以上,多半跟 OSA 有关。

CPAP 是一台小机器,吹气进鼻子。持续正压把气道撑开,机械上不让它塌。不吃药,不开刀,靠空气压力解决问题。

我家这台 ResMed AirSense 10 几年前买的,因为面罩漏气吵到我太太,闲置半年多。五月初换了鼻枕式面罩,5/11 到货,5/13 重新开始用。

HRV 偏低

心率变异性。两次心跳之间的间隔不是固定的,有微小变化。变化越大(HRV 高),说明自主神经系统弹性越好——副交感(休息)和交感(应激)切换自如。HRV 低意味着身体长期处在应激态。

[阅读全文]

eink 手机重装后的工具清单

昨天重装了 eink 手机。安装后希望装少而精的几个工具即可:

Telegram、Pocket Casts、Claude、Google Tasks、Brave、YouTube、微信读书、微信输入法、Slax Reader、Slax Note、Dropbox、Gemini、Spotify。

Code Wiki:Google 给 GitHub 仓库自动生成的可交互 wiki

Google 在 2025 年 11 月推出了 Code Wiki,对着任意 GitHub 公开仓库自动生成持续同步的可交互文档站——架构图、类图、时序图,加一个用这份 wiki 当上下文的 Gemini chat。

用法:把 github.com/<org>/<repo> 换成 codewiki.google/github.com/<org>/<repo>

丢一个看效果:openclaw/openclaw 的 Code Wiki 视图

私有仓库要走 Gemini CLI extension。

官方介绍:Introducing Code Wiki

eval 是什么,sgai.md 怎么做

只要产品里嵌了 AI,就一定要做 evals。这是过去两个月在 sgai.md(新加坡 AI 战略观察站)上踩坑总结出来的判断。

eval 是什么

eval = 评估测试。给 AI 输出和数据完整性写的回归测试,但和单元测试不是一回事。

单元测试测的是「函数给定输入,输出是不是这个值」——确定性的。

eval 测的是「AI 这次生成的东西,和金标 / 规则相比,质量有没有掉」——非确定性的。

简单说:单元测试盯代码,eval 盯模型 + 数据

eval 解决什么问题

任何依赖大模型的系统,都有三个天然漏洞。代码里写的单元测试管不到,人肉 review 一定漏。

模型会幻觉。 LLM 会编一个看起来合理但根本不存在的 URL、人名、事实。我自己在 sgai.md 上踩过——5 月初让 agent 给一批 voice 人物档案补「主导项目 / 公开引言」,agent 给两条记录写了根本不存在的 sourceUrl(一个伪造的 Fintech Festival 演讲者 ID,一个伪造的航空业报道)。URL 模式正确得肉眼分辨不出,靠用户事后报错才发现。

模型会退化。 升级模型(Claude 4.6 → 4.7)或改 prompt,输出可能变差。但你不会主动知道——除非有人发现产出明显烂了。等用户先发现就太晚了。

数据会漂移。 AI 生成的内容入库后,没人持续盯着完整性,漏字段、缺翻译、链接腐烂会慢慢累积。sgai.md 是中英日三语站,数据文件里每条 record 要求 title / titleEn / titleJa 三套字段必须同时给。我有一次只 commit 了中文,下一个 PR 想补英日——结果 EN/JA 页面立刻断裂。

[阅读全文]