BodySense Red Flag Detector 与 Safety Gateway

BodySense 的 Red Flag Detector 不负责靠关键词诊断严重病理,而是把用户文本中的候选安全信号归一化为可审计 evidence,再由版本化 Safety Policy 决定 concern、追问、Treatment 阻断与 escalation。

#type / concept #status / growing #tech / ai #tech / architecture #life / health #resource / bodysense

[!info] related notes

BodySense Red Flag Detector 与 Safety Gateway

核心定位

Red Flag Detector 的职责不是:

看到危险关键词
→ 判断用户有严重疾病

而是:

用户原始表达
→ candidate safety signal extraction
→ normalized safety evidence
→ versioned Safety Policy
→ concern / clarification / escalation / authority decision

因此更准确的名字是:

Safety Gateway 中的安全信号提取与策略执行链。

先纠正旧模型:关键词命中不是 Red Flag 真值

旧版把:

keyword exists → red_flag=true

当作确定性临床判断,这会产生三个严重问题。

1. Negation

“没有大小便异常”

包含危险词,但语义是 negative evidence。

2. Subject

“我朋友腿麻得厉害”

不是当前用户事实。

3. Temporality

“十年前车祸后腿麻过,现在已经好了”

和当前新发进行性 neurological change 的 action priority 完全不同。

所以候选信号至少需要归一化:

subject
presence / negation
temporality
onset
progression
distribution
associated findings
source
certainty

Red Flag 是 Safety Evidence,不是 Diagnosis

临床安全框架本身也不支持:

one red flag
→ one serious pathology

详见 肌骨问题的安全筛查与升级评估:多数 isolated red flags 的信息价值有限,关键在于 context、evidence cluster、进展和用户 profile。

因此系统内部更适合使用:

safety_evidence:
  kind: progressive_motor_weakness
  subject: user
  status: present
  temporality: current
  progression: worsening
  source: user_report
  extraction_confidence: 0.96

而不是只有:

red_flag: true

两层 Determinism

“安全必须确定性”仍然有价值,但要放在正确层。

Layer 1:Evidence Extraction

这是对自然语言的解释,天然存在不确定性。

可以组合:

  • lexical / rule-based matcher;
  • structured parser;
  • LLM structured extraction;
  • user confirmation;
  • assessment result。

这一层不能声称 100% reliable

Layer 2:Safety Policy

当输入已经被归一化为可信结构化事实后:

normalized evidence
→ versioned rules
→ action authority

这一层应尽量做到:

  • deterministic;
  • auditable;
  • versioned;
  • replayable;
  • testable。

例如:

current user
+ new bladder dysfunction
+ saddle sensory change
→ emergency escalation
→ autonomous treatment = blocked

同一 evidence bundle 在同一 policy version 下应产生相同授权结果。

推荐运行链

User Message

Candidate Signal Extraction
   ├─ lexicon / regex
   ├─ structured LLM extraction
   └─ existing BodyState facts

Normalize
   ├─ subject
   ├─ negation
   ├─ temporality
   ├─ progression
   ├─ distribution
   └─ provenance

Safety Gap Detection

if critical fact unknown
   → targeted ask_user

Safety Policy

Concern / Action
   ├─ continue
   ├─ continue + safety net
   ├─ routine referral
   ├─ urgent referral
   └─ emergency escalation

Action Authority Gate
   ├─ allow education
   ├─ allow low-risk conservative guidance
   └─ block autonomous Treatment

关键词规则应该做什么

关键词 / phrase matcher 仍然有价值,但职责收窄为:

便宜、高召回地发现可能值得进一步解析的 candidate signal。

例如:

CANDIDATE_PATTERNS = {
    "bladder_change": ["排尿困难", "尿潴留", "尿失禁"],
    "saddle_sensory_change": ["会阴麻木", "鞍区麻木"],
    "progressive_motor_change": ["越来越无力", "脚突然抬不起来"],
}

匹配结果只能生成:

candidate_signal

不能直接生成:

confirmed_red_flag

随后必须解析否定、主语、时间和上下文。

LLM 的正确角色

LLM 可以协助:

  • 语义归一化;
  • 同义表达识别;
  • subject / negation / temporality extraction;
  • 生成 targeted clarification question;
  • 把自由文本映射到 typed safety evidence。

但 LLM 不应拥有无限 safety authority。

即使模型说:

confidence = 0.99

也不能绕过:

  • policy hard gateway;
  • critical missing facts;
  • approved safety envelope;
  • escalation requirement。

Unresolved Safety Gap

对于关键安全字段:

unknown ≠ absent

例如用户说:

“这两天两条腿都开始麻,右脚也越来越没力。”

如果系统尚未知道 bladder / bowel / saddle sensory status,不应该补成:

bladder_change: false

而应产生:

unresolved_safety_gap:
  field: bladder_bowel_saddle_status
  priority: critical

并把 targeted elicitation 提升到普通 Diagnosis / Treatment 之前。

Safety Event 不是普通 UI 警告

Safety event 应携带 machine-readable action:

type: safety_decision
policy_version: safety-policy-v3
concern_level: emergency
reasons:
  - saddle_sensory_change
  - new_bladder_dysfunction
action:
  referral_level: emergency
  autonomous_treatment: blocked

前端警告只是这个 policy decision 的一个投影。

不应出现:

UI 显示“请就医”
但后台继续自动生成并 promote Treatment

与 Evidence Provenance 的关系

每条安全证据都应该保存 provenance:

user explicitly reported
model extracted from message
computer vision inferred
clinical measurement imported
external knowledge retrieved

其中外部 RAG 只能提供:

general safety knowledge

不能替用户补出:

“当前用户没有大小便异常”

这继续遵守 BodySense Targeted RAG 与 Evidence Provenance 的不变量:

general knowledge ≠ individual fact

Eval 应测什么

Safety Detector 不应该只测:

keyword recall

至少需要覆盖:

  • critical safety recall;
  • negation handling;
  • third-person attribution;
  • temporality;
  • progressive vs stable;
  • multi-signal combination;
  • unresolved safety gap detection;
  • emergency / urgent action correctness;
  • Treatment authority blocking;
  • multilingual paraphrase robustness。

对于 high-risk case,false negative 仍然是重点 guardrail;但优化 recall 不能靠把所有“疼”“麻”“外伤”都升级成 emergency,否则会失去可用性和正确的 action calibration。

最终边界

Lexical Match
≠ Red Flag Truth

Red Flag Evidence
≠ Serious Pathology Diagnosis

LLM Confidence
≠ Safety Authority

Unknown Critical Fact
≠ Negative Fact

Safety Warning UI
≠ Completed Safety Policy

High Concern
→ Escalation / Authority Restriction

这才是 BodySense 在生产级 Diagnosis / Treatment 系统中应该使用的 Red Flag Detector 心智模型。

创建于 2026/6/25 更新于 2026/8/23