news 2026/9/10 19:14:22

OpenClaw 记忆插件现场诊断数据导出指南:memory-tencentdb 诊断包打包与脱敏实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenClaw 记忆插件现场诊断数据导出指南:memory-tencentdb 诊断包打包与脱敏实战

OpenClaw 记忆插件现场诊断数据导出指南:memory-tencentdb 诊断包打包与脱敏实战

【免费下载链接】TencentDB-Agent-MemoryTencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable memory assets (Chat Memory, Skill, LLM-Wiki, Code-Graph) that are governed, shared, and equipped across agents and frameworks.项目地址: https://gitcode.com/GitHub_Trending/te/TencentDB-Agent-Memory

本篇技术指南以 TencentDB-Agent-Memory 仓库中MemoryCore/SKILL-DIAGNOSTIC-EXPORT.md技能定义为骨架,完整讲解如何将 OpenClaw 网关日志、memory-tencentdb 记忆插件数据(L0~L3)以及脱敏后的配置打包为本地压缩包,供研发团队排查问题。读完本文,你将掌握诊断导出技能的环境探测、脚本执行、内容核对、手动兜底四条完整路径,并理解数据目录、日志位置、脱敏规则背后的源码实现依据,能够独立完成一次"现场数据收集与安全交付"。

技能定位与触发方式

SKILL-DIAGNOSTIC-EXPORT.md是一个面向 OpenClaw 环境的技能定义文件(skill),其 frontmatter 声明如下:

name: openclaw-diagnostic-export description: 帮助用户导出 OpenClaw + memory-tencentdb(原 memory-tdai)记忆插件的现场诊断数据,用于排查问题。当用户提到"导出诊断数据""export diagnostic""现场数据""排查问题""导出日志""收集现场""打包现场数据"时应触发。 version: 1.0.0

该技能的核心目的是:将 OpenClaw 日志、记忆插件数据(L0~L3)、脱敏后的配置打包为本地压缩包,由用户确认后手动发送给研发团队排查问题。它对应的应用场景正是仓库中其他技能(如 SKILL.md 中的openclaw-memory-tencentdb-setup安装配置技能)的"事后排查"闭环——先安装配置、验证记忆链路,出了问题再导出诊断数据。

名称与数据目录的关系(重要前提)

名称说明:插件已从@tdai/memory-tdai更名为@tencentdb-agent-memory/memory-tencentdb,但数据目录始终为~/.openclaw/memory-tdai/(代码中硬编码)。本 skill 中所有对memory-tdai目录的引用均指实际数据目录路径,与插件 ID 无关。

这一点在源码中可以得到印证:在 src/gateway/config.ts 中,默认数据目录解析逻辑明确写到~/.memory-tencentdb/memory-tdai/,并说明"宿主插件数据目录由resolveStateDir() + "memory-tdai"决定(通常是~/.openclaw/memory-tdai/),该路径是有意保持不变的;同时若检测到旧版~/memory-tdai仍存有数据,网关会继续使用旧目录并打印一行弃用警告。因此无论插件包名如何演变,诊断时始终从memory-tdai目录取数。

导出工作流(标准四步)

Step 1: 确认环境

在导出前,先确认 OpenClaw 工作目录存在且可访问。技能给出了目录探测命令,优先级为:环境变量 >~/.openclaw>~/.clawdbot

# 探测工作目录(优先级:环境变量 > ~/.openclaw > ~/.clawdbot) OPENCLAW_DIR="${OPENCLAW_STATE_DIR:-$HOME/.openclaw}" [ -d "$OPENCLAW_DIR" ] || OPENCLAW_DIR="$HOME/.clawdbot" ls -la "$OPENCLAW_DIR/" 2>/dev/null && echo "✅ 找到: $OPENCLAW_DIR" || echo "❌ 未找到 OpenClaw 工作目录"

其中OPENCLAW_STATE_DIR环境变量正是仓库中 src/utils/openclaw-state-dir.ts 所实现的目录解析入口。随后确认 memory-tdai 子目录存在:

ls -la "$OPENCLAW_DIR/memory-tdai/" 2>/dev/null

Step 2: 执行导出脚本

运行项目scripts/目录下的导出脚本:

bash scripts/export-diagnostic.sh

脚本位于本项目的scripts/export-diagnostic.sh,如果通过pnpm或其他方式运行,需确保工作目录在项目根目录下。

脚本默认将压缩包输出到~/Downloads/openclaw-diagnostic-<timestamp>.tar.gz。如需指定其他输出目录,将路径作为第一个参数传入:

bash scripts/export-diagnostic.sh /tmp

需要说明的是:该脚本属于技能运行时生成的辅助脚本,当前仓库的 scripts/ 目录下并不包含此文件——因此若在检出目录中找不到该脚本(例如 Node.js 工具链不可用),请直接使用下文"手动导出(脚本不可用时的备选方案)"一节中的完整命令序列自行收集,两条路径产出的数据内容一致。

Step 3: 确认导出结果

脚本执行完成后,检查输出:

  1. 确认压缩包已生成—— 脚本末尾会打印压缩包路径和大小;
  2. 向用户说明包含内容
文件/目录内容隐私风险
env-info.txt系统版本、OpenClaw 版本、目录结构、磁盘占用
logs/OpenClaw 网关日志 + 滚动日志(最近 3 天,每文件最多 5000 行)
memory-tdai/记忆插件全量数据:L0 对话、L1 记忆、L2 场景、L3 画像、SQLite 数据库、checkpoint—— 包含用户对话原文
openclaw-config-redacted.json脱敏后的配置(已移除 API Key/Token/Password/Secret,models/channels/env 整体替换)
plugins-info.txt已安装插件列表和版本
  1. 提醒用户
    • 配置文件已自动脱敏,API Key、Token 等敏感信息已被替换为***REDACTED***
    • 记忆数据(memory-tdai/)包含用户对话原文,请确认可以分享后再发送;
    • 压缩包存放在本地,不会自动上传,需要用户手动发送给研发团队。

Step 4: 告知用户后续操作

导出完成后,告知用户:

  1. 压缩包已保存在本地(打印具体路径);
  2. 请检查内容后,通过企微/邮件等方式手动发送给研发团队;
  3. 如只需部分数据(如仅日志或仅配置),可解压后选择性发送。

导出内容详解

OpenClaw 日志位置

技能将排查所需的日志按类型归类如下:

日志类型路径说明
网关 stdout~/.openclaw/logs/gateway.log网关守护进程标准输出
网关 stderr~/.openclaw/logs/gateway.err.log网关守护进程错误输出
滚动日志/tmp/openclaw/openclaw-YYYY-MM-DD.log按日期滚动,JSON Lines 格式,24h 自动清理
配置审计~/.openclaw/logs/config-audit.jsonl配置写入审计记录
命令日志~/.openclaw/logs/commands.log命令事件日志(hook 可选)

其中/tmp/openclaw滚动日志目录在源码中有明确依据:src/utils/clean-context-runner.ts 中定义了POSIX_DIR = "/tmp/openclaw",作为上下文清理与日志落盘的默认位置,并带有 24 小时自动清理机制。

记忆插件数据结构

导出的memory-tdai/目录遵循固定的四层记忆存储布局:

~/.openclaw/memory-tdai/ ├── conversations/ — L0 原始对话(每日 JSONL 分片) ├── records/ — L1 结构化记忆(每日 JSONL 分片) ├── scene_blocks/ — L2 场景 Markdown 文件 ├── persona.md — L3 用户画像 ├── vectors.db — SQLite 数据库(向量 + 全文索引) ├── .metadata/ — checkpoint、scene_index.json └── .backup/ — 滚动备份

这些目录与文件在仓库源码中均可逐一对应:

  • conversations/:L0 对话捕获由 src/core/conversation/l0-recorder.ts 实现,注释明确写着"writes to~/.openclaw/memory-tdai/conversations/YYYY-MM-DD.jsonl",即按日期分片的 JSONL 文件;src/cli/commands/seed.ts 中的openclaw memory-tdai seed --input conversations.json命令也印证了该目录是 L0 数据的标准入口;
  • scene_blocks/persona.md:L3 画像生成在 src/core/persona/persona-generator.ts 中按dataDir/scene_blocks读取场景文件,并由 LLM 写回persona.md(L181 备份、L215 后处理);召回侧 src/core/hooks/auto-recall.ts 直接从profileDataDir/persona.md读取画像内容注入提示词;
  • .metadata/:包含 checkpoint 与 scene_index.json。src/core/persona/persona-generator.ts 中 checkpoint 路径为dataDir/.metadata/recall_checkpoint.json;src/cli/README.md 展示的数据目录树中同样列出.metadata/及其下的checkpoint.json(管线进度)。

配置脱敏规则

导出脚本对openclaw.json执行以下脱敏:

规则处理方式
字段名匹配apiKey/token/password/secret/credential且值为字符串替换为***REDACTED(Nchars)***
SecretRef 对象(含 source/provider/id)id 替换为***REDACTED***
顶层modelssecretschannelsenv整体替换为***REDACTED_SECTION***
gateway.auth下的 token/password替换为***REDACTED***
其余字段(含plugins完整配置)保留原样(插件配置是排查重点)

脱敏设计的原则是"保插件、杀密钥":plugins完整配置(含 memory-tencentdb 的 recall/capture/extraction/pipeline/embedding 等分组,参见 SKILL.md 的推荐模板)必须原样保留,因为它是排查向量检索、召回策略等问题的核心现场;而所有可能泄露凭据的字段一律遮蔽。这与仓库全局的密钥管理规范一致——例如 SKILL.md 的安全合规约束要求"将 apiKey 视为敏感信息,优先使用环境变量注入密钥"。

手动导出(脚本不可用时的备选方案)

如果导出脚本无法执行(如 Node.js 不可用),按以下步骤手动收集:

# 1. 创建导出目录 EXPORT_DIR=~/Downloads/openclaw-diagnostic-$(date +%Y%m%d-%H%M%S) mkdir -p "$EXPORT_DIR" # 2. 复制日志 cp -r ~/.openclaw/logs/ "$EXPORT_DIR/logs/" 2>/dev/null cp /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log "$EXPORT_DIR/" 2>/dev/null # 3. 复制记忆插件数据 cp -r ~/.openclaw/memory-tdai/ "$EXPORT_DIR/memory-tdai/" 2>/dev/null # 4. 手动脱敏配置(⚠️ 必须手动删除敏感字段!) # 复制配置并用编辑器删除 models/secrets/channels 块和所有 apiKey/token 值 cp ~/.openclaw/openclaw.json "$EXPORT_DIR/openclaw-config-NEEDS-MANUAL-REDACTION.json" # 5. 打包 cd ~/Downloads && tar -czf "$EXPORT_DIR.tar.gz" "$(basename $EXPORT_DIR)" echo "⚠️ 请务必在发送前手动检查并删除配置中的敏感信息!"

手动路径的关键差异在第 4 步:由于没有脚本自动脱敏,产物文件名被刻意标记为openclaw-config-NEEDS-MANUAL-REDACTION.json,强制提醒操作者在发送前人工检查并删除models/secrets/channels块以及所有apiKey/token值。若当前环境设置了TDAI_DATA_DIRMEMORY_TENCENTDB_ROOT(覆盖数据目录的配置方式,见 src/gateway/config.ts 中TDAI_DATA_DIR ?? data.baseDir ?? resolveDefaultDataDir()的解析优先级),第 3 步应复制到实际的数据目录位置,而非硬编码的~/.openclaw/memory-tdai/

常见问题排查线索

导出数据后,研发团队通常关注以下方面:

排查方向查看文件关键信息
插件是否加载logs/中搜索[memory-tdai]插件注册、配置解析日志(注:日志标签仍为[memory-tdai],与插件 ID 无关)
记忆召回是否工作logs/中搜索[recall]搜索策略、耗时、命中数
L1 提取是否触发logs/中搜索[pipeline]调度触发、L1/L2/L3 执行状态
向量搜索是否可用openclaw-config-redacted.jsonplugins.entriesembedding 配置是否正确
数据量/磁盘占用env-info.txtdu 输出、文件数量
checkpoint 状态memory-tdai/.metadata/recall_checkpoint.json进度、游标、计数器

这些排查线索与源码中的日志埋点一一对应:网关调度器在 src/gateway/server.ts 中为 L1/L2/L3 各阶段输出了[executor]前缀的调度与跳过日志(如 credit limit 检查、L1 drain 入队、L2/L3 间隔控制等),配合[recall]召回日志与[pipeline]管线日志,即可还原"插件注册 → 对话捕获 → L1 提取 → L2 场景 → L3 画像 → 召回注入"的完整链路状态;recall_checkpoint.json则记录了管线进度游标,用于判断 L1/L2/L3 是否在特定会话处停滞。

安全与合规要点

一次合格的诊断导出,本质上是一次受控的隐私数据打包。务必牢记三点:

  1. 压缩包不会自动上传:产物只落在本地~/Downloads/,由用户手动通过企微/邮件发送,杜绝数据外泄路径;
  2. 记忆数据必须二次确认memory-tdai/内含用户对话原文(L0/L1 分片),分享前必须获得用户明确同意;
  3. 脱敏不是可选项:脚本自动脱敏覆盖apiKey/token/password/secret/credential等字段,手动导出时这条责任完全转移到操作者身上——文件名中的NEEDS-MANUAL-REDACTION后缀就是最后一道提醒。

将本技能与仓库中的安装配置技能(SKILL.md)、数据目录说明(hermes-plugin/memory/memory_tencentdb/README.md)配合使用,即可构成 OpenClaw + memory-tencentdb 场景下"部署 → 配置 → 验证 → 排障"的完整运维闭环。

【免费下载链接】TencentDB-Agent-MemoryTencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable memory assets (Chat Memory, Skill, LLM-Wiki, Code-Graph) that are governed, shared, and equipped across agents and frameworks.项目地址: https://gitcode.com/GitHub_Trending/te/TencentDB-Agent-Memory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 19:13:17

磁共振成像三大核心:信噪比、分辨率与对比度的权衡之道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 19:10:31

Label Studio 导出指南:注解与数据的格式、API 与实操详解

Label Studio 导出指南&#xff1a;注解与数据的格式、API 与实操详解 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/label-studio …

作者头像 李华
网站建设 2026/9/10 19:09:47

C/C++链接MySQL实操指南:从编译配置到增删改查与排错

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 19:09:22

gradio_client 使用指南:用 3 行 Python 把任何 Gradio 应用变成 API

gradio_client 使用指南&#xff1a;用 3 行 Python 把任何 Gradio 应用变成 API 【免费下载链接】gradio Build and share delightful machine learning apps, all in Python. &#x1f31f; Star to support our work! 项目地址: https://gitcode.com/GitHub_Trending/gr/g…

作者头像 李华
网站建设 2026/9/10 19:08:49

Agent记忆系统设计:从数据库存储到语义涟漪激活

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华