Skip to content

feat: AI-powered weekly activity summary #883

Description

@7nicetoseeu

Feature Request: AI-Powered Weekly Activity Summary

Problem

Users collect a lot of activity data through ActivityWatch, but interpreting raw time breakdowns can be tedious. A one-click AI summary would help users quickly understand their habits without manually analyzing charts.

Proposed Solution

Add a new AI Summary page under the Tools menu that:

  1. Queries the past week's app usage data via the existing Query API (aw-watcher-window bucket)
  2. Sends a formatted summary to an AI endpoint (user-configured provider)
  3. Displays a concise, friendly Chinese/English summary

Key Design Choices

  • Provider selection: OpenAI / DeepSeek / Ollama (local) -- user picks which one
  • API key stored in localStorage -- never touches the server, privacy-preserving
  • Date range selector: last 7 days / 30 days / this week / this month
  • Copy & download buttons for saving the generated summary
  • All data stays local -- only the formatted text (app names + durations) is sent to the AI

Mockup

`
+------------------------------------------------------------------+
| AI Weekly Summary |
| |
| [Provider: DeepSeek v] [Model: deepseek-chat] [API Key: ****] |
| [Date Range: Last 7 days v] |
| |
| [ Generate Summary ] [ Copy ] [ Download ] |

你过去一周的主要时间分配:
- 工作 42% (VS Code, 终端)
- 浏览器 28% (Chrome, 文档)
- 娱乐 18% (游戏, 视频)
...
+------------------------------------------------------------------+
`

Implementation Scope

  • 1 new file: src/views/AiSummary.vue
  • 2 small edits: src/route.js (add route), src/components/Header.vue (add nav item)
  • No backend changes needed (uses existing Query API)

Why This Fits ActivityWatch

  • Aligned with the project's goal of helping users understand how they spend time
  • Privacy-first: AI processing is opt-in, user chooses provider, key stored locally
  • No telemetry, no data sent anywhere unless user explicitly clicks Generate

I'm willing to implement this. Let me know if this idea is welcome and if you have any design preferences before I start coding!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions