最完整的Selfspy使用指南:从安装到个人数据分析全攻略
读完你将掌握
- 3分钟完成跨平台安装(Linux/macOS/Windows)
- 10个核心命令玩转个人活动追踪
- 5类统计报表生成效率分析报告
- 数据加密与隐私保护实战方案
- 自定义SQL查询挖掘隐藏行为模式
为什么需要Selfspy?
你是否曾经历过:
- 加班后想不起上午处理过的文档标题?
- 周报时无法准确统计各项目耗时占比?
- 想优化工作流却缺乏客观行为数据支持?
Selfspy作为一款开源的个人活动记录工具,通过后台数据采集,帮助你量化电脑使用行为。它不同于普通键盘记录器,而是构建了完整的个人活动数据库,支持从进程、窗口、键盘、鼠标等多维度进行事后分析。
安装指南:3步搞定全平台部署
系统兼容性矩阵
| 操作系统 | 支持版本 | 核心依赖 | 安装难度 |
|---|---|---|---|
| Ubuntu | 18.04+ | python-xlib | ★☆☆☆☆ |
| macOS | 10.9+ | PyObjC | ★★☆☆☆ |
| Windows | 7/10 | pyHook | ★★★☆☆ |
| Arch | 滚动更新 | AUR包 | ★☆☆☆☆ |
Linux快速安装
# Ubuntu/Debian
sudo apt-get install python-tk subversion
svn checkout https://python-xlib.svn.sourceforge.net/svnroot/python-xlib/tags/xlib_0_15rc1/
cd xlib_0_15rc1
sudo python setup.py install
cd ..
git clone https://gitcode.com/gh_mirrors/se/selfspy
cd selfspy
sudo python setup.py install
macOS特殊配置
# 安装依赖
brew install python
pip install pyobjc-framework-Quartz
# 启用辅助功能
open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
# 复制启动项
cp com.github.gurgeh.selfspy.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.github.gurgeh.selfspy.plist
Windows预编译依赖
由于Windows平台编译pyHook和pyCrypto困难,推荐使用预编译包:
- 下载pyHook: SourceForge
- 下载pyCrypto: Voidspace
- 安装pyWin32: SourceForge
核心功能详解:5个维度掌控使用方法
1. 启动参数全解析
selfspy [选项]
-h, --help 显示帮助信息
-c FILE 指定配置文件路径
-p PASSWORD 加密密码(留空则不加密)
-d DATA_DIR 数据存储目录(默认~/.selfspy)
-n, --no-text 不记录输入文本(提高隐私性)
-r, --no-repeat 不记录重复特殊字符
--change-password 修改数据库加密密码
2. 数据库架构探秘
Selfspy使用SQLite数据库存储所有活动,核心表结构如下:
3. 数据加密机制
默认情况下,Selfspy使用Blowfish算法加密敏感文本数据:
# 加密实现(models.py)
def maybe_encrypt(s, other_encrypter=None):
if other_encrypter is not None:
s = pad(s, 8)
s = other_encrypter.encrypt(s)
elif ENCRYPTER:
s = pad(s, 8)
s = ENCRYPTER.encrypt(s)
return s
4. 活动记录流程
- 屏幕变化检测:通过sniffer模块监控窗口切换
- 输入捕获:记录键盘事件和鼠标动作
- 数据缓存:临时存储事件直到达到提交阈值
- 事务提交:定期将缓存数据写入数据库
5. 进程间通信
selfstats数据分析:10个实用案例
基础统计命令
# 显示今日活动概览
selfstats --back 24 h --ratios
# 按进程统计活动时间
selfstats --pactive --back 7 d
# 按窗口标题统计键盘输入
selfstats --tkeys --back 1 w
案例1:恢复丢失的文本
# 查找30分钟内的所有输入文本
selfstats --back 30 m --showtext --human-readable
# 筛选特定窗口内容(如Chrome中的编辑框)
selfstats -P "Google-chrome" -T "编辑" --showtext
案例2:生成周活动报告
# 每周一发送上周报告到邮箱
0 9 * * 1 selfstats --back 7 d --pactive --tactive | mail -s "上周活动报告" your@email.com
案例3:按键频率分析
# 分析Emacs中C++开发的按键使用频率
selfstats --key-freqs -P Emacs -T "cpp" --back 30 d
案例4:效率分析看板
高级应用:自定义查询与扩展
直接操作数据库
-- 查找最活跃的工作时段
SELECT strftime('%H', created_at) as hour, COUNT(*) as events
FROM keys
WHERE created_at > date('now', '-7 days')
GROUP BY hour
ORDER BY events DESC;
Python查询脚本示例
from selfspy import models
# 初始化数据库连接
session = models.initialize("/home/user/.selfspy/selfspy.sqlite")()
# 查询今日Emacs使用时间
emacs_process = session.query(models.Process).filter_by(name="Emacs").first()
if emacs_process:
keys = session.query(models.Keys).filter(
models.Keys.process_id == emacs_process.id,
models.Keys.created_at >= datetime.datetime.today().replace(hour=0, minute=0, second=0)
).all()
total_keys = sum(len(k.load_timings()) for k in keys)
print(f"今日Emacs按键次数: {total_keys}")
数据可视化扩展
import matplotlib.pyplot as plt
from selfspy import models
# 绘制每小时活动曲线
hourly_data = [0]*24
for key in session.query(models.Keys):
hour = key.created_at.hour
hourly_data[hour] += len(key.load_timings())
plt.plot(hourly_data)
plt.xlabel('Hour of day')
plt.ylabel('Keystrokes')
plt.savefig('hourly_activity.png')
隐私与安全:保护你的数据
加密设置最佳实践
- 密码策略:使用强密码并定期更换
selfspy --change-password - 选择性记录:使用--no-text选项仅记录元数据
- 数据备份:定期加密备份数据库文件
gpg -c ~/.selfspy/selfspy.sqlite
安全风险防范
- 物理访问控制:确保终端锁定
- 网络防护:数据库文件禁止共享
- 审计日志:定期检查异常访问模式
常见问题解决
安装问题
| 错误 | 解决方案 |
|---|---|
| pyHook安装失败 | 安装预编译版本或升级setuptools |
| RECORD extension not found | 安装xorg-dev包并重启X服务器 |
| 辅助功能权限问题 | 在系统偏好设置中手动添加权限 |
运行时问题
- 高CPU占用:检查是否有异常窗口切换
- 数据库损坏:执行
sqlite3 selfspy.sqlite "PRAGMA integrity_check" - 时区问题:确保系统时区设置正确
总结与展望
Selfspy不仅是一款活动记录工具,更是个人数据分析的强大平台。通过本文介绍的方法,你可以:
- 建立个人行为数据库
- 量化评估工作效率
- 发现隐藏的时间浪费
- 优化电脑使用习惯
未来发展方向:
- 机器学习行为模式识别
- 实时效率建议
- 多设备同步分析
- 更强大的数据可视化
立即开始你的量化自我之旅,用数据驱动个人效率提升!
点赞+收藏+关注,不错过后续高级技巧分享!下期预告:《Selfspy数据可视化高级教程》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



