2026-10-09 校注:星数、覆盖率及“已验证可用”为七月采集记录或项目自述,本次未复跑。参见 pynput 平台限制、压力原型 README、WakaTime CLI 与 Wakapi。
🔧 humon — 现有轮子调研报告
humon(Human State Monitor)扩展维度:部分开源方案的调研样本(非穷尽目录)
1. 键盘/鼠标行为 → 状态推断
⭐ stress-tracker-ai
URL: https://github.com/alwaysvivek/stress-tracker-ai 栈: Python, ML 说明: 作者宣称可在本地以鼠标/按键特征和 Ollama 推断压力;不是经本次验证的心理状态测量或临床工具。 可抄: 鼠标移动路径/点击模式 → 压力分数的推断管道。数据采集层直接用
🔍 user-action-monitoring
URL: https://github.com/vky29/user-action-monitoring 栈: Python, pynput 说明: 记录鼠标点击和按键,可用于可用性测试 可抄: pynput 采集层(跨平台键盘/鼠标事件监听)
🔍 pynput / keyboard / mouse(库级)
URL: https://github.com/moses-palmer/pynput (1.5k⭐)
栈: Python
说明: 跨平台键盘鼠标事件监听库。pynput.mouse.Listener / pynput.keyboard.Listener
可参考: pynput 事件接口;Wayland 下通常仅能观察 XWayland 应用,不能保证全桌面采集。接入还需处理权限、用户授权、隐私与服务生命周期。
🔍 Keystroke Dynamics(学术方向)
说明: 按键节奏生物识别的学术领域。打字速度、退格率、键间延迟 → 情绪/疲劳推断 可抄: 论文实现的公开数据集 + 特征工程代码
2. 深度工作/心流追踪
⭐ ActivityWatch (17.9k⭐) ⬅ 核心参考
URL: https://github.com/ActivityWatch/activitywatch 栈: Python(后端)+ Vue(前端)+ SQLite 说明: 跨平台自动时间追踪。watcher 架构,REST API 可抄:
aw-watcher-window→ 活跃窗口追踪(xprop/xdotool)aw-watcher-afk→ AFK 检测(X11 idle time / GetLastInputInfo)aw-watcher-web→ 浏览器活动- 数据模型:buckets → events 结构
- REST API 设计模式
3. 屏幕时间/生产力追踪(self-hosted)
⭐ karlicoss/HPI (1.6k⭐)
URL: https://github.com/karlicoss/HPI
栈: Python
说明: “Human Programming Interface” — 聚合 30+ 个人数据源
可抄: 多源数据聚合架构、my.* 模块化设计
🔍 WakaTime(开源版)
URL: https://github.com/wakatime/wakatime-cli 栈: Go(当前 CLI) 说明: WakaTime CLI 是数据采集客户端;自托管后端可参考 https://github.com/muety/wakapi ,两者不是同一个组件。原仓库链接本次返回 404。 可抄: IDE 插件架构和 heartbeat 数据模型
4. 人类状态推断(情绪/精力/压力)
stress-tracker-ai 直接匹配。mood-tracker topic 多数是手动记录。本次样本不足以证明“没有成熟方案”,也不能仅凭活动信号确认内在情绪。Humon 的 LLM 推断是设计选择,准确性需独立评估。
5. AFK/空闲检测 + 上下文切换
⭐ aw-watcher-afk / aw-watcher-window
直接从 ActivityWatch 子项目复制 idle 检测代码:
- Linux:
xprintidle/XScreenSaverQueryInfo - Windows:
GetLastInputInfoAPI - macOS:
CGEventSourceSecondsSinceLastEvent
上下文切换频率:humon 已有窗口切换数据,加时间戳差值即可,仍需实现聚合、去重与口径校验。
6. 可穿戴数据导入(HRV/心率/睡眠)
| 库 | ⭐ | 用途 |
|---|---|---|
| HeartPy | 400 | PPG 心率 + HRV 分析 |
| neurokit2 | 1.5k | ECG/PPG/EDA 全栈生物信号 |
| apple-health-parser | — | Apple Watch 导出 XML 解析 |
| ouraring | — | Oura Ring API 客户端 |
| sleep-analysis | — | 睡眠相位检测 |
7. 游戏化引擎(补充)
- awesome-gamified-life — 50 行 Flask+SQLite 核心循环,已验证可用
- eighty-mcp-examples — 35 tools 游戏化 MCP server
- Ragde54/habit_tracker_mcp — SQLAlchemy + 95% 测试覆盖
8. 推荐整合策略
以下只是未实施的粗略行数估算;分项合计 240 行,未计测试、权限、配置及集成。
P0 → pynput 接入鼠标/键盘事件 (10 行)
P0 → 窗口标题采集(替代进程名) (30 行, aw-watcher-window 参考)
P0 → AFK idle 检测 (20 行, aw-watcher-afk 逻辑)
P1 → 上下文切换频率 (0 行新采集, 差值计算)
P1 → 退格率/打字速度→卡壳 (30 行, pynput 增强)
P2 → 可穿戴数据管道 (50 行)
P2 → 干预反馈闭环 (100 行)
结论:ActivityWatch 是最大抄作业对象。 其 aw-watcher-* 可直接替换或增强 humon collector。pynput 和 neurokit2 是库级依赖。LLM 推断并非 Humon 独有;不能把这些原型建议当作已完成集成。