Keep prompt prefix stable in the chat path (cache-friendly conversation history)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
Línea de trabajo
This is design work across the chat path. Start with nc_model.py, where history truncation and cutoff rewrite already-sent messages, and find where the system prompt, tool list and task usage are assembled per request. Done would need a maintainer-agreed design for a pinned system prompt, a stable tool order, append-only truncation, and cache-token fields in usage. Settle the design with maintainers before writing code.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature request
Disclaimer
Initial spec elicited via STT
whisper-base, partially polished withopencode:GLM-5.3post-explore.
Is your feature request related to a problem? Please describe.
Prompt-cache hit rate on the context_agent chat path is degraded because the request prefix mutates during a conversation, which raises cost and latency on every long chat. All major providers (OpenAI, Anthropic, Gemini) cache by prefix match, so any mutation re-bills everything after it as uncached input.
Mutations on main:
- System prompt recomposed per task: current date, conditional tool lines, memories, skills list.
- Tool output truncation and history cutoff in
nc_model.pyrewrite already-sent history. - Tool list/ordering rebuilt per request.
Describe the solution you'd like
- Deterministic system prompt per conversation; updates (date, memories) go in a reminder block in the next user message instead (Anthropic: mid-conversation system/tool changes).
- Stable tool list and ordering for the session's lifetime (tool use with prompt caching).
- Append-only history: large tool outputs truncated once when first sent, never re-truncated as thresholds shift, keeps the #91 payload-cap fix without rewriting the prefix.
- Expose cache hits in task usage (
cached_tokens/cache_creation_input_tokens) so regressions are measurable.
Describe alternatives you've considered
Doing nothing: caching still partially works, but every prefix mutation re-bills the whole conversation as uncached input.
Additional context / related
- nextcloud/assistant#698
- conversation branching; per-branch caches depend on these guarantees.
- #246
- configurable system prompt; must also be pinned per conversation, same code path.
- #202 / #247
- tool-set management; mid-session tool changes are themselves prefix invalidations, need a session-stable or deferred-loading design.
- #213
- compaction should use cache-safe forking (identical prefix, summary appended) or it defeats this.
- #91 (closed)
- TaskProcessing payload cap that motivated retroactive truncation; constraint on the append-only approach.
- reference
- Claude Code prompt-caching lessons: static first / dynamic last, never mutate tools or history mid-session.
- Lenguaje dominante
- Python
- Estrellas
- 26
- Forks
- 20
- Merge medio
- 2 d 9 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 nextcloud/context_agent
-
enhancement priority normal
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
nextcloud/context_agent#270 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
nextcloud/context_agent#242 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Add endpoint to create new CollectivesPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
nextcloud/context_agent#240 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
find_person_in_contacts fails with Niquests content argument and cannot serialize vCard AddressAbiertobug
Dificultad 2/5 Medio día Aptitud para principiantes 76/100
nextcloud/context_agent#217 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Failed to schedule taskAbiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 22/100
nextcloud/context_agent#271 ·
Los mantenedores suelen responder en 1 día
Todos los issues de nextcloud/context_agent
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
[Bug] to_ical lexicographical/default sorting moves URL property between two X-WR- propertiesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
collective/icalendar#1968 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Deferred from #1869: Complete the companion pytest guardrail update noted in the PR description...Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
Los mantenedores suelen responder en 1 día
-
Custom provider API keys collide on one host: env slot keyed on host:port only, not URL pathAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
NousResearch/hermes-agent#140958 ·
Los mantenedores suelen responder en 1 día
-
Bug triage/confirmed
Dificultad 2/5 Medio día Aptitud para principiantes 85/100
agentscope-ai/agentscope#3355 ·
Los mantenedores suelen responder en 2 días