mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
da4a656cdb
* perf(plugins): declare doctor contract surfaces * perf(doctor): slim migration import closures * perf(plugins): narrow doctor declaration record surface and wire owner-test lane Registry records carry only the doctorContract declaration instead of the whole parsed manifest, and check:changed now selects the src/plugins-owned declaration honesty and closure-guard tests for extension module/manifest changes so cross-lane drift cannot pass PR classification. * fix(doctor): keep control-plane dist imports require-safe Keep doctor and channel control-plane chunks off exec-class dependencies, and enforce native require(esm) loading during postbuild. * chore(plugin-sdk): regenerate API baseline * chore(plugin-sdk): sync export ordering * fix(plugins): satisfy doctor contract CI boundaries * perf(doctor): make qqbot doctor closure dependency-light qqbot was the last plugin above 5s in doctor state-migration enumeration (~8s under tsx/jiti). The cost was not the state-key builder (already a leaf): its doctor closure value-imported the runtime-doctor SDK barrel, whose plugin-state-store/state-db re-exports pull kysely (~330 modules), plus security-runtime for one fileExists (~200 modules), all resolved per-module by jiti during enumeration. Split the migration-define helpers and light re-exports into a new private-local plugin-sdk/runtime-doctor-migrations subpath; runtime-doctor re-exports it so its public surface is byte-identical (API baseline hash unchanged). qqbot's doctor-contract and state-migrations now import only the light subpath, swapping fileExists for the equivalent async legacyStateFileExists already in the closure. qqbot enumeration: ~8.0s/531 modules -> ~0.25s/18 modules. * chore(plugin-sdk): drop private-local subpath from API baseline runtime-doctor-migrations is private-local-only; the baseline tracks public modules, and the earlier line was generated before the classification. * fix(plugins): register runtime-doctor-migrations boundary paths The private-local subpath list feeds the extension package boundary map; the shared paths config and xai's derived overrides must carry the same entry or the boundary contract test fails.
228 lines
6.8 KiB
JSON
228 lines
6.8 KiB
JSON
{
|
|
"id": "memory-core",
|
|
"doctorContract": {
|
|
"stateMigrations": true
|
|
},
|
|
"name": "OpenClaw Memory",
|
|
"activation": {
|
|
"onStartup": false
|
|
},
|
|
"kind": "memory",
|
|
"contracts": {
|
|
"tools": ["intent", "memory_get", "memory_search"]
|
|
},
|
|
"toolMetadata": {
|
|
"memory_get": {
|
|
"replaySafe": true
|
|
}
|
|
},
|
|
"commandAliases": [
|
|
{
|
|
"name": "dreaming",
|
|
"kind": "runtime-slash",
|
|
"cliCommand": "memory"
|
|
}
|
|
],
|
|
"uiHints": {
|
|
"dreaming.enabled": {
|
|
"label": "Dreaming Enabled",
|
|
"help": "Run the default background memory consolidation sweep. Disable to stop the managed schedule."
|
|
},
|
|
"dreaming.frequency": {
|
|
"label": "Dreaming Frequency",
|
|
"placeholder": "0 3 * * *",
|
|
"help": "Optional cron cadence for the full dreaming sweep (light, REM, then deep)."
|
|
},
|
|
"dreaming.model": {
|
|
"label": "Dreaming Model",
|
|
"placeholder": "anthropic/claude-sonnet-4-6",
|
|
"help": "Optional provider/model override for Dream Diary narrative subagent runs. Requires plugins.entries.memory-core.subagent.allowModelOverride."
|
|
},
|
|
"dreaming.phases.deep.maxPriorEntryLossFraction": {
|
|
"label": "Maximum Prior Entry Loss",
|
|
"help": "Maximum fraction of prior MEMORY.md entries an accepted consolidation rewrite may remove."
|
|
}
|
|
},
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"dreaming": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"frequency": {
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"verboseLogging": {
|
|
"type": "boolean"
|
|
},
|
|
"storage": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": ["inline", "separate", "both"]
|
|
},
|
|
"separateReports": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"phases": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"light": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"lookbackDays": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"dedupeSimilarity": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deep": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"minScore": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1,
|
|
"default": 0.75
|
|
},
|
|
"minRecallCount": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"default": 3
|
|
},
|
|
"minUniqueQueries": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"default": 3
|
|
},
|
|
"recencyHalfLifeDays": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"maxAgeDays": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"maxPromotedSnippetTokens": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Maximum estimated token count for each short-term recall snippet promoted into MEMORY.md. Provenance metadata remains attached to the entry."
|
|
},
|
|
"maxPriorEntryLossFraction": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1,
|
|
"description": "Maximum fraction of prior MEMORY.md entries a consolidation rewrite may remove before OpenClaw rejects it and uses append-only fallback."
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"rem": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"lookbackDays": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"minPatternStrength": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|