memory: keep a raw input log of /add requests, independent of extraction
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start in the POST /api/v2/memory/add route handler, where the request is validated and split into sync and async paths; the log write goes before that split. Read service/_boundary.py to see how the cell is built from CanonicalMessage.text, so you know what the raw log must capture instead. Done means one JSON line per accepted request under .input_log/YYYY-MM-DD.jsonl, with retention sweeping and base64 truncation working and log-write failures not failing /add. Coordinate with #483 before touching session deletion.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
EverOS keeps no record of what a client actually sent to POST /api/v2/memory/add. The closest things are by-products of extraction:
unprocessed_bufferholds messages only until boundary detection folds them into a memcell.memcell.payload_jsonkeeps the conversation text, but not as it was sent. Attachments have already been replaced by their parsed text (service/_boundary.pybuilds the cell fromCanonicalMessage.text), and the messages are grouped the way boundary detection cut them. It also lives in.index/sqlite/system.db, inside the directory thatdocs/how-memory-works.mdsays can be deleted without losing anything.- In async mode,
memorize_inbox.payload_jsonis cleared as soon as the row is delivered.
So once extraction has run, the original input can no longer be inspected, replayed or audited. (EverOS Cloud reports every request body to a request log outside the engine.)
Proposal
An input log that has nothing to do with extraction:
- What: every
/addrequest that passes validation, as the client sent it (model_dump(mode="json", exclude_unset=True)), plus itsrequest_idand receive time. One JSON line per request./flushand/searchare not logged. - When: in the route, before the sync / async split. Each accepted request is logged exactly once, whatever happens to extraction afterwards; queue retries do not log it again.
- Where:
<root>/<app>/<project>/.input_log/YYYY-MM-DD.jsonl. The date is in the display timezone, the same as the daily-log Markdown files. The directory is outside.index/, so deleting the index does not lose it. No memory kind matches the path, so the cascade scanner and watcher ignore it. - Retention:
retention_days, default 30. A file whose date is older than that is deleted. The sweep runs when a scope writes its first line of a day, including the first line after a restart. - Large attachments: if a line would exceed
max_inline_bytes(default 1 MiB), thebase64of each content item is replaced by its length and SHA-256. Text is always kept verbatim. - Failure: a failed log write is logged at error level and does not fail
/add. - Config:
[memorize.input_log]withenabled = true,retention_days = 30andmax_inline_bytes = 1048576.
Relation to #483
A session-only delete must also remove that session's lines from the input log. Otherwise "forget this conversation" leaves the raw text on disk for up to retention_days. That work belongs to #483.
Out of scope
- Reading the log through the API.
- Moving
memcell/unprocessed_bufferout of.index/. The docs' claim that SQLite is rebuildable from Markdown already does not hold for them.
- Lenguaje dominante
- Python
- Estrellas
- 13.3k
- Forks
- 926
- Merge medio
- 22 h 56 min
- PR fusionados (30 d)
- 27
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de EverMind-AI/EverOS
-
Dificultad 2/5 Medio día Aptitud para principiantes 62/100
EverMind-AI/EverOS#414 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: 同一 EverOS 账号下,不同 AI 客户端的记忆无法共享(user 隔离问题) / Cannot share memory between two AI clients under the same EverOS account (user isolation)Posiblemente ocupada @dani1005 la tomó hace 6 días. Abiertobug
Dificultad 4/5 1-2 días Aptitud para principiantes 48/100
EverMind-AI/EverOS#528 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
memorize(): make delivery resumable per memcell so retries and replays are idempotentPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
EverMind-AI/EverOS#516 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: add/flush returns 500 every time when an extraction reply quotes code with an unmatched `}` (everalgo brace-counting JSON extractor)Posiblemente ocupada @Kendrick-Song la tomó hace 8 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
EverMind-AI/EverOS#515 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
flush returns 500 when SQLite write hits the busy timeoutPosiblemente ocupada @chuiwenwei la tomó hace 10 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
EverMind-AI/EverOS#498 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de EverMind-AI/EverOS
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
MIT-LCP/wfdb-python#590 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
pollen-robotics/reachy_mini#1517 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
NRLMMD-GEOIPS/pluginify#41 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
scverse/spatialdata#1293 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
UKGovernmentBEIS/inspect_evals#2788 ·
Los mantenedores suelen responder en 1 día