Screen Reviewer — 电脑行为复盘助手
自动截图 → 结构化日志 → AI 每日复盘报告。
File Locations
- - Scripts:
scripts/ (relative to this skill directory) - Data:
~/.screen-reviewer/ (screenshots, logs, reports, config) - Config: INLINECODE2
- Reports: INLINECODE3
- Venv Python: INLINECODE4
Quick Reference
All commands use service_manager.py. Use venv Python to run:
CODEBLOCK0
Setup (first time)
Run from the repo root:
CODEBLOCK1
After setup, grant Screen Recording and Accessibility permissions:
System Settings → Privacy & Security → Screen Recording → enable Terminal/Python.
Configuration
Edit ~/.screen-reviewer/config.yaml:
| Key | Default | Description |
|---|
| INLINECODE7 | 5 | Screenshot interval |
| INLINECODE8 |
true | Skip unchanged frames |
|
capture.change_threshold | 5 | Min % pixel change to keep frame |
|
capture.jpeg_quality | 60 | JPEG quality (lower = smaller files) |
|
privacy.blacklist_apps | [1Password, ...] | Apps to skip |
|
ocr.enabled | true | Enable text extraction |
|
report.ai_provider | openai | openai / claude / ollama |
|
report.ai_model | gpt-4o-mini | Model name |
|
report.api_key_env | OPENAI
APIKEY | Env var holding the API key |
|
report.generation_hour | 8 | Auto-report time (with launchd) |
|
cleanup.keep_days | 3 | Days to keep screenshots |
|
categories.* | see config | App → value-tier mapping for ROI |
How It Works
- 1. Capture loop (every 5s): screenshot → detect change → get window info → OCR → JSONL log
- Daily report (8 AM or on-demand): aggregate logs → classify apps → AI generates Markdown report
- Cleanup (with report): delete screenshot dirs older than 3 days
Log Format
Each line in ~/.screen-reviewer/logs/YYYY-MM-DD.jsonl:
CODEBLOCK2
Troubleshooting
| Issue | Fix |
|---|
| No screenshots | Grant Screen Recording permission |
| No window titles |
Grant Accessibility permission |
| OCR returns empty | Re-run
bash install.sh to recompile Swift tool |
| Report fails | Set AI API key:
export OPENAI_API_KEY=sk-... |
| Daemon won't start | Check
~/.screen-reviewer/logs/daemon_stderr.log |
When User Asks To...
- - Start monitoring: Run INLINECODE23
- See today's activity: Run
service_manager.py status, then read today's log - Generate review: Run INLINECODE25
- Change settings: Edit INLINECODE26
- Add app to blacklist: Append to
privacy.blacklist_apps in config - Check disk usage: INLINECODE28
屏幕审查器 — 电脑行为复盘助手
自动截图 → 结构化日志 → AI 每日复盘报告。
文件位置
- - 脚本: scripts/(相对于本技能目录)
- 数据: ~/.screen-reviewer/(截图、日志、报告、配置)
- 配置: ~/.screen-reviewer/config.yaml
- 报告: ~/.screen-reviewer/reports/YYYY-MM-DD-review.md
- 虚拟环境 Python: ~/.screen-reviewer/venv/bin/python
快速参考
所有命令均使用 service_manager.py。使用虚拟环境 Python 运行:
bash
VENV=~/.screen-reviewer/venv/bin/python
SCRIPTS=<本技能目录>/scripts
$VENV $SCRIPTS/service_manager.py start # 启动捕获守护进程
$VENV $SCRIPTS/service_manager.py stop # 停止守护进程
$VENV $SCRIPTS/service_manager.py status # 检查状态 + 今日统计
$VENV $SCRIPTS/service_manager.py pause # 暂停(守护进程保持运行)
$VENV $SCRIPTS/service_manager.py resume # 恢复捕获
$VENV $SCRIPTS/service_manager.py report # 昨日报告
$VENV $SCRIPTS/service_manager.py report 2026-03-22 # 指定日期
$VENV $SCRIPTS/service_manager.py cleanup # 删除超过3天的截图
$VENV $SCRIPTS/service_manager.py install # 安装 macOS 自动启动
$VENV $SCRIPTS/service_manager.py uninstall # 移除自动启动
设置(首次使用)
在仓库根目录运行:
bash
bash install.sh
设置完成后,授予屏幕录制和辅助功能权限:
系统设置 → 隐私与安全性 → 屏幕录制 → 启用终端/Python。
配置
编辑 ~/.screen-reviewer/config.yaml:
| 键 | 默认值 | 描述 |
|---|
| capture.intervalseconds | 5 | 截图间隔 |
| capture.smartdetect |
true | 跳过未变化的帧 |
| capture.change_threshold | 5 | 保留帧的最小像素变化百分比 |
| capture.jpeg_quality | 60 | JPEG 质量(越低文件越小) |
| privacy.blacklist_apps | [1Password, ...] | 要跳过的应用 |
| ocr.enabled | true | 启用文本提取 |
| report.ai_provider | openai | openai / claude / ollama |
| report.ai_model | gpt-4o-mini | 模型名称 |
| report.api
keyenv | OPENAI
APIKEY | 存放 API 密钥的环境变量 |
| report.generation_hour | 8 | 自动报告时间(配合 launchd) |
| cleanup.keep_days | 3 | 截图保留天数 |
| categories.* | 见配置 | 应用 → 价值层级映射(用于 ROI) |
工作原理
- 1. 捕获循环(每5秒):截图 → 检测变化 → 获取窗口信息 → OCR → JSONL 日志
- 每日报告(上午8点或按需):汇总日志 → 分类应用 → AI 生成 Markdown 报告
- 清理(随报告执行):删除超过3天的截图目录
日志格式
~/.screen-reviewer/logs/YYYY-MM-DD.jsonl 中的每一行:
json
{timestamp:2026-03-22T14:30:05,app:Cursor,windowtitle:capturedaemon.py,screenshot:screenshots/2026-03-22/14-30-05.jpg,ocr_text:def main():...}
故障排除
授予辅助功能权限 |
| OCR 返回空 | 重新运行 bash install.sh 重新编译 Swift 工具 |
| 报告失败 | 设置 AI API 密钥:export OPENAI
APIKEY=sk-... |
| 守护进程无法启动 | 检查 ~/.screen-reviewer/logs/daemon_stderr.log |
当用户要求...
- - 开始监控:运行 servicemanager.py start
- 查看今日活动:运行 servicemanager.py status,然后读取今日日志
- 生成复盘:运行 servicemanager.py report [日期]
- 更改设置:编辑 ~/.screen-reviewer/config.yaml
- 将应用加入黑名单:在配置中的 privacy.blacklistapps 追加
- 检查磁盘使用情况:du -sh ~/.screen-reviewer/screenshots/