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.
155 lines
4.2 KiB
JSON
155 lines
4.2 KiB
JSON
{
|
|
"id": "memory-lancedb",
|
|
"doctorContract": {
|
|
"stateMigrations": true
|
|
},
|
|
"name": "Memory LanceDB",
|
|
"description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall, auto-capture, and vector search.",
|
|
"catalog": { "featured": true, "order": 70 },
|
|
"commandAliases": [{ "name": "ltm" }],
|
|
"activation": {
|
|
"onStartup": false,
|
|
"onCommands": ["ltm"]
|
|
},
|
|
"kind": "memory",
|
|
"contracts": {
|
|
"tools": ["memory_forget", "memory_recall", "memory_store"]
|
|
},
|
|
"uiHints": {
|
|
"embedding.apiKey": {
|
|
"label": "Embedding API Key",
|
|
"sensitive": true,
|
|
"placeholder": "sk-proj-...",
|
|
"help": "Optional API key override for OpenAI-compatible embeddings; omit to use configured provider auth"
|
|
},
|
|
"embedding.provider": {
|
|
"label": "Embedding Provider",
|
|
"placeholder": "openai",
|
|
"help": "Memory embedding provider adapter to use (for example openai, github-copilot, ollama)"
|
|
},
|
|
"embedding.model": {
|
|
"label": "Embedding Model",
|
|
"placeholder": "text-embedding-3-small",
|
|
"help": "OpenAI embedding model to use"
|
|
},
|
|
"embedding.baseUrl": {
|
|
"label": "Base URL",
|
|
"placeholder": "https://api.openai.com/v1",
|
|
"help": "Optional provider or OpenAI-compatible embedding endpoint base URL",
|
|
"advanced": true
|
|
},
|
|
"embedding.dimensions": {
|
|
"label": "Dimensions",
|
|
"placeholder": "1536",
|
|
"help": "Vector dimensions for custom models (required for non-standard models)",
|
|
"advanced": true
|
|
},
|
|
"dbPath": {
|
|
"label": "Database Path",
|
|
"placeholder": "~/.openclaw/memory/lancedb",
|
|
"advanced": true
|
|
},
|
|
"autoCapture": {
|
|
"label": "Auto-Capture",
|
|
"help": "Automatically capture important information from conversations"
|
|
},
|
|
"autoRecall": {
|
|
"label": "Auto-Recall",
|
|
"help": "Automatically inject relevant memories into context"
|
|
},
|
|
"dreaming": {
|
|
"label": "Dreaming",
|
|
"help": "Optional dreaming config consumed when this plugin owns the memory slot"
|
|
},
|
|
"captureMaxChars": {
|
|
"label": "Capture Max Chars",
|
|
"help": "Maximum message length eligible for auto-capture",
|
|
"advanced": true,
|
|
"placeholder": "500"
|
|
},
|
|
"customTriggers": {
|
|
"label": "Custom Triggers",
|
|
"help": "Literal phrases that should make auto-capture consider a message memory-worthy",
|
|
"advanced": true
|
|
},
|
|
"recallMaxChars": {
|
|
"label": "Recall Query Max Chars",
|
|
"help": "Maximum prompt/query length embedded for memory recall. Lower for small local embedding models.",
|
|
"advanced": true,
|
|
"placeholder": "1000"
|
|
},
|
|
"storageOptions": {
|
|
"label": "Storage Options",
|
|
"advanced": true,
|
|
"help": "Storage configuration options (access_key, secret_key, endpoint, etc.); supports ${ENV_VAR} values"
|
|
}
|
|
},
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"embedding": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"additionalProperties": false,
|
|
"minProperties": 1,
|
|
"properties": {
|
|
"apiKey": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"baseUrl": {
|
|
"type": "string"
|
|
},
|
|
"dimensions": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
},
|
|
"dbPath": {
|
|
"type": "string"
|
|
},
|
|
"autoCapture": {
|
|
"type": "boolean"
|
|
},
|
|
"autoRecall": {
|
|
"type": "boolean"
|
|
},
|
|
"dreaming": {
|
|
"type": "object"
|
|
},
|
|
"captureMaxChars": {
|
|
"type": "number",
|
|
"minimum": 100,
|
|
"maximum": 10000
|
|
},
|
|
"customTriggers": {
|
|
"type": "array",
|
|
"maxItems": 50,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 100
|
|
}
|
|
},
|
|
"recallMaxChars": {
|
|
"type": "number",
|
|
"minimum": 100,
|
|
"maximum": 10000
|
|
},
|
|
"storageOptions": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|