Skip to content

lihuithe/pc-log-activity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pc-log-activity(桌面活动记录与衍生工具)

项目做什么

目标不是简单「录屏留档」,而是把多屏画面经多模态模型转成可机读的时间线log/activity_*.json),供后续做工作节奏分析、复盘、以及若干主动服务(右下角建议、待办建议、工作汇报等)。

数据流简述:

  1. main.py 按间隔截图 → 调用火山方舟 Responses API(多模态) → 写入活动 JSON。
  2. 其它脚本读取同一 log/ 目录,做文本汇总、主动建议、待办、飞书/HTML 汇报等(多数走方舟 文本 API)。

平台:代码针对 Windows(截图、托盘、注册表自启、鼠标坐标、全局快捷键等)。其它系统未适配。


环境与安装

  • Python:3.10+
  • 在项目根目录执行:
pip install -r requirements.txt

requirements.txt 当前包含:

用途
requests HTTP 调用方舟 API
Pillow 图像处理、托盘图标
pystray 系统托盘
keyboard 工作分析模块的全局快捷键(若缺失则热键不可用)
sounddevice 麦克风录制(WASAPI)
numpy 录音与波形

安装后,各脚本的依赖即齐全(麦克风录制不再需单独装包)。


火山方舟 API 与 integrations.json

各 GUI 共用同目录 integrations.json 中的 ark_api_key(界面可保存)。

  • 优先级:环境变量 ARK_API_KEY 优先于文件。
  • 安全:勿将 integrations.json 提交到公开仓库或随分发包泄露(仓库 .gitignore 已忽略该文件)。

API 端点与请求体形态可参考根目录 火山llm调用示例.md(curl 示例)。


程序一览

文件 角色
main.py 主程序:多显示器截图、方舟多模态分析、GUI、托盘、并发 LLM 队列、鼠标静止跳过等。
integrations_config.py 集成配置库(不可直接当入口):读写 integrations.json,供各脚本导入。
proactive_coach_tray.py 主动建议:随机间隔读日志摘要 → 文本模型 → 右下角 tk 弹窗;可写 notice.log
proactive_todo_tray.py 主动待办:定时结合活动摘要与待办清单,模型输出 JSON 建议,界面验收管理。
work_analysis_feishu_tray.py 工作分析:快捷键或定时触发,拼接日志 → 分析;飞书 Webhook 或本地单文件 HTML。
summarize_logs.py 日志汇总activity_*.json →「时间 + 行为」纯文本(GUI / CLI)。
mic_recorder_tray.py 麦克风长录:共享模式分段 WAV,与活动日志无依赖关系

main.py — 桌面活动记录器

要点

  • 截图:可勾选参与截图的显示器(多屏拼接);不选则等价于整桌「全屏」行为。支持显示器编号叠加层便于对齐。
  • 模型:方舟 Responses,可选 lite / mini / pro(见代码内 ARK_MODELS)。
  • 异步:截图调度与 LLM 解耦,ThreadPoolExecutor 排队执行,不丢任务;界面显示队列长度。
  • 鼠标静止:连续 N 次采样坐标相同则视为离开电脑,不截图、不调模型、不写日志(N 可配)。
  • GUI:间隔、提示词、模型、显示器选择、鼠标静止周期、Token 汇总(来自日志内 usage)、方舟 Key、Windows 开机自启等。
  • 托盘:关闭窗口为隐藏到托盘;可再打开或退出。

运行

python main.py

配置 config.json(与脚本/exe 同目录)

字段 说明
interval_sec 截图周期间隔(秒),默认 120,范围约 10~86400
mouse_idle_cycles 连续多少次坐标相同则跳过本周期,默认 10
selected_monitor_indices 参与截图的显示器下标(从 0 起);null 表示整桌全选
analysis_prompt 发给模型的分析提示词(有最大长度限制)
ark_model 方舟模型 ID

活动日志字段(示例)recorded_atpromptmodelanalysisapi_errorraw_response(含 usage)、鼠标采样相关、capture_selected_monitor_indicesllm_async 等;失败或未配置 Key 时 analysis 可能为 null 并带 api_error


proactive_coach_tray.py — 主动建议

  • main.py 共用 log/(需先有活动 JSON)。
  • 在配置的推送间隔读取条数区间内随机取值,调用方舟文本模型;提示词必须含 {snippets}
  • 鼠标静止:每轮推送前采样,连续 N 次相同则跳过(默认 mouse_idle_cycles 在代码中为 2,与主程序默认值不同,可在界面改)。
  • 通知:主线程 tkinter 右下角无边框窗口;notice.log 每行一条 JSON。
  • 配置proactive_coach_config.json
python proactive_coach_tray.py
pythonw proactive_coach_tray.py

proactive_coach_config.json 主要字段

字段 说明
prompt_template 须含 {snippets}
interval_min_sec / interval_max_sec 两次推送间隔随机范围(秒)
log_count_min / log_count_max 每次随机读取最近几条日志的 analysis(1~50)
model 方舟文本模型
mouse_idle_cycles 鼠标静止判定次数

proactive_todo_tray.py — 主动待办

  • 默认约 10 分钟一轮,读取最近若干条活动摘要 + 当前待办 JSON,模型输出严格 JSON 建议(explicit / potential)。
  • 提示词须同时含 {snippets}{current_todos}
  • 配置proactive_todo_config.json数据proactive_todo_data.json
python proactive_todo_tray.py
pythonw proactive_todo_tray.py

proactive_todo_config.json 主要字段

字段 说明
interval_sec 同步间隔(秒),默认 600
log_count 每次读取最近日志条数
model 方舟文本模型
prompt_template 待办生成模板

work_analysis_feishu_tray.py — 工作分析汇报

  • 日志格式:与 summarize_logs.py 相同,读 activity_*.json 拼成 {logs}
  • 模式:① 飞书自定义机器人 Webhook;② 本地单文件 HTML(CSS/JS 内嵌),多套视觉预设(Y2K、现代简约、Fluent、深色开发风等)。
  • 推理:可配置 thinking_mode(深度思考开关类选项)与 reasoning_effort;飞书与 HTML 使用不同 HTTP 超时(HTML 更长)。
  • 快捷键:默认 ctrl+shift+u,依赖 keyboard 库。
  • 自动分析:可设间隔(分钟);若鼠标超过设定分钟未动可跳过本轮。
  • 统计:Token 等写入 work_analysis_token_stats.json
python work_analysis_feishu_tray.py
pythonw work_analysis_feishu_tray.py

work_analysis_feishu_config.json 默认值摘选

字段 说明
report_mode feishuhtml_local(默认 html_local
html_style_preset HTML 风格预设键名
feishu_webhook_url / feishu_keyword 飞书机器人
log_dir 活动日志目录(默认同目录 log
use_dynamic_today / start_time / end_time 时间范围
model / thinking_mode / reasoning_effort 模型与推理
auto_analyze_enabled / auto_interval_minutes 定时分析
mouse_idle_skip_minutes 鼠标不动超过该分钟则跳过自动分析
hotkey 全局快捷键
startup_enabled Windows 开机自启

summarize_logs.py — 活动日志汇总

activity_*.json 导出为「时间 + 行为」文本(含跳过/错误时的可读说明)。

  • 无参数:GUI,可选日志目录、开始/结束时间、快捷预设(当日、近 3 日/1 周/半个月/两个月/四个月等)、导出路径。
  • --cli-cpython summarize_logs.py --cli [日志目录] [输出.txt]
  • 两参数python summarize_logs.py <日志目录> [输出.txt],无时间过滤为全量。
python summarize_logs.py
python summarize_logs.py --cli
python summarize_logs.py D:\path\to\log D:\path\to\汇总.txt

默认 CLI 输出可为同目录 activity_summary.txt


mic_recorder_tray.py — 麦克风长时间采集

  • 16 kHz 单声道 WAV,分段落盘;可选设备、分段分钟数、输出目录;波形与托盘。
  • 配置mic_recorder_config.json(如 output_dirdevice_indexsegment_minutes);默认输出目录可为 mic_recordings/
python mic_recorder_tray.py
pythonw mic_recorder_tray.py

数据与配置文件索引

路径 说明
log/activity_*.json 主程序每条周期一条结构化记录
config.json 主程序
integrations.json 方舟 API Key(勿泄露)
proactive_coach_config.json 主动建议
proactive_todo_config.json / proactive_todo_data.json 主动待办
work_analysis_feishu_config.json / work_analysis_token_stats.json 工作分析与 Token 统计
notice.log 主动建议每次推送一行 JSON
mic_recorder_config.json / mic_recordings/ 麦克风配置与录音文件
activity_summary.txt summarize_logs CLI 默认导出之一

打包为 exe(可选)

安装 PyInstaller 后,可将各脚本打成独立 exe;运行时配置与日志目录一般为 exe 所在目录(代码中对 sys.frozen 已处理)。

pip install "pyinstaller>=6.0"

具体 pyinstaller 命令需按入口脚本与图标需求自行编写;若你后续在仓库中加入 build_exe.bat 等脚本,以脚本说明为准。


许可证

由项目维护者自行补充。

About

桌面自定截图发给火山豆包mini模型分析当前的桌面内容然后储存记录,纯本地化保存

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages