1. 项目概述:为什么我们需要工作轨迹记录器?
上周三凌晨两点,当我第5次被老板的电话惊醒询问"上周四下午3点你在处理什么任务"时,我终于下定决心要开发这个工具。Work Review(工作轨迹记录器)本质上是一个全天候运行的背景进程,它会自动捕获你在电脑上的所有工作活动,生成可视化时间线,并支持按项目/日期/应用类型进行智能分类。
这个工具解决的核心痛点是:现代职场人每天要处理数十个碎片化任务,到写周报或述职时却想不起具体工作内容。传统的时间追踪工具(如Toggl)需要手动启停,而屏幕监控软件又过于侵犯隐私。我的方案是在记录精度和隐私保护之间找到平衡点——只记录应用窗口标题、活动时长等元数据,不存储具体内容。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能设计思路
2.1 数据采集层设计
在Windows平台使用Win32 API的GetForegroundWindow持续检测活动窗口,通过GetWindowText获取窗口标题。关键代码片段:
cpp复制// 每30秒触发一次检测
void TrackActiveWindow() {
HWND hwnd = GetForegroundWindow();
char windowTitle[256];
GetWindowText(hwnd, windowTitle, sizeof(windowTitle));
LogActivity(windowTitle); // 写入SQLite数据库
}
注意:不要使用截图或键盘记录等敏感方式,这会导致法律风险。我们只记录"Chrome-产品需求文档"这样的标题,而非具体浏览内容。
2.2 智能分类算法
通过正则表达式匹配窗口标题中的关键信息:
- 项目标识:
/\[PRJ:(.*?)\]/匹配自定义项目标签 - 文档类型:
/(PPT|DOC|XLS)/i识别Office文件类型 - 网站域名:
/(\w+\.com)/提取访问的网站
分类规则优先级:
- 手动标记的项目标签(最高优先级)
- 文档/会议/邮件等预设类型
- 根据历史记录的自动归类
3. 技术实现细节
3.1 数据存储方案
使用SQLite作为本地数据库,表结构设计:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 自增主键 |
| timestamp | DATETIME | 记录时间 |
| window_title | TEXT | 窗口完整标题 |
| app_name | TEXT | 提取的应用名 |
| activity_type | TEXT | 分类结果 |
| duration | INTEGER | 活动时长(秒) |
3.2 可视化报表生成
基于Python的Matplotlib生成三种视图:
- 时间线视图:横向条形图显示不同任务的时间分布
- 项目占比图:环形图展示各项目耗时比例
- 效率曲线:折线图反映全天专注度变化
python复制def generate_timeline(df):
fig, ax = plt.subplots(figsize=(12,6))
for i, (project, group) in enumerate(df.groupby('activity_type')):
ax.broken_barh(group[['start','duration']], (i-0.4,0.8),
facecolors=COLOR_MAP[project])
ax.set_yticks(range(len(projects)))
ax.set_yticklabels(projects)
4. 隐私保护机制
4.1 敏感信息过滤
在存储前对以下内容进行脱敏处理:
- 邮件标题中的收件人/发件人
- 文档路径中的用户名
- 聊天软件窗口中的联系人名
4.2 本地化存储策略
所有数据仅保存在本地加密数据库(AES-256),可选择同步到私有云,但必须明确告知用户:
- 不会上传任何屏幕内容
- 原始数据保留7天后自动压缩归档
- 支持一键永久删除历史记录
5. 实际使用案例
5.1 日报自动生成
设置定时任务每天18:00生成当日工作报告模板:
code复制2023-08-20 工作总结
------------------
[开发] PRJ-API优化 (3.2h)
- VS Code编写接口代码 (2.1h)
- Postman测试接口 (0.8h)
- Git提交记录 (0.3h)
[会议] 需求评审会 (1.5h)
- Teams会议 (1.5h)
[学习] Rust语言基础 (0.7h)
- 阅读《Rust编程》电子书 (0.7h)
5.2 工作效率分析
通过持续记录发现:
- 每次切换任务平均需要8分钟重新进入状态
- 下午2-4点效率低谷期(错误率上升37%)
- 周三是一周中产出最高的工作日
6. 常见问题解决方案
6.1 误分类修正
当系统错误地将"Chrome-查看天气预报"归类为"市场调研"时:
- 右键错误记录选择"重新分类"
- 创建新规则:"标题包含'天气预报'→分类为'个人事务'"
- 勾选"应用到历史数据"
6.2 多显示器支持
对于使用多台显示器的情况:
- 主显示器活动窗口优先记录
- 可设置快捷键手动切换记录目标
- 外接显示器断开时自动fallback到主屏
7. 进阶使用技巧
7.1 项目时间预算
在配置文件中设置:
json复制{
"projects": {
"PRJ-前端重构": {
"weekly_hours": 15,
"alert_threshold": 0.8
}
}
}
当某项目耗时达到预算的80%时,系统会弹出提醒。
7.2 IDE深度集成
针对开发者特别优化:
- 识别VSCode/IntelliJ的git分支信息
- 记录调试会话的起止时间
- 统计不同语言代码的编写时长
这个工具我已经持续使用6个月,最大的收获是终于能理直气壮地回答"时间都花在哪了"这个问题。现在团队里有12个同事都在用我的编译版,下一步计划加入多设备同步功能——当然,依然会坚持隐私优先的设计原则。
