Skip to main content
Glama

FocusRoom | Агент продуктивности

Личное рабочее пространство для продуктивности на базе Python, Streamlit, Groq, SQLite и MCP. В одном проекте объединены управление задачами, ежедневное планирование, постоянная память, мультиагентный супервизор и опциональные email-напоминания.

Возможности

  • Дашборд продуктивности на Streamlit

  • Создание, просмотр, фильтрация и завершение задач

  • Приоритеты задач, сроки выполнения, проекты и статусы

  • Постоянное хранилище SQLite в productivity.db

  • Ежедневные планы и отчёты о продуктивности

  • Сохранение и поиск личных заметок

  • Ассистент продуктивности на базе Groq

  • Мультиагентный супервизор для запросов по задачам, памяти и планированию

  • MCP-сервер с HTTP-инструментами для внешних клиентов

  • Опциональные автоматические email-напоминания

Related MCP server: Task API MCP

Требования

  • Python 3.10 или новее

  • Groq API-ключ для функций на базе ИИ

  • SMTP-учётка данных Gmail или другого SMTP-провайдера для email-напоминаний

Настройка

1. Создание виртуального окружения

PowerShell:

python -m venv .venv
.\.venv\Scripts\Activate.ps1

Если PowerShell блокирует выполнение скриптов для текущего сеанса:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
.\.venv\Scripts\Activate.ps1

2. Установка зависимостей

python -m pip install -r requirements.txt

3. Настройка переменных окружения

Скопируйте .env.example в .env и заполните нужные значения:

Copy-Item .env.example .env

Требуется для агента на базе Groq:

GROQ_API_KEY=your_groq_api_key
GROQ_MODEL=openai/gpt-oss-120b

Необязательная конфигурация MCP:

MCP_HOST=127.0.0.1
MCP_PORT=8000
MCP_API_KEY=local_or_remote_api_key

Для email-напоминаний:

EMAIL_SENDER=your_email@gmail.com
EMAIL_RECIPIENT=recipient@example.com
EMAIL_PASSWORD=your_smtp_or_app_password
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587

Не добавляйте .env и учётные данные API в коммиты. Файл .gitignore исключает их.

Запуск приложения Streamlit

streamlit run streamlit_app.py

В приложении есть такие разделы:

  • Обзор — метрики задач, активная работа, ежедневный снимок состояния и прогресс выполнения

  • Задачи — создание и фильтрация задач, а также отметка выполненных

  • План — текущий дневной план и отчёт о продуктивности

  • Память — сохранение и поиск долгосрочного контекста

  • Ассистент — естественно-языковые запросы к супервизору продуктивности

Запуск MCP-сервера

Запустите Streamable HTTP MCP-сервер:

python -m orchestrator.mcp_server

По умолчанию он работает на http://127.0.0.1:8000/mcp.

Сервер предоставляет инструменты:

  • productivity_assistant

  • create_task

  • list_tasks

  • update_task

  • complete_task

  • delete_task

  • save_memory

  • search_memory

  • daily_plan

  • productivity_report

Если сервер привязан к нелокальному хосту, задайте MCP_API_KEY. Удалённые запросы должны использовать bearer-токен:

Authorization: Bearer <MCP_API_KEY>

Запуск напоминаний

Фоновая служба напоминаний проверяет предстоящие задачи и отправляет настроенные email-уведомления:

python reminder_worker.py

Расписание настраивается в службе и поддерживает напоминания за 24 часа, за 1 час и за 15 минут до срока задачи. Для email-напоминаний нужны корректные SMTP-настройки в .env.

Запуск тестов

Используйте виртуальное окружение проекта, чтобы был доступен pytest:

.\.venv\Scripts\python -m pytest -q

Запуск конкретного тестового файла:

.\.venv\Scripts\python -m pytest -q test_multi_agent.py

Проверка синтаксиса Python без запуска приложения:

.\.venv\Scripts\python -m compileall streamlit_app.py orchestrator

Структура проекта

Productivity_Agent/
|-- streamlit_app.py              # Streamlit user interface
|-- requirements.txt              # Python dependencies
|-- .env.example                  # Environment variable template
|-- productivity.db               # Local SQLite database, generated locally
|-- reminder_service.py           # Reminder service implementation
|-- reminder_worker.py            # Continuous reminder worker
|-- orchestrator/
|   |-- agent.py                  # Core task, memory, plan, and report logic
|   |-- database.py               # SQLite persistence layer
|   |-- orchestrator.py           # Multi-agent supervisor
|   |-- mcp_server.py             # MCP HTTP server and tools
|   |-- memory_agent.py           # Memory agent adapter
|   |-- planning_agent.py         # Planning agent adapter
|   |-- task_agent.py             # Task agent adapter
|-- test_*.py                     # Project tests

Данные и безопасность

  • Задачи и записи памяти хранятся локально в SQLite.

  • .env содержит секреты и должен оставаться приватным.

  • Для Gmail используйте пароль приложения там, где это требуется, а не основной пароль аккаунта.

  • MCP_API_KEY обязателен, когда сервер доступен за пределами localhost.

  • Делайте резервную копию productivity.db, если локальная история задач и памяти важна.

Устранение неполадок

pytest не распознаётся

Запустите pytest через виртуальное окружение:

.\.venv\Scripts\python -m pytest -q

Приложение запускается, но ассистент недоступен

Проверьте, что .env существует и содержит действующий GROQ_API_KEY, затем перезапустите Streamlit.

Streamlit сообщает missing ScriptRunContext

Это предупреждение появляется при прямом импорте модуля Streamlit через python -c. Для нормальной работы запускайте приложение командой streamlit run streamlit_app.py.

Компиляция проходит, но тесты падают при сборе

Ошибка сбора означает, что pytest не смог завершить импорт тестов. Посмотрите первое указанное исключение и исправьте несоответствие в зависимостях или конструкторах, прежде чем оценивать остальные тесты.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers