Files
MediaCrawler/mac-agent-os-main/02_skills/memory_manager/SKILL.md
T
butubb 2112c1a870
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s
feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。

**目前能用的(真环境实测,非推断)**:

    profile/other : 200, 7075 字节  —— 博主主页指标(粉丝/获赞/作品数/昵称)
    aweme/detail  : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)

**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
  1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
     带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
     同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
     挑中的恰好是「批量拉作品列表」这个最敏感的动作。
  2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
     代价,过几小时要重测)。

  所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。

**排查中控住变量后得到的两条事实**(都写进注释了):
  · `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
    UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
    (我先前猜的 sec-ch-ua 不是关键。)
  · 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
    从 CDP 取齐 cookie + UA + hints,而不是各自写死。

「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。

测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
2026-10-10 17:12:25 +08:00

5.3 KiB
Raw Blame History

name, version, description, triggers
name version description triggers
memory_manager 1.2.0 智能体记忆管理技能——每日对话提炼、去重、冲突检测、版本管理、记忆导入导出、语义检索
记忆管理
记忆更新
每日摘要
每日提炼
对话提炼
整理记忆
记忆去重
冲突检测
知识版本
记忆备份
记忆导出
记忆检查
查记忆
语义检索
记忆搜索
搜索记忆
update memory

Memory Manager 技能

概述

管理 AgentOS 的 L0→L1→L1_vec→L2→L3 五级记忆体系统,负责每日对话提炼、去重、冲突消解、版本管理、语义检索和记忆导入导出。

核心能力

1. 每日对话提炼(daily_digest)

  • 触发方式:每日凌晨 2:00 自动执行,或手动触发
  • 输入:昨日所有对话记录
  • 处理流程:
    1. 提取关键事实(who/what/when/where/decision)
    2. 去重(对比 L2 已有事实,相似度 > 0.9 则跳过)
    3. 冲突检测(新事实与旧事实矛盾?→ 标记 OVERRIDE 或提示用户确认)
    4. 生成摘要(100-200 字/条)
    5. 更新 L1 关键词索引(仅写入 L2 成功的事实,避免孤儿索引)
    6. 更新 L1_vec 向量索引(ChromaDB + oMLX embedding,新事实自动向量化)
    7. 关键对话原文 → 压缩后写入 L3
  • 输出:
    • 更新 04_memory/daily_summaries/YYYY-MM-DD.md
    • 更新 04_memory/long_term/facts.db
    • 更新 04_memory/vector_db/keyword_index.json
    • 更新 04_memory/vector_db/chroma/(ChromaDB 向量库)
    • 发送摘要到 Obsidian 01_daily/ 日记

2. 冲突消解(memory_cleanup)

  • 冲突检测优先级:新事实 > 旧事实,用户明确修正 > 系统推断
  • 三种变化处理:
    • 硬事实改变 → 更新原卡片,旧值写入 previous_version
    • 软升级/延伸 → 保留 V1,新建 V2,通过 related 双向链接
    • 观点→事实 → 更新 nature 字段,通知 kb_manager 移动文件

3. 记忆导入导出

  • export_memories.py:将记忆打包为 JSON + Markdown 压缩包
  • import_memories.py:从压缩包恢复记忆,合并时智能去重
  • BM25 关键词检索 + 向量语义检索 + RRF 加权融合
  • 向量引擎:ChromaDB(持久化)+ oMLX Qwen3-Embedding-0.6B(1024维)
  • 融合策略:Reciprocal Rank Fusion (RRF),BM25 权重 0.4 / 向量权重 0.6
  • CLI 用法:
    • 检索:python3 semantic_search.py search --root ~/workbuddy-agent-os/agent-sync --query "查询内容" --top-k 5
    • 回填:python3 semantic_search.py backfill --root ~/workbuddy-agent-os/agent-sync
    • 重建:python3 semantic_search.py rebuild --root ~/workbuddy-agent-os/agent-sync
    • 测试:python3 semantic_search.py embed --root ~/workbuddy-agent-os/agent-sync --text "测试"

文件结构

memory_manager/
├── SKILL.md                 # 本文件
├── daily_digest.py          # 每日对话提炼脚本
├── semantic_search.py       # BM25 + 向量语义混合检索
├── memory_cleanup.py        # 冲突消解与过期记忆清理
├── agent_memory_init.py     # 首次初始化记忆体
├── bootstrap_from_memory.py # 冷启动:历史数据全量导入
├── export_memories.py       # 记忆导出(JSON + L3 原文)
├── import_memories.py       # 记忆导入(智能去重合并)
└── version.json

使用说明

Python 路径:所有脚本使用 agent-os 专用虚拟环境 /Users/chengzige/.workbuddy/binaries/python/envs/agent-os/bin/python3

  1. 初始化:python3 agent_memory_init.py --root ~/workbuddy-agent-os/agent-sync
  2. 冷启动:python3 bootstrap_from_memory.py --root ~/workbuddy-agent-os/agent-sync
  3. 每日提炼:python3 daily_digest.py --root ~/workbuddy-agent-os/agent-sync --date YYYY-MM-DD
  4. 冲突清理:python3 memory_cleanup.py --root ~/workbuddy-agent-os/agent-sync
  5. 导出记忆:python3 export_memories.py --root ~/workbuddy-agent-os/agent-sync --output ~/backup/
  6. 导入记忆:python3 import_memories.py --root ~/workbuddy-agent-os/agent-sync --input ~/backup/memories.zip

数据源

数据源 路径 说明
Claw 工作日志 ~/WorkBuddy/Claw/.workbuddy/memory/YYYY-MM-DD.md 每次对话后自动写入
WorkBuddy 系统画像 ~/.workbuddy/memery/*.md 系统自动维护
上轮摘要 04_memory/daily_summaries/YYYY-MM-DD.md 防丢失兜底

自动化

  • WorkBuddy 自动化「AgentOS 每日记忆提炼」已配置:每日凌晨 2:00 执行
  • 命令:/Users/chengzige/.workbuddy/binaries/python/envs/agent-os/bin/python3 ~/workbuddy-agent-os/agent-sync/02_skills/memory_manager/daily_digest.py --root ~/workbuddy-agent-os/agent-sync

依赖

包 用途 安装状态
sqlite3 L2 事实库 ✅ 标准库
sqlite-utils SQLite 增强 ✅ 已安装
rank_bm25 BM25 关键词检索 ✅ 已安装
chromadb 向量存储与检索 ✅ 1.5.8
numpy 向量计算 ✅ 2.4.4
requests HTTP 客户端(embedding API) ✅ 已安装
json/re/os/argparse 基础 ✅ 标准库

向量检索依赖

组件 说明
oMLX API localhost:8000/v1/embeddings
模型 Qwen3-Embedding-0.6B(1024 维)
向量库 ChromaDB,持久化到 04_memory/vector_db/chroma/