跳到主要内容

Neuroskill Bci

连接到正在运行的 NeuroSkill 实例,并将用户的实时认知和情绪状态(专注度、放松度、情绪、认知负荷、困倦度、心率、HRV、睡眠阶段以及 40+ 项衍生的 EXG 评分)纳入响应中。需要佩戴 BCI 可穿戴设备(Muse 2/S 或 OpenBCI)并在本地运行 NeuroSkill 桌面应用程序。

技能元数据

来源可选 — 使用 hermes skills install official/health/neuroskill-bci 安装
路径optional-skills/health/neuroskill-bci
版本1.0.0
作者Hermes Agent + Nous Research
许可证MIT
标签BCI, neurofeedback, health, focus, EEG, cognitive-state, biometrics, neuroskill

参考:完整 SKILL.md

信息

以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理所看到的指令。

NeuroSkill BCI 集成

将 Hermes 连接到正在运行的 NeuroSkill 实例,以从 BCI 可穿戴设备读取实时大脑和身体指标。利用这些数据提供具有认知意识的响应、建议干预措施,并跟踪长期的心理表现。

⚠️ 仅限研究用途 — NeuroSkill 是一款开源研究工具。它不是医疗设备,也获得 FDA、CE 或任何监管机构的批准。切勿将这些指标用于临床诊断或治疗。

有关完整的指标参考,请参阅 references/metrics.md;有关干预协议,请参阅 references/protocols.md;有关 WebSocket/HTTP API,请参阅 references/api.md


前提条件

  • 已安装 Node.js 20+ (node --version)
  • 正在运行已连接 BCI 设备的 NeuroSkill 桌面应用程序
  • BCI 硬件:Muse 2、Muse S 或 OpenBCI(通过 BLE 连接的 4 通道 EEG + PPG + IMU)
  • npx neuroskill status 返回数据且无错误

验证设置

node --version                    # Must be 20+
npx neuroskill status # Full system snapshot
npx neuroskill status --json # Machine-parseable JSON

如果 npx neuroskill status 返回错误,请告知用户:

  • 确保 NeuroSkill 桌面应用程序已打开
  • 确保 BCI 设备已通电并通过蓝牙连接
  • 检查信号质量 — NeuroSkill 中的绿色指示器(每个电极 ≥0.7)
  • 如果显示 command not found,请安装 Node.js 20+

CLI 参考:npx neuroskill <command>

所有命令均支持 --json(原始 JSON,适合管道传输)和 --full(人类可读摘要 + JSON)。

命令描述
status完整系统快照:设备、评分、频段、比率、睡眠、历史记录
session [N]单次会话细分,包含前半段/后半段趋势(0=最近一次)
sessions列出所有天数中记录的所有会话
search用于查找神经相似历史时刻的 ANN 相似度搜索
compareA/B 会话比较,包含指标差异和趋势分析
sleep [N]睡眠阶段分类(清醒/N1/N2/N3/REM)及分析
label "text"在当前时刻创建带时间戳的注释
search-labels "query"对过去标签进行语义向量搜索
interactive "query"跨模态 4 层图搜索(文本 → EXG → 标签)
listen实时事件流式传输(默认 5 秒,设置 --seconds N
umap会话嵌入的 3D UMAP 投影
calibrate打开校准窗口并启动配置文件
timer启动专注计时器(Pomodoro/深度工作/短时专注预设)
notify "title" "body"通过 NeuroSkill 应用程序发送操作系统通知
raw '{json}'向服务器透传原始 JSON

全局标志

标志描述
--json原始 JSON 输出(无 ANSI,适合管道传输)
--full人类可读摘要 + 彩色 JSON
--port <N>覆盖服务器端口(默认:自动发现,通常为 8375)
--ws强制使用 WebSocket 传输
--http强制使用 HTTP 传输
--k <N>最近邻居数量(search, search-labels)
--seconds <N>listen 的持续时间(默认:5)
--trends显示每个会话的指标趋势(sessions)
--dotGraphviz DOT 输出(interactive)

1. 检查当前状态

获取实时指标

npx neuroskill status --json

始终使用 --json 以确保可靠解析。默认输出为彩色的人类可读文本。

响应中的关键字段

scores 对象包含所有实时指标(除非另有说明,范围为 0–1):

{
"scores": {
"focus": 0.70, // β / (α + θ) — sustained attention
"relaxation": 0.40, // α / (β + θ) — calm wakefulness
"engagement": 0.60, // active mental investment
"meditation": 0.52, // alpha + stillness + HRV coherence
"mood": 0.55, // composite from FAA, TAR, BAR
"cognitive_load": 0.33, // frontal θ / temporal α · f(FAA, TBR)
"drowsiness": 0.10, // TAR + TBR + falling spectral centroid
"hr": 68.2, // heart rate in bpm (from PPG)
"snr": 14.3, // signal-to-noise ratio in dB
"stillness": 0.88, // 0–1; 1 = perfectly still
"faa": 0.042, // Frontal Alpha Asymmetry (+ = approach)
"tar": 0.56, // Theta/Alpha Ratio
"bar": 0.53, // Beta/Alpha Ratio
"tbr": 1.06, // Theta/Beta Ratio (ADHD proxy)
"apf": 10.1, // Alpha Peak Frequency in Hz
"coherence": 0.614, // inter-hemispheric coherence
"bands": {
"rel_delta": 0.28, "rel_theta": 0.18,
"rel_alpha": 0.32, "rel_beta": 0.17, "rel_gamma": 0.05
}
}
}

还包括:device(状态、电池、固件)、signal_quality(每个电极 0–1)、session(持续时间、epochs)、embeddingslabelssleep 摘要和 history

解读输出

解析 JSON 并将指标转化为自然语言。切勿仅报告原始数字 — 务必赋予其意义:

正确做法:

“你现在的专注度很稳固,达到 0.70 — 这属于心流状态领域。心率稳定在 68 bpm,你的 FAA 为正值,这表明具有良好的趋近动机。现在是处理复杂任务的好时机。”

错误做法:

“专注度:0.70,放松度:0.40,心率:68”

关键解读阈值(完整指南参见 references/metrics.md):

  • Focus > 0.70 → 进入心流状态区域,请保护该状态
  • Focus < 0.40 → 建议休息或执行协议
  • Drowsiness > 0.60 → 疲劳警告,存在微睡眠风险
  • Relaxation < 0.30 → 需要进行压力干预
  • Cognitive Load > 0.70 sustained → 进行思维清空(mind dump)或休息
  • TBR > 1.5 → Theta 波主导,执行控制能力减弱
  • FAA < 0 → 退缩/负面情绪 — 考虑重新平衡 FAA
  • SNR < 3 dB → 信号不可靠,建议重新放置电极

2. 会话分析

单次会话细分

npx neuroskill session --json         # most recent session
npx neuroskill session 1 --json # previous session
npx neuroskill session 0 --json | jq '{focus: .metrics.focus, trend: .trends.focus}'

返回完整指标,包含前半段与后半段的趋势"up""down""flat")。 使用此功能描述会话的演变过程:

“你的专注力起始于 0.64,并在结束时攀升至 0.76——呈现明显的上升趋势。 认知负荷从 0.38 降至 0.28,表明随着你逐渐进入状态,任务变得更加自动化。”

列出所有会话

npx neuroskill sessions --json
npx neuroskill sessions --trends # show per-session metric trends

npx neuroskill search --json                    # auto: last session, k=5
npx neuroskill search --k 10 --json # 10 nearest neighbors
npx neuroskill search --start <UTC> --end <UTC> --json

通过在 128 维 ZUNA 嵌入向量上执行 HNSW 近似最近邻搜索,查找历史上神经状态相似的时刻。返回距离统计信息、时间分布(一天中的小时)以及最匹配的日子。

当用户提出以下问题时使用此功能:

  • “我上次处于类似状态是什么时候?”
  • “找出我专注力最好的会话”
  • “我通常在下午什么时候状态下滑?”
npx neuroskill search-labels "deep focus" --k 10 --json
npx neuroskill search-labels "stress" --json | jq '[.results[].EXG_metrics.tbr]'

使用向量嵌入(Xenova/bge-small-en-v1.5)搜索标签文本。返回匹配的标签及其在打标时刻关联的 EXG 指标。

npx neuroskill interactive "deep focus" --json
npx neuroskill interactive "deep focus" --dot | dot -Tsvg > graph.svg

4 层图结构:查询 → 文本标签 → EXG 数据点 → 附近标签。使用 --k-text--k-EXG--reach <minutes> 进行调优。


4. 会话比较

npx neuroskill compare --json                   # auto: last 2 sessions
npx neuroskill compare --a-start <UTC> --a-end <UTC> --b-start <UTC> --b-end <UTC> --json

返回约 50 个指标的指标差值,包括绝对变化、百分比变化和方向。还包括 insights.improved[]insights.declined[] 数组、两个会话的睡眠分期以及 UMAP 任务 ID。

结合上下文解读比较结果——提及趋势,而不仅仅是差值:

“昨天你有两个高强度的专注时段(上午 10 点和下午 2 点)。今天你从上午 11 点左右开始有一个专注时段,目前仍在持续。你今天的整体参与度更高,但出现了更多的压力峰值——你的压力指数跃升了 15%,且 FAA 更频繁地跌至负值。”

# Sort metrics by improvement percentage
npx neuroskill compare --json | jq '.insights.deltas | to_entries | sort_by(.value.pct) | reverse'

5. 睡眠数据

npx neuroskill sleep --json                     # last 24 hours
npx neuroskill sleep 0 --json # most recent sleep session
npx neuroskill sleep --start <UTC> --end <UTC> --json

返回逐 epoch 的睡眠分期(5 秒窗口)及分析:

  • 阶段代码:0=清醒, 1=N1, 2=N2, 3=N3 (深睡), 4=REM (快速眼动)
  • 分析指标:efficiency_pct (效率百分比), onset_latency_min (入睡潜伏期分钟数), rem_latency_min (REM 潜伏期分钟数), bout counts (片段计数)
  • 健康目标:N3 15–25%, REM 20–25%, 效率 >85%, 入睡潜伏期 <20 分钟
npx neuroskill sleep --json | jq '.summary | {n3: .n3_epochs, rem: .rem_epochs}'
npx neuroskill sleep --json | jq '.analysis.efficiency_pct'

当用户提及睡眠、疲倦或恢复时使用此功能。


6. 标记时刻

npx neuroskill label "breakthrough"
npx neuroskill label "studying algorithms"
npx neuroskill label "post-meditation"
npx neuroskill label --json "focus block start" # returns label_id

在以下情况自动标记时刻:

  • 用户报告突破或洞察
  • 用户开始新类型的任务(例如,“切换到代码审查”)
  • 用户完成重要的协议
  • 用户要求你标记当前时刻
  • 发生显著的状态转换(进入/离开心流)

标签存储在数据库中,并建立索引以便后续通过 search-labelsinteractive 命令检索。


7. 实时流式传输

npx neuroskill listen --seconds 30 --json
npx neuroskill listen --seconds 5 --json | jq '[.[] | select(.event == "scores")]'

在指定持续时间内流式传输实时 WebSocket 事件(EXG、PPG、IMU、评分、标签)。需要 WebSocket 连接(使用 --http 时不可用)。

将此用于连续监控场景,或在协议执行期间实时观察指标变化。


8. UMAP 可视化

npx neuroskill umap --json                      # auto: last 2 sessions
npx neuroskill umap --a-start <UTC> --a-end <UTC> --b-start <UTC> --b-end <UTC> --json

ZUNA 嵌入向量的 GPU 加速 3D UMAP 投影。separation_score 指示两个会话在神经层面的区分度:

  • > 1.5 → 会话在神经层面具有显著差异(不同的脑状态)
  • < 0.5 → 两个会话的脑状态相似

9. 主动状态感知

会话开始检查

在会话开始时,如果用户提到他们佩戴了设备或询问其状态,可选择运行状态检查:

npx neuroskill status --json

注入简短的状态摘要:

“快速检查:专注力正在构建中,值为 0.62,放松程度良好,值为 0.55,且你的 FAA 为正——接近动机已激活。看起来开局不错。”

何时主动提及状态

在以下情况下提及认知状态:

  • 用户明确询问(“我表现如何?”,“检查我的专注力”)
  • 用户报告难以集中注意力、压力大或疲劳
  • 跨越关键阈值(嗜睡 > 0.70,专注力持续 < 0.30)
  • 用户即将进行高认知需求的活动并询问准备情况

不要为了报告指标而打断心流状态。如果专注力 > 0.75,请保护会话——沉默是正确的回应。


10. 建议协议

当指标表明有需要时,从 references/protocols.md 中建议一个协议。 开始前务必询问——切勿打断心流状态:

“过去 15 分钟内,您的专注力一直在下降,且 TBR(Theta-Beta 比率)已攀升至 1.5 以上——这是 Theta 波主导和精神疲劳的迹象。需要我引导您进行 Theta-Beta 神经反馈锚定练习吗?这是一个 90 秒的练习,通过有节奏的 计数和呼吸来抑制 Theta 波并提升 Beta 波。”

关键触发条件:

  • 专注力 < 0.40,TBR > 1.5 → Theta-Beta 神经反馈锚定练习或箱式呼吸法
  • 放松度 < 0.30,stress_index(压力指数)高 → 心脏相干性或 4-7-8 呼吸法
  • 认知负荷 > 0.70 且持续 → 认知负荷卸载(思维倾倒)
  • 困倦度 > 0.60 → 超日节律重置或清醒重置
  • FAA < 0(负值) → FAA 再平衡
  • 心流状态(专注力 > 0.75,参与度 > 0.70) → 请勿打断
  • 高静止度 + headache_index(头痛指数) → 颈部释放序列
  • 低 RMSSD(< 25ms) → 迷走神经张力训练

11. 其他工具

专注力计时器

npx neuroskill timer --json

启动专注力计时器窗口,提供番茄工作法(25/5)、深度工作(50/10)或 短时专注(15/5)预设。

校准

npx neuroskill calibrate
npx neuroskill calibrate --profile "Eyes Open"

打开校准窗口。当信号质量较差或用户希望建立个性化基线时非常有用。

操作系统通知

npx neuroskill notify "Break Time" "Your focus has been declining for 20 minutes"

原始 JSON 透传

npx neuroskill raw '{"command":"status"}' --json

适用于任何尚未映射到 CLI 子命令的服务器命令。


错误处理

错误可能原因修复方法
npx neuroskill status 挂起NeuroSkill 应用未运行打开 NeuroSkill 桌面应用
device.state: "disconnected"BCI 设备未连接检查蓝牙和设备电池
所有评分返回 0电极接触不良重新定位头带,湿润电极
signal_quality 值 < 0.7电极松动调整佩戴,清洁电极接触点
SNR < 3 dB信号噪声大减少头部移动,检查环境
command not found: npx未安装 Node.js安装 Node.js 20+

交互示例

“我现在状态如何?”

npx neuroskill status --json

→ 自然地解读评分,提及专注力、放松度、情绪以及任何值得注意的 比率(FAA、TBR)。仅在指标表明有必要时才建议采取行动。

“我无法集中注意力”

npx neuroskill status --json

→ 检查指标是否证实这一点(高 Theta 波、低 Beta 波、上升的 TBR、高困倦度)。 → 如果确认,建议从 references/protocols.md 中选择适当的方案。 → 如果指标正常,问题可能源于动机而非神经生理因素。

“比较我今天和昨天的专注力”

npx neuroskill compare --json

→ 解读趋势,而不仅仅是数字。提及哪些方面有改善,哪些方面有所下降,以及 可能的原因。

“我上一次处于心流状态是什么时候?”

npx neuroskill search-labels "flow" --json
npx neuroskill search --json

→ 报告时间戳、相关指标以及用户当时正在做的事情(来自标签)。

“我睡得怎么样?”

npx neuroskill sleep --json

→ 报告睡眠结构(N3%、REM%、效率),与健康目标进行比较, 并注意任何问题(高觉醒时段、低 REM 睡眠)。

“标记此刻——我刚刚取得了突破”

npx neuroskill label "breakthrough"

→ 确认标签已保存。可选地记录当前指标以记住该状态。


参考资料