feat(context-engine): add memory prompt helper

This commit is contained in:
Vincent Koc
2026-04-07 08:28:39 +01:00
parent 6a559f0293
commit 2988203a5e
13 changed files with 116 additions and 9 deletions

View File

@@ -1,2 +1,2 @@
8592ce4554f44cd5325f44f86d37b3057548853cc9bc543b0611e5d9000f262e plugin-sdk-api-baseline.json
35393eceb6733d966430369c116511bb15a4b83eec93ebfd3b9a3e8f9ee29cec plugin-sdk-api-baseline.jsonl
5bee25156a7699938f2a25419ca44e35113cf6fbd6f533052af68712fc992629 plugin-sdk-api-baseline.json
f80212552c63be134a2ae456ce2cd4f81507c1569b60493b1d5f965dc2969041 plugin-sdk-api-baseline.jsonl

View File

@@ -115,6 +115,8 @@ engine is used automatically.
A plugin can register a context engine using the plugin API:
```ts
import { buildMemorySystemPromptAddition } from "openclaw/plugin-sdk/core";
export default function register(api) {
api.registerContextEngine("my-engine", () => ({
info: {
@@ -128,12 +130,15 @@ export default function register(api) {
return { ingested: true };
},
async assemble({ sessionId, messages, tokenBudget }) {
async assemble({ sessionId, messages, tokenBudget, availableTools, citationsMode }) {
// Return messages that fit the budget
return {
messages: buildContext(messages, tokenBudget),
estimatedTokens: countTokens(messages),
systemPromptAddition: "Use lcm_grep to search history...",
systemPromptAddition: buildMemorySystemPromptAddition({
availableTools: availableTools ?? new Set(),
citationsMode,
}),
};
},
@@ -249,7 +254,10 @@ OpenClaw resolves when it needs a context engine.
Memory plugins provide search/retrieval; context engines control what the
model sees. They can work together — a context engine might use memory
plugin data during assembly. Plugin engines that want the active memory
plugin's legacy prompt guidance can pull it explicitly from
prompt path should prefer `buildMemorySystemPromptAddition(...)` from
`openclaw/plugin-sdk/core`, which converts the active memory prompt sections
into a ready-to-prepend `systemPromptAddition`. If an engine needs lower-level
control, it can still pull raw lines from
`openclaw/plugin-sdk/memory-host-core` via
`buildActiveMemoryPromptSection(...)`.
- **Session pruning** (trimming old tool results in-memory) still runs