ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用一个简单案例理解OpenClaw的做梦过程:从memory.md到dreams.md的TaoToken实践

用一个简单案例理解OpenClaw的做梦过程:从memory.md到dreams.md的TaoToken实践 1. 从一次“半夜三点”的记忆整理说起OpenClaw dreaming 机制到底在做什么OpenClaw 的 dreaming 机制说白了就是让 Agent 在空闲时段把短期对话记录做一次“离线整理”把值得长期保留的信息沉淀到memory.md把整理过程本身写进dreams.md。你可以把它理解成一次针对记忆的 ETL抽取候选、清洗去重、按价值打分、晋升或丢弃。它解决的问题很具体——上下文窗口有限不可能把成亿 token 的历史全塞进每次请求所以必须有一个自动化的“记忆筛选器”。这套机制适合谁适合正在用 OpenClaw 做 Skill 开发、想让 Agent 记住用户偏好和任务历史的开发者也适合把 GLM-5.1 这类强工程模型接进自动化流程、需要长期记忆支撑的团队。核心检索词就三个OpenClaw、dreaming、memory.md 与 dreams.md。我试过在本地把整条链路跑通下面把可复制的配置和验证步骤完整交付你照着做就能在本地复现一次完整的“做梦”。先明确两个文件的职责边界这是后面所有配置的基础memory.md是长期记忆只有重要、高频、和任务强相关的信息才会进来本质是 LLM 自动构建的用户画像 任务记忆 技能记忆的混合体。dreams.md是梦境日志记录这次做梦读了什么、去重了什么、过滤了什么、打了多少分它不参与对话上下文不影响 Agent 行为纯粹给你复盘用。举个具体例子。你今天跟 OpenClaw 说了三件事你叫 Wade在做 OpenClaw Skill 开发你喜欢用 GLM-5.1 做视觉加键鼠自动化你今天随便聊了句“今天天气不错”。做梦触发后前两条会被打分晋升进memory.md第三条会被标记为低价值直接丢弃只在dreams.md里留一条“过滤低价值信息1 条”的记录。这就是整个机制的最小闭环。2. TaoToken 前置准备统一 Key 与 API 通道让 GLM-5.1 稳定参与做梦在配置 OpenClaw 之前先把模型调用通道准备好。dreaming 过程需要调用 LLM 做主题识别、关键词提取和价值评分这一步对模型的工程能力要求不低GLM-5.1 在长程任务和结构化输出上表现稳定适合干这个活。我用 TaoToken 作为统一入口一个 Key 走通模型对话和后续的 coding 场景省得在多个平台之间来回切。你需要先拿到 API Key。打开控制台创建密钥地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建后复制保存后面配置里要用。密钥管理页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 建议给这个 Key 起个能认出来的名字比如openclaw-dream方便后续排查。Base URL 统一用https://taotoken.net/api注意这个地址不加任何查询参数。模型 ID 填glm-5.1具体以你账号下可用的模型列表为准。如果你还想在调试阶段直接和模型对话验证输出格式可以用模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 先把打分逻辑的 prompt 调通再写进 OpenClaw 配置能省不少来回改配置的时间。这里有个前置检查清单动手前逐条确认第一Key 是否已创建并且复制完整没有多余空格。第二Base URL 是否写成https://taotoken.net/api不要带斜杠结尾之外的任何路径。第三模型 ID 是否和账号可用列表一致。第四本地网络能否正常访问该 API 地址可以用一条 curl 先探活。第五OpenClaw 的版本是否支持自定义 provider 配置老版本可能字段名不同。把这几项确认完再进入配置环节能避免后面 90% 的低级报错。很多人卡在 401 或者 model not found其实都是前置没对齐。3. 可复制配置OpenClaw dreaming 的 settings 与 Skill 片段这一节是全文的核心配置写对后面验证就是顺水推舟。OpenClaw 的配置通常分两块一块是模型 provider 配置一块是 dreaming 这个 Skill 的行为配置。下面给出可直接复制的片段路径和字段名按你本地实际项目结构调整。先看 provider 配置一般放在项目的config/settings.json或环境变量文件里。JSON 片段如下{ providers: { taotoken: { base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, model: glm-5.1, timeout: 60, max_retries: 2 } }, default_provider: taotoken }如果你用的是 TOML 风格配置等价写法是[providers.taotoken] base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 model glm-5.1 timeout 60 max_retries 2 [default] provider taotoken接着是 dreaming Skill 的配置。它决定做梦什么时候触发、读哪些记忆、打分阈值多少。放在skills/dreaming/config.json{ skill: dreaming, trigger: { mode: idle, idle_minutes: 30, min_short_term_items: 3 }, source: { short_term_file: memory/short_term.md, long_term_file: memory/memory.md, dream_log_file: memory/dreams.md }, scoring: { promote_threshold: 0.75, discard_threshold: 0.30, weights: { identity: 0.35, task_relevance: 0.30, frequency: 0.20, recency: 0.15 } }, model: { provider: taotoken, model: glm-5.1, temperature: 0.2 } }几个参数值得单独说。idle_minutes控制空闲多久触发一次做梦设太小会频繁调用模型浪费额度设太大记忆更新不及时30 分钟是个折中值。promote_threshold是晋升阈值得分高于 0.75 才写进memory.md低于 0.30 直接丢弃中间地带可以留在短期记忆里等下次再评。temperature建议压到 0.2因为打分和结构化输出需要稳定不需要创造性。如果你用的是 Claude Code 风格的配置把 provider 段写进~/.claude/settings.json的env里字段名对应ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY模型 ID 单独在模型选择处填glm-5.1。三件套永远是 Base URL、Key、Model ID缺一不可任何一处写错都会在验证阶段暴露。配置写完后建议先做一次 dry run把trigger.mode临时改成manual手动触发一次观察日志输出确认没有解析错误再切回idle。4. 验证请求与成功结果触发一次做梦并查看 dreams.md 输出配置就绪后开始验证。第一步先探活 API 通道用 curl 确认 Key 和 Base URL 没问题curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: glm-5.1, messages: [{role: user, content: 只回复 ok}], max_tokens: 10 }返回里能看到choices字段和内容ok说明通道正常。如果这里就报错先别往下走回到第 5 节排查。第二步手动触发一次做梦。假设你的 OpenClaw 提供了 CLI命令大致如下openclaw skill run dreaming --manual --verbose执行后终端会打印做梦过程的阶段日志。你会看到类似“读取短期记忆3 条”“去重无重复”“过滤低价值1 条”“候选记忆2 条有效”的输出。这一步对应 dreams.md 里的 Light Sleep 阶段。第三步查看memory/dreams.md的产出。一次成功的做梦日志结构应该包含浅睡、快速眼动反思、深睡评分三段。示例内容如下# Dream Log 2026-04-21 ## Light Sleep 浅睡阶段 - 读取短期记忆3 条 - 去重无重复内容 - 过滤低价值信息1 条今天天气不错 - 候选记忆2 条有效 ## REM Sleep 快速眼动反思 - 识别主题用户身份、AI 开发、OpenClaw、模型偏好 - 发现高频关键词Wade、Skill、GLM-5.1、视觉键鼠自动化 - 反思摘要用户专注于 OpenClaw 自动化开发偏好强工程模型。 ## Deep Sleep 深睡评分 - 用户名 Wade → 得分 0.92 → 进入长期记忆 - 开发 OpenClaw Skill → 得分 0.90 → 进入长期记忆 - 偏好 GLM-5.1 → 得分 0.88 → 进入长期记忆 - 天气不错 → 得分 0.15 → 丢弃 - 最终晋升 3 条记忆到 memory.md第四步检查memory/memory.md是否被正确更新。成功的话里面应该出现用户信息和工作偏好两段内容和你输入的三件事对应而“天气不错”不会出现。这一步是判断 dreaming 是否真正生效的关键dreams.md 只是过程memory.md 才是结果。第五步做一次回归验证。再跟 OpenClaw 对话问它“我叫什么、在做什么”如果它能从 memory.md 里答出 Wade 和 OpenClaw Skill 开发说明长期记忆已经加载生效。整个链路闭环完成。5. 本篇常见报错排查401、local proxy failed、reading choices 与 OAuth配置和验证过程中最容易撞上四类报错逐个说清楚。第一类401 Unauthorized。报错原文通常是{error:{message:invalid api key,type:authentication_error}}。原因基本是 Key 写错、复制时带了空格、或者用了别的平台的 Key。排查方法把 Key 重新复制一遍确认前缀和长度用第 4 节的 curl 单独测一次。如果 curl 通但 OpenClaw 报 401说明配置文件里的 Key 没被正确读取检查环境变量是否覆盖了配置文件或者 JSON 里有没有多余逗号导致解析失败。第二类local proxy failed。这个报错一般出现在你本地配了转发层的情况下提示连接本地端口失败。排查方向确认本地没有残留的转发进程占用端口确认base_url直接指向https://taotoken.net/api而不是某个本地地址。如果你之前配过别的通道把相关环境变量清掉再重启 OpenClaw。第三类reading choices 相关报错典型原文是cannot read properties of undefined (reading choices)。这说明请求发出去了但返回体结构不符合预期代码去取choices时拿到 undefined。常见原因是模型 ID 写错导致返回了错误对象或者响应被中间层改写过。排查方法把model字段确认成glm-5.1用 curl 看原始返回结构里有没有choices。如果 curl 有而程序没有检查你的 HTTP 客户端有没有做多余的响应拦截。第四类OAuth 相关报错。如果你用的是 Claude Code 风格接入可能会遇到 OAuth token 过期或未授权的提示。这类问题的根源是把 OAuth 流程和 API Key 流程混用了。用 TaoToken 的 Key 接入时走的是 Bearer 认证不需要 OAuth。检查配置里有没有残留的 OAuth 字段把它们删掉统一用api_key字段。再补一个高频坑模型 ID 大小写。有的配置对GLM-5.1和glm-5.1敏感统一用小写最稳。还有超时问题做梦过程要多次调用模型timeout设太短会在深睡评分阶段断掉建议不低于 60 秒。排查顺序建议固定成先 curl 探活再查配置字段再看程序日志最后看返回体结构。按这个顺序走基本不会绕远路。6. 把 dreaming 接进你的日常开发流从验证到长期使用跑通一次之后你可以把 dreaming 接进日常开发流。我的做法是让它在夜间空闲时段自动触发白天正常对话积累短期记忆第二天早上看dreams.md复盘昨晚整理了哪些信息。这样memory.md会随着使用越来越贴合你的实际偏好Agent 的回答也会越来越“懂你”。如果你后续要做更复杂的 Agent 自动化比如让 OpenClaw 长期跑任务、跨会话记住项目上下文建议把模型通道固定下来用 Coding Plan 承载长期的编码和 Agent 调用需求地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 一个通道覆盖对话、做梦、编码多个场景省去反复切换的麻烦。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 字段和参数以文档为准遇到配置疑问先查文档再动手改。最后留一个实用技巧给dreams.md加一个简单的轮转策略按日期分文件比如dreams/2026-04-21.md避免单文件无限增长。memory.md则相反保持单文件因为它是被加载进上下文的分文件反而增加读取复杂度。这个一增一减的取舍是我踩过坑之后固定下来的做法。
返回列表