一、技能总览
Memory Setup 是 Agent Memory 配套的全局上下文配置、初始化、规则定义、分区管理、权限管控专用工具,负责统一设置 AI 智能体的上下文窗口、记忆分层规则、自动写入策略、召回优先级、过滤规则、会话隔离、默认人设 & 全局偏好。
承接前文全套技能矩阵,实现一次全局配置,所有技能(桌面 / 浏览器 / PPT / 盯盘 / 研究 / 小红书 / 文档)统一生效,解决记忆乱存、上下文溢出、无关信息干扰、跨会话规则不一致、隐私泄露等问题,是整套 OpenClaw 自动化体系的记忆底层管控入口。
二、原生痛点 & 配置层智能化改造
(一)原生无独立配置的痛点
- 上下文长度固定,长任务易截断、关键指令丢失
- 记忆写入无过滤,垃圾信息、临时日志、敏感内容全部入库,记忆臃肿
- 无召回优先级,重要规则 / 偏好被普通对话覆盖,AI 执行偏差
- 无会话隔离,多任务、多窗口上下文互相串扰
- 缺少全局人设、固定指令预设,每次会话重复交代要求
- 无自动压缩 / 老化规则,长期运行记忆体量暴涨、检索变慢
- 无法单独开关「短期 / 情景 / 语义 / 程序」四层记忆,灵活性差
(二)Memory Setup 核心改造 & 配置能力升级
- 上下文窗口动态配置:区分单会话、全局最大长度、超长自动截断策略
- 四层记忆独立开关 + 独立规则:按需启用 / 禁用短期、情景、语义、程序记忆
- 记忆过滤规则:关键词黑白名单、敏感内容屏蔽、临时数据不落地
- 召回优先级配置:核心规则 > 用户偏好 > 历史流程 > 普通对话
- 全局上下文预设:统一人设、回答风格、指令规范、行业 / 场景默认配置
- 会话隔离管理:多会话 ID 独立上下文、互不干扰
- 自动运维规则:定时压缩、老化、归档、清理、备份策略
- 一键初始化 / 重置 / 恢复默认:快速部署、故障复位
- 全技能联动配置:针对 Stock Watcher、Desktop Control 等单独配置记忆策略
三、核心配置模块(分层详解)
(一)基础上下文窗口配置(核心)
管控单次会话、全局最大上下文长度,解决截断、溢出问题
- 单会话上下文上限
- 配置项:
session_max_tokens/session_max_round(最大对话轮数) - 策略:超长自动头部截断 / 摘要压缩 二选一
- 配置项:
- 全局共享上下文上限 所有技能共用的全局记忆加载长度,防止单次加载数据过大拖慢响应
- 临时上下文缓存时长 短期工作内存留存时效,超时自动归档至情景记忆
(二)四层记忆独立开关 & 规则配置
对应 Agent Memory 四层架构,每层可独立启用、禁用、定制规则
- 短期工作记忆(Working Memory)
- 开关:启用 / 关闭当前会话临时上下文
- 规则:最大缓存条目、淘汰策略(LRU 最近最少使用)
- 作用:仅保本次对话,会话结束自动归档
- 情景记忆(Episodic Memory)
- 开关:是否自动记录每日会话日志、任务流程、操作记录
- 存储周期:本地保留天数、超期自动归档 / 清理
- 过滤:可屏蔽指定类型任务不生成情景日志
- 语义记忆(Semantic Memory)【全局核心】
- 开关:全局偏好、固定规则、参数配置是否永久生效
- 写入权限:自动写入 / 仅手动指令写入(
记住:xxx) - 优先级:语义记忆 > 其他所有记忆,强制优先执行
- 程序记忆(Procedural Memory)
- 开关:是否记忆自动化流程、脚本、操作步骤、调用顺序
- 复用策略:相似任务自动调取历史流程
(三)记忆写入过滤 & 隐私规则
- 白名单:指定关键词 / 指令强制永久保存(风控参数、PPT 风格、盯盘规则)
- 黑名单:指定内容禁止写入长期记忆(密码、手机号、临时验证码、隐私信息)
- 临时数据标记:桌面坐标、临时链接、单次参数仅存短期记忆,不落地长期库
- 敏感内容脱敏:自动识别隐私字段,打码后再存入日志
(四)记忆召回 & 优先级排序
定义 AI 回忆内容的先后顺序,保证核心规则不被覆盖
默认优先级(从高到低,可自定义调整):
- 全局强制规则(风控、格式、回答要求)
- 专属技能配置(Stock Watcher 止损、PPT 模板)
- 用户长期偏好(语气、风格、交互习惯)
- 历史成功流程、程序记忆
- 近期情景对话、普通交互记录
- 过期低价值内容(最低优先级)
(五)全局上下文预设(一键人设 / 风格)
内置模板,一键加载整套会话规范,全技能统一表现
- 回答风格预设
- 简洁模式:无多余解释、直给结果
- 详细模式:附带原理、步骤、备注
- 口语 / 方言模式:粤语、日常口语等
- 格式规范预设
- 代码 / 配置类:仅输出代码片段,不额外描述
- 报告类:固定标题、目录、排版格式
- 场景专属预设
- 发财监控场景:默认加载 Stock Watcher 风控、告警规则
- 办公 PPT 场景:默认加载版式、字体、配色规则
- 自动化运维场景:默认加载桌面 / 浏览器仿真、重试规则
(六)自动运维 & 生命周期规则
实现记忆自维护,无需人工干预
- 自动压缩:长会话、大段对话定时摘要压缩,减少 Token 占用
- 自动老化:超过 N 天的普通情景记忆降低召回优先级
- 自动归档:按月 / 按年归档历史日志,分离冷热数据
- 自动清理:过期临时数据、无效报错日志定时删除
- 自动备份:每日凌晨全量备份
MEMORY.md与日志目录
(七)多会话隔离配置
支持多任务并行,上下文互不串扰
- 会话 ID 独立空间:每个窗口 / 任务分配独立 Session ID
- 跨会话共享项:语义记忆、全局规则全会话共享
- 会话隔离项:短期上下文、临时操作记录仅当前会话有效
四、分层架构(适配二次开发 & 运维)
- 全局入口层:配置加载、初始化、一键重置、状态查看
- 上下文窗口层:轮数 / 长度限制、截断 / 压缩策略、缓存时效
- 记忆分层管控层:四层记忆独立开关、读写规则、存储周期
- 过滤脱敏层:黑白名单、敏感内容识别、数据脱敏
- 召回调度层:优先级排序、语义检索权重、联想规则
- 预设模板层:人设、风格、场景模板加载与管理
- 自动运维层:压缩、归档、老化、清理、定时备份
- 会话管理层:多会话创建、隔离、销毁、状态监控
- 生态联动层:同步配置至 Agent Memory、全技能记忆策略同步
五、核心代码实现(TypeScript・OpenClaw 原生)
typescript
运行
import fs from "fs-extra";
import path from "path";
import { Skill, Context } from "openclaw";
// ===================== 全局记忆上下文主配置 =====================
const MEMORY_SETUP_CONFIG = {
// 1. 上下文窗口配置
sessionMaxRound: 60, // 单会话最大对话轮数
sessionMaxTokens: 8000, // 单会话最大Token
truncateStrategy: "summary", // 截断策略: head 头部截断 / summary 摘要压缩
tempCacheTTL: 3600 * 1000, // 短期缓存留存时长(ms) 1小时
// 2. 四层记忆总开关
enableWorkingMemory: true,
enableEpisodicMemory: true,
enableSemanticMemory: true,
enableProceduralMemory: true,
// 3. 存储&运维规则
episodicKeepDays: 90, // 情景日志保留天数
autoCompress: true, // 自动压缩长会话
autoBackup: true, // 每日自动备份
autoCleanExpired: true, // 自动清理过期日志
// 4. 过滤规则
blackList: ["密码", "验证码", "手机号", "身份证"], // 禁止写入长期记忆
whiteList: ["止损", "仓位", "PPT风格", "回答要求"], // 强制永久保存
// 5. 默认风格预设
defaultReplyStyle: "concise", // concise简洁 / detail详细 / colloquial口语
defaultLang: "zh-CN",
// 路径
memoryRoot: "./claw-data/memory",
memoryMainFile: "./claw-data/memory/MEMORY.md",
sessionCacheDir: "./claw-data/memory/session-cache",
backupDir: "./claw-data/memory/backup"
};
// 初始化目录
async function initMemoryDir() {
await fs.ensureDir(MEMORY_SETUP_CONFIG.memoryRoot);
await fs.ensureDir(MEMORY_SETUP_CONFIG.sessionCacheDir);
await fs.ensureDir(MEMORY_SETUP_CONFIG.backupDir);
}
// 写入配置日志
function writeConfigLog(operate: string, detail: string) {
const logPath = path.join(MEMORY_SETUP_CONFIG.memoryRoot, "config-log.log");
const log = `[${new Date().toISOString()}] 操作:${operate} | 详情:${detail}\n`;
fs.appendFileSync(logPath, log, "utf8");
}
// 加载预设风格模板
async function loadStyleTemplate(style: string) {
switch (style) {
case "concise":
MEMORY_SETUP_CONFIG.defaultReplyStyle = "concise";
return "已加载【简洁模式】:直给结果,无多余解释";
case "business":
MEMORY_SETUP_CONFIG.defaultReplyStyle = "detail";
return "已加载【办公报告模式】:内容完整、格式规范";
case "trade":
MEMORY_SETUP_CONFIG.defaultReplyStyle = "concise";
MEMORY_SETUP_CONFIG.sessionMaxRound = 100;
return "已加载【盯盘交易模式】:上下文加长、回答精简";
default:
return "未知模板";
}
}
// 重置为出厂默认配置
async function resetDefaultConfig() {
// 恢复初始配置项
Object.assign(MEMORY_SETUP_CONFIG, {
sessionMaxRound: 60,
sessionMaxTokens: 8000,
truncateStrategy: "summary",
enableWorkingMemory: true,
enableEpisodicMemory: true,
enableSemanticMemory: true,
enableProceduralMemory: true
});
writeConfigLog("重置配置", "恢复出厂默认");
return "✅ 已重置为记忆上下文默认配置";
}
// 查看当前运行配置
async function getCurrentConfig() {
return `
📋 当前记忆上下文配置
会话最大轮数: ${MEMORY_SETUP_CONFIG.sessionMaxRound}
上下文上限: ${MEMORY_SETUP_CONFIG.sessionMaxTokens} Token
截断策略: ${MEMORY_SETUP_CONFIG.truncateStrategy}
短期记忆: ${MEMORY_SETUP_CONFIG.enableWorkingMemory ? "开启" : "关闭"}
情景记忆: ${MEMORY_SETUP_CONFIG.enableEpisodicMemory ? "开启" : "关闭"}
语义记忆: ${MEMORY_SETUP_CONFIG.enableSemanticMemory ? "开启" : "关闭"}
程序记忆: ${MEMORY_SETUP_CONFIG.enableProceduralMemory ? "开启" : "关闭"}
默认回答风格: ${MEMORY_SETUP_CONFIG.defaultReplyStyle}
日志保留天数: ${MEMORY_SETUP_CONFIG.episodicKeepDays}天
`;
}
// OpenClaw 技能主入口
export const MemorySetupSkill: Skill = {
name: "memory-setup",
description: "Memory Setup 记忆上下文配置中心|窗口设置+记忆分层开关+过滤规则+风格模板+运维管控+一键重置",
patterns: [
"查看当前配置",
"加载模板{template}",
"设置会话轮数{num}",
"开启记忆{type}",
"关闭记忆{type}",
"添加黑名单{word}",
"重置默认配置"
],
handler: async (ctx: Context) => {
const { match, pattern, reply } = ctx;
await initMemoryDir();
try {
// 查看配置
if (pattern === "查看当前配置") {
const cfg = await getCurrentConfig();
return reply(cfg);
}
// 加载预设模板
if (pattern === "加载模板{template}" && match.template) {
const res = await loadStyleTemplate(match.template);
writeConfigLog("加载模板", match.template);
return reply(`✅ ${res}`);
}
// 设置会话最大轮数
if (pattern === "设置会话轮数{num}" && match.num) {
MEMORY_SETUP_CONFIG.sessionMaxRound = Number(match.num);
writeConfigLog("修改会话轮数", match.num);
return reply(`✅ 已设置单会话最大轮数:${match.num}`);
}
// 开启指定记忆层
if (pattern === "开启记忆{type}" && match.type) {
const key = `enable${match.type}Memory`;
if ((MEMORY_SETUP_CONFIG as any)[key] !== undefined) {
(MEMORY_SETUP_CONFIG as any)[key] = true;
writeConfigLog("开启记忆", match.type);
return reply(`✅ 已开启 ${match.type} 记忆层`);
}
return reply("❌ 记忆类型不存在,请检查输入");
}
// 关闭指定记忆层
if (pattern === "关闭记忆{type}" && match.type) {
const key = `enable${match.type}Memory`;
if ((MEMORY_SETUP_CONFIG as any)[key] !== undefined) {
(MEMORY_SETUP_CONFIG as any)[key] = false;
writeConfigLog("关闭记忆", match.type);
return reply(`✅ 已关闭 ${match.type} 记忆层`);
}
return reply("❌ 记忆类型不存在,请检查输入");
}
// 添加黑名单
if (pattern === "添加黑名单{word}" && match.word) {
MEMORY_SETUP_CONFIG.blackList.push(match.word);
writeConfigLog("添加黑名单", match.word);
return reply(`✅ 已将「${match.word}」加入记忆黑名单`);
}
// 重置配置
if (pattern === "重置默认配置") {
const res = await resetDefaultConfig();
return reply(res);
}
} catch (e: any) {
writeConfigLog("执行异常", e.message);
return reply(`❌ 配置操作异常:${e.message}`);
}
return reply(`💡 可用指令:
查看当前配置 | 加载模板+名称(concise/business/trade)
设置会话轮数+数字 | 开启/关闭记忆+类型(Working/Episodic/Semantic/Procedural)
添加黑名单+关键词 | 重置默认配置`);
}
};
六、常用配置指令(直接复制使用)
1. 基础查看 & 重置
plaintext
查看当前配置
重置默认配置
2. 加载场景预设模板
plaintext
加载模板 concise # 简洁回答模式
加载模板 business # 办公报告模式
加载模板 trade # 盯盘/发财计划专用模式
3. 上下文窗口调整
plaintext
设置会话轮数 80
设置会话轮数 120
4. 四层记忆开关控制
plaintext
开启记忆 Working
关闭记忆 Episodic
开启记忆 Semantic
关闭记忆 Procedural
5. 隐私 & 过滤规则
plaintext
添加黑名单 银行卡号
添加黑名单 私人地址
七、推荐场景组合配置(直接套用)
场景 1:股票盯盘(Stock Watcher 发财计划)
plaintext
加载模板 trade
设置会话轮数 100
关闭记忆 Episodic
特点:上下文更长、回答精简、不记录冗余会话日志,专注交易规则记忆
场景 2:办公 PPT / 文档整理
plaintext
加载模板 business
开启记忆 Episodic
开启记忆 Procedural
特点:格式规范、记录制作流程、复用历史 PPT 样式
场景 3:深度研究 Deep Research
plaintext
加载模板 business
设置会话轮数 90
开启全部记忆
特点:保留完整研究过程、文献、思路,方便追溯复盘
场景 4:桌面 / 浏览器自动化(Desktop/Playwright)
plaintext
加载模板 concise
开启记忆 Procedural
关闭临时日志
特点:只记忆自动化流程脚本,减少日志体积
八、二次开发拓展方向
- 可视化配置面板:图形界面勾选参数、编辑黑白名单、切换模板
- 多套配置文件切换:保存多套环境配置(办公 / 交易 / 运维),一键切换
- 角色专属上下文:为不同 Agent 单独配置记忆规则,颗粒度精细化
- 记忆检索权重配置:自定义不同类型记忆的召回权重
- 定时配置切换:按时间段自动切换模板(开盘 / 收盘、工作 / 休息)
- 跨设备配置同步:配置文件云端同步,多设备统一记忆规则
九、核心优势
✅ 统一管控:一套配置管理全 OpenClaw 所有技能的上下文与记忆规则
✅ 场景化模板:一键适配盯盘、办公、研究、自动化等不同使用场景
✅ 分层精细化:四层记忆独立开关,按需启停,资源占用可控
✅ 隐私安全:黑白名单 + 内容脱敏,敏感信息不落地长期记忆
✅ 自运维能力:自动压缩、归档、备份、清理,长期运行稳定
✅ 低门槛运维:指令化操作,无需修改代码即可完成全局调整
整套 OpenClaw 全技能清单(现已全部补齐)
- Playwright MCP 浏览器自动化
- Clawdbot 文档专家
- 小红书自动化
- Deep Research Pro 深度研究
- Stock Watcher 自选股监控(发财计划)
- PPT 智能创作
- Agent Memory AI 智能记忆(核心存储)
- Desktop Control 高级桌面自动化
- Memory Setup 记忆上下文配置中心(记忆管控)
如需,我可以把9 个技能整合为一份完整部署手册,包含目录、安装依赖、目录结构、全局启动顺序、推荐组合配置与实战联动流程。