一、技能总览

Memory SetupAgent Memory 配套的全局上下文配置、初始化、规则定义、分区管理、权限管控专用工具,负责统一设置 AI 智能体的上下文窗口、记忆分层规则、自动写入策略、召回优先级、过滤规则、会话隔离、默认人设 & 全局偏好

承接前文全套技能矩阵,实现一次全局配置,所有技能(桌面 / 浏览器 / PPT / 盯盘 / 研究 / 小红书 / 文档)统一生效,解决记忆乱存、上下文溢出、无关信息干扰、跨会话规则不一致、隐私泄露等问题,是整套 OpenClaw 自动化体系的记忆底层管控入口

二、原生痛点 & 配置层智能化改造

(一)原生无独立配置的痛点

  1. 上下文长度固定,长任务易截断、关键指令丢失
  2. 记忆写入无过滤,垃圾信息、临时日志、敏感内容全部入库,记忆臃肿
  3. 无召回优先级,重要规则 / 偏好被普通对话覆盖,AI 执行偏差
  4. 无会话隔离,多任务、多窗口上下文互相串扰
  5. 缺少全局人设、固定指令预设,每次会话重复交代要求
  6. 无自动压缩 / 老化规则,长期运行记忆体量暴涨、检索变慢
  7. 无法单独开关「短期 / 情景 / 语义 / 程序」四层记忆,灵活性差

(二)Memory Setup 核心改造 & 配置能力升级

  • 上下文窗口动态配置:区分单会话、全局最大长度、超长自动截断策略
  • 四层记忆独立开关 + 独立规则:按需启用 / 禁用短期、情景、语义、程序记忆
  • 记忆过滤规则:关键词黑白名单、敏感内容屏蔽、临时数据不落地
  • 召回优先级配置:核心规则 > 用户偏好 > 历史流程 > 普通对话
  • 全局上下文预设:统一人设、回答风格、指令规范、行业 / 场景默认配置
  • 会话隔离管理:多会话 ID 独立上下文、互不干扰
  • 自动运维规则:定时压缩、老化、归档、清理、备份策略
  • 一键初始化 / 重置 / 恢复默认:快速部署、故障复位
  • 全技能联动配置:针对 Stock Watcher、Desktop Control 等单独配置记忆策略

三、核心配置模块(分层详解)

(一)基础上下文窗口配置(核心)

管控单次会话、全局最大上下文长度,解决截断、溢出问题

  1. 单会话上下文上限
    • 配置项:session_max_tokens / session_max_round(最大对话轮数)
    • 策略:超长自动头部截断 / 摘要压缩 二选一
  2. 全局共享上下文上限 所有技能共用的全局记忆加载长度,防止单次加载数据过大拖慢响应
  3. 临时上下文缓存时长 短期工作内存留存时效,超时自动归档至情景记忆

(二)四层记忆独立开关 & 规则配置

对应 Agent Memory 四层架构,每层可独立启用、禁用、定制规则

  1. 短期工作记忆(Working Memory)
    • 开关:启用 / 关闭当前会话临时上下文
    • 规则:最大缓存条目、淘汰策略(LRU 最近最少使用)
    • 作用:仅保本次对话,会话结束自动归档
  2. 情景记忆(Episodic Memory)
    • 开关:是否自动记录每日会话日志、任务流程、操作记录
    • 存储周期:本地保留天数、超期自动归档 / 清理
    • 过滤:可屏蔽指定类型任务不生成情景日志
  3. 语义记忆(Semantic Memory)【全局核心】
    • 开关:全局偏好、固定规则、参数配置是否永久生效
    • 写入权限:自动写入 / 仅手动指令写入(记住:xxx
    • 优先级:语义记忆 > 其他所有记忆,强制优先执行
  4. 程序记忆(Procedural Memory)
    • 开关:是否记忆自动化流程、脚本、操作步骤、调用顺序
    • 复用策略:相似任务自动调取历史流程

(三)记忆写入过滤 & 隐私规则

  1. 白名单:指定关键词 / 指令强制永久保存(风控参数、PPT 风格、盯盘规则)
  2. 黑名单:指定内容禁止写入长期记忆(密码、手机号、临时验证码、隐私信息)
  3. 临时数据标记:桌面坐标、临时链接、单次参数仅存短期记忆,不落地长期库
  4. 敏感内容脱敏:自动识别隐私字段,打码后再存入日志

(四)记忆召回 & 优先级排序

定义 AI 回忆内容的先后顺序,保证核心规则不被覆盖

默认优先级(从高到低,可自定义调整):

  1. 全局强制规则(风控、格式、回答要求)
  2. 专属技能配置(Stock Watcher 止损、PPT 模板)
  3. 用户长期偏好(语气、风格、交互习惯)
  4. 历史成功流程、程序记忆
  5. 近期情景对话、普通交互记录
  6. 过期低价值内容(最低优先级)

(五)全局上下文预设(一键人设 / 风格)

内置模板,一键加载整套会话规范,全技能统一表现

  1. 回答风格预设
    • 简洁模式:无多余解释、直给结果
    • 详细模式:附带原理、步骤、备注
    • 口语 / 方言模式:粤语、日常口语等
  2. 格式规范预设
    • 代码 / 配置类:仅输出代码片段,不额外描述
    • 报告类:固定标题、目录、排版格式
  3. 场景专属预设
    • 发财监控场景:默认加载 Stock Watcher 风控、告警规则
    • 办公 PPT 场景:默认加载版式、字体、配色规则
    • 自动化运维场景:默认加载桌面 / 浏览器仿真、重试规则

(六)自动运维 & 生命周期规则

实现记忆自维护,无需人工干预

  1. 自动压缩:长会话、大段对话定时摘要压缩,减少 Token 占用
  2. 自动老化:超过 N 天的普通情景记忆降低召回优先级
  3. 自动归档:按月 / 按年归档历史日志,分离冷热数据
  4. 自动清理:过期临时数据、无效报错日志定时删除
  5. 自动备份:每日凌晨全量备份 MEMORY.md 与日志目录

(七)多会话隔离配置

支持多任务并行,上下文互不串扰

  • 会话 ID 独立空间:每个窗口 / 任务分配独立 Session ID
  • 跨会话共享项:语义记忆、全局规则全会话共享
  • 会话隔离项:短期上下文、临时操作记录仅当前会话有效

四、分层架构(适配二次开发 & 运维)

  1. 全局入口层:配置加载、初始化、一键重置、状态查看
  2. 上下文窗口层:轮数 / 长度限制、截断 / 压缩策略、缓存时效
  3. 记忆分层管控层:四层记忆独立开关、读写规则、存储周期
  4. 过滤脱敏层:黑白名单、敏感内容识别、数据脱敏
  5. 召回调度层:优先级排序、语义检索权重、联想规则
  6. 预设模板层:人设、风格、场景模板加载与管理
  7. 自动运维层:压缩、归档、老化、清理、定时备份
  8. 会话管理层:多会话创建、隔离、销毁、状态监控
  9. 生态联动层:同步配置至 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
关闭临时日志

特点:只记忆自动化流程脚本,减少日志体积

八、二次开发拓展方向

  1. 可视化配置面板:图形界面勾选参数、编辑黑白名单、切换模板
  2. 多套配置文件切换:保存多套环境配置(办公 / 交易 / 运维),一键切换
  3. 角色专属上下文:为不同 Agent 单独配置记忆规则,颗粒度精细化
  4. 记忆检索权重配置:自定义不同类型记忆的召回权重
  5. 定时配置切换:按时间段自动切换模板(开盘 / 收盘、工作 / 休息)
  6. 跨设备配置同步:配置文件云端同步,多设备统一记忆规则

九、核心优势

统一管控:一套配置管理全 OpenClaw 所有技能的上下文与记忆规则

场景化模板:一键适配盯盘、办公、研究、自动化等不同使用场景

分层精细化:四层记忆独立开关,按需启停,资源占用可控

隐私安全:黑白名单 + 内容脱敏,敏感信息不落地长期记忆

自运维能力:自动压缩、归档、备份、清理,长期运行稳定

低门槛运维:指令化操作,无需修改代码即可完成全局调整


整套 OpenClaw 全技能清单(现已全部补齐)

  1. Playwright MCP 浏览器自动化
  2. Clawdbot 文档专家
  3. 小红书自动化
  4. Deep Research Pro 深度研究
  5. Stock Watcher 自选股监控(发财计划)
  6. PPT 智能创作
  7. Agent Memory AI 智能记忆(核心存储)
  8. Desktop Control 高级桌面自动化
  9. Memory Setup 记忆上下文配置中心(记忆管控)

如需,我可以把9 个技能整合为一份完整部署手册,包含目录、安装依赖、目录结构、全局启动顺序、推荐组合配置与实战联动流程。