
任何姿态模型都会把膝盖塌陷的 15 次深蹲记成良好。我做的 AI 抓住了第 9 次。
我做了这个演示的第一版,是为了证明一个姿态模型能数深蹲次数;不到一天,我就证明了错误的那件事。我喂给它一个合成的 ACL 术后患者,我叫她 Maria,62 岁,膝关节重建术后第八周,处方是十五次徒手深蹲。那个免费的姿态库做了免费姿态库都会做的事。它记录了十五次,全部计入,然后继续。十五次满分。一次干净的训练。
问题出在第 9 次。第 9 次时 Maria 的膝盖向内塌陷,她放慢速度来代偿——这正是 ACL 重建术后物理治疗师要盯住的动作,因为人就是这样把移植物再次撕开的。姿态模型看到的是一次深蹲。它没有看到再损伤风险,因为那本来就不是姿态模型要做的事。本该被它标出的那一次,恰恰是它计入的那一次。
那一刻,真正的产品在我心里清晰了起来。我一直把姿态估计当成难题。它不再是难题了。它是免费的。
姿态估计是免费的,所以我不再试图与它竞争
我花了第一周去尝试做更好的关键点追踪器,那是整个项目里最浪费的一周。BlazePose 和 MoveNet 已经能在手机上以每秒 30 帧运行,白白给你一副 33 关键点的骨架。每一家物理治疗平台和企业健康管理应用都已经有这个,或者明天就能接上。在这里竞争,等于争着去送别人已经在白送的东西。
没人会交给你的,是关节点之后的那一层。把原始姿态流变成临床医生能据此行动、付款方也会报销的东西。那正是我决定让 Kinetiq 端到端去构建的层,也是我反复回到的论点。
姿态估计是免费的。价值在于其上的大脑,以及可计费的证明。
于是我扔掉了追踪器,转而构建了解释引擎。它接收关键点流(我的三位测试患者用合成数据;第四位则从真实拍摄的深蹲片段离线提取,以证明流水线能跑在真实影像上),用 1-Euro 滤波器平滑,按置信度门控,按时间自相似性切分动作次数,并计算临床医生真正会推理的那些特征:关节角与活动度、膝外翻指数、下蹲—起身节奏比、以无量纲对数急动度(Log Dimensionless Jerk)衡量的动作平滑度,以及左右对称指数。朴素、有单元测试的 NumPy。评分路径上没有模型。你可以构建整套系统,地址是 veriprajna.com/zh-Hans/demos/ai-biomechanics-exercise-verification ,并看着它给一次训练打分。
当我把 Maria 再送进这个引擎时,第 9 次终于以它第一次就该有的方式回来了。

引擎不会只说“坏动作”。它写出自己检查过的条款:外翻 0.054 达到或超过 0.03,节奏 1.4 高于 1.25。临床医生可以对着它交叉质询。你无法交叉质询一个黑箱;而 ACL 手术之后,你非常想要能质询。
我曾想造假的那一次动作
我清楚记得自己贪婪到了哪一步,就是第 12 次。Maria 那次训练的第 12 次,髋部关键点掉到了可见性门控以下。该关节的追踪置信度低到无法信任。有几帧里,引擎根本不知道她的髋在哪里。
诱人的做法——那种能让你基准看起来更好的做法——是插值。根据前后帧猜测髋的位置,照样算一个角度,给这次打分,把数字保持干净。我写过那种插值。它奏效了。然后我读了单目精度文献,并删掉了它。
单摄像头膝关节角度误差的平均绝对误差在 9.3 到 21.9 度之间(《Nature Scientific Reports》,2025)。这是这类测量的诚实上限。如果我在低置信度帧上伪造一个髋位置,再据此报告关节角,我不是在测量膝盖,而是在生成一个看起来合理的数字并称之为临床。对一家名叫 Veriprajna——意为真智慧——的公司来说,这根本不是艰难的抉择。

于是引擎弃权。它在屏幕上说:“该次未评分,髋不可见。”它把骨架变灰。它不假装。
我们从不从低置信度关键点猜测关节角。
我把那句话放在屏幕上,因为我希望这条纪律是可见的,而不是埋在配置文件里。在我的标注集里,被遮挡的动作次数中,三次有三次弃权,零个角度被伪造——这不是我口头主张的说法,而是一条有单元测试的不变量。一次被遮挡却仍被评分的动作,按定义就是伪造的角度。测试会抓住它。拒绝作答是一项我不得不与自己的本能搏斗才保住的特性。
为什么同一次深蹲,对一位患者通过,对下一位却失败?
我差点就上线一个全局单一阈值;一位我给看过早期版本的物理治疗师,大约三十秒就把我劝住了。她的观点很简单。ACL 术后第八周的女性做出 80 度深蹲,是良好进展。同样 80 度深蹲,对一位健康的 30 岁企业健康管理客户来说,却是偷懒的一次。如果你的引擎给它们打同样的分,它懂的不是康复,只是几何。
于是规则引擎变成了人群自适应。阈值按患者档案键控:年龄段、病况、恢复周次。Maria,ACL 术后第 8 周,屈曲目标 75 度。Jordan,一位 30 岁、膝盖健康的企业健康管理运动员,目标 95 度。我在演示里加了一个控件,好让这一点无可辩驳:切换档案下拉菜单,保持完全相同的动作,看着判定改变。

第一次当着别人的面切换那个下拉菜单,整列判定在动作并未改变的情况下整列翻转,我看着他们明白过来。同一动作按档案得到不同判定,那是临床判断,不是缺陷。这也是论点中不会过时的那一部分。当姿态估计变得完美——它会的——传感器仍然无法告诉你:80 度对一只正在愈合的膝盖意味着一件事,对一只健康的膝盖意味着另一件事。那种理解,住在上层。
智能体建议,代码裁决
我确实让一个 AI 智能体让我难堪过一次,而这正是架构长成现在这样的原因。我推销时人人都想要的是当时的潮流能力:一个读完训练就写临床笔记的智能体,一个盯着趋势再升级上报的智能体。可以。我在另一位患者 Eleanor 上接好了 Clinical Scribe 和 Longitudinal Monitor——她 70 岁,膝关节置换术后,活动度在训练历史中悄悄下降。
Clinical Scribe 写出的第一稿流畅而自信,却包含了一个证据里没有的活动度数字。它做过四舍五入,或平滑,或干脆发明了一个读起来好听的数。如果我当时信了它,我就会发出一份带有伪造测量值的临床笔记。这正是把语言模型放进医疗闭环的整套失败模式,而我刚刚在自己的屏幕上亲眼看着它发生。
修复办法是让智能体在结构上无法做到这一点。智能体引入的每一个数字,都会对照确定性证据加以核验。 任何不在引擎输出中的数字都会被拒绝,并改用确定性模板展示。没有 API 密钥时,两个智能体完全弃权。它们解释,它们沟通。它们不做裁决。

智能体建议,代码裁决。
那句话是整个演示的承重设计决策。信任核心——每一次动作判定与计费决定——是朴素、有单元测试的代码,附近没有任何语言模型。智能体坐在上层,有边界、经 grounding 校验,做它们真正擅长的那一件事:把已核验的数字变成临床医生可用的行文。一旦智能体在判定上获得一票,你就失去了整个要点所在的可审计性。
付款方真正报销的是一张收据,不是一次动作计数
我构建这一切的商业理由,来自我读 CMS 计费规则时学到的东西——我没想到会把一个月花在这上面。临床医生可以按 CPT 98975–98981 计费远程治疗监测(Remote Therapeutic Monitoring),外加 2026 年的代码 98979 和 98985;而 2026 年的合格门槛已降到少至 2 天和 10 分钟数据(Veriprajna WP29 研究,2026)。但 CMS 不报销原始坐标。它要求与治疗决策绑定的设备采集数据。一堆关键点不可计费。一份有文档、可审计的判定才可以。
那道缺口并不小,因为背后的问题也不小。物理治疗居家运动依从性大约在 35%,65% 的患者在第一个月内放弃方案(Veriprajna WP29 研究,2026)。自我报告会夸大依从,于是临床医生常常在自己无法信任的数据上计费与治疗。雇主一侧,肌肉骨骼疾患每年约花费每位员工 3,591 美元,估计 36% 的 MSK 手术被认为不必要(900 亿美元),超过半数员工因隐私抵制分享健康数据(Veriprajna WP29 研究,2026)。经过核验、隐私安全、可计费的运动数据,正是这条链上人人都缺的东西。
所以引擎每次训练最后做的事是决定:可计费、需临床医生审阅,或设备数据不足,并导出一份 FHIR 形态的训练报告。逐次观察、每次检查过的阈值条款、训练汇总、RTM 判定,以及 CMS 要求的文档字段。我说的是 FHIR 形态,从不说 FHIR 已校验,因为它是镜像 Observation 与 DocumentReference 字段形态的结构化 JSON,不是发到线上 EHR 的载荷。我把它发出去。我不假装去 POST 它。
Maria 那次带有第 9 次外翻标记的训练不会自动计费。它先路由给临床医生,因为再损伤信号在变成收费之前,应该先被人类看到。这正是我一直坚持的诚实细微之处:可计费并不等于一切都好,它意味着文档完备到足以站得住脚。

那块面板上的数字才是我在意的,我也想精确说明它们的范围。这里的真值,是由植入的物理参数对照档案阈值所隐含的判定,独立于引擎计算;然后在标签固定之后,再给动作渲染成关节点并加入测量噪声,于是引擎必须穿过噪声恢复判定。在该集合上,25 个清晰案例一致率 100%,10 个约在阈值一个标准差内的边界案例一致率也是 100%。那是标注合成集上的判别结果,不是开放世界保证,而边界案例正是在朴素阈值下会翻转的那些——这正是我单独汇报它们的原因。这些是耐久的度量:任务准确率、自动化吞吐,以及诚实。它们不会在姿态模型改进时过时,因为其中没有任何一项是姿态模型误差率。
留给我的问题
我进来时以为自己在做计算机视觉产品,结束时确信自己做的是一个碰巧从摄像头开始的问责产品。有意思的工作从来不是拿到关节点。而是决定系统被允许主张什么、何时必须弃权、适用谁的阈值,以及临床医生能把执照押在什么上面。 如果你想看引擎给塌陷的膝盖打分、拒绝被遮挡的动作、并导出收据,它无需密钥即可在 veriprajna.com/zh-Hans/demos/ai-biomechanics-exercise-verification。
如果你更想看它跑起来,而不是听我描述,这里是整套端到端运行。
我反复翻来覆去、也真心希望其他构建者跟我争论的问题是这个。当传感器渐近完美时,诱惑会是让模型决定得更多,因为它很少会错。但“很少错”恰恰是伪造数字造成最大伤害的条件,因为你已经停止检查。那么,在你自己的系统里,你拒绝让模型越过的那条线在哪里,你能不能指向强制执行它的那段代码?


