santismm-knowledge-mcp 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/content/CONVENTIONS.md +77 -0
  4. package/content/LICENSE +55 -0
  5. package/content/architectures/ai-workforce.json +280 -0
  6. package/content/architectures/customer-service-agent.json +292 -0
  7. package/content/architectures/enterprise-knowledge-assistant.json +292 -0
  8. package/content/architectures/operations-center.json +280 -0
  9. package/content/architectures/sales-copilot.json +280 -0
  10. package/content/governance/agentic-ai-governance-checklist.json +323 -0
  11. package/content/governance/audit-framework-for-agentic-systems.json +280 -0
  12. package/content/governance/enterprise-ai-governance-framework.json +277 -0
  13. package/content/governance/eu-ai-act.json +162 -0
  14. package/content/governance/human-oversight-and-accountability-policy.json +275 -0
  15. package/content/governance/iso-42001.json +161 -0
  16. package/content/governance/mitre-atlas.json +280 -0
  17. package/content/governance/nist-ai-rmf.json +161 -0
  18. package/content/governance/owasp-llm-top10.json +301 -0
  19. package/content/harness/HRN-001-definition-and-overview.es.md +76 -0
  20. package/content/harness/HRN-001-definition-and-overview.md +125 -0
  21. package/content/harness/HRN-001-definition-and-overview.pt.md +76 -0
  22. package/content/harness/HRN-002-a-brief-history-of-harness-engineering.es.md +83 -0
  23. package/content/harness/HRN-002-a-brief-history-of-harness-engineering.md +113 -0
  24. package/content/harness/HRN-002-a-brief-history-of-harness-engineering.pt.md +83 -0
  25. package/content/harness/HRN-003-the-harness-taxonomy.es.md +105 -0
  26. package/content/harness/HRN-003-the-harness-taxonomy.md +158 -0
  27. package/content/harness/HRN-003-the-harness-taxonomy.pt.md +105 -0
  28. package/content/harness/HRN-004-harness-engineering-principles.es.md +91 -0
  29. package/content/harness/HRN-004-harness-engineering-principles.md +135 -0
  30. package/content/harness/HRN-004-harness-engineering-principles.pt.md +91 -0
  31. package/content/harness/HRN-005-memory-in-agentic-systems.es.md +98 -0
  32. package/content/harness/HRN-005-memory-in-agentic-systems.md +145 -0
  33. package/content/harness/HRN-005-memory-in-agentic-systems.pt.md +98 -0
  34. package/content/harness/HRN-006-observability-for-agentic-systems.es.md +97 -0
  35. package/content/harness/HRN-006-observability-for-agentic-systems.md +139 -0
  36. package/content/harness/HRN-006-observability-for-agentic-systems.pt.md +97 -0
  37. package/content/harness/HRN-007-evaluation-of-agentic-systems.es.md +96 -0
  38. package/content/harness/HRN-007-evaluation-of-agentic-systems.md +145 -0
  39. package/content/harness/HRN-007-evaluation-of-agentic-systems.pt.md +96 -0
  40. package/content/harness/HRN-008-governance-within-the-harness.es.md +105 -0
  41. package/content/harness/HRN-008-governance-within-the-harness.md +146 -0
  42. package/content/harness/HRN-008-governance-within-the-harness.pt.md +105 -0
  43. package/content/harness/HRN-009-planning-and-goal-management.es.md +102 -0
  44. package/content/harness/HRN-009-planning-and-goal-management.md +142 -0
  45. package/content/harness/HRN-009-planning-and-goal-management.pt.md +102 -0
  46. package/content/harness/HRN-010-orchestration.es.md +107 -0
  47. package/content/harness/HRN-010-orchestration.md +149 -0
  48. package/content/harness/HRN-010-orchestration.pt.md +107 -0
  49. package/content/harness/HRN-011-security-for-agentic-systems.es.md +107 -0
  50. package/content/harness/HRN-011-security-for-agentic-systems.md +147 -0
  51. package/content/harness/HRN-011-security-for-agentic-systems.pt.md +107 -0
  52. package/content/harness/HRN-012-case-studies-in-harness-engineering.es.md +120 -0
  53. package/content/harness/HRN-012-case-studies-in-harness-engineering.md +157 -0
  54. package/content/harness/HRN-012-case-studies-in-harness-engineering.pt.md +120 -0
  55. package/content/harness/HRN-013-glossary.es.md +109 -0
  56. package/content/harness/HRN-013-glossary.md +124 -0
  57. package/content/harness/HRN-013-glossary.pt.md +109 -0
  58. package/content/harness/HRN-014-bibliography.es.md +89 -0
  59. package/content/harness/HRN-014-bibliography.md +109 -0
  60. package/content/harness/HRN-014-bibliography.pt.md +89 -0
  61. package/content/homeric/episodes/achilles-and-hector.json +139 -0
  62. package/content/homeric/episodes/aeolus-and-the-winds.json +131 -0
  63. package/content/homeric/episodes/agamemnons-murder.json +162 -0
  64. package/content/homeric/episodes/calypso-ogygia.json +157 -0
  65. package/content/homeric/episodes/catalogue-of-ships.json +177 -0
  66. package/content/homeric/episodes/cattle-of-the-sun.json +131 -0
  67. package/content/homeric/episodes/chryse-and-the-plague.json +131 -0
  68. package/content/homeric/episodes/cicones-at-ismarus.json +131 -0
  69. package/content/homeric/episodes/circe-on-aeaea.json +131 -0
  70. package/content/homeric/episodes/cyclops-polyphemus.json +162 -0
  71. package/content/homeric/episodes/laestrygonians.json +153 -0
  72. package/content/homeric/episodes/lotus-eaters.json +138 -0
  73. package/content/homeric/episodes/menelaus-and-proteus.json +130 -0
  74. package/content/homeric/episodes/nekyia.json +160 -0
  75. package/content/homeric/episodes/phaeacians-on-scheria.json +129 -0
  76. package/content/homeric/episodes/priams-ransom.json +131 -0
  77. package/content/homeric/episodes/return-to-ithaca.json +167 -0
  78. package/content/homeric/episodes/scylla-and-charybdis.json +131 -0
  79. package/content/homeric/episodes/suitors-ambush-at-asteris.json +131 -0
  80. package/content/homeric/episodes/telemachus-at-pylos.json +130 -0
  81. package/content/homeric/episodes/telemachus-in-sparta.json +130 -0
  82. package/content/homeric/episodes/the-achaean-camp.json +138 -0
  83. package/content/homeric/episodes/the-sirens.json +129 -0
  84. package/content/homeric/episodes/wooden-horse.json +168 -0
  85. package/content/homeric/places/aeaea.json +129 -0
  86. package/content/homeric/places/aeolia.json +161 -0
  87. package/content/homeric/places/asteris.json +120 -0
  88. package/content/homeric/places/aulis.json +122 -0
  89. package/content/homeric/places/cape-malea.json +126 -0
  90. package/content/homeric/places/chryse.json +120 -0
  91. package/content/homeric/places/dodona.json +129 -0
  92. package/content/homeric/places/dulichium.json +177 -0
  93. package/content/homeric/places/egypt.json +125 -0
  94. package/content/homeric/places/ephyra-acheron.json +127 -0
  95. package/content/homeric/places/hellespont.json +125 -0
  96. package/content/homeric/places/house-of-hades.json +91 -0
  97. package/content/homeric/places/ismarus.json +120 -0
  98. package/content/homeric/places/ithaca.json +240 -0
  99. package/content/homeric/places/knossos.json +132 -0
  100. package/content/homeric/places/laestrygonia.json +168 -0
  101. package/content/homeric/places/land-of-the-cyclopes.json +169 -0
  102. package/content/homeric/places/land-of-the-lotus-eaters.json +122 -0
  103. package/content/homeric/places/mount-ida.json +126 -0
  104. package/content/homeric/places/mycenae.json +152 -0
  105. package/content/homeric/places/ogygia.json +125 -0
  106. package/content/homeric/places/pharos.json +120 -0
  107. package/content/homeric/places/planctae.json +77 -0
  108. package/content/homeric/places/pylos.json +188 -0
  109. package/content/homeric/places/same.json +177 -0
  110. package/content/homeric/places/scheria.json +129 -0
  111. package/content/homeric/places/scylla-and-charybdis.json +135 -0
  112. package/content/homeric/places/sirens.json +127 -0
  113. package/content/homeric/places/sparta.json +179 -0
  114. package/content/homeric/places/tenedos.json +129 -0
  115. package/content/homeric/places/thrinacia.json +116 -0
  116. package/content/homeric/places/tiryns.json +123 -0
  117. package/content/homeric/places/troy.json +224 -0
  118. package/content/homeric/places/zacynthus.json +126 -0
  119. package/content/homeric/routes/achaean-expedition.json +132 -0
  120. package/content/homeric/routes/nostoi-of-the-others.json +205 -0
  121. package/content/homeric/routes/odysseus-nostos.json +307 -0
  122. package/content/homeric/routes/telemachy.json +134 -0
  123. package/content/knowledge/agent-memory.json +153 -0
  124. package/content/knowledge/agentic-ai.json +158 -0
  125. package/content/knowledge/agentic-evaluation.json +156 -0
  126. package/content/knowledge/agentic-threat-model.json +287 -0
  127. package/content/knowledge/ai-agent.json +153 -0
  128. package/content/knowledge/ai-cyberdefense.json +274 -0
  129. package/content/knowledge/ai-governance.json +155 -0
  130. package/content/knowledge/ai-observability.json +156 -0
  131. package/content/knowledge/context-engineering.json +153 -0
  132. package/content/knowledge/embeddings.json +153 -0
  133. package/content/knowledge/enterprise-rag.json +154 -0
  134. package/content/knowledge/fine-tuning.json +153 -0
  135. package/content/knowledge/foundation-models.json +154 -0
  136. package/content/knowledge/guardrails.json +153 -0
  137. package/content/knowledge/harness-engineering.json +158 -0
  138. package/content/knowledge/human-in-the-loop.json +153 -0
  139. package/content/knowledge/mcp-security.json +284 -0
  140. package/content/knowledge/model-context-protocol.json +154 -0
  141. package/content/knowledge/multi-agent-architecture.json +153 -0
  142. package/content/knowledge/prompt-engineering.json +153 -0
  143. package/content/knowledge/prompt-injection.json +138 -0
  144. package/content/knowledge/reasoning-models.json +153 -0
  145. package/content/knowledge/tool-use.json +156 -0
  146. package/content/library/cognitive-architecture-emergent-ai.md +15 -0
  147. package/content/library/devready-ep108-ai-customer-experiences.md +14 -0
  148. package/content/library/how-genai-impact-business.md +12 -0
  149. package/content/library/lmm-reshaping-industries-2024.md +12 -0
  150. package/content/library/rethinking-ai-pause.md +12 -0
  151. package/content/library/rise-of-agentic-ai.md +16 -0
  152. package/content/library/self-improving-autonomous-ai.md +16 -0
  153. package/content/library/the-stopwatch-and-the-exam.md +12 -0
  154. package/content/library/unlock-gpt4-secrets.md +12 -0
  155. package/content/library/vibe-coding-enterprise.md +15 -0
  156. package/content/library/video-transformando-negocios-genai.md +14 -0
  157. package/content/library/video-volando-alto-sky-airlines.md +13 -0
  158. package/content/matrix/agentic-control-matrix.json +967 -0
  159. package/content/patterns/attributed-memory.json +237 -0
  160. package/content/patterns/context-compression.json +304 -0
  161. package/content/patterns/egress-allowlist.json +310 -0
  162. package/content/patterns/evaluator-optimizer.json +180 -0
  163. package/content/patterns/goal-decomposition.json +290 -0
  164. package/content/patterns/human-approval-gate.json +311 -0
  165. package/content/patterns/human-escalation.json +288 -0
  166. package/content/patterns/least-privilege-tooling.json +333 -0
  167. package/content/patterns/long-term-memory.json +305 -0
  168. package/content/patterns/orchestrator-workers.json +202 -0
  169. package/content/patterns/parallelization.json +180 -0
  170. package/content/patterns/prompt-chaining.json +181 -0
  171. package/content/patterns/recovery-strategy.json +305 -0
  172. package/content/patterns/reflection.json +298 -0
  173. package/content/patterns/routing.json +294 -0
  174. package/content/patterns/sandboxed-execution.json +311 -0
  175. package/content/patterns/semantic-caching.json +201 -0
  176. package/content/patterns/supervisor-agent.json +290 -0
  177. package/content/patterns/task-prioritization.json +307 -0
  178. package/dist/content.js +181 -0
  179. package/dist/index.js +27 -0
  180. package/dist/shape.js +649 -0
  181. package/dist/tools.js +652 -0
  182. package/package.json +47 -0
@@ -0,0 +1,305 @@
1
+ {
2
+ "slug": "long-term-memory",
3
+ "category": "retrieval",
4
+ "updated": "2026-08-25",
5
+ "version": "1.2",
6
+ "featured": false,
7
+ "technologies": [
8
+ "Vector store",
9
+ "Memory frameworks (Mem0 / LangMem)",
10
+ "RAG",
11
+ "Summarization"
12
+ ],
13
+ "related": [
14
+ "semantic-caching",
15
+ "context-compression",
16
+ "attributed-memory"
17
+ ],
18
+ "references": [
19
+ {
20
+ "title": "Packer et al. — MemGPT (2023)",
21
+ "url": "https://arxiv.org/abs/2310.08560"
22
+ },
23
+ {
24
+ "title": "Anthropic — Building Effective Agents (2024)",
25
+ "url": "https://www.anthropic.com/research/building-effective-agents"
26
+ }
27
+ ],
28
+ "evidence": {
29
+ "evidenceLevel": "production",
30
+ "confidenceLevel": "low",
31
+ "sourceType": ["production_system", "personal_experience", "industry_observation"]
32
+ },
33
+ "locales": {
34
+ "en": {
35
+ "name": "Long-Term Memory",
36
+ "summary": "Give an agent persistent memory across sessions so it remembers facts, user preferences, and prior outcomes beyond a single context window. A write path decides what to store, summarizes it, and deduplicates it; a read path retrieves only the relevant memories into context when needed. Unlike semantic caching, which caches whole answers to skip recomputation, long-term memory stores durable facts and state and recomposes them into fresh reasoning each time.",
37
+ "problem": "The context window is finite and resets between sessions. An agent that only sees the current conversation forgets a user's stated preferences, decisions made last week, and the outcome of prior tasks. Stuffing all history into every prompt is impossible past a certain scale and degrades reasoning as the window fills with low-value tokens. Teams need a way to persist the small set of facts that matter and surface them precisely when they are relevant.",
38
+ "context": "Use this when an agent serves the same users or works on the same long-running tasks repeatedly: assistants that learn preferences, support agents that track a customer's history, coding agents that remember project conventions, or multi-step workflows spanning days. It assumes you can store data outside the model (a vector store, database, or memory framework) and that you control both when memories are written and how they are retrieved into the prompt.",
39
+ "solution": [
40
+ "Separate the write path from the read path. On the write path, after a turn or task completes, an extraction step decides what is worth remembering: stable facts, preferences, commitments, and outcomes — not transient chatter. Candidate memories are summarized into compact, self-contained statements, checked against existing memories to deduplicate and to detect contradictions, then written to a store with metadata: a memory type, a timestamp, a source, and the user or scope it belongs to. Writing less but writing well is the goal; noisy memories poison later retrieval.\n\nOn the read path, before the agent reasons, you retrieve candidate memories relevant to the current task — typically by semantic similarity plus filters on scope and recency — rank them, and inject only the top few into context. Treat retrieval as a precision problem: a handful of correct memories beats a large, loosely related set. Distinguish memory types so retrieval can be targeted: episodic (what happened), semantic (durable facts and preferences), and procedural (how to do a recurring task). Periodically consolidate and expire memories so the store stays small, current, and free of contradictions."
41
+ ],
42
+ "components": [
43
+ "Memory extractor (write path)",
44
+ "Deduplication and contradiction check",
45
+ "Memory store",
46
+ "Retriever (read path)",
47
+ "Context assembler",
48
+ "Consolidation and expiry job"
49
+ ],
50
+ "benefits": [
51
+ "The agent recalls preferences, decisions, and outcomes from prior sessions, so users do not have to repeat context and the agent behaves consistently over time.",
52
+ "Retrieving a few relevant memories keeps the window focused on high-value tokens instead of dumping full history, which preserves reasoning quality and reduces cost.",
53
+ "As stable facts and preferences accumulate, the agent tailors responses more accurately with each interaction without retraining the model.",
54
+ "Because memories live in an external store with metadata, you can inspect, correct, export, and delete what the agent knows — important for trust and compliance."
55
+ ],
56
+ "risks": [
57
+ "Without consolidation and expiry, the store accumulates outdated facts and conflicting statements, and the agent confidently acts on the wrong one.",
58
+ "Persisting user data raises retention, consent, and access-control obligations; memories can leak sensitive information across sessions or users if scope is not enforced.",
59
+ "Low precision injects irrelevant or wrong memories that mislead reasoning; low recall silently drops the memory that mattered, making failures hard to diagnose.",
60
+ "Over-eager writing inflates the store, slows retrieval, raises storage and embedding costs, and dilutes the signal that good retrieval depends on."
61
+ ],
62
+ "whenNot": [
63
+ "If sessions are independent and nothing needs to carry over, persistent memory adds complexity, cost, and privacy surface for no benefit.",
64
+ "When the goal is to reuse a previous answer for a repeated query, semantic caching is the right tool; long-term memory is for remembering facts and state, not caching outputs.",
65
+ "Where regulation or policy forbids retaining user data, do not persist memories; rely on in-session context or explicit, scoped storage the user controls."
66
+ ],
67
+ "examples": [
68
+ "Across sessions it remembers tone, formats, recurring contacts, and standing instructions, retrieving the few that apply to the current request instead of re-asking.",
69
+ "On each contact it retrieves the customer's prior issues, entitlements, and resolutions scoped to that account, so it continues rather than restarts the conversation.",
70
+ "It stores procedural memories — build commands, naming rules, review preferences — and recalls them when working in the same repository over many sessions."
71
+ ],
72
+ "productionEvidence": {
73
+ "context": "Single-operator, local-first OpenClaw deployment observed over 57 days (161 sessions / 2,776 turns), aggregated from the agent's own trajectory traces.",
74
+ "scenario": "The agent persists workspace memory files and per-session traces for cross-turn and cross-session continuity, with a semantic-recall plugin available on demand.",
75
+ "technology": "Workspace memory files (MEMORY.md, IDENTITY.md, SOUL.md, USER.md, HEARTBEAT.md), persistent session ids and lifecycle events, and an active-memory plugin (memory_search/get/recall).",
76
+ "load": "134 persisted session files across the 57-day window; semantic recall invoked once.",
77
+ "results": "Continuity held across 134 persisted sessions over 57 days through structural workspace memory; explicit semantic recall was rarely needed (one call) in this autonomous workload. Single-operator local-first deployment."
78
+ },
79
+ "kpis": [
80
+ {
81
+ "metric": "Retrieval precision of injected memories",
82
+ "note": "Of the memories placed in context, the share that were actually relevant. This is the metric that most directly governs answer quality; good looks like the injected set being almost entirely on-topic, with irrelevant memories rare."
83
+ },
84
+ {
85
+ "metric": "Retrieval recall on memory-dependent tasks",
86
+ "note": "On tasks that require a known stored fact, how often that fact is actually retrieved. Good looks like the right memory surfacing reliably; persistent misses point to extraction or indexing gaps."
87
+ },
88
+ {
89
+ "metric": "Memory store size and growth rate",
90
+ "note": "Total memories and how fast they accumulate per active user. Good looks like growth tracking genuinely new durable facts, not unbounded climb — a runaway curve signals over-eager writing."
91
+ },
92
+ {
93
+ "metric": "Staleness and contradiction rate",
94
+ "note": "Share of retrieved memories that are outdated or conflict with a newer truth. Good looks like a low and stable rate, evidence that consolidation and expiry are keeping pace with change."
95
+ }
96
+ ],
97
+ "failureModes": [
98
+ "Writing everything turns the store into noise; retrieval then surfaces low-value or wrong memories. Fix by raising the bar for what gets written and reviewing extraction quality.",
99
+ "An old fact is retrieved and acted on after the truth changed, with no signal that it is outdated. Mitigate with timestamps, recency-weighted ranking, and explicit supersession on write.",
100
+ "A memory from one user, tenant, or project is retrieved into another's context because scope filters were missing or wrong — a privacy and correctness failure at once.",
101
+ "To compensate for poor ranking, teams inject many memories, refilling the window with marginal tokens and degrading the very reasoning memory was meant to support."
102
+ ],
103
+ "lessons": [
104
+ "Quality is decided when you choose what to remember. A small, clean, deduplicated store retrieves far better than a large noisy one.",
105
+ "A few correct memories outperform many loosely related ones. Tune for relevance and rank tightly rather than maximizing how much you inject.",
106
+ "Store metadata and provide ways to view, edit, expire, and delete memories. This is essential for debugging, trust, and meeting privacy obligations.",
107
+ "Facts go stale and contradict each other. Build consolidation, supersession, and expiry early; retrofitting them onto a large polluted store is painful."
108
+ ],
109
+ "faqs": [
110
+ {
111
+ "q": "How is this different from semantic caching?",
112
+ "a": "Semantic caching stores and replays whole answers to avoid recomputing similar requests. Long-term memory stores durable facts, preferences, and outcomes, then recomposes them into fresh reasoning for each new task. One reuses outputs; the other remembers state."
113
+ },
114
+ {
115
+ "q": "What should the agent actually remember?",
116
+ "a": "Stable, reusable signal: user preferences, decisions and commitments, outcomes of prior tasks, and recurring procedures. Avoid transient chatter and anything you cannot justify retaining. Writing less but writing well is what makes later retrieval precise."
117
+ },
118
+ {
119
+ "q": "How do you handle PII and privacy?",
120
+ "a": "Treat the store as governed data: enforce scope so memories never cross users or tenants, minimize what you persist, support consent and deletion, and set retention and access controls. Inspectability and an expiry policy are part of meeting these obligations."
121
+ }
122
+ ]
123
+ },
124
+ "es": {
125
+ "name": "Memoria a largo plazo",
126
+ "summary": "Dota a un agente de memoria persistente entre sesiones para que recuerde hechos, preferencias del usuario y resultados previos más allá de una única ventana de contexto. Una vía de escritura decide qué almacenar, lo resume y lo deduplica; una vía de lectura recupera solo las memorias relevantes hacia el contexto cuando hacen falta. A diferencia del almacenamiento en caché semántico, que cachea respuestas completas para evitar recomputar, la memoria a largo plazo guarda hechos y estado duraderos y los recompone en razonamiento nuevo cada vez.",
127
+ "problem": "La ventana de contexto es finita y se reinicia entre sesiones. Un agente que solo ve la conversación actual olvida las preferencias declaradas por el usuario, las decisiones tomadas la semana pasada y el resultado de tareas previas. Meter todo el historial en cada prompt es imposible a cierta escala y degrada el razonamiento a medida que la ventana se llena de tokens de bajo valor. Los equipos necesitan una forma de persistir el pequeño conjunto de hechos que importan y de mostrarlos con precisión cuando son relevantes.",
128
+ "context": "Úsalo cuando un agente atiende a los mismos usuarios o trabaja repetidamente en las mismas tareas de larga duración: asistentes que aprenden preferencias, agentes de soporte que siguen el historial de un cliente, agentes de programación que recuerdan las convenciones de un proyecto o flujos de varios pasos que abarcan días. Supone que puedes almacenar datos fuera del modelo (un almacén vectorial, una base de datos o un framework de memoria) y que controlas tanto cuándo se escriben las memorias como cómo se recuperan hacia el prompt.",
129
+ "solution": [
130
+ "Separa la vía de escritura de la vía de lectura. En la vía de escritura, tras completar un turno o una tarea, un paso de extracción decide qué vale la pena recordar: hechos estables, preferencias, compromisos y resultados, no charla transitoria. Las memorias candidatas se resumen en enunciados compactos y autocontenidos, se contrastan con las memorias existentes para deduplicar y detectar contradicciones, y se escriben en un almacén con metadatos: un tipo de memoria, una marca de tiempo, una fuente y el usuario o ámbito al que pertenecen. El objetivo es escribir menos pero escribir bien; las memorias ruidosas envenenan la recuperación posterior.\n\nEn la vía de lectura, antes de que el agente razone, recuperas las memorias candidatas relevantes para la tarea actual — normalmente por similitud semántica más filtros de ámbito y recencia —, las clasificas e inyectas solo las pocas mejores en el contexto. Trata la recuperación como un problema de precisión: un puñado de memorias correctas vale más que un conjunto grande y poco relacionado. Distingue los tipos de memoria para que la recuperación sea dirigida: episódica (qué ocurrió), semántica (hechos y preferencias duraderos) y procedimental (cómo realizar una tarea recurrente). Consolida y expira las memorias periódicamente para que el almacén siga siendo pequeño, actual y libre de contradicciones."
131
+ ],
132
+ "components": [
133
+ "Extractor de memorias (vía de escritura)",
134
+ "Verificación de duplicados y contradicciones",
135
+ "Almacén de memorias",
136
+ "Recuperador (vía de lectura)",
137
+ "Ensamblador de contexto",
138
+ "Tarea de consolidación y expiración"
139
+ ],
140
+ "benefits": [
141
+ "El agente recuerda preferencias, decisiones y resultados de sesiones previas, así los usuarios no tienen que repetir el contexto y el agente se comporta de forma consistente en el tiempo.",
142
+ "Recuperar unas pocas memorias relevantes mantiene la ventana centrada en tokens de alto valor en lugar de volcar todo el historial, lo que preserva la calidad del razonamiento y reduce el coste.",
143
+ "A medida que se acumulan hechos y preferencias estables, el agente adapta sus respuestas con más precisión en cada interacción sin reentrenar el modelo.",
144
+ "Como las memorias viven en un almacén externo con metadatos, puedes inspeccionar, corregir, exportar y borrar lo que el agente sabe, algo importante para la confianza y el cumplimiento normativo."
145
+ ],
146
+ "risks": [
147
+ "Sin consolidación ni expiración, el almacén acumula hechos desactualizados y enunciados en conflicto, y el agente actúa con confianza sobre el equivocado.",
148
+ "Persistir datos de usuario genera obligaciones de retención, consentimiento y control de acceso; las memorias pueden filtrar información sensible entre sesiones o usuarios si no se aplica el ámbito.",
149
+ "Una precisión baja inyecta memorias irrelevantes o erróneas que desorientan el razonamiento; una cobertura baja descarta en silencio la memoria que importaba, lo que dificulta diagnosticar los fallos.",
150
+ "Escribir en exceso infla el almacén, ralentiza la recuperación, eleva los costes de almacenamiento y de embeddings y diluye la señal de la que depende una buena recuperación."
151
+ ],
152
+ "whenNot": [
153
+ "Si las sesiones son independientes y nada necesita trasladarse, la memoria persistente añade complejidad, coste y superficie de privacidad sin beneficio.",
154
+ "Cuando el objetivo es reutilizar una respuesta previa para una consulta repetida, el almacenamiento en caché semántico es la herramienta adecuada; la memoria a largo plazo es para recordar hechos y estado, no para cachear salidas.",
155
+ "Donde la normativa o la política prohíbe retener datos de usuario, no persistas memorias; apóyate en el contexto de la sesión o en un almacenamiento explícito y acotado que controle el usuario."
156
+ ],
157
+ "examples": [
158
+ "Entre sesiones recuerda el tono, los formatos, los contactos recurrentes y las instrucciones permanentes, recuperando las pocas que aplican a la solicitud actual en lugar de volver a preguntar.",
159
+ "En cada contacto recupera los problemas previos del cliente, sus derechos y las resoluciones acotadas a esa cuenta, de modo que continúa en vez de reiniciar la conversación.",
160
+ "Almacena memorias procedimentales — comandos de compilación, reglas de nombres, preferencias de revisión — y las recuerda al trabajar en el mismo repositorio durante muchas sesiones."
161
+ ],
162
+ "productionEvidence": {
163
+ "context": "Despliegue OpenClaw local-first y mono-operador observado durante 57 días (161 sesiones / 2.776 turnos), agregado desde las propias trazas del agente.",
164
+ "scenario": "El agente persiste archivos de memoria de workspace y trazas por sesión para continuidad entre turnos y entre sesiones, con un plugin de recuerdo semántico disponible bajo demanda.",
165
+ "technology": "Archivos de memoria de workspace (MEMORY.md, IDENTITY.md, SOUL.md, USER.md, HEARTBEAT.md), ids de sesión persistentes y eventos de ciclo de vida, y un plugin de memoria activa (memory_search/get/recall).",
166
+ "load": "134 archivos de sesión persistidos en la ventana de 57 días; recuerdo semántico invocado una vez.",
167
+ "results": "La continuidad se mantuvo en 134 sesiones persistidas durante 57 días mediante memoria estructural de workspace; el recuerdo semántico explícito apenas se necesitó (una llamada) en esta carga autónoma. Despliegue local-first mono-operador."
168
+ },
169
+ "kpis": [
170
+ {
171
+ "metric": "Precisión de recuperación de las memorias inyectadas",
172
+ "note": "De las memorias colocadas en el contexto, la proporción que era realmente relevante. Es la métrica que más directamente gobierna la calidad de la respuesta; lo bueno se ve cuando el conjunto inyectado está casi todo a propósito, con memorias irrelevantes poco frecuentes."
173
+ },
174
+ {
175
+ "metric": "Cobertura de recuperación en tareas dependientes de memoria",
176
+ "note": "En tareas que requieren un hecho almacenado conocido, con qué frecuencia ese hecho se recupera realmente. Lo bueno se ve cuando la memoria correcta aparece de forma fiable; los fallos persistentes apuntan a lagunas de extracción o de indexación."
177
+ },
178
+ {
179
+ "metric": "Tamaño del almacén de memorias y ritmo de crecimiento",
180
+ "note": "Total de memorias y a qué velocidad se acumulan por usuario activo. Lo bueno se ve cuando el crecimiento sigue hechos duraderos genuinamente nuevos, no una subida sin límite — una curva descontrolada señala escritura excesiva."
181
+ },
182
+ {
183
+ "metric": "Tasa de obsolescencia y contradicción",
184
+ "note": "Proporción de memorias recuperadas que están desactualizadas o entran en conflicto con una verdad más nueva. Lo bueno se ve como una tasa baja y estable, evidencia de que la consolidación y la expiración van al ritmo del cambio."
185
+ }
186
+ ],
187
+ "failureModes": [
188
+ "Escribir todo convierte el almacén en ruido; entonces la recuperación expone memorias de bajo valor o erróneas. Se corrige elevando el umbral de lo que se escribe y revisando la calidad de la extracción.",
189
+ "Un hecho antiguo se recupera y se actúa sobre él después de que la verdad cambió, sin señal de que esté desactualizado. Se mitiga con marcas de tiempo, clasificación ponderada por recencia y reemplazo explícito al escribir.",
190
+ "Una memoria de un usuario, inquilino o proyecto se recupera hacia el contexto de otro porque faltaban o eran incorrectos los filtros de ámbito — un fallo de privacidad y de corrección a la vez.",
191
+ "Para compensar una mala clasificación, los equipos inyectan muchas memorias, rellenando la ventana con tokens marginales y degradando el mismo razonamiento que la memoria debía sostener."
192
+ ],
193
+ "lessons": [
194
+ "La calidad se decide cuando eliges qué recordar. Un almacén pequeño, limpio y deduplicado recupera mucho mejor que uno grande y ruidoso.",
195
+ "Unas pocas memorias correctas superan a muchas poco relacionadas. Ajusta por relevancia y clasifica con rigor en lugar de maximizar cuánto inyectas.",
196
+ "Almacena metadatos y ofrece formas de ver, editar, expirar y borrar memorias. Es esencial para depurar, generar confianza y cumplir las obligaciones de privacidad.",
197
+ "Los hechos se vuelven obsoletos y se contradicen. Construye consolidación, reemplazo y expiración pronto; adaptarlos sobre un almacén grande y contaminado es doloroso."
198
+ ],
199
+ "faqs": [
200
+ {
201
+ "q": "¿En qué se diferencia del almacenamiento en caché semántico?",
202
+ "a": "El caché semántico almacena y reproduce respuestas completas para evitar recomputar solicitudes similares. La memoria a largo plazo almacena hechos, preferencias y resultados duraderos, y luego los recompone en razonamiento nuevo para cada tarea. Uno reutiliza salidas; la otra recuerda estado."
203
+ },
204
+ {
205
+ "q": "¿Qué debe recordar realmente el agente?",
206
+ "a": "Señal estable y reutilizable: preferencias del usuario, decisiones y compromisos, resultados de tareas previas y procedimientos recurrentes. Evita la charla transitoria y cualquier cosa que no puedas justificar retener. Escribir menos pero escribir bien es lo que hace precisa la recuperación posterior."
207
+ },
208
+ {
209
+ "q": "¿Cómo se manejan la PII y la privacidad?",
210
+ "a": "Trata el almacén como datos gobernados: aplica el ámbito para que las memorias nunca crucen entre usuarios o inquilinos, minimiza lo que persistes, admite consentimiento y borrado, y define controles de retención y de acceso. La inspeccionabilidad y una política de expiración son parte del cumplimiento de estas obligaciones."
211
+ }
212
+ ]
213
+ },
214
+ "pt": {
215
+ "name": "Memória de longo prazo",
216
+ "summary": "Dá a um agente memória persistente entre sessões para que ele lembre fatos, preferências do usuário e resultados anteriores além de uma única janela de contexto. Um caminho de escrita decide o que armazenar, resume e remove duplicatas; um caminho de leitura recupera apenas as memórias relevantes para o contexto quando preciso. Diferente do cache semântico, que armazena respostas inteiras para evitar recomputar, a memória de longo prazo guarda fatos e estado duradouros e os recompõe em raciocínio novo a cada vez.",
217
+ "problem": "A janela de contexto é finita e reinicia entre sessões. Um agente que só enxerga a conversa atual esquece as preferências declaradas pelo usuário, as decisões tomadas na semana passada e o resultado de tarefas anteriores. Colocar todo o histórico em cada prompt é inviável a partir de certa escala e degrada o raciocínio à medida que a janela se enche de tokens de baixo valor. As equipes precisam de uma forma de persistir o pequeno conjunto de fatos que importam e de trazê-los com precisão quando são relevantes.",
218
+ "context": "Use isto quando um agente atende os mesmos usuários ou trabalha repetidamente nas mesmas tarefas de longa duração: assistentes que aprendem preferências, agentes de suporte que acompanham o histórico de um cliente, agentes de programação que lembram as convenções de um projeto ou fluxos de várias etapas que se estendem por dias. Pressupõe que você consegue armazenar dados fora do modelo (um armazenamento vetorial, um banco de dados ou um framework de memória) e que controla tanto quando as memórias são escritas quanto como são recuperadas para o prompt.",
219
+ "solution": [
220
+ "Separe o caminho de escrita do caminho de leitura. No caminho de escrita, após concluir um turno ou tarefa, uma etapa de extração decide o que vale a pena lembrar: fatos estáveis, preferências, compromissos e resultados — não conversa passageira. As memórias candidatas são resumidas em afirmações compactas e autocontidas, comparadas com as memórias existentes para remover duplicatas e detectar contradições, e gravadas em um armazenamento com metadados: um tipo de memória, um carimbo de tempo, uma fonte e o usuário ou escopo a que pertencem. O objetivo é escrever menos, mas escrever bem; memórias ruidosas envenenam a recuperação posterior.\n\nNo caminho de leitura, antes de o agente raciocinar, você recupera as memórias candidatas relevantes para a tarefa atual — geralmente por similaridade semântica mais filtros de escopo e recência —, as classifica e injeta apenas as poucas melhores no contexto. Trate a recuperação como um problema de precisão: um punhado de memórias corretas vale mais que um conjunto grande e pouco relacionado. Distinga os tipos de memória para que a recuperação seja direcionada: episódica (o que aconteceu), semântica (fatos e preferências duradouros) e procedimental (como executar uma tarefa recorrente). Consolide e expire as memórias periodicamente para que o armazenamento permaneça pequeno, atual e livre de contradições."
221
+ ],
222
+ "components": [
223
+ "Extrator de memórias (caminho de escrita)",
224
+ "Verificação de duplicatas e contradições",
225
+ "Armazenamento de memórias",
226
+ "Recuperador (caminho de leitura)",
227
+ "Montador de contexto",
228
+ "Tarefa de consolidação e expiração"
229
+ ],
230
+ "benefits": [
231
+ "O agente lembra preferências, decisões e resultados de sessões anteriores, então os usuários não precisam repetir o contexto e o agente se comporta de forma consistente ao longo do tempo.",
232
+ "Recuperar algumas memórias relevantes mantém a janela focada em tokens de alto valor em vez de despejar todo o histórico, o que preserva a qualidade do raciocínio e reduz o custo.",
233
+ "À medida que fatos e preferências estáveis se acumulam, o agente adapta as respostas com mais precisão a cada interação sem retreinar o modelo.",
234
+ "Como as memórias ficam em um armazenamento externo com metadados, você pode inspecionar, corrigir, exportar e excluir o que o agente sabe — importante para confiança e conformidade."
235
+ ],
236
+ "risks": [
237
+ "Sem consolidação e expiração, o armazenamento acumula fatos desatualizados e afirmações conflitantes, e o agente age com confiança sobre o errado.",
238
+ "Persistir dados do usuário gera obrigações de retenção, consentimento e controle de acesso; as memórias podem vazar informações sensíveis entre sessões ou usuários se o escopo não for aplicado.",
239
+ "Baixa precisão injeta memórias irrelevantes ou erradas que desorientam o raciocínio; baixa cobertura descarta em silêncio a memória que importava, dificultando o diagnóstico das falhas.",
240
+ "Escrever em excesso infla o armazenamento, torna a recuperação mais lenta, eleva custos de armazenamento e de embeddings e dilui o sinal do qual uma boa recuperação depende."
241
+ ],
242
+ "whenNot": [
243
+ "Se as sessões são independentes e nada precisa ser carregado adiante, a memória persistente adiciona complexidade, custo e superfície de privacidade sem benefício.",
244
+ "Quando o objetivo é reutilizar uma resposta anterior para uma consulta repetida, o cache semântico é a ferramenta certa; a memória de longo prazo serve para lembrar fatos e estado, não para armazenar saídas em cache.",
245
+ "Onde a regulação ou a política proíbe reter dados do usuário, não persista memórias; apoie-se no contexto da sessão ou em um armazenamento explícito e delimitado que o usuário controle."
246
+ ],
247
+ "examples": [
248
+ "Entre sessões ele lembra o tom, os formatos, os contatos recorrentes e as instruções permanentes, recuperando as poucas que se aplicam ao pedido atual em vez de perguntar de novo.",
249
+ "A cada contato ele recupera os problemas anteriores do cliente, seus direitos e as resoluções delimitadas àquela conta, de modo que continua em vez de reiniciar a conversa.",
250
+ "Armazena memórias procedimentais — comandos de build, regras de nomenclatura, preferências de revisão — e as recupera ao trabalhar no mesmo repositório ao longo de muitas sessões."
251
+ ],
252
+ "productionEvidence": {
253
+ "context": "Implantação OpenClaw local-first e de operador único observada por 57 dias (161 sessões / 2.776 turnos), agregada a partir dos próprios rastros do agente.",
254
+ "scenario": "O agente persiste arquivos de memória de workspace e rastros por sessão para continuidade entre turnos e entre sessões, com um plugin de recall semântico disponível sob demanda.",
255
+ "technology": "Arquivos de memória de workspace (MEMORY.md, IDENTITY.md, SOUL.md, USER.md, HEARTBEAT.md), ids de sessão persistentes e eventos de ciclo de vida, e um plugin de memória ativa (memory_search/get/recall).",
256
+ "load": "134 arquivos de sessão persistidos na janela de 57 dias; recall semântico invocado uma vez.",
257
+ "results": "A continuidade se manteve em 134 sessões persistidas por 57 dias por meio de memória estrutural de workspace; o recall semântico explícito quase não foi necessário (uma chamada) nesta carga autônoma. Implantação local-first de operador único."
258
+ },
259
+ "kpis": [
260
+ {
261
+ "metric": "Precisão de recuperação das memórias injetadas",
262
+ "note": "Das memórias colocadas no contexto, a parcela que era de fato relevante. É a métrica que mais diretamente governa a qualidade da resposta; o bom é quando o conjunto injetado está quase todo no tema, com memórias irrelevantes raras."
263
+ },
264
+ {
265
+ "metric": "Cobertura de recuperação em tarefas dependentes de memória",
266
+ "note": "Em tarefas que exigem um fato armazenado conhecido, com que frequência esse fato é de fato recuperado. O bom é quando a memória certa aparece de forma confiável; falhas persistentes apontam lacunas de extração ou de indexação."
267
+ },
268
+ {
269
+ "metric": "Tamanho do armazenamento de memórias e taxa de crescimento",
270
+ "note": "Total de memórias e a que velocidade se acumulam por usuário ativo. O bom é quando o crescimento acompanha fatos duradouros genuinamente novos, não uma subida sem limite — uma curva descontrolada sinaliza escrita excessiva."
271
+ },
272
+ {
273
+ "metric": "Taxa de obsolescência e contradição",
274
+ "note": "Parcela das memórias recuperadas que estão desatualizadas ou conflitam com uma verdade mais nova. O bom é uma taxa baixa e estável, evidência de que a consolidação e a expiração acompanham o ritmo da mudança."
275
+ }
276
+ ],
277
+ "failureModes": [
278
+ "Escrever tudo transforma o armazenamento em ruído; a recuperação então expõe memórias de baixo valor ou erradas. Corrija elevando o critério do que é escrito e revisando a qualidade da extração.",
279
+ "Um fato antigo é recuperado e usado depois que a verdade mudou, sem sinal de que está desatualizado. Mitigue com carimbos de tempo, classificação ponderada por recência e substituição explícita na escrita.",
280
+ "Uma memória de um usuário, inquilino ou projeto é recuperada para o contexto de outro porque os filtros de escopo faltavam ou estavam errados — uma falha de privacidade e de correção ao mesmo tempo.",
281
+ "Para compensar uma classificação ruim, as equipes injetam muitas memórias, reenchendo a janela com tokens marginais e degradando justamente o raciocínio que a memória deveria sustentar."
282
+ ],
283
+ "lessons": [
284
+ "A qualidade é decidida quando você escolhe o que lembrar. Um armazenamento pequeno, limpo e sem duplicatas recupera muito melhor que um grande e ruidoso.",
285
+ "Algumas memórias corretas superam muitas pouco relacionadas. Ajuste por relevância e classifique com rigor em vez de maximizar quanto você injeta.",
286
+ "Armazene metadados e ofereça formas de ver, editar, expirar e excluir memórias. Isso é essencial para depurar, gerar confiança e cumprir obrigações de privacidade.",
287
+ "Fatos ficam obsoletos e se contradizem. Construa consolidação, substituição e expiração cedo; adaptá-las a um armazenamento grande e poluído é doloroso."
288
+ ],
289
+ "faqs": [
290
+ {
291
+ "q": "Como isso difere do cache semântico?",
292
+ "a": "O cache semântico armazena e reproduz respostas inteiras para evitar recomputar solicitações semelhantes. A memória de longo prazo armazena fatos, preferências e resultados duradouros e depois os recompõe em raciocínio novo para cada tarefa. Um reutiliza saídas; a outra lembra estado."
293
+ },
294
+ {
295
+ "q": "O que o agente deve de fato lembrar?",
296
+ "a": "Sinal estável e reutilizável: preferências do usuário, decisões e compromissos, resultados de tarefas anteriores e procedimentos recorrentes. Evite conversa passageira e qualquer coisa que você não consiga justificar reter. Escrever menos, mas escrever bem, é o que torna a recuperação posterior precisa."
297
+ },
298
+ {
299
+ "q": "Como lidar com PII e privacidade?",
300
+ "a": "Trate o armazenamento como dados governados: aplique o escopo para que as memórias nunca cruzem entre usuários ou inquilinos, minimize o que você persiste, dê suporte a consentimento e exclusão, e defina controles de retenção e de acesso. A inspecionabilidade e uma política de expiração fazem parte do cumprimento dessas obrigações."
301
+ }
302
+ ]
303
+ }
304
+ }
305
+ }
@@ -0,0 +1,202 @@
1
+ {
2
+ "slug": "orchestrator-workers",
3
+ "category": "orchestration",
4
+ "updated": "2026-06-24",
5
+ "version": "1.1",
6
+ "featured": true,
7
+ "technologies": ["LangGraph", "CrewAI", "OpenAI Agents SDK", "Model Context Protocol (MCP)"],
8
+ "related": ["routing", "parallelization", "evaluator-optimizer"],
9
+ "references": [
10
+ { "title": "Anthropic — Building Effective Agents (2024)", "url": "https://www.anthropic.com/research/building-effective-agents" }
11
+ ],
12
+ "evidence": {
13
+ "evidenceLevel": "production",
14
+ "confidenceLevel": "low",
15
+ "sourceType": ["production_system", "personal_experience", "industry_observation"]
16
+ },
17
+ "locales": {
18
+ "en": {
19
+ "name": "Orchestrator-Workers",
20
+ "summary": "An orchestrator LLM dynamically breaks a task into subtasks, delegates each to a worker LLM, and synthesizes the results. Unlike fixed parallelization, the orchestrator decides the subtasks at runtime — making it suited to complex tasks whose decomposition is not known in advance.",
21
+ "problem": "Some tasks are too complex for a single call and cannot be decomposed up front, because the needed subtasks depend on the input.",
22
+ "context": "Use orchestrator-workers when a task needs dynamic decomposition — the number and nature of subtasks vary by input — and a coordinating model can plan and integrate the work.",
23
+ "solution": [
24
+ "A lead (orchestrator) model analyzes the task, decides which subtasks are needed, and delegates each to a worker model (often specialized). It then collects and synthesizes the workers' outputs into a final result.",
25
+ "It is the agentic generalization of parallelization: the decomposition is decided at runtime rather than hard-coded, which adds flexibility at the cost of more coordination and unpredictability."
26
+ ],
27
+ "components": ["Orchestrator (lead) model", "Worker models", "Delegation logic", "Synthesizer", "Shared state / tools"],
28
+ "benefits": [
29
+ "Handles complex tasks with dynamic decomposition.",
30
+ "Workers can be specialized per subtask.",
31
+ "Scales to varied inputs without hard-coded steps."
32
+ ],
33
+ "risks": [
34
+ "Coordination overhead, latency and token cost.",
35
+ "Harder to predict and debug than fixed workflows.",
36
+ "The orchestrator can mis-plan or loop without limits."
37
+ ],
38
+ "whenNot": [
39
+ "When the decomposition is known in advance — use chaining or fixed parallelization.",
40
+ "For simple tasks a single call handles.",
41
+ "When predictability and tight cost control are paramount."
42
+ ],
43
+ "examples": [
44
+ "A coding task where the lead decides which files to change and delegates edits.",
45
+ "A research task split into sub-questions, each researched then synthesized.",
46
+ "A complex report assembled from dynamically chosen sections."
47
+ ],
48
+ "productionEvidence": {
49
+ "context": "Single-operator, local-first OpenClaw deployment observed over 57 days (161 sessions / 2,776 turns), aggregated from the agent's own trajectory traces.",
50
+ "scenario": "Scheduled work runs in isolated, one-shot worker sessions forked from the parent, with capability scoping and child/depth limits.",
51
+ "technology": "Cron isolated-agent runtime, session forking (forkSessionFromParent), a subagent lane and registry, and per-agent child/depth limits.",
52
+ "load": "57 cron-isolated worker sessions over the window (the explicit sessions.spawn tool was not exercised).",
53
+ "results": "57 isolated worker sessions ran without cross-session interference; forked-session isolation was the dominant worker pattern, while the explicit spawn tool stayed unused in this window. Single-operator local-first deployment."
54
+ },
55
+ "kpis": [
56
+ { "metric": "End-to-end task completion rate", "note": "Share of orchestrated jobs that finish correctly across all sub-tasks; the orchestrator owns the whole outcome." },
57
+ { "metric": "Worker fan-out & cost", "note": "Number of worker calls per job and their combined token cost; orchestration can explode spend if decomposition is sloppy." },
58
+ { "metric": "Critical-path latency", "note": "Wall-clock of the longest dependent chain, not the sum of workers — this bounds responsiveness." },
59
+ { "metric": "Sub-task error rate", "note": "How often individual workers fail or return unusable results, driving retries and recovery." }
60
+ ],
61
+ "failureModes": [
62
+ "Bad decomposition: the orchestrator splits the task wrongly, so correct workers still produce a wrong whole.",
63
+ "Context loss between orchestrator and workers, causing inconsistent or contradictory partial results.",
64
+ "Cost blow-up from spawning too many workers or deep nesting without budget limits.",
65
+ "Single point of failure: if the orchestrator misjudges, the entire job fails despite healthy workers."
66
+ ],
67
+ "lessons": [
68
+ "Invest in the decomposition logic — most failures trace back to how the work was split, not the workers.",
69
+ "Pass workers the minimum context they need, explicitly, to avoid drift and contradictions.",
70
+ "Set a budget and depth cap; orchestration without limits is where agent cost spirals.",
71
+ "Make the orchestrator's plan inspectable so failures can be traced to a specific sub-task."
72
+ ],
73
+ "faqs": [
74
+ { "q": "How is this different from parallelization?", "a": "Parallelization uses a fixed, predefined split. Orchestrator-workers decides the subtasks dynamically at runtime, so it handles tasks whose shape varies by input." },
75
+ { "q": "Is this a multi-agent system?", "a": "Yes — it is a common multi-agent pattern. Use it only when a task genuinely benefits from dynamic, separable subtasks." },
76
+ { "q": "How do I keep it from running away?", "a": "Set budgets, step limits and stop conditions, and add observability so you can see and bound the orchestrator's planning." }
77
+ ]
78
+ },
79
+ "es": {
80
+ "name": "Orquestador-Trabajadores (Orchestrator-Workers)",
81
+ "summary": "Un LLM orquestador descompone dinámicamente una tarea en subtareas, delega cada una a un LLM trabajador y sintetiza los resultados. A diferencia de la paralelización fija, el orquestador decide las subtareas en tiempo de ejecución, lo que lo hace adecuado para tareas complejas cuya descomposición no se conoce de antemano.",
82
+ "problem": "Algunas tareas son demasiado complejas para una sola llamada y no se pueden descomponer de antemano, porque las subtareas necesarias dependen de la entrada.",
83
+ "context": "Usa orquestador-trabajadores cuando una tarea necesita descomposición dinámica —el número y la naturaleza de las subtareas varían según la entrada— y un modelo coordinador puede planificar e integrar el trabajo.",
84
+ "solution": [
85
+ "Un modelo líder (orquestador) analiza la tarea, decide qué subtareas hacen falta y delega cada una a un modelo trabajador (a menudo especializado). Luego recoge y sintetiza las salidas de los trabajadores en un resultado final.",
86
+ "Es la generalización agéntica de la paralelización: la descomposición se decide en tiempo de ejecución en vez de estar fijada, lo que añade flexibilidad a costa de más coordinación e imprevisibilidad."
87
+ ],
88
+ "components": ["Modelo orquestador (líder)", "Modelos trabajadores", "Lógica de delegación", "Sintetizador", "Estado / herramientas compartidos"],
89
+ "benefits": [
90
+ "Maneja tareas complejas con descomposición dinámica.",
91
+ "Los trabajadores pueden especializarse por subtarea.",
92
+ "Escala a entradas variadas sin pasos fijados."
93
+ ],
94
+ "risks": [
95
+ "Sobrecarga de coordinación, latencia y coste de tokens.",
96
+ "Más difícil de predecir y depurar que los flujos fijos.",
97
+ "El orquestador puede planificar mal o entrar en bucle sin límites."
98
+ ],
99
+ "whenNot": [
100
+ "Cuando la descomposición se conoce de antemano: usa encadenamiento o paralelización fija.",
101
+ "Para tareas simples que resuelve una sola llamada.",
102
+ "Cuando la previsibilidad y el control estricto de coste son prioritarios."
103
+ ],
104
+ "examples": [
105
+ "Una tarea de programación donde el líder decide qué ficheros cambiar y delega las ediciones.",
106
+ "Una investigación dividida en sub-preguntas, cada una investigada y luego sintetizada.",
107
+ "Un informe complejo ensamblado a partir de secciones elegidas dinámicamente."
108
+ ],
109
+ "productionEvidence": {
110
+ "context": "Despliegue OpenClaw local-first y mono-operador observado durante 57 días (161 sesiones / 2.776 turnos), agregado desde las propias trazas del agente.",
111
+ "scenario": "El trabajo programado corre en sesiones worker aisladas y de un solo uso, bifurcadas del padre, con acotado de capacidades y límites de hijos/profundidad.",
112
+ "technology": "Runtime de agente aislado por cron, bifurcación de sesión (forkSessionFromParent), un carril y registro de subagentes y límites de hijos/profundidad por agente.",
113
+ "load": "57 sesiones worker aisladas por cron en la ventana (la herramienta explícita sessions.spawn no se ejerció).",
114
+ "results": "57 sesiones worker aisladas corrieron sin interferencia entre sesiones; el aislamiento por sesión bifurcada fue el patrón worker dominante, mientras la herramienta de spawn explícito quedó sin uso en esta ventana. Despliegue local-first mono-operador."
115
+ },
116
+ "kpis": [
117
+ { "metric": "Tasa de finalización de extremo a extremo", "note": "Proporción de trabajos orquestados que terminan correctamente en todas las subtareas; el orquestador es dueño del resultado completo." },
118
+ { "metric": "Fan-out de workers y coste", "note": "Número de llamadas a workers por trabajo y su coste combinado en tokens; la orquestación puede disparar el gasto si la descomposición es descuidada." },
119
+ { "metric": "Latencia de ruta crítica", "note": "Tiempo de la cadena dependiente más larga, no la suma de workers; esto acota la capacidad de respuesta." },
120
+ { "metric": "Tasa de error de subtareas", "note": "Con qué frecuencia los workers individuales fallan o devuelven resultados inservibles, provocando reintentos y recuperación." }
121
+ ],
122
+ "failureModes": [
123
+ "Mala descomposición: el orquestador divide mal la tarea, así que workers correctos producen un todo incorrecto.",
124
+ "Pérdida de contexto entre orquestador y workers, causando resultados parciales inconsistentes o contradictorios.",
125
+ "Explosión de coste por generar demasiados workers o anidamiento profundo sin límites de presupuesto.",
126
+ "Punto único de fallo: si el orquestador se equivoca, todo el trabajo falla pese a workers sanos."
127
+ ],
128
+ "lessons": [
129
+ "Invierte en la lógica de descomposición: la mayoría de fallos se remontan a cómo se dividió el trabajo, no a los workers.",
130
+ "Pasa a los workers el mínimo contexto necesario, de forma explícita, para evitar deriva y contradicciones.",
131
+ "Fija un presupuesto y un tope de profundidad; la orquestación sin límites es donde se dispara el coste.",
132
+ "Haz inspeccionable el plan del orquestador para rastrear fallos hasta una subtarea concreta."
133
+ ],
134
+ "faqs": [
135
+ { "q": "¿En qué se diferencia de la paralelización?", "a": "La paralelización usa una división fija predefinida. Orquestador-trabajadores decide las subtareas dinámicamente en ejecución, así maneja tareas cuya forma varía según la entrada." },
136
+ { "q": "¿Es un sistema multiagente?", "a": "Sí, es un patrón multiagente común. Úsalo solo cuando una tarea se beneficie realmente de subtareas dinámicas y separables." },
137
+ { "q": "¿Cómo evito que se descontrole?", "a": "Fija presupuestos, límites de pasos y condiciones de parada, y añade observabilidad para ver y acotar la planificación del orquestador." }
138
+ ]
139
+ },
140
+ "pt": {
141
+ "name": "Orquestrador-Trabalhadores (Orchestrator-Workers)",
142
+ "summary": "Um LLM orquestrador decompõe dinamicamente uma tarefa em subtarefas, delega cada uma a um LLM trabalhador e sintetiza os resultados. Diferentemente da paralelização fixa, o orquestrador decide as subtarefas em tempo de execução, o que o torna adequado para tarefas complexas cuja decomposição não é conhecida de antemão.",
143
+ "problem": "Algumas tarefas são complexas demais para uma única chamada e não podem ser decompostas de antemão, porque as subtarefas necessárias dependem da entrada.",
144
+ "context": "Use orquestrador-trabalhadores quando uma tarefa precisa de decomposição dinâmica — o número e a natureza das subtarefas variam conforme a entrada — e um modelo coordenador pode planejar e integrar o trabalho.",
145
+ "solution": [
146
+ "Um modelo líder (orquestrador) analisa a tarefa, decide quais subtarefas são necessárias e delega cada uma a um modelo trabalhador (muitas vezes especializado). Depois coleta e sintetiza as saídas dos trabalhadores num resultado final.",
147
+ "É a generalização agêntica da paralelização: a decomposição é decidida em tempo de execução em vez de fixada, o que adiciona flexibilidade ao custo de mais coordenação e imprevisibilidade."
148
+ ],
149
+ "components": ["Modelo orquestrador (líder)", "Modelos trabalhadores", "Lógica de delegação", "Sintetizador", "Estado / ferramentas compartilhados"],
150
+ "benefits": [
151
+ "Lida com tarefas complexas com decomposição dinâmica.",
152
+ "Os trabalhadores podem se especializar por subtarefa.",
153
+ "Escala para entradas variadas sem passos fixados."
154
+ ],
155
+ "risks": [
156
+ "Sobrecarga de coordenação, latência e custo de tokens.",
157
+ "Mais difícil de prever e depurar que os fluxos fixos.",
158
+ "O orquestrador pode planejar mal ou entrar em laço sem limites."
159
+ ],
160
+ "whenNot": [
161
+ "Quando a decomposição é conhecida de antemão: use encadeamento ou paralelização fixa.",
162
+ "Para tarefas simples que uma única chamada resolve.",
163
+ "Quando a previsibilidade e o controle estrito de custo são prioritários."
164
+ ],
165
+ "examples": [
166
+ "Uma tarefa de programação em que o líder decide quais arquivos mudar e delega as edições.",
167
+ "Uma pesquisa dividida em subperguntas, cada uma pesquisada e depois sintetizada.",
168
+ "Um relatório complexo montado a partir de seções escolhidas dinamicamente."
169
+ ],
170
+ "productionEvidence": {
171
+ "context": "Implantação OpenClaw local-first e de operador único observada por 57 dias (161 sessões / 2.776 turnos), agregada a partir dos próprios rastros do agente.",
172
+ "scenario": "O trabalho agendado roda em sessões worker isoladas e de uso único, bifurcadas do pai, com escopo de capacidades e limites de filhos/profundidade.",
173
+ "technology": "Runtime de agente isolado por cron, bifurcação de sessão (forkSessionFromParent), uma faixa e registro de subagentes e limites de filhos/profundidade por agente.",
174
+ "load": "57 sessões worker isoladas por cron na janela (a ferramenta explícita sessions.spawn não foi exercida).",
175
+ "results": "57 sessões worker isoladas rodaram sem interferência entre sessões; o isolamento por sessão bifurcada foi o padrão worker dominante, enquanto a ferramenta de spawn explícito ficou sem uso nesta janela. Implantação local-first de operador único."
176
+ },
177
+ "kpis": [
178
+ { "metric": "Taxa de conclusão ponta a ponta", "note": "Proporção de trabalhos orquestrados que terminam corretamente em todas as subtarefas; o orquestrador é dono do resultado completo." },
179
+ { "metric": "Fan-out de workers e custo", "note": "Número de chamadas a workers por trabalho e seu custo combinado em tokens; a orquestração pode disparar o gasto se a decomposição for descuidada." },
180
+ { "metric": "Latência do caminho crítico", "note": "Tempo da cadeia dependente mais longa, não a soma dos workers; isso limita a capacidade de resposta." },
181
+ { "metric": "Taxa de erro de subtarefas", "note": "Com que frequência os workers individuais falham ou devolvem resultados inúteis, provocando retentativas e recuperação." }
182
+ ],
183
+ "failureModes": [
184
+ "Má decomposição: o orquestrador divide a tarefa errado, então workers corretos produzem um todo incorreto.",
185
+ "Perda de contexto entre orquestrador e workers, causando resultados parciais inconsistentes ou contraditórios.",
186
+ "Explosão de custo por gerar workers demais ou aninhamento profundo sem limites de orçamento.",
187
+ "Ponto único de falha: se o orquestrador erra, todo o trabalho falha apesar de workers saudáveis."
188
+ ],
189
+ "lessons": [
190
+ "Invista na lógica de decomposição: a maioria das falhas remonta a como o trabalho foi dividido, não aos workers.",
191
+ "Passe aos workers o mínimo de contexto necessário, de forma explícita, para evitar deriva e contradições.",
192
+ "Defina um orçamento e um teto de profundidade; a orquestração sem limites é onde o custo dispara.",
193
+ "Torne o plano do orquestrador inspecionável para rastrear falhas até uma subtarefa concreta."
194
+ ],
195
+ "faqs": [
196
+ { "q": "Como difere da paralelização?", "a": "A paralelização usa uma divisão fixa predefinida. Orquestrador-trabalhadores decide as subtarefas dinamicamente em execução, então lida com tarefas cuja forma varia conforme a entrada." },
197
+ { "q": "É um sistema multiagente?", "a": "Sim, é um padrão multiagente comum. Use-o só quando uma tarefa realmente se beneficiar de subtarefas dinâmicas e separáveis." },
198
+ { "q": "Como evito que descontrole?", "a": "Defina orçamentos, limites de passos e condições de parada, e adicione observabilidade para ver e limitar o planejamento do orquestrador." }
199
+ ]
200
+ }
201
+ }
202
+ }