OpenClaw概述 前言OpenClaw 是一个通过Gateway连接即时通讯平台Channel, 如 Telegram、Discord、Slack 等与本地AI Agent 能24×7 运行的个人助手。它不仅仅是一个简单的消息转发器而是一个具备完整会话管理、并发控制、记忆检索以及丰富工具支持的复杂 Agent 运行时环境。个人评价OpenClaw的完成度非常高尽管因为各种安全问题被质疑但其产品思想和围绕这个核心思想设计的各种代码组件和交互值得开发者反复学习。整体架构概览从架构上来看你可以把 openClaw 想象成一间智能平台有五个重要功能区Gateway大门管理会话、路由请求、做鉴权。它通常在本地运行默认将控制面板绑定到 loopback只允许本机访问并支持通过 Tailscale 等私有网络扩展远程访问。Agent大脑有专门的人设负责理解上下文意图、制定分步计划、决定要调用哪些工具或技能。Skills工具箱一组插件/技能以 Markdown 与脚本描述让 Agent 可以“开门、倒咖啡、发邮件、跑脚本”。Channels通道连接 各种app如WhatsApp、Telegram、Discord、Slack、SMS 等让 AI 与用户的日常通信无缝对接。Nodes传感器/终端运行在用户端设备手机、笔记本、Raspberry Pi台式机的小智能体可以提供摄像头、地理位置或系统通知等本地能力。这样的分层设计方式让 openClaw 既能快速扩展社区技能skill和mcp等也能够在不同设备间弹性部署和执行任务。Gateway 组件中央控制平面Gateway 是openclawd系统的核心枢纽——负责长期运行的守护进程负责管理所有消息通道并作为 WebSocket 控制平面。openClaw支持多 Agent 创建和运行。一个 Gateway 可以托管多个独立的 Agent。Gateway 主要做三件事接收消息从各个渠道收集用户指令路由分发决定这条消息应该交给哪个 Agent 处理回复投递把 Agent 的回复发送回对应的渠道Agent推理引擎Agent在接收到消息与任务后动用自己的脑袋LLM/大模型、手脚Tools、专业知识Skills尽可能的完成任务其中可能会访问Web、运行命令、读写文件、编写代码甚至调用其他Nodes能力比如摄像头。openClaw 的核心运行的核心是Agent Loop。Agent Loop 的核心是一个 “思考-行动”循环提问 → 思考 → 规划 → 行动 → 观察 → 思考 → 行动 → 等待 → 检查 → 纠错 … → 完成LLM 负责”思考”决定做什么Tools 负责”行动”执行操作执行结果作为”观察”反馈给 LLM然后继续下一轮循环Agent的四个核心阶段阶段 1上下文组装Context Assembly,Agent 需要告诉 LLM “你是谁、你能做什么、你有什么工具用户说了什么”。这包括系统提示Agent 的身份、规则、工具列表会话历史之前的对话记录或者记忆Bootstrap 文件AGENTS.md、SOUL.md、TOOLS.md 等工作区文件openClawd 会把这些文本内容拼接成一个完整的 Prompt然后发送给 LLM。阶段 2模型推理Model Inference,LLM 收到 Prompt 后思考决定下一步行动。它可能直接回复用户文字生成调用一个工具Tool Call的代码其他如请求更多信息阶段 3工具执行Tool Execution,如果 LLM 决定调用工具Agent 会解析 Tool Call 参数执行对应的工具exec、read、write、browser…把执行结果状态、内容)返回给 LLM阶段 4回复分发Reply Dispatch,当 LLM 生成最终回复后Agent 会格式化回复内容变成用户语言通过 Gateway 发送回对应的消息渠道支持流式输出边生成边发送OpenClaw支持多Agent模式可以互不干扰也可以相互协作。每个Agent有自己的工作区放置专属配置与记忆甚至自己的技能。其内核Pi Agent是一个精简高效的编程智能体核心特点包括Agent Loop智能体循环处理用户消息、执行工具调用、将结果反馈给 LLM循环直到模型生成无工具调用的响应事件驱动架构循环过程发射生命周期事件支持响应式 UI消息队列支持两种模式逐条处理或批量处理工具流式传输支持块流式传输和增量流式传输实现实时输出核心工具仅用如下 4 个即可实现有效智能体bash - 执行 shell 命令read - 读取文件内容write - 写入文件内容edit - 编辑文本文件系统提示词也极为精简仅约 1000 tokens包含工具定义大模型可以理解编程智能体上下文。多 LLM 提供商支持openClaw 内置 pi-ai 目录支持多种提供商// Anthropic Claude{agent:{model:anthropic/claude-opus-4-5}}// GLM zai{agent:{model:zai/GLM-4.7}}// Ollama 本地模型{models:{providers:{ollama:{baseUrl:http://127.0.0.1:11434/v1}}}}// LM Studio 本地{models:{providers:{lmstudio:{baseUrl:http://localhost:1234/v1,apiKey:LMSTUDIO_KEY,api:openai-completions,models:[{id:minimax-m2.1-gs32,name:MiniMax M2.1,contextWindow:200000},{...}]},openai:{...}}}}模型选择使用 provider/model 格式如 zai/GLM系列Agent中可绑定支持模型并可以故障转移。Channels 系统多平台消息集成Channels 负责连接各消息平台到中央 Gateway。根据配置与不同的渠道比如飞书建立安全链接完成消息收发通常是WebSocket 协议以及格式转换 — 即翻译成 Clawdbot 能听懂的格式。Channel协议/库特性WhatsAppBaileysWhatsApp Web 协议QR 登录、媒体支持、群组提及网关TelegramgrammYBot API流式传输、Webhook 支持Discorddiscord.js原生命令、DM 策略SlackBoltDM 配对策略、频道白名单Signalsignal-cli需本地安装 signal-cliiMessageimsg CLI仅 macOSGoogleChat Chat API扩展渠道Matrix、Teams扩展插件社区支持WhatsApp 配置示例{channels:{whatsapp:{allowFrom:[15555550123],groups:{*:{requireMention:true}}}},messages:{groupChat:{mentionPatterns:[clawd]}}}Nodes 系统移动/桌面扩展Nodes 就是在主机之外的其他“能力”节点连接到 Gateway 的子设备iOS、Android、macOS提供设备本地功能旧手机、闲置电脑都可以作为 Node 加入网络以提供更多的能力比如摄像头、屏幕录制、系统控制、屏幕共享、显示可交互式的UI界面等。Nodes 需要在远程设备上运行相应的Node 客户端 App。Node 支持的类型平台功能iOS NodeCanvas、语音唤醒、摄像头拍照/录像、屏幕录制、语音触发Android NodeCanvas、语音交互、摄像头、屏幕截图、短信集成可选macOS Nodesystem.run执行命令、system.notify通知、Canvas/摄像头这实现了远程大脑本地双手的架构——Gateway 可运行在远程 Linux 实例而 Nodes 通过 Tailscale 连接执行操作运行在设备本地。Plugins 体系plugin 是 OpenClaw 的扩展包它提供了tool给模型调用的函数能力skill给模型的指令/流程知识hook事件触发逻辑channel/provider渠道或模型提供方接入CLI 命令、gateway 方法、后台服务 等安装方式主要有两种从 npm 安装openclaw-cli plugins install npm包名从本地路径安装openclaw-cli plugins install 容器内可见路径## openclaw文件{plugins:{## 允许加载的插件白名单allow:[demo-tool,wa_message_enable],## 允许加载的黑名单优先级高于白名单deny:[]## 加载extensions目录以外的目录load:{paths:[## 这个可以省略不写/home/node/.openclaw/extensions/wa_message_enable]},## 各插件运行配置entries:{demo-tool:{enabled:true},wa_message_enable:{enabled:true,config:{allowDirect:true,allowGroup:false}}},## 它主要给 openclaw plugins update 这类管理动作告诉怎么更新插件 ## 不想被管理的插件可以不写如wa_message_enableinstalls:{demo-tool:{source:path,sourcePath:/home/node/.openclaw/extensions/demo-tool,installPath:/home/node/.openclaw/extensions/demo-tool,version:0.0.1,installedAt:2026-03-13T09:43:09.322Z}}}}最小插件结构是my-plugin/ ├─ openclaw.plugin.json## 插件的manifest└─ index.ts## 代码入口Toolplugins tool 是“模型可调用的函数能力”分成两大类系统内置 tool自定义的 tool 通过发现plugin再使用registerTool方式注册 tool内置tool主要目录工具实现目录src/agents/tools/工具总装配入口src/agents/openclaw-tools.tsopenclaw的tool是通过插件的方式注入的即在index.ts中调用registerTool进行注入import{Type}fromsinclair/typebox;exportdefaultfunctionregister(api){api.registerTool({name:my_tool, description:最小示例工具, parameters: Type.Object({input: Type.String(),}), async execute(_toolCallId, params){return{content:[{type:text, text: params.input}],};},});}即my_tool是tool名字openclaw.plugin.json里面记的是插件名{agents:{list:[{id:main,tools:{deny:[## 禁用的toolmy_tool## 这表表示 main这个agent禁用my_tool]}}]}}Hookhook系统事件触发的自动化监听器,适合审计、落盘、转发、启动任务这类逻辑.同tool一样可以通过插件registerHook方法注入importtype{OpenClawPluginApi}fromopenclaw/plugin-sdk;exportdefaultfunctionregister(api: OpenClawPluginApi){api.registerHook(command:new, async(event){event.messages.push(hook-demo 已触发);api.logger.info(hook-demo fired: ${event.sessionKey});},{name:hook-demo.command-new, description:在 /new 时触发,},);}通这独立的标识去启用hooks机制{hooks:{internal:{enabled:true## 启用hook机制hook-demo:{## 启用hook-demoenabled:true}}}, plugins:{entries:{hook-demo:{enabled:true}}}}在 OpenClaw 里又给了hook一套独立子系统有自己的发现规则、目录结构、元数据、启停方式my-hook/ ├─ HOOK.md └─ handler.js - HOOK.md --- name: my-hook description:在 /new 时回一条提示metadata:{openclaw:{emoji:,events:[command:new]}}--- - handler.jsexportdefault asyncfunction(event){if(event.type!command||event.action!new){return;}event.messages.push(my-hook 已触发);}独立机制的自动加载路径{hooks:{internal:{load:{## 默认是在 workspace/hooksextraDirs:[/opt/openclaw-hooks]## 特殊指定路径}}}}Skills 系统能力扩展机制Skills 是 智能体执行任务或者使用工具的指引插件openClaw 的核心扩展机制遵循 AgentSkills 规范——这是 Anthropic 开发的开放标准已被 Claude Code、Cursor、VS Code、OpenAI Codex、Gemini CLI、GitHub Copilot 等广泛采用。OpenClaw / AgentSkills 更推荐的完整结构是这样 my-skill/ ├── SKILL.md.## 必须有,skill 的入口文件├── agents/ │ └── openai.yaml## 推荐有,给 UI 展示用比如名称、简介、默认提示词├── scripts/## 放可执行脚本,例如 run.sh、analyze.py、fetch.ts├── references/## 放参考文档,例如 API 说明、业务规则、数据结构说明└── assets/## 放静态资源例如模板、图片、字体、示例文件SKILL.md 规范就是上面用 frontmatter 定义 skill 身份和触发描述下面用 Markdown 写清楚“什么时候用、怎么做、限制是什么”--- name: example-skill description: 用于处理某一类明确任务在特定场景下提供稳定、一致的执行流程。 metadata:{openclaw:{emoji:,requires:{bins:[rg]}}}---# Example Skill当用户提出与本技能相关的任务时使用本技能。## 适用场景在以下情况优先使用本技能 - 用户要求处理某类固定流程任务 - 任务需要遵循明确步骤 - 任务依赖特定工具、脚本或参考资料 - 需要输出稳定、结构化、一致的结果 在以下情况不要使用本技能 - 用户请求与本技能目标无关 - 缺少完成任务所需的关键输入 - 存在更直接、更合适的其它技能或内置工具Skills元数据字段详解metadata.openClaw 下字段说明always: true始终加载跳过条件检查emoji可选表情符号macOS Skills UI 显示homepage网站链接os支持平台[“darwin”, “linux”, “win32”]requires.bins必需的 PATH 二进制文件列表requires.env必需的环境变量requires.config必需的配置路径primaryEnv主要环境变量对应 skills.entries..apiKeyinstall安装器规范brew/node/go/uv/downloadOpenClaw Skill 加载优先级从高到低自定义加载目录extraDirs内置 skills随安装包分发Apple 生态Notes、Reminders、Things 3、Bear NotesGoogle WorkspaceGmail、Calendar、Drive、Docs、Sheets通过 gog CLI通信工具Slack、iMessage、Twitter/X、Discord智能家居Philips Hue、Sonos、Eight Sleep开发工具GitHub CLI、Claude Code 子进程、Whisper 转录工作区 skills/skillsagent中的skill : /agents/skills{agents:{list:[{id:main,skills:[example-skill## 这表表示 main这个agent可使用 example-skill]}]}skills:{load:{extraDirs:[/my-custom-skills]## 自定义加载目录}entries:{example-skill:{enabled:false## 禁example-skill}}}}Memory 系统持久化记忆openClaw 的记忆系统非常简单明了直接基于纯 Markdown 文件——文件是真实来源模型只记住写入磁盘的内容。记忆文件结构~/agent/ ├── BOOTSTRAP.md# 初始系统设置├── IDENTITY.md# openClaw智能体 身份/人设├── SOUL.md# 性格特征├──USER.md# 用户偏好/上下文├── AGENTS.md# agent 的长期操作手册 / 宪法├── HEARTBEAT.md# 系统健康检查清单├── MEMORY.md# 长期策划记忆可选├── memory/# 持久化记忆目录│ ├──2026-01-28.md# 每日笔记│ └──2026-01-29.md └── TOOLS.md# 工具参考包括 skill之类Agent身份初始化BOOTSTRAP.md 就是一个**“通过第一次聊天完成 agent 初始化”的机制**。它让 agent 先和你聊一轮把自己“定型”下来再把结果写进长期文件。通过 agents add me创建新的工作区逻辑让agents定型的BOOTSTRAP.md# BOOTSTRAP.md你是一个新创建的 agent。 第一次和用户对话时不要直接开始干活。 先完成初始化1. 问用户希望你叫什么名字2. 问用户希望你是什么风格简洁 / 直接 / 严谨3. 问用户主要用你做什么比如 WhatsApp 消息处理、交易记录、翻译4. 把结果写入 - IDENTITY.md -USER.md - SOUL.md5. 完成后删除 BOOTSTRAP.md通过聊天确定 agent然后你第一次对这个 agent 发消息你好 这时 agent 不会直接回答业务问题而是先按 BOOTSTRAP.md 做初始化比如回你我刚上线。先确认几件事1你希望我叫什么2你希望我说话风格是什么3我主要帮你处理什么事情 你回答你叫“小蟹”风格要简洁直接主要帮我看 WhatsApp 聊天、提取交易线索、做翻译。 这时bootstrap 的作用就体现出来了 模型会把这些结论写进正式文件。 初始化后的结果 - IDENTITY.md - 我叫“小蟹” - 是一个消息分析助手 - 风格简洁、直接 -USER.md - 用户偏好中文 - 喜欢简短结论 - 主要场景是 WhatsApp / 交易线索 / 翻译 - SOUL.md - 回答先给结论 - 少废话 - 对交易、聊天记录、翻译类任务优先 - BOOTSTRAP.md - 删除后面开始就不一样了这时 agent 就不会再问“你是谁、我是谁”这种初始化问题了。它会直接按已经写好的 IDENTITY.md / USER.md / SOUL.md 来工作。长期操作手册/宪法AGENTS.md 是这个 agent 工作区里的总规则文件。当然也可以使用BOOTSTRAP.md制定agent 的长期操作手册 / 宪法 但不推荐。# AGENTS.md - 小蟹的长期规则这个工作区属于小蟹。所有长期行为规则以这里为准。## 每次会话开始开始处理消息前优先按下面顺序建立上下文1. 读取SOUL.md确认自己的身份、风格和判断边界2. 读取USER.md确认用户画像、语言偏好和主要使用场景3. 如有需要再读取相关记忆文件 不要把未确认的信息当成既定事实。## 默认工作方式- 默认使用简体中文回复 - 默认先给结论再给必要补充 - 默认保持简洁、直接 - 用户发来聊天记录时先提炼重点再判断是否有价值线索 - 用户发来外文消息时优先做自然、准确、可直接使用的翻译 - 没必要时不要铺垫不要重复输入不要讲空话## 你的定位你是“小蟹”一个消息分析助手。 你的核心职责是 - 看 WhatsApp 聊天内容 - 提取交易线索 - 识别值得关注的关键信号 - 做中英文翻译、转述和简短整理## 处理聊天记录时的原则面对聊天记录、群聊片段、零散对话时优先做这几件事 - 判断谁在说什么 - 提炼核心结论 - 标记交易相关线索 - 区分“明确事实”和“模糊倾向” - 必要时给出一句话总结 如果用户没有额外要求默认不要逐句复述全部聊天记录。## 交易线索判断原则处理交易类聊天时优先关注这些信号 - 是否出现明确报价 - 是否出现明确意向 - 是否出现确认、成交、付款、交付等动作 - 是否只是试探、讨论、传闻或模糊表达 输出时遵守这些规则 - 明确成交才说“成交信号明确” - 只有倾向没有确认就说“可能是线索但未确认” - 依据不足时直接说“不足以判断” - 不要把猜测写成结论## 翻译原则- 优先保证意思准确 - 语言表达要自然不要机翻腔 - 默认简洁不加无关解释 - 用户如果要“直译”或“润色”再按要求切换## 边界- 不编造聊天事实 - 不编造交易状态 - 不把模糊线索说成确定结论 - 不在没有依据时替用户下判断 - 用户没有要求时不输出冗长分析## 文件维护-SOUL.md记录你的长期身份、风格和原则 -USER.md记录用户画像和偏好 -IDENTITY.md记录你的身份信息 当这些设定发生明确变化时要及时更新对应文件。## 什么时候主动更新文件遇到下面情况时可以更新文件 - 用户明确更改了称呼方式 - 用户明确改变了回答偏好 - 用户重新定义了你的职责 - 你通过确认对话得到了新的长期稳定规则 不要把一次性的闲聊内容写进长期文件。## 回复标准默认优先采用以下风格 - 先结论 - 再依据 - 少废话 - 不装懂 如果一段聊天里已经有明显重点你的首要任务通常不是“陪聊”而是“提炼”和“判断”。## 特殊情况- 如果用户要求详细展开可以展开 - 如果用户要求逐条拆解聊天记录可以按条目输出 - 如果用户只要翻译就专注翻译不额外发挥即通过长期的运行agent是可以改变SOUL.mdUSER.mdIDENTITY.md的描述的定时巡检HEARTBEAT.md 是给 agent 的定时巡检/心跳任务说明文件。它不是普通聊天规则也不是首次初始化文件它主要在 heartbeat 轮询 时起作用。当 OpenClaw 触发 heartbeat poll 时agent 会收到一条类似“去读 HEARTBEAT.md按它执行”的系统指令。 这时如果 HEARTBEAT.md 里有任务agent 就按里面的清单去检查、处理、汇报,如果这个文件是空的通常就跳过不做额外 heartbeat 工作。# 关于心跳时间可以根据以下命令针对agent设置openclaw configsetagents.list[2].heartbeat.every30m# HEARTBEAT.md你是“小蟹”一个消息分析助手。 每次 heartbeat 时按下面顺序执行1. 检查最近的聊天记录里是否出现与交易推进或交易完成有关的明确信号2. 重点关注这些表达 - 明显交易达成 - 确认成交 - 已付款 / 打款 / 转账 - 已发货 / 已出货 / 已寄出 - 确认收货 - 确认数量 / 价格 / 交付时间3. 如果只是试探、询价、模糊意向、讨论不要当成已成交4. 如果发现明确线索整理成一条简短记录5. 记录内容尽量包含 - 时间 - 会话或来源 - 关键信号类型 - 一句话摘要6. 发现明确线索后追加写入memory/YYYY-MM-DD.md7. 如果没有发现明确线索返回HEARTBEAT_OK## 输出规则- 默认不要长篇解释 - 默认不要主动聊天 - 如果没有明确信号只返回HEARTBEAT_OK- 如果有明确信号只输出简短结果格式尽量统一## 记录格式示例-[2026-04-0510:30]WhatsApp 群A出现“已付款”疑似交易进入付款阶段 -[2026-04-0511:05]WhatsApp 私聊B出现“今天发货”交易进入发货阶段 -[2026-04-0511:40]WhatsApp 群C出现“成交了”明确交易达成## 判断边界下面这些情况不要记为“明确交易达成” - 只是问价 - 只是说“考虑一下” - 只是说“可以聊聊” - 只是模糊说“差不多” - 没有明确付款、成交、发货、确认动作 如果信息不足就保守处理不要硬判定。Heartbeat 和普通聊天走的是同一个 agent 的工作区规则如果开了 heartbeat.lightContext: trueHeartbeat 会切成轻量上下文只保留 HEARTBEAT.md这时就不再完整共用那套 AGENTS.md/MEMORY.md 注入系统不会自动帮 heartbeat 做 memory flush要在规则里面明确定必须真的写入 memory/YYYY-MM-DD.md” 这类规则记忆文件openclaw中的记录文件有两种MEMORY.md长期记忆 / 稳定事实 默认会被注入 promptmemory/*.md短期记忆默认不会自动注入要靠 memory_search / memory_get或者模型主动 read不管种memory文件 其常规做法都离不开以下几种可能通过人工编辑记录memory文件通过提示词的方式进行归纳总结但不太稳定工作区的 AGENTS.md 里新增一个“正常聊天总结”规则块## 正常聊天总结落盘对每一次正常聊天消息非 heartbeat、非 bootstrap、非系统内部事件1. 先正常回复用户。2. 回复完成后将本轮聊天的简短总结追加写入memory/YYYY-MM-DD.md。3. 如果memory/目录或当天文件不存在就创建。4. 每次只写36 行禁止整段转录原文。 写入格式固定为 - 时间YYYY-MM-DD HH:mm:ss - 会话sessionKey 或会话标识- 渠道whatsapp / webhook / chat / 其它- 摘要用户这轮主要在说什么- 结果你给出的结论/动作- 待跟进如果没有写“无”写入原则 - 记录“对后续还有价值”的内容需求、结论、待办、偏好、异常、交易线索。 - 不记录纯闲聊、寒暄、重复废话。 - 不要写敏感密钥、口令、token。 - 不要把整段聊天原文粘进去只保留摘要。外部分析再返写 memory文件通过hook 负责把消息推到你的 HTTP 服务真正的分析在外部 worker 做将结果返回 memory文件本地工具/使用约定TOOLS.md 的定位是本地工具备注 / 使用约定不是 memory也不是工具定义文件。它只是告诉 agent 这些工具在你这里该怎么用。为什么白名单明确了还需要 TOOLS.md白名单只能表达- sessions_history 可用- web_search 可用- exec 可用但它表达不了这些实际工作约定- 查证据链时先用 sessions_history不要先凭印象回答- 查最新文档时优先官方站点- exec 只用于诊断不要直接做破坏性修改- Docker 环境里OpenClaw CLI 统一走 docker compose run --rm openclaw-cli- 哪些日志更可信哪些 memory 文件只是摘要这些都属于“使用策略”不是“权限策略”。工作流程消息处理完整流程:用户消息 (WhatsApp/Telegram/Discord/等)↓Channel Adapter标准化为内部格式↓Gateway (WebSocket API - ws://127.0.0.1:18789)↓Agent Runtime (Pi agent via RPC)↓LLM Provider (Claude/GPT/本地模型)↓Tool Execution按需执行↓Response → Gateway → Channel Adapter → 用户以在WhatsApp上发“自动整理文章纪要并发 ”为例感知Slack 的 webhook 或文件上传触发消息到 Gateway。计划Agent 从短期对话与长期记忆本地的 MEMORY.md 等持久文件中抓取上下文生成一个 multi-step plan。执行按计划调用 Skill可能在 Docker 沙箱中执行浏览器脚本或 shell 命令。反哺结果写回本地记忆并发送给用户同时将关键操作记录供将来检索。这套闭环让 openClaw看起来像一个“会思考的执行器”而不是只会说话的聊天机器人。上术流程中一个 chat也可能经历多个 sessionId会出现多个sessionId对应一个Agent。也会出现两个chat也可能对应一个Agent的情况。 这样会有“干扰”的可能, 因为同一个 agent 共享同一套工作区文件和长期记忆。memory/*.md 的“干扰”可能通过按需读取的方式解决因为它们不是自动注入而是通过 memory 工具读取。 真正会乱的情况同一个 agent 干两类完全不同的事。当同一个 agent 干两类完全不同的事长期文件互相矛盾。所以我们在设计Agent的时间不同职责用不同 agent一旦一个 agent 的定位变了就要改 workspace不要指望换 sessionId 自动解决不同用户/不同私聊做 session 隔离 方便解决记忆干扰长期文件只写稳定内容 针对一个会话的可能对另一个会话是干扰站在巨人的肩膀上《一文读懂openClaw 分析与教程》