The project's README from github.com/huohua325/Memslides. As one markdown file: README.md.
Personalized presentation agents with user profile memory, working memory, tool memory, and scoped slide-local revision.
Official website notice: memslides.com is the official MemSlides trial website. memslides.org is a fake website, is not operated by this project, and is not affiliated with this repository.
⭐ If MemSlides is useful for your research or slide-generation workflow, please consider starring this repository to help others discover it.
https://github.com/user-attachments/assets/a92ab49e-bc5c-4e90-8c0a-0f23b08a8857
MemSlides treats presentation generation as a stateful authoring process rather than a one-shot source-to-slides conversion task. It separates personalization signals by lifetime: persistent user profile memory captures recurring cross-job preferences, working memory carries active session constraints across revision rounds, and tool memory stores reusable execution experience for reliable localized editing.
Long-term memory stores intent-conditioned user profile memory for round-0 personalization and tool memory for reusable execution experience. Working memory maintains active preferences, session state, and revision constraints within the current deck. During revision, MemSlides projects user feedback onto the smallest affected slide region and applies scoped local patches instead of repeatedly regenerating the full deck.
Install from source:
sudo apt-get update
sudo apt-get install -y libreoffice fontconfig fonts-noto-cjk poppler-utils
conda env create -f environment.yml
conda activate memslides
pip install -e ".[research]"
python -m playwright install chromium ffmpeg
python -m memslides.experiment --help
Run the built-in smoke suite:
python -m memslides.experiment run smoke_minimal \
--output-base .memslides/experiments \
--parallel 1
The same experiment can run inside the Docker environment:
docker compose build
docker compose run --rm memslides python -m memslides.experiment run smoke_minimal \
--output-base /app/.cache/memslides/experiments \
--parallel 1
smoke_minimal is only a small verification suite. Users can pass any local
suite YAML path or packaged suite name to python -m memslides.experiment run.
MemSlides needs user-provided model and service credentials for real generation
experiments. Keep credentials outside git and provide them through environment
variables, .env, or a private YAML file selected with MEMSLIDES_CONFIG_FILE
or --config.
The packaged public config is src/memslides/memslides.yaml; its placeholders
are expanded from the current process environment when the YAML is loaded.
Generated outputs, caches, private YAML files, and credentials must not be
committed.
src/memslides/ Runtime package and public Python entry points
src/memslides/experiment/ Paper reproduction experiments and reports
src/memslides/tools/ MCP tool services and startup wrappers
src/memslides/memory/ Working-memory, profile, retrieval, and storage code
tests/ Automated regression and contract tests
.memslides/ Ignored runtime workspaces and generated outputs
~/.cache/memslides/ User-level caches, logs, and shared memory state
The public command-line entry points are generate, revise, and
template induct. The experiment runner remains available through
python -m memslides.experiment.
The generated tool snapshot and two unused internal modules were removed from
the source tree. Use the MCP configuration and public CLI instead of importing
memslides/.tools.json, memslides.memory.core.protocols, or
memslides.tools.ask_template_selection.
Install the development and research extras, then run the same checks used by continuous integration:
pip install -e ".[dev,research]"
python -m compileall -q src tests
python scripts/check_source_hygiene.py
pytest -q
ruff check src tests
npm ci
npm run check:pptx-export
For Docker runs with a private YAML file:
docker compose -f docker-compose.yml -f docker-compose.private.yml run --rm memslides \
python -m memslides.experiment run smoke_minimal \
--output-base /app/.cache/memslides/experiments \
--parallel 1
The override maps ./memslides.private.yaml to
/run/secrets/memslides.private.yaml and sets
MEMSLIDES_CONFIG_FILE=/run/secrets/memslides.private.yaml inside the
container.
The suite runner is the main public entry point:
python -m memslides.experiment run smoke_minimal --output-base .memslides/experiments --parallel 1
python -m memslides.experiment report .memslides/experiments/smoke_minimal
python -m memslides.experiment personas
Core generation, revision, and template induction commands remain available for scripted local use:
python -m memslides generate --instruction "Create a one-slide project summary" --num-pages 1
python -m memslides revise --workspace .memslides/session --feedback "Tighten the title"
python -m memslides template induct --template-file template.pptx
.env, or private YAML files..env, .memslides/, generated workspaces, or private config
files.If you find MemSlides useful, please cite our paper.
@misc{jin2026memslides,
title={MemSlides: A Hierarchical Memory Driven Agent Framework for Personalized Slide Generation with Multi-turn Local Revision},
author={Ye Jin and Yangyang Xu and Jun Zhu and Yibo Yang},
year={2026},
eprint={2606.17162},
archivePrefix={arXiv},
primaryClass={cs.CL},
doi={10.48550/arXiv.2606.17162},
url={https://arxiv.org/abs/2606.17162},
}
See LICENSE and THIRD_PARTY_NOTICES.md.