Skip to content

wangyaominde/auto_report

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WorkLog 自动工作日报

1. 项目简介

WorkLog 是一个基于窗口活动采集的自动工作日报生成工具:

  • 周期性采集当前前台应用与窗口标题
  • 将停留时长写入本地 SQLite
  • 退出时自动调用 MiniMax 生成日报(Markdown)
  • 支持按日期回放当天数据生成日报

当前逻辑为单文件实现,核心脚本:claude_auto_report_code_minimax.py


2. 目录结构

  • claude_auto_report_code_minimax.py:主程序
  • requirements.txt:依赖列表
  • .gitignore:忽略 venv、缓存等
  • ~/.worklog/activity.db:本地数据库(运行时自动创建)
  • ./reports/:日报输出目录(运行时自动创建)

3. 环境要求

  • Python 3.9+(推荐使用项目内 venv
  • macOS / Windows / Linux(支持对应系统窗口采集命令/API)
  • macOS 需开启辅助功能权限(辅助功能/可访问性)
  • Windows 需安装 psutilpywin32
  • Linux 需安装 xdotool

4. 安装与运行

4.1 安装依赖

cd /Users/wangyaomin/Downloads/Projects/AI项目/auto_report
./venv/bin/python3 -m pip install -r requirements.txt

说明:若你在 Windows 上直接运行,请再补充安装:

./venv/bin/python3 -m pip install psutil pywin32

4.2 配置 API Key

# 推荐:通用配置(推荐)
export LLM_API_URL="https://api.openai.com/v1/chat/completions"
export LLM_API_KEY="你的 LLM API Key"
export LLM_MODEL="gpt-4o-mini"

# 兼容历史配置(可继续使用)
export MINIMAX_API_KEY="你的 MiniMax API Key"
export MINIMAX_API_URL="https://api.minimaxi.com/v1/text/chatcompletion_v2"
export MINIMAX_MODEL="MiniMax-M2.5-highspeed"

说明:

  • 新用户优先使用 LLM_* 系列环境变量,可接入兼容 v1/chat/completions 风格的接口。
  • 脚本内部会优先读取 LLM_API_URL / LLM_API_KEY / LLM_MODEL
  • 若未配置 LLM_*,自动回退到旧的 MINIMAX_* 变量,确保兼容。

4.3 启动采集(推荐)

./venv/bin/python3 claude_auto_report_code_minimax.py
  • 程序会开始采集窗口活动
  • Ctrl+C 结束时自动生成日报
  • 默认不显示实时窗口滚动面板;需要实时视图请加 --verbose

4.4 直接按日期生成日报(参数可选)

./venv/bin/python3 claude_auto_report_code_minimax.py --report   # 生成今天日报(不带参数)
./venv/bin/python3 claude_auto_report_code_minimax.py --report 2026-02-24
./venv/bin/python3 claude_auto_report_code_minimax.py --monthly-report   # 生成当月月报(不带参数)
./venv/bin/python3 claude_auto_report_code_minimax.py --monthly-report 2026-02

5. 关键配置

在脚本顶部常量区可调参数:

  • LLM_API_URL:LLM 接口地址(默认兼容 MiniMax)
  • LLM_MODEL:模型,默认 MiniMax-M2.5-highspeed(兼容旧字段 MINIMAX_MODEL
  • DB_PATH:数据库路径(默认 ~/.worklog/activity.db
  • REPORT_DIR:日报目录(默认 ./reports
  • COLLECT_INTERVAL:采集周期(默认 5 秒)
  • MIN_DURATION:最小有效记录时长(默认 5 秒)
  • WINDOW_STABLE_COUNT:窗口稳定判定次数(默认 1)
  • FLUSH_INTERVAL:当前窗口周期落盘间隔(默认 30 秒)
  • WORKLOG_RETENTION_DAYS:历史记录保留天数(默认 31 天)
  • WORKLOG_CLEANUP_INTERVAL_SECONDS:滚动清理间隔(默认 3600 秒,最低 60 秒)
  • WORKLOG_ACTIVITY_LOG:可选,设置为 1/true 时输出窗口活动明细日志(默认关闭)
  • WORKLOG_VERBOSE:可选,设置为 1/true 时开启实时窗口显示(默认关闭)
  • WORKLOG_PROGRESS_BAR:可选,默认跟随 WORKLOG_VERBOSE,设置为 0/false 可关闭实时窗口显示
  • WORKLOG_PROGRESS_INTERVAL:可选,非交互终端下仅当窗口变化或超时(秒)时刷新一次(默认 5)
  • WORKLOG_RECENT_RECORDS:可选,终端进度面板里保留最近多少条历史记录(默认 8)

--verbose(或 WORKLOG_VERBOSE=1)时会额外显示当前窗口及最近窗口记录;默认不显示。

黑名单

BLACKLIST 列表内应用/标题关键字不会计入日报,例如:

  • B站/抖音/淘宝/京东/微博
  • YouTube/Netflix/Spotify/Apple Music
  • App Store、Finder、系统设置等

可按需增删该列表。


6. 输出说明

日报包含三部分,并且最终会保存为 Markdown 文件(不在控制台展开全文):

  1. 日期与总有效时长
  2. 应用汇总(含窗口级明细)
  3. 时间线(按小时)
  4. 交给 LLM 生成的结构化日报(## 今日工作 / 进行中 / 备注

保存文件示例:

  • ./reports/daily-report-YYYY-MM-DD.md
  • 终端输出示例:日报已写入 Markdown:.../daily-report-YYYY-MM-DD.md

7. 常见问题(FAQ)

7.1 为什么部分应用显示为 0 分钟?

因为时长显示策略按更细粒度保留了秒级信息;早期版本四舍五入分钟会出现“0分钟”的错觉。

7.2 为什么启动报依赖错误?

检查 venv 是否激活,或使用项目解释器直接执行:

./venv/bin/python3 ...

7.3 为什么关机/重启后会丢数据?

工具已支持周期落盘(FLUSH_INTERVAL)和退出时落盘兜底,但像 SIGKILL 的硬终止仍可能无法完全避免。

7.4 是否能在 Linux/macOS 环境下直接运行?

支持,但需满足平台命令:

  • macOS:osascript
  • Linux:xdotoolgetactivewindow
  • Windows:psutilpywin32pip install psutil pywin32

8. 卸载与清理

rm -rf ~/.worklog

仅清理本地采集数据,不影响脚本本身。


9. 安全提示

  • 不要将真实密钥写入代码文件
  • 当前版本优先读取 LLM_API_KEY,若未设置会回退 MINIMAX_API_KEY
  • .gitignore 已默认忽略虚拟环境与本地产物

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors