关于 crisis-detection-intervention-ai
为应用和支持平台提供心理健康危机检测与安全升级指导,强调人工审核、及时提供资源、保护敏感数据,并明确自动检测的局限。
主要功能
- 01心理健康专用信号检测
- 02人工审核与升级流程
- 03及时提供热线及资源
- 04敏感数据保护实践
- 05NLP 模型选择指导
适用场景
- 01标记日记内容供人工审核
- 02监测支持小组帖子中的风险信号
- 03协助治疗师分流平台消息
- 04设计咨询师升级处理流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill crisis-detection-intervention-ai安装后在 Claude Code 中输入/crisis-detection-intervention-ai确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.claude-plugin/plugin.jsonreferences/intervention-protocols.mdmental-health-nlp.mdcrisis-resources.mdscripts/model_evaluator.tscrisis_detector.ts详细介绍
危机检测与干预 AI
擅长检测心理健康危机并实施安全、合乎伦理的干预协议。
⚠️ 伦理免责声明
此技能用于协助检测危机,而非应对危机。
✅ 适用场景:
- 标记令人担忧的内容,供人工审核
- 为用户联系专业资源
- 转介给危机咨询师
- 提供即时热线信息
❌ 不能替代:
- 持证治疗师
- 紧急服务(911)
- 医学诊断
- 专业心理健康治疗
务必提供危机热线:全国自杀预防生命线:988
适用场景
✅ 适用于:
- 心理健康日记应用
- 康复社区平台
- 支持小组监控
- 在线治疗平台
- 危机短信热线集成
❌ 不适用于:
- 一般情感分析(使用标准工具)
- 医学诊断(不具备资质)
- 未经人工审核的自动回复
- 替代专业危机咨询师
快速决策树
Detected concerning content?
├── Immediate danger? → Escalate to crisis counselor + show 988
├── Suicidal ideation? → Flag for review + show resources
├── Substance relapse? → Connect to sponsor + resources
├── Self-harm mention? → Gentle check-in + resources
└── General distress? → Supportive response + resources
技术选型
心理健康 NLP 模型(2024)
| 模型 | 最适用于 | 准确率 | 延迟 |
|---|---|---|---|
| MentalBERT | 心理健康文本 | 89% | 50ms |
| GPT-4 + Few-shot | 危机检测 | 92% | 200ms |
| RoBERTa-Mental | 抑郁检测 | 87% | 40ms |
| Custom Fine-tuned BERT | 特定领域 | 90%+ | 60ms |
时间线:
- 2019:针对心理健康微调 BERT
- 2021:MentalBERT 发布
- 2023:GPT-4 展现出强大的零样本危机检测能力
- 2024:针对特定状况的专用模型
常见反模式
反模式 1:使用通用情感分析
新手的想法:“负面情绪 = 危机”
问题:心理健康相关表达含义微妙,且依赖语境。
错误做法:
// ❌ Generic sentiment misses mental health signals
const sentiment = analyzeSentiment(text);
if (sentiment.score < -0.5) {
alertCrisis(); // Too broad!
}
错误原因:“我累了”和“我厌倦了活着”含义不同,但情感倾向相同。
正确做法:
// ✅ Mental health-specific model
import { pipeline } from '@huggingface/transformers';
const detector = await pipeline('text-classification', 'mental/bert-base-uncased');
const result = await detector(text, {
labels: ['suicidal_ideation', 'self_harm', 'substance_relapse', 'safe']
});
if (result[0].label === 'suicidal_ideation' && result[0].score > 0.8) {
await escalateToCrisisCounselor({
text,
confidence: result[0].score,
timestamp: Date.now()
});
// IMMEDIATELY show crisis resources
showCrisisResources({
phone: '988',
text: 'Text "HELLO" to 741741',
chat: 'https://988lifeline.org/chat'
});
}
时间背景:
- 2015:基于规则的关键词匹配
- 2020:针对心理健康微调 BERT
- 2024:具备语境理解能力的多标签模型
反模式 2:未经人工审核就自动回复
问题:AI 无法替代共情,还可能加重痛苦。
错误做法:
// ❌ AI auto-responds to crisis
if (isCrisis(text)) {
await sendMessage(userId, "I'm concerned about you. Are you okay?");
}
错误原因:
- 给人机械、否定感受的印象
- 可能加重痛苦
- 缺少人工判断
正确做法:
// ✅ Flag for human review, show resources
if (isCrisis(text)) {
// 1. Flag for counselor review
await flagForReview({
userId,
text,
severity: 'high',
detectedAt: Date.now(),
requiresImmediate: true
});
// 2. Notify on-call counselor
await notifyOnCallCounselor({
userId,
summary: 'Suicidal ideation detected',
urgency: 'immediate'
});
// 3. Show resources (no AI message)
await showInAppResources({
type: 'crisis_support',
resources: [
{ name: '988 Suicide & Crisis Lifeline', link: 'tel:988' },
{ name: 'Crisis Text Line', link: 'sms:741741' },
{ name: 'Chat Now', link: 'https://988lifeline.org/chat' }
]
});
// 4. DO NOT send automated "are you okay" message
}
人工审核流程:
AI Detection → Flag → On-call counselor notified → Human reaches out
反模式 3:不提供即时资源
问题:处于危机中的用户需要现在就获得帮助,而不是以后。
错误做法:
// ❌ Just flags, no immediate help
if (isCrisis(text)) {
await logCrisisEvent(userId, text);
// User left with no resources
}
正确做法:
// ✅ Immediate resources + escalation
if (isCrisis(text)) {
// Show resources IMMEDIATELY (blocking modal)
await showCrisisModal({
title: 'Resources Available',
resources: [
{
name: '988 Suicide & Crisis Lifeline',
description: 'Free, confidential support 24/7',
action: 'tel:988',
type: 'phone'
},
{
name: 'Crisis Text Line',
description: 'Text support with trained counselor',
action: 'sms:741741',
message: 'HELLO',
type: 'text'
},
{
name: 'Chat with counselor',
description: 'Online chat support',
action: 'https://988lifeline.org/chat',
type: 'web'
}
],
dismissible: true, // User can close, but resources shown first
analytics: { event: 'crisis_resources_shown', source: 'ai_detection' }
});
// Then flag for follow-up
await flagForReview({ userId, text, severity: 'high' });
}
反模式 4:不安全地存储危机数据
问题:危机内容属于极其敏感的受保护健康信息(PHI)。
错误做法:
// ❌ Plain text storage
await db.logs.insert({
userId: user.id,
type: 'crisis',
content: text, // Stored in plain text!
timestamp: Date.now()
});
错误原因:数据泄露会暴露用户最脆弱的时刻。
正确做法:
// ✅ Encrypted, access-logged, auto-deleted
import { encrypt, decrypt } from './encryption';
await db.crisisEvents.insert({
id: generateId(),
userId: hashUserId(user.id), // Hash, not plain ID
contentHash: hashContent(text), // For deduplication only
encryptedContent: encrypt(text, process.env.CRISIS_DATA_KEY),
detectedAt: Date.now(),
reviewedAt: null,
reviewedBy: null,
autoDeleteAt: Date.now() + (30 * 24 * 60 * 60 * 1000), // 30 days
accessLog: []
});
// Log all access
await logAccess({
eventId: crisisEvent.id,
accessedBy: counselorId,
accessedAt: Date.now(),
reason: 'Review for follow-up',
ipAddress: hashedIp
});
// Auto-delete after retention period
schedule.daily(() => {
db.crisisEvents.deleteMany({
autoDeleteAt: { $lt: Date.now() }
});
});
HIPAA 要求:
- 静态和传输中的数据均须加密
- 记录访问日志
- 保留期限过后自动删除
- 仅授予最低限度的必要访问权限
反模式 5:没有升级处理协议
问题:从检测到人工干预之间没有明确的处理路径。
错误做法:
// ❌ Flags crisis but no escalation process
if (isCrisis(text)) {
await db.flags.insert({ userId, text, flaggedAt: Date.now() });
// Now what? Who responds?
}
正确做法:
// ✅ Clear escalation protocol
enum CrisisSeverity {
LOW = 'low', // Distress, no immediate danger
MEDIUM = 'medium', // Self-harm thoughts, no plan
HIGH = 'high', // Suicidal ideation with plan
IMMEDIATE = 'immediate' // Imminent danger
}
async function escalateCrisis(detection: CrisisDetection): Promise<void> {
const severity = assessSeverity(detection);
switch (severity) {
case CrisisSeverity.IMMEDIATE:
// Notify on-call counselor (push notification)
await notifyOnCall({
userId: detection.userId,
severity,
requiresResponse: 'immediate',
text: detection.text
});
// Send SMS to backup on-call if no response in 5 min
setTimeout(async () => {
if (!await hasResponded(detection.id)) {
await notifyBackupOnCall(detection);
}
}, 5 * 60 * 1000);
// Show 988 modal (blocking)
await show988Modal(detection.userId);
break;
case CrisisSeverity.HIGH:
// Notify on-call counselor (email + push)
await notifyOnCall({ severity, requiresResponse: '1 hour' });
// Show crisis resources
await showCrisisResources(detection.userId);
break;
case CrisisSeverity.MEDIUM:
// Add to review queue for next business day
await addToReviewQueue({ priority: 'high' });
// Suggest self-help resources
await suggestResources(detection.userId, 'coping_strategies');
break;
case CrisisSeverity.LOW:
// Add to review queue
await addToReviewQueue({ priority: 'normal' });
break;
}
// Always log for audit
await logEscalation({
detectionId: detection.id,
severity,
actions: ['notified_on_call', 'showed_resources'],
timestamp: Date.now()
});
}
实现模式
模式 1:多信号检测
interface CrisisSignal {
type: 'suicidal_ideation' | 'self_harm' | 'substance_relapse' | 'severe_distress';
confidence: number;
evidence: string[];
}
async function detectCrisisSignals(text: string): Promise<CrisisSignal[]> {
const signals: CrisisSignal[] = [];
// Signal 1: NLP model
const nlpResult = await mentalHealthNLP(text);
if (nlpResult.score > 0.75) {
signals.push({
type: nlpResult.label,
confidence: nlpResult.score,
evidence: ['NLP model detection']
});
}
// Signal 2: Keyword matching (backup)
const keywords = detectKeywords(text);
if (keywords.length > 0) {
signals.push({
type: 'suicidal_ideation',
confidence: 0.6,
evidence: keywords
});
}
// Signal 3: Sentiment + context
const sentiment = await sentimentAnalysis(text);
const hasHopelessness = /no (hope|point|reason|future)/i.test(text);
if (sentiment.score < -0.8 && hasHopelessness) {
signals.push({
type: 'severe_distress',
confidence: 0.7,
evidence: ['Extreme negative sentiment + hopelessness language']
});
}
return signals;
}
模式 2:安全的关键词匹配
const CRISIS_KEYWORDS = {
suicidal_ideation: [
/\b(kill|end|take)\s+(my|own)\s+life\b/i,
/\bsuicide\b/i,
/\bdon'?t\s+want\s+to\s+(live|be here|exist)\b/i,
/\bbetter off dead\b/i
],
self_harm: [
/\b(cut|cutting|hurt)\s+(myself|me)\b/i,
/\bself[- ]harm\b/i
],
substance_relapse: [
/\b(relapsed|used|drank)\s+(again|today)\b/i,
/\bback on\s+(drugs|alcohol)\b/i
]
};
function detectKeywords(text: string): string[] {
const matches: string[] = [];
for (const [type, patterns] of Object.entries(CRISIS_KEYWORDS)) {
for (const pattern of patterns) {
if (pattern.test(text)) {
matches.push(type);
}
}
}
return [...new Set(matches)]; // Deduplicate
}
模式 3:GPT-4 Few-Shot 检测
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
async function detectWithClaude(text: string): Promise<CrisisDetection> {
const response = await client.messages.create({
model: 'claude-3-5-sonnet-20241022',
max_tokens: 200,
messages: [{
role: 'user',
content: `You are a mental health crisis detection system. Analyze this text for crisis signals.
Text: "${text}"
Respond in JSON:
{
"is_crisis": boolean,
"severity": "none" | "low" | "medium" | "high" | "immediate",
"signals": ["suicidal_ideation" | "self_harm" | "substance_relapse"],
"confidence": 0.0-1.0,
"reasoning": "brief explanation"
}
Examples:
- "I'm thinking about ending it all" → { "is_crisis": true, "severity": "high", "signals": ["suicidal_ideation"], "confidence": 0.95 }
- "I relapsed today, feeling ashamed" → { "is_crisis": true, "severity": "medium", "signals": ["substance_relapse"], "confidence": 0.9 }
- "Had a tough day at work" → { "is_crisis": false, "severity": "none", "signals": [], "confidence": 0.95 }`
}]
});
const result = JSON.parse(response.content[0].text);
return result;
}
生产环境检查清单
□ Mental health-specific NLP model (not generic sentiment)
□ Human review required before automated action
□ Crisis resources shown IMMEDIATELY (988, text line)
□ Clear escalation protocol (severity-based)
□ Encrypted storage of crisis content
□ Access logging for all crisis data access
□ Auto-deletion after retention period (30 days)
□ On-call counselor notification system
□ Backup notification if no response
□ False positive tracking (improve model)
□ Regular model evaluation with experts
□ Ethics review board approval
适用与不适用场景
| 场景 | 是否适用? |
|---|---|
| 面向康复者的日记应用 | ✅ 是——监测复发情况 |
| 支持小组聊天 | ✅ 是——标记令人担忧的帖子 |
| 治疗平台消息 | ✅ 是——协助治疗师 |
| 公共社交媒体 | ❌ 否——存在隐私问题 |
| 替代人工咨询师 | ❌ 绝不——AI 只能协助,不能替代 |
| 医学诊断 | ❌ 绝不——不具备资质 |
参考资料
/references/mental-health-nlp.md- 用于心理健康的 NLP 模型/references/intervention-protocols.md- 基于证据的干预策略/references/crisis-resources.md- 热线、短信热线和支持服务
脚本
scripts/crisis_detector.ts- 实时危机检测系统scripts/model_evaluator.ts- 使用测试用例评估检测准确性
此技能适用于:危机检测 | 心理健康 NLP | 干预方案 | 自杀预防 | HIPAA 合规 | 伦理 AI
评论
支持 Markdown