n8n
Version:
n8n Workflow Automation Tool
71 lines (60 loc) • 4.59 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.memorySkill = memorySkill;
const initial_build_prompt_1 = require("../prompts/initial-build.prompt");
function memorySkill() {
return {
id: 'agent-builder-memory',
name: 'Agent Builder Memory',
description: 'Use for explicit memory changes: Episodic/long-term/cross-session memory, observer/reflector/extractor worker models, threshold/budget tuning, or disabling memory. Not for ordinary fresh-agent creation, which uses the default memory config in Memory Guidance.',
recommendedTools: [
'ask_embedding_credential',
'resolve_llm',
'ask_credential',
'read_config',
'patch_config',
],
allowedTools: [
'ask_embedding_credential',
'resolve_llm',
'ask_credential',
'ask_questions',
'read_config',
'patch_config',
'write_config',
],
instructions: `\
## Purpose
Use this to tune or disable the target agent's memory, or to enable Episodic
Memory (long-term, cross-session recall).
## Use when
- The user asks to enable, configure, or disable Episodic Memory, long-term
memory, prior conversations, remembered decisions, exact artifacts, or
cross-session memory.
- The user asks to tune observer/reflector/extractor worker models, token
thresholds, render budgets, or the observation log tail limit.
- The user asks to disable session memory or observational memory.
## Observational Memory Tuning
- Supported observational memory tuning fields: \`enabled\`, \`observerModel\`, \`reflectorModel\`, \`observerThresholdTokens\`, \`reflectorThresholdTokens\`, \`renderTokenBudget\`, \`observationLogTailLimit\`, and \`lockTtlMs\`.
- Memory worker model fields must use object shape: \`{ "model": "provider/model-name", "credential": "<credentialId>" }\`.
- Only set \`observerModel\`, \`reflectorModel\`, \`extractorModel\`, or \`episodicMemory.reflectorModel\` when the user explicitly asks to use a specific model for memory work.
- Use only credential IDs returned by \`resolve_llm\` or \`ask_credential\` for memory worker model fields. Do not invent IDs or copy a main-model credential unless one of those tools returned it for that worker model provider.
## Episodic Memory
- Enable \`memory.episodicMemory\` only when the user asks for Episodic Memory, long-term memory, prior conversations, remembered decisions, exact artifacts, or cross-session memory.
- Before enabling it, call \`ask_embedding_credential({ credentialType: "openAiApi", purpose: "OpenAI credential for Episodic Memory embeddings" })\`. Without the assistant proxy: ${initial_build_prompt_1.INITIAL_BUILD_NOTE} Leave Episodic Memory disabled, include an \`openAiApi\` entry in the trailing \`finish_setup\` call, and enable it with the returned credential id — the draft schema requires a credential to enable it.
- On success, set \`memory.episodicMemory = { "enabled": true, "credential": "<credentialId>" }\`, using the returned \`credentialId\` value. This can be a real credential id or \`"managed"\` when the assistant proxy is available. Preserve existing \`topK\` or \`maxEntriesPerRun\`.
- \`memory.episodicMemory.credential\` is only for OpenAI embeddings. It is separate from optional \`extractorModel\` and \`reflectorModel\` worker credentials.
- If credential selection is skipped, do not enable Episodic Memory; explain that it needs an OpenAI credential for embeddings.
- Do not add instructions saying the agent should remember, store, save, or decide what context matters. The runtime handles memory extraction and indexing.
- If instructions mention Episodic Memory, phrase it as retrieval/use only, e.g. "Use recalled prior context when relevant to the user's request."
- Do not invent Episodic Memory credential IDs or reuse the main model credential unless \`ask_embedding_credential\` returned it for this purpose.
## Gotchas
- Session memory and Episodic Memory are different features; do not use one as a substitute for the other.
- Observational memory is runtime-managed session memory behavior; do not add target-agent instructions telling it how to save observations.
- A skipped Episodic Memory credential means Episodic Memory stays disabled.
## Verify
- Episodic Memory has an OpenAI credential or \`"managed"\` returned by \`ask_embedding_credential\`.
- Existing memory tuning is preserved unless the user asked to change it.`,
};
}
//# sourceMappingURL=memory.skill.js.map