




















@@ -558,25 +558,25 @@ plugins.entries.active-memory
558558559559The most important fields are:
560560561-| Key | Type | Meaning |
562-| ---------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
563-| `enabled` | `boolean` | Enables the plugin itself |
564-| `config.agents` | `string[]` | Agent ids that may use active memory |
565-| `config.model` | `string` | Optional blocking memory sub-agent model ref; when unset, active memory uses the current session model |
566-| `config.allowedChatTypes` | `("direct" \| "group" \| "channel")[]` | Session types that may run Active Memory; defaults to direct-message style sessions |
567-| `config.allowedChatIds` | `string[]` | Optional per-conversation allowlist applied after `allowedChatTypes`; non-empty lists fail closed |
568-| `config.deniedChatIds` | `string[]` | Optional per-conversation denylist that overrides allowed session types and allowed ids |
569-| `config.queryMode` | `"message" \| "recent" \| "full"` | Controls how much conversation the blocking memory sub-agent sees |
570-| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Controls how eager or strict the blocking memory sub-agent is when deciding whether to return memory |
571-| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive" \| "max"` | Advanced thinking override for the blocking memory sub-agent; default `off` for speed |
572-| `config.promptOverride` | `string` | Advanced full prompt replacement; not recommended for normal use |
573-| `config.promptAppend` | `string` | Advanced extra instructions appended to the default or overridden prompt |
574-| `config.timeoutMs` | `number` | Hard timeout for the blocking memory sub-agent, capped at 120000 ms |
575-| `config.setupGraceTimeoutMs` | `number` | Advanced extra setup budget before the recall timeout expires; defaults to 0 and is capped at 30000 ms |
576-| `config.maxSummaryChars` | `number` | Maximum total characters allowed in the active-memory summary |
577-| `config.logging` | `boolean` | Emits active memory logs while tuning |
578-| `config.persistTranscripts` | `boolean` | Keeps blocking memory sub-agent transcripts on disk instead of deleting temp files |
579-| `config.transcriptDir` | `string` | Relative blocking memory sub-agent transcript directory under the agent sessions folder |
561+| Key | Type | Meaning |
562+| ---------------------------- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
563+| `enabled` | `boolean` | Enables the plugin itself |
564+| `config.agents` | `string[]` | Agent ids that may use active memory |
565+| `config.model` | `string` | Optional blocking memory sub-agent model ref; when unset, active memory uses the current session model |
566+| `config.allowedChatTypes` | `("direct" \| "group" \| "channel")[]` | Session types that may run Active Memory; defaults to direct-message style sessions |
567+| `config.allowedChatIds` | `string[]` | Optional per-conversation allowlist applied after `allowedChatTypes`; non-empty lists fail closed |
568+| `config.deniedChatIds` | `string[]` | Optional per-conversation denylist that overrides allowed session types and allowed ids |
569+| `config.queryMode` | `"message" \| "recent" \| "full"` | Controls how much conversation the blocking memory sub-agent sees |
570+| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Controls how eager or strict the blocking memory sub-agent is when deciding whether to return memory |
571+| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive" \| "max"` | Advanced thinking override for the blocking memory sub-agent; default `off` for speed |
572+| `config.promptOverride` | `string` | Advanced full prompt replacement; not recommended for normal use |
573+| `config.promptAppend` | `string` | Advanced extra instructions appended to the default or overridden prompt |
574+| `config.timeoutMs` | `number` | Hard timeout for the blocking memory sub-agent, capped at 120000 ms |
575+| `config.setupGraceTimeoutMs` | `number` | Advanced extra setup budget before the recall timeout expires; defaults to 0 and is capped at 30000 ms. See [Cold-start grace](#cold-start-grace) for v2026.4.x upgrade guidance |
576+| `config.maxSummaryChars` | `number` | Maximum total characters allowed in the active-memory summary |
577+| `config.logging` | `boolean` | Emits active memory logs while tuning |
578+| `config.persistTranscripts` | `boolean` | Keeps blocking memory sub-agent transcripts on disk instead of deleting temp files |
579+| `config.transcriptDir` | `string` | Relative blocking memory sub-agent transcript directory under the agent sessions folder |
580580581581Useful tuning fields:
582582@@ -625,6 +625,52 @@ Then move to:
625625- `message` if you want lower latency
626626- `full` if you decide extra context is worth the slower blocking memory sub-agent
627627628+### Cold-start grace
629+630+Before v2026.5.2 the plugin silently extended your configured `timeoutMs` by an
631+extra 30000 ms during cold-start so model warm-up, embedding-index load, and
632+the first recall could share one larger budget. v2026.5.2 moved that grace
633+behind an explicit `setupGraceTimeoutMs` config — your configured `timeoutMs`
634+is now the budget by default, unless you opt in.
635+636+If you upgraded from v2026.4.x and you set `timeoutMs` to a value tuned for the
637+old implicit-grace world (the recommended starter `timeoutMs: 15000` is one
638+example), set `setupGraceTimeoutMs: 30000` to extend the prompt-build hook and
639+outer watchdog budgets back to the pre-v5.2 effective values:
640+641+```json5
642+{
643+ plugins: {
644+ entries: {
645+"active-memory": {
646+ config: {
647+ timeoutMs: 15000,
648+ setupGraceTimeoutMs: 30000,
649+ },
650+ },
651+ },
652+ },
653+}
654+```
655+656+Per the v2026.5.2 changelog: _"use the configured recall timeout as the
657+blocking prompt-build hook budget by default and move cold-start setup grace
658+behind explicit `setupGraceTimeoutMs` config, so the plugin no longer silently
659+extends 15000 ms configs to 45000 ms on the main lane."_
660+661+The embedded recall runner currently still receives the raw `timeoutMs` value
662+as its inner budget; the in-flight fix to extend that with `setupGraceTimeoutMs`
663+is tracked at [#74480](https://github.com/openclaw/openclaw/pull/74480). Until
664+that lands, very-cold first recalls can still time out at the inner layer even
665+with `setupGraceTimeoutMs` set — though the outer-layer setting still
666+substantially mitigates the symptom by giving the prompt-build hook room to
667+cover the warm-up window.
668+669+For resource-tight gateways where cold-start latency is a known trade-off,
670+lower values (5000–15000 ms) work too — the trade-off is a higher chance of
671+the very first recall after a gateway restart returning empty while warm-up
672+finishes.
673+628674## Debugging
629675630676If active memory is not showing up where you expect:
@@ -680,6 +726,19 @@ default `memory-core` path uses `memory_search`; `memory-lancedb` uses
680726- If you use `ollama`, confirm the embedding model is installed
681727 (`ollama list`).
682728</Accordion>
729+730+<Accordion title="First recall after gateway restart returns `status=timeout`">
731+On v2026.5.2 and later, if cold-start setup (model warm-up + embedding
732+index load) hasn't finished by the time the first recall fires, the run
733+can hit the configured `timeoutMs` budget and return `status=timeout`
734+with empty output. Gateway logs show `active-memory timeout after Nms`
735+around the first eligible reply after a restart.
736+737+See [Cold-start grace](#cold-start-grace) under Recommended setup for the
738+recommended `setupGraceTimeoutMs` value (and the open caveat about the
739+embedded recall budget tracked at #74480).
740+741+</Accordion>
683742</AccordionGroup>
684743685744## Related pages
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。