mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-25 08:52:12 +00:00
Merged via admin squash because current required CI failures are inherited from base and match latest `main` failures outside this PR's `memory-core` surface.
Prepared head SHA: df7f968581
Co-authored-by: artwalker <44759507+artwalker@users.noreply.github.com>
Reviewed-by: @frankekn
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import type { MemoryPromptSectionBuilder } from "openclaw/plugin-sdk/memory-core";
|
|
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
|
|
export const buildPromptSection: MemoryPromptSectionBuilder = ({
|
|
availableTools,
|
|
citationsMode,
|
|
}) => {
|
|
const hasMemorySearch = availableTools.has("memory_search");
|
|
const hasMemoryGet = availableTools.has("memory_get");
|
|
|
|
if (!hasMemorySearch && !hasMemoryGet) {
|
|
return [];
|
|
}
|
|
|
|
let toolGuidance: string;
|
|
if (hasMemorySearch && hasMemoryGet) {
|
|
toolGuidance =
|
|
"Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md; then use memory_get to pull only the needed lines. If low confidence after search, say you checked.";
|
|
} else if (hasMemorySearch) {
|
|
toolGuidance =
|
|
"Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md and answer from the matching results. If low confidence after search, say you checked.";
|
|
} else {
|
|
toolGuidance =
|
|
"Before answering anything about prior work, decisions, dates, people, preferences, or todos that already point to a specific memory file or note: run memory_get to pull only the needed lines. If low confidence after reading them, say you checked.";
|
|
}
|
|
|
|
const lines = ["## Memory Recall", toolGuidance];
|
|
if (citationsMode === "off") {
|
|
lines.push(
|
|
"Citations are disabled: do not mention file paths or line numbers in replies unless the user explicitly asks.",
|
|
);
|
|
} else {
|
|
lines.push(
|
|
"Citations: include Source: <path#line> when it helps the user verify memory snippets.",
|
|
);
|
|
}
|
|
lines.push("");
|
|
return lines;
|
|
};
|
|
|
|
export default definePluginEntry({
|
|
id: "memory-core",
|
|
name: "Memory (Core)",
|
|
description: "File-backed memory search tools and CLI",
|
|
kind: "memory",
|
|
register(api) {
|
|
api.registerMemoryPromptSection(buildPromptSection);
|
|
|
|
api.registerTool(
|
|
(ctx) =>
|
|
api.runtime.tools.createMemorySearchTool({
|
|
config: ctx.config,
|
|
agentSessionKey: ctx.sessionKey,
|
|
}),
|
|
{ names: ["memory_search"] },
|
|
);
|
|
|
|
api.registerTool(
|
|
(ctx) =>
|
|
api.runtime.tools.createMemoryGetTool({
|
|
config: ctx.config,
|
|
agentSessionKey: ctx.sessionKey,
|
|
}),
|
|
{ names: ["memory_get"] },
|
|
);
|
|
|
|
api.registerCli(
|
|
({ program }) => {
|
|
api.runtime.tools.registerMemoryCli(program);
|
|
},
|
|
{ commands: ["memory"] },
|
|
);
|
|
},
|
|
});
|