Files
MediaCrawler/mac-agent-os-main/90_archive/docs/AgentOS-完整说明文档_副本.v2.1-history.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

1319 lines
54 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AgentOS 完整说明文档
> **版本**:v2.1.0 | **最后更新**:2026-04-28 | **作者**:ghai
> **系统环境**:macOS 26.4 / Apple M1 / 16GB RAM / 245GB SSD
> **运行时平台**:WorkBuddy 桌面客户端 + 坚果云 + Obsidian
> 说明:本文件保留为扩展历史说明与细节备忘,不再作为 AgentOS v2.0 的唯一基准。
> 当前正式口径请优先查看 `README.md`、`CORE-ARCHITECTURE.md`、`REVIEW-V2.0.md`。
---
## 目录
1. [系统概述](#一系统概述)
2. [整体架构与目录结构](#二整体架构与目录结构)
3. [核心配置文件详解](#三核心配置文件详解)
4. [初始化与部署](#四初始化与部署)
5. [技能体系详解](#五技能体系详解)
6. [知识库结构详解](#六知识库结构详解)
7. [记忆体系统详解](#七记忆体系统详解)
8. [工具脚本目录](#八工具脚本目录)
9. [运行时与缓存](#九运行时与缓存)
10. [迁移与备份](#十迁移与备份)
11. [自动化任务配置](#十一自动化任务配置)
12. [同步策略详解](#十二同步策略详解)
13. [本地/远程使用方式](#十三本地远程使用方式)
14. [数据流全景](#十四数据流全景)
15. [环境依赖清单](#十五环境依赖清单)
16. [当前运行状态](#十六当前运行状态)
17. [已知问题与待解决项](#十七已知问题与待解决项)
18. [附录:根目录文档索引](#十八附录根目录文档索引)
---
## 一、系统概述
### 1.1 是什么
AgentOS 是一套运行在个人 Mac 上的**智能体外骨骼系统**(AI Agent Operating System),为 AI Agent(Claw 🦀)提供四大基础能力:
| 能力 | 说明 |
|------|------|
| **记忆管理** | L0-L3 五级分层记忆,含关键词索引、向量检索、结构化事实库、原始对话存档 |
| **知识管理** | 基于 Obsidian 的本地知识库,9 种属性分类 × 16 个领域,自动提纯归档 |
| **内容采集** | 多平台自动监控采集(RSS/小红书/抖音/B站/网页),AI 提炼后入库 |
| **多设备协作** | 坚果云实时同步 + Git 版本控制,双轨保障数据安全 |
### 1.2 核心设计理念
- **本地优先**:所有数据存储在本地,坚果云只做同步通道
- **四级记忆截断**:L0→L1→L2→L3,每层不无限 fallback,避免 token 浪费
- **技能驱动**:所有能力封装为技能(Skill),按触发词路由,即插即用
- **结构化输出**:去文学化,先结论后步骤
- **软链接隔离**:本机大文件(向量库/素材/缓存)通过软链接指向独立目录,不进同步
### 1.3 技术栈
| 层级 | 技术选型 |
|------|----------|
| AI 运行时 | WorkBuddy 桌面客户端(CodeBuddy) |
| 本地 LLM | oMLX v0.3.6(Apple MLX 框架) |
| 主力模型 | Qwen3-8B-MLX-4bit(4.26GB,Q4_K_M 量化) |
| 多模态 | Qwen2.5-VL-3B-Instruct-8bit(3.9GB,图文理解) |
| 向量模型 | Qwen3-Embedding-0.6B(1.19GB,1024维) |
| 向量数据库 | ChromaDB 1.5.8 |
| 知识库 | Obsidian(Markdown + Frontmatter) |
| 同步 | 坚果云(实时文件同步) + Gitee(Git 版本控制) |
| Python | 3.13.12(WorkBuddy managed + agent-os venv) |
| Node.js | 22.12.0(WorkBuddy managed) |
---
## 二、整体架构与目录结构
### 2.1 双目录架构
AgentOS 采用**同步目录 + 本机目录**的双轨架构:
```
~/ 用户主目录
├── agent-os/ ← 坚果云同步 + Git 版本控制(核心仓库)
│ ├── 00_bootstrap/ 初始化与部署脚本
│ ├── 01_core/ 核心配置(部署到 ~/.workbuddy/)
│ ├── 02_skills/ 技能包(9个自定义技能 + 1个模板)
│ ├── 03_knowledge/ Obsidian 知识库
│ ├── 04_memory/ 四级记忆体
│ ├── 05_tools/ 工具脚本
│ ├── 06_runtime/ 运行时(缓存通过软链接指向本地)
│ ├── 07_migration/ 迁移打包/还原脚本
│ ├── .gitignore
│ ├── README.md / CHANGELOG.md / CORE-ARCHITECTURE.md ...
│ └── requirements.txt
│
├── agent-os-local/ ← 本机专属,不同步,不进 Git
│ ├── memory/ 记忆体数据
│ │ ├── raw/ L3 对话原文(隐私数据)
│ │ └── vector_db/ ChromaDB + 关键词索引
│ ├── runtime/ 运行时数据
│ │ └── cache/ 临时缓存
│ └── materials/ 采集的原始素材
│ ├── web/ 网页保存
│ ├── video/ 视频下载
│ ├── audio/ 录音文件
│ ├── screenshots/ 截图
│ └── refined_for_inbox/ 已提炼待投递的 MD
│
└── .workbuddy/ ← WorkBuddy 运行时配置
├── SOUL.md L0 最高约束(从 01_core/ 部署)
├── IDENTITY.md 身份档案
├── USER.md 用户画像
├── mcp.json MCP 服务器配置
├── skills/ 技能目录(从 02_skills/ 导入)
├── binaries/ Python/Node 运行时
│ ├── python/
│ │ ├── versions/3.13.12/ Python 二进制
│ │ └── envs/agent-os/ agent-os 虚拟环境
│ └── node/
│ ├── versions/22.12.0/ Node 二进制
│ └── workspace/node_modules/ 全局 npm 包
├── automations/ 定时自动化任务
└── memory/ WorkBuddy 工作记忆
```
### 2.2 软链接映射
`agent-os/` 内通过软链接指向 `agent-os-local/` 中的实际目录,脚本无需改路径:
```
~/workbuddy-agent-os/agent-sync/04_memory/long_term/raw → ~/workbuddy-agent-os/agent-sync/agent-local/memory/raw
~/workbuddy-agent-os/agent-sync/04_memory/vector_db → ~/workbuddy-agent-os/agent-sync/agent-local/memory/vector_db
~/workbuddy-agent-os/agent-sync/06_runtime/cache → ~/workbuddy-agent-os/agent-sync/agent-local/runtime/cache
```
> **为什么用软链接**:大文件(向量库 ~1MB+、L3 原文、视频素材)不应进入坚果云同步和 Git 仓库,通过软链接在逻辑上保持路径一致,物理上存储在本机目录。
### 2.3 完整目录树(agent-os/ 内部)
```
~/workbuddy-agent-os/agent-sync/
├── .gitignore (846 B) Git 忽略规则
├── README.md (7.71 KB) 项目主文档
├── CHANGELOG.md (3.75 KB) 变更日志
├── CORE-ARCHITECTURE.md (6.14 KB) 系统架构"宪法"
├── QUICKSTART.md (2.87 KB) 5分钟快速上手
├── REQUIREMENTS.md (4.85 KB) 环境要求说明
├── SKILLS-CATALOG.md (11.38 KB) 技能清单与部署手册
├── requirements.txt (2.01 KB) Python 依赖清单
│
├── 00_bootstrap/ 初始化与部署
│ ├── init.sh (12.45 KB) 一键初始化脚本
│ ├── apply-config.sh (3.31 KB) 核心配置部署
│ ├── export_skills.sh (1.74 KB) 技能导出为压缩包
│ └── import_skills.sh (2.60 KB) 技能导入到 WorkBuddy
│
├── 01_core/ 核心配置(部署目标:~/.workbuddy/)
│ ├── CHANGELOG.md (331 B) 配置变更日志
│ ├── SOUL.md (7.74 KB) L0 最高约束
│ ├── IDENTITY.md (1.70 KB) AI 身份档案
│ ├── USER.md (1.11 KB) 用户画像
│ └── mcp.json (261 B) MCP 服务器配置
│
├── 02_skills/ 技能包(9个技能 + 1个模板)
│ ├── _template/ 技能开发模板
│ │ ├── SKILL.md (438 B)
│ │ ├── skill.py (518 B) 模板脚本
│ │ └── version.json (136 B)
│ ├── memory_manager/ 记忆管理(v1.2.0)
│ │ ├── SKILL.md (5.07 KB)
│ │ ├── daily_digest.py (20.30 KB) 每日对话提炼
│ │ ├── semantic_search.py (23.75 KB) BM25+向量混合检索
│ │ ├── bootstrap_from_memory.py (14.49 KB) 冷启动全量导入
│ │ ├── memory_cleanup.py (3.91 KB) 冲突消解
│ │ ├── agent_memory_init.py (3.30 KB) 首次初始化
│ │ ├── export_memories.py (3.64 KB) 记忆导出
│ │ ├── import_memories.py (7.33 KB) 记忆导入
│ │ └── version.json (214 B)
│ ├── inbox_refine/ 收件箱提纯归档(v1.0.0)
│ │ ├── SKILL.md (3.89 KB)
│ │ ├── inbox_refine.py (14.70 KB) 主脚本
│ │ ├── llm_classifier.py (15.19 KB) LLM 分类器
│ │ ├── llm_classifier_broken.py (15.02 KB) 旧版备份
│ │ └── version.json (694 B)
│ ├── collect_to_inbox/ 分类目录汇聚收件箱(v1.0.0)
│ │ ├── SKILL.md (4.12 KB)
│ │ ├── collect_to_inbox.py (10.24 KB) 主脚本
│ │ └── version.json (98 B)
│ ├── kb_manager/ 知识库管理(v1.1.0)
│ │ ├── SKILL.md (3.25 KB)
│ │ ├── kb_ingest.py (9.15 KB) 知识入库
│ │ └── version.json (192 B)
│ ├── auto_collector/ 24h自动监控收集(v1.0.0)
│ │ ├── SKILL.md (3.61 KB)
│ │ └── version.json (116 B)
│ ├── content_processor/ 统一内容处理路由(v1.0.0)
│ │ ├── SKILL.md (4.26 KB)
│ │ └── version.json (119 B)
│ ├── web_crawler/ 网页抓取+反爬(v1.1.0)
│ │ ├── SKILL.md (1.76 KB)
│ │ └── version.json (151 B)
│ └── sync_manager/ 同步管理(v1.1.0)
│ ├── SKILL.md (1.09 KB)
│ └── version.json (172 B)
│
├── 03_knowledge/ Obsidian 知识库
│ ├── .obsidian/ Obsidian 配置
│ ├── README.md (4.19 KB) 知识库首页
│ ├── CHANGELOG.md (499 B) 知识库变更日志
│ ├── 00_inbox/ 📥 收件箱(待提纯内容)
│ ├── 01_daily/ 📅 日记
│ ├── 10_concepts/ 💡 概念层(16个子领域目录)
│ │ ├── cs/ ai/ finance/ law/ ...
│ │ └── 2026-04-28_测试_LLM_分类器.md
│ ├── 20_methods/ 🔧 方法层
│ ├── 30_facts/ 📋 事实层
│ ├── 40_references/ 📎 参考层(papers/ + docs/)
│ ├── 50_resources/ 🛠 资源层
│ ├── 60_opinions/ 💭 观点层
│ ├── 90_archive/deprecated/ 🗄 归档层
│ └── 99_system/ ⚙️ 系统层
│ ├── templates/ 4种知识卡片模板
│ ├── taxonomies/ 分类体系
│ ├── prompts/ 分类 Prompt
│ └── timelines/ 版本时间线
│
├── 04_memory/ 四级记忆体
│ ├── .obsidian/ Obsidian 配置(可视化浏览)
│ ├── .workbuddy/memory/ WorkBuddy 运行记忆
│ ├── CHANGELOG.md (313 B) 记忆体变更日志
│ ├── daily_summaries/ 每日对话摘要
│ │ ├── 2026-04-25.md (33.58 KB)
│ │ ├── 2026-04-26.md (411.56 KB)
│ │ ├── 2026-04-27.md (4.12 KB)
│ │ └── 2026-04-28.md (1.94 KB)
│ ├── long_term/ L2 结构化事实 + L3 原文
│ │ ├── facts.db (40 KB) SQLite 事实库(52条)
│ │ └── raw/ → ~/workbuddy-agent-os/agent-sync/agent-local/memory/raw/ [软链接]
│ │ ├── 2026-04-25.md ~ 2026-04-28.md
│ │ └── bootstrap_*.md
│ ├── vector_db/ → ~/workbuddy-agent-os/agent-sync/agent-local/memory/vector_db/ [软链接]
│ │ ├── keyword_index.json (24.78 KB) BM25 关键词索引
│ │ └── chroma/ ChromaDB 向量库
│ │ └── chroma.sqlite3 (536 KB)
│ ├── logs/ 操作日志
│ └── memory_backup/ 记忆备份
│
├── 05_tools/ 工具脚本(底层公共工具)
│ ├── README.md (1.11 KB)
│ ├── 00_setup/ 环境安装工具
│ ├── 01_system/ 系统诊断脚本
│ │ ├── check_automation_env.py (4.38 KB) 自动化环境检查
│ │ ├── check_facts.py (1.45 KB) facts.db 查询
│ │ ├── test_omlx_embedding.py (5.32 KB) oMLX Embedding 测试
│ │ └── reports/ 系统检查报告存档
│ │ └── system-check-report-20260427.md
│ ├── 02_browser/ 浏览器工具
│ ├── 03_ocr/ OCR 工具
│ ├── 04_media/ 媒体处理工具
│ ├── 05_crawl/ 爬虫工具
│ │ └── content-inspiration/ 🎬 口播素材系统 v1.0
│ │ ├── SKILL.md (4.82 KB)
│ │ ├── README.md (13.49 KB)
│ │ ├── config.yaml (1.64 KB)
│ │ ├── schema.sql (3.54 KB)
│ │ ├── collect.py (9.76 KB) 多平台采集
│ │ ├── analyze.py (8.25 KB) AI 分析
│ │ ├── downloader.py (5.93 KB) yt-dlp 下载
│ │ ├── app.py (10.45 KB) Gradio Web 界面
│ │ ├── utils.py (4.86 KB) 工具函数
│ │ ├── requirements.txt (255 B)
│ │ ├── data/raw/ 原始采集数据
│ │ └── logs/ 运行日志
│ └── 06_mobile/ 移动端工具
│
├── 06_runtime/ 运行时
│ ├── tasks/ 任务执行记录
│ └── cache/ → ~/workbuddy-agent-os/agent-sync/agent-local/runtime/cache/ [软链接]
│
└── 07_migration/ 迁移与打包
├── backup.sh (1.43 KB) 手动备份
├── pack.sh (1.17 KB) 全量打包
└── unpack.sh (1.11 KB) 解包还原
```
---
## 三、核心配置文件详解
### 3.1 SOUL.md — L0 最高约束
**路径**:`~/workbuddy-agent-os/agent-sync/01_core/SOUL.md` → 部署到 `~/.workbuddy/SOUL.md`
**大小**:7.74 KB | **优先级**:最高(不可被任何技能或用户指令绕过)
这是 AgentOS 的"宪法"文件,定义了 AI Agent 的硬约束和软约束:
| 层级 | 内容 | 说明 |
|------|------|------|
| **L0 硬约束** | 禁止操作列表 | 删除安全备份、关闭约束本身、暴露 L3 原文等 |
| **L0 硬约束** | 需确认操作 | 修改知识文件、执行系统命令、修改配置、发起网络请求 |
| **L0 硬约束** | 必须操作 | 每次对话读取身份文件、L0 安全检查、MCP 协议接入 |
| **L1 行为准则** | 编码原则 | 思考优先、简单优先、精准修改、目标驱动 |
| **L1 行为准则** | 职责边界 | 职权检查、明确拒绝 |
| **L1 行为准则** | 规则检查 | 冲突检查、规则优先 |
| **L1 行为准则** | 复用优先 | 技能复用三步走、方案复用 |
| **L1 行为准则** | 输出要求 | 去文学化、可执行性、自行检查、精简提问 |
| **L2 学习规则** | 知识审查 | 入库必审、冲突处理、过期清理(技术 180 天) |
| **L2 学习规则** | 自学习 | 错误日志、知识修补、进化阈值(3 次触发改进) |
| **L2 学习规则** | 性能优化 | 按需加载、记忆截断、回复控制 |
**记忆读取策略**(核心流程):
```
用户提问 → L0 安全过滤 → L1 关键词索引匹配
├─ 无匹配 → 直接回答(不翻记忆)
└─ 有匹配 → L2 置信度检查
├─ ≥ 0.7 → 返回摘要作为上下文
└─ < 0.7 → 终止,直接回答(不 fallback 到 L3)
L3 仅在用户明确要求"调出原文"时按行号加载
```
### 3.2 IDENTITY.md — AI 身份档案
**路径**:`~/workbuddy-agent-os/agent-sync/01_core/IDENTITY.md` → 部署到 `~/.workbuddy/IDENTITY.md`
**大小**:1.70 KB
```yaml
Name: Claw
Creature: AI 外骨骼(智能体操作系统内核)
Vibe: 精准、高效、无废话、有主见
Emoji: 🦀
```
包含:
- 角色定位(个人智能体外骨骼,非聊天机器人)
- 能力边界(擅长/不擅长/绝对不做)
- 交互风格(先结论后步骤,能验证不问)
- 当前设备信息(由 `init.sh` 自动填充:主机名、系统、Python 路径、Node 路径、oMLX 模型列表、初始化时间)
### 3.3 USER.md — 用户画像
**路径**:`~/workbuddy-agent-os/agent-sync/01_core/USER.md` → 部署到 `~/.workbuddy/USER.md`
**大小**:1.11 KB
```yaml
Name: ghai
City: 苏州
Language: 中文(默认),英文(技术术语保留)
```
记录用户的工作背景、个人偏好(结构化输出、决策果断、注重 token 效率)、当前关注领域和近期动态。此文件随使用持续更新。
### 3.4 mcp.json — MCP 服务器配置
**路径**:`~/workbuddy-agent-os/agent-sync/01_core/mcp.json` → 部署到 `~/.workbuddy/mcp.json`
**大小**:261 B
```json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "~/workbuddy-agent-os/agent-sync"]
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}
```
两个 MCP 服务器:
- **filesystem**:让 AI Agent 通过标准协议读写 `~/workbuddy-agent-os/agent-sync/` 目录下的文件
- **memory**:提供持久化记忆存储能力
> **注意**:`apply-config.sh` 部署 mcp.json 时,如果目标已存在 mcp.json,会提示手动合并而非覆盖,避免破坏用户已有配置。
---
## 四、初始化与部署
### 4.1 一键初始化(init.sh)
**路径**:`~/workbuddy-agent-os/agent-sync/00_bootstrap/init.sh`(12.45 KB,366 行)
**使用方式**:
```bash
cd ~/workbuddy-agent-os/agent-sync/00_bootstrap && bash init.sh
```
**自动完成的操作**(按顺序):
| 步骤 | 操作 | 说明 |
|------|------|------|
| 1 | 检测操作系统 | macOS/Linux,提取版本信息和主机名 |
| 2 | 检测 Python | 优先使用 agent-os venv → managed Python → 系统 python3 |
| 3 | 检测 Node.js | WorkBuddy managed Node 22.12.0 |
| 4 | 创建本机专属目录 | `~/workbuddy-agent-os/agent-sync/agent-local/` 下的 8 个子目录 |
| 5 | 重建软链接 | raw → agent-os-local/memory/raw 等 3 个链接 |
| 6 | 创建 agent-os 内部目录 | 42 个目录(含知识库 16 个领域子目录) |
| 7 | 添加 .gitkeep | 空目录添加占位文件(确保坚果云能同步空目录) |
| 8 | 安装 Python 依赖 | 自动创建 venv 并 `pip install -r requirements.txt` |
| 9 | 填充设备信息 | sed 替换 IDENTITY.md 中的占位符 |
| 10 | 初始化记忆体 | 创建 L1 keyword_index.json 和 L2 facts.db |
| 11 | 检测坚果云 | 自动搜索常见坚果云路径 |
| 12 | 检测 oMLX | curl 检查 localhost:8000 是否响应 |
**输出**:换机还原检查清单(5 项)和目录边界说明。
### 4.2 配置部署(apply-config.sh)
**路径**:`~/workbuddy-agent-os/agent-sync/00_bootstrap/apply-config.sh`(3.31 KB,112 行)
**使用方式**:
```bash
cd ~/workbuddy-agent-os/agent-sync/00_bootstrap && bash apply-config.sh
```
**操作**:
1. **备份旧配置**:将 `~/.workbuddy/` 下已有的 SOUL.md、IDENTITY.md、USER.md 备份到带时间戳的目录
2. **部署配置**:复制 `01_core/` 下的 4 个文件到 `~/.workbuddy/`
3. **mcp.json 特殊处理**:已存在时提示手动合并,不覆盖
4. **BOOTSTRAP.md 清理**:检测到 BOOTSTRAP.md 时提示删除(需 `AUTO_DELETE_BOOTSTRAP=yes` 环境变量确认)
### 4.3 技能导入导出
#### import_skills.sh — 技能导入
**路径**:`~/workbuddy-agent-os/agent-sync/00_bootstrap/import_skills.sh`(2.60 KB)
```bash
# 导入全部技能
bash import_skills.sh
# 导入指定技能
bash import_skills.sh memory_manager
```
**操作**:
- 扫描 `02_skills/` 下所有子目录
- 跳过 `_template/` 和缺少 `SKILL.md` 的目录
- 复制到 `~/.workbuddy/skills/`(用户级技能目录)
- 已存在的技能会先删除再覆盖
#### export_skills.sh — 技能导出
**路径**:`~/workbuddy-agent-os/agent-sync/00_bootstrap/export_skills.sh`(1.74 KB)
```bash
bash export_skills.sh memory_manager
# 输出:07_migration/exports/memory_manager_v1.2.0.zip
```
### 4.4 冷启动记忆体
```bash
~/.workbuddy/binaries/python/envs/agent-os/bin/python3 \
~/workbuddy-agent-os/agent-sync/02_skills/memory_manager/bootstrap_from_memory.py \
--root ~/workbuddy-agent-os/agent-sync
```
将已有工作记忆(MEMORY.md + 工作日志 + 系统画像)全量导入 L1/L2/L3 记忆体。仅在首次运行,之后每日自动提炼。
---
## 五、技能体系详解
### 5.1 技能分类
AgentOS 将技能分为两类:
**system 技能**(后台自动运行,也可手动触发):
| 技能 | 版本 | 用途 | 自动化时间 |
|------|------|------|-----------|
| memory_manager | v1.2.0 | 记忆提炼/去重/语义检索 | 每日 2:00 |
| collect_to_inbox | v1.0.0 | 知识库目录扫描→收件箱 | 每日 2:30 |
| inbox_refine | v1.0.0 | 收件箱提纯→知识库归档 | 每日 3:00 |
| auto_collector | v1.0.0 | 24h 多平台自动信息收集 | 持续运行 |
| kb_manager | v1.1.0 | 知识入库/分类/检索 | 按需 |
| sync_manager | v1.1.0 | 备份/导出/同步状态 | 按需 |
**user 技能**(对话触发):
| 技能 | 版本 | 用途 | 触发词示例 |
|------|------|------|-----------|
| content_processor | v1.0.0 | 统一内容处理路由 | 转笔记/剪藏/语音摘要/采集 |
| web_crawler | v1.1.0 | 网页抓取+反爬 | 抓取/crawl/fetch |
### 5.2 快速指令对照表
| 指令 | 路由 | 动作 |
|------|------|------|
| `转笔记` | content_processor → bilinote | 视频→结构化笔记 |
| `摘字幕` | content_processor → bilinote | 仅语音转文字 |
| `视频摘要` | content_processor → bilinote | 提炼核心观点 |
| `剪藏` | content_processor → web-clipper | 网页→Markdown |
| `摘抄` | content_processor → web-clipper | 保存全文 |
| `文章摘要` | content_processor → web-clipper | 3句话概括 |
| `提炼` | content_processor → web-clipper | 方法论/步骤/结论 |
| `翻译` | content_processor → web-clipper | 翻译成中文 |
| `语音摘要` | content_processor → voice-summary | 语音→核心要点 |
| `转文字` | content_processor → voice-summary | 逐字稿 |
| `采集` | content_processor → social-collector | 小红书/抖音→笔记 |
| `开始收集` | auto_collector | 启动 24h 监控 |
| `停止收集` | auto_collector | 暂停监控 |
| `收集报告` | auto_collector | 今日采集摘要 |
| `记忆更新` | memory_manager | 手动触发记忆提炼 |
| `查记忆` | memory_manager | 语义检索记忆 |
| `入库` | kb_manager | 知识入库(→ 00_inbox/) |
| `归集` | collect_to_inbox | 分类目录→收件箱 |
| `提纯` | inbox_refine | 收件箱提纯归档 |
| `抓取` | web_crawler | 网页抓取+反爬 |
| `备份知识库` | sync_manager | 全量备份 |
### 5.3 memory_manager(记忆管理)详解
**版本**:v1.2.0 | **脚本数**:7 个 Python 脚本
#### 核心脚本说明
| 脚本 | 大小 | 用途 | 使用方式 |
|------|------|------|----------|
| `daily_digest.py` | 20.30 KB | 每日对话提炼主脚本 | `--root ~/workbuddy-agent-os/agent-sync --date YYYY-MM-DD` |
| `semantic_search.py` | 23.75 KB | BM25 + 向量语义混合检索 | `search --query "内容" --top-k 5` |
| `bootstrap_from_memory.py` | 14.49 KB | 冷启动全量导入历史记忆 | `--root ~/workbuddy-agent-os/agent-sync` |
| `memory_cleanup.py` | 3.91 KB | 冲突消解与过期记忆清理 | `--root ~/workbuddy-agent-os/agent-sync` |
| `agent_memory_init.py` | 3.30 KB | 首次初始化记忆体 | `--root ~/workbuddy-agent-os/agent-sync` |
| `export_memories.py` | 3.64 KB | 记忆导出为 JSON+MD 压缩包 | `--output ~/backup/` |
| `import_memories.py` | 7.33 KB | 从压缩包恢复记忆(智能去重) | `--input ~/backup/memories.zip` |
#### 每日对话提炼流程
```
1. 读取 Claw 工作日志(~/WorkBuddy/Claw/.workbuddy/memory/YYYY-MM-DD.md)
2. 提取关键事实(who/what/when/where/decision)
3. 去重:对比 L2 已有事实,相似度 > 0.9 则跳过
4. 冲突检测:新事实与旧事实矛盾?→ 标记 OVERRIDE 或提示用户确认
5. 生成摘要(100-200 字/条)
6. 更新 L1 关键词索引(keyword_index.json)
7. 更新 L1_vec 向量索引(ChromaDB + oMLX embedding)
8. 关键对话原文 → 压缩后写入 L3(long_term/raw/)
```
#### 语义检索能力
- **BM25 关键词检索** + **ChromaDB 向量检索** + **RRF(Reciprocal Rank Fusion)加权融合**
- 向量权重 0.6 / BM25 权重 0.4
- 向量引擎:ChromaDB 持久化 + oMLX Qwen3-Embedding-0.6B(1024 维)
- CLI:
```bash
# 检索
python3 semantic_search.py search --root ~/workbuddy-agent-os/agent-sync --query "查询内容" --top-k 5
# 回填(向量化所有 L2 事实)
python3 semantic_search.py backfill --root ~/workbuddy-agent-os/agent-sync
# 重建索引
python3 semantic_search.py rebuild --root ~/workbuddy-agent-os/agent-sync
# 测试 embedding
python3 semantic_search.py embed --root ~/workbuddy-agent-os/agent-sync --text "测试"
```
### 5.4 inbox_refine(收件箱提纯)详解
**版本**:v1.0.0 | **脚本数**:3 个(含 LLM 分类器)
#### 分类决策逻辑
| 内容特征 | nature | 目标目录 |
|----------|--------|----------|
| 已验证的客观事实 | fact | 30_facts/ |
| 可操作的步骤/教程 | method | 20_methods/ |
| 原子概念/基础原理 | concept | 10_concepts/ |
| 公认基础原理 | axiom | 10_concepts/ |
| 法律法规/制度 | regulation | 30_facts/ |
| 论文/文档/外部资料 | reference | 40_references/ |
| 测试数据/基准结果 | data | 30_facts/ |
| 主观看法/推测 | opinion | 60_opinions/ |
| 他人原话/语录 | quote | 60_opinions/ |
#### 置信度评分
| source_type | confidence |
|-------------|-----------|
| official_doc | 0.9 |
| literature | 0.8 |
| experiment | 0.7 |
| personal_exp | 0.5 |
| social_media | 0.3 |
| unknown | 0.4 |
#### LLM 分类器
`llm_classifier.py`(15.19 KB)使用 oMLX + Qwen2.5-VL-3B-Instruct-8bit 进行 AI 辅助分类(因 Qwen3-8B Chat API 存在 500 错误,降级使用 VLM 模型),包含降级机制:LLM 失败时自动回退到启发式规则,分类信心度阈值降至 0.4。
### 5.5 collect_to_inbox(分类目录汇聚收件箱)详解
**版本**:v1.0.0 | **脚本**:`collect_to_inbox.py`(10.24 KB)
#### 扫描目录配置
| 源目录 | 来源技能 | 提取策略 |
|--------|----------|----------|
| `50_resources/视频笔记/` | bilinote | 提取核心摘要 + 关键结论 |
| `50_resources/字幕存档/` | bilinote | 提取前 500 字摘要 |
| `50_resources/阅读笔记/` | web-clipper | 提取标题 + 核心观点 |
| `50_resources/全文存档/` | web-clipper | 提取前 500 字摘要 |
| `50_resources/翻译存档/` | web-clipper | 提取标题 + 3 句话概括 |
| `50_resources/灵感素材/` | social-collector | 提取核心内容 + 互动数据 |
| `50_resources/语音转写/` | voice-summary | 提取关键要点 |
| `20_methods/` | web-clipper 提炼 | 提取方法名 + 步骤 |
| `01_daily/闪念笔记/` | voice-summary | 提取要点 + 标签 |
| `40_references/` | content_processor | 提取标题 + 核心观点 |
### 5.6 content_processor(统一内容处理路由)详解
**版本**:v1.0.0
本技能不替代子技能,而是作为**统一调度层**:
```
用户输入(触发词 + URL/文件)
↓
content_processor 解析触发词
↓ 路由
├─ 视频 → 加载 bilinote 技能
├─ 文章 → 加载 web-clipper 技能
├─ 语音 → 加载 voice-summary 技能
└─ 社交 → 加载 social-collector 技能
↓ 执行
子技能完成处理 → 输出 Markdown 笔记到对应分类目录
```
### 5.7 web_crawler(网页抓取+反爬)详解
**版本**:v1.1.0
三引擎自适应选择:
| 反爬级别 | 引擎 | 说明 |
|----------|------|------|
| 低(静态页面) | Scrapling 静态模式 | 最快,无需浏览器 |
| 中(动态渲染) | Scrapling 动态模式 | Camoufox 隐身浏览器 |
| 高(Cloudflare 等) | Playwright + Stealth | 完整浏览器模拟+反检测 |
失败自动重试最多 3 次,引擎自动降级。
---
## 六、知识库结构详解
### 6.1 目录结构与命名规则
知识库路径:`~/workbuddy-agent-os/agent-sync/03_knowledge/`,同时作为 Obsidian Vault。
| 编号 | 目录 | 中文名 | 知识属性 | 说明 |
|------|------|--------|----------|------|
| 00 | `00_inbox/` | 📥 收件箱 | — | 待提纯内容暂存 |
| 01 | `01_daily/` | 📅 日记 | — | 每日日记、闪念笔记 |
| 10 | `10_concepts/` | 💡 概念层 | concept/axiom | 16 个子领域目录 |
| 20 | `20_methods/` | 🔧 方法层 | method | 可操作的步骤/教程 |
| 30 | `30_facts/` | 📋 事实层 | fact/regulation/data | 已验证的客观事实 |
| 40 | `40_references/` | 📎 参考层 | reference | 论文/文档/外部资料 |
| 50 | `50_resources/` | 🛠 资源层 | resource | 视频笔记/阅读笔记/灵感素材等 |
| 60 | `60_opinions/` | 💭 观点层 | opinion/quote | 主观看法/他人原话 |
| 90 | `90_archive/` | 🗄 归档层 | — | 已弃用的知识 |
| 99 | `99_system/` | ⚙️ 系统层 | — | 模板/分类/配置 |
### 6.2 领域分类体系
`10_concepts/` 下按 16 个一级领域分子目录:
| 编号 | 英文目录 | 中文 | 典型子领域 |
|------|----------|------|-----------|
| 01 | cs | 计算机科学 | 数据库、前端、后端、运维、安全 |
| 02 | ai | 人工智能 | NLP、CV、强化学习、RAG、Agent |
| 03 | finance | 金融 | 量化交易、价值投资、宏观经济 |
| 04 | law | 法律 | 民法、商法、知识产权 |
| 05 | medicine | 医学 | 中医、西医、营养学 |
| 06 | physics | 物理 | 量子力学、相对论、热力学 |
| 07 | math | 数学 | 线性代数、概率统计、微积分 |
| 08 | psychology | 心理学 | 认知心理学、社会心理学 |
| 09 | philosophy | 哲学 | 认识论、伦理学、美学 |
| 10 | history | 历史 | 中国史、世界史、科技史 |
| 11 | engineering | 工程 | 机械、电子、土木 |
| 12 | design | 设计 | UI/UX、平面设计、建筑设计 |
| 13 | business | 商业 | 创业、管理、营销、战略 |
| 14 | personal-management | 个人管理 | GTD、番茄工作法、精力管理 |
| 15 | personal-insight | 个人洞见 | 决策模型、价值观、反思 |
| 16 | other | 其他 | 待新增领域 |
> 当"其他"类别超过总知识 5% 时,memory_manager 会提示新增领域。
### 6.3 知识卡片模板
`99_system/templates/` 下有 4 种标准化模板:
| 模板文件 | 适用类型 | 核心字段 |
|----------|----------|----------|
| `concept-card.md` | 概念/公理 | 一句话定义、核心原理、与相关概念区别、主流选择 |
| `method-card.md` | 方法/教程 | 适用场景、步骤、注意事项、示例 |
| `fact-card.md` | 事实/数据 | 事实陈述、数据来源、可信度 |
| `personal-insight-card.md` | 个人洞见 | 背景、思考过程、结论、行动项 |
所有知识卡片使用标准 Frontmatter:
```yaml
---
id: KB-YYYYMMDD-NNN
title: "知识标题"
type: concept|method|fact|reference|resource|opinion
status: draft|review|published|archived
nature: fact|opinion|method|regulation|reference|data|quote|axiom
domain: [领域1, 领域2]
tags: [标签列表]
confidence: 0.0-1.0
source: "原始来源 URL"
source_type: official_doc|literature|experiment|personal_exp|social_media|unknown
date_created: YYYY-MM-DD
date_modified: YYYY-MM-DD
version: 1
previous_version: ""
superseded_by: ""
---
```
### 6.4 分类体系配置文件
| 文件 | 路径 | 说明 |
|------|------|------|
| `domains.md` | `99_system/taxonomies/domains.md` | 16 个一级领域定义 |
| `nature-types.md` | `99_system/taxonomies/nature-types.md` | 9 种 nature 类型 + 决策树 |
| `folder-aliases.json` | `99_system/taxonomies/folder-aliases.json` | 英文目录 ↔ 中文映射 |
| `classify-knowledge.md` | `99_system/prompts/classify-knowledge.md` | 知识分类 Prompt |
---
## 七、记忆体系统详解
### 7.1 五级分层架构
```
┌─────────────────────────────────────────────────┐
│ L0: SOUL.md(硬约束) │ 不存储,直接注入 prompt
├─────────────────────────────────────────────────┤
│ L1: 关键词索引(keyword_index.json) │ 52 条条目
│ + 向量索引(ChromaDB + embedding) │ 52 条向量
├─────────────────────────────────────────────────┤
│ L2: 结构化事实库(facts.db, SQLite) │ 52 条事实
├─────────────────────────────────────────────────┤
│ L3: 对话原文(long_term/raw/*.md) │ 6 个文件
└─────────────────────────────────────────────────┘
```
### 7.2 L2 facts.db 表结构
```sql
CREATE TABLE facts (
id TEXT PRIMARY KEY,
subject TEXT NOT NULL, -- 主语
predicate TEXT NOT NULL, -- 谓语
object TEXT NOT NULL, -- 宾语
confidence REAL DEFAULT 0.7, -- 置信度
nature TEXT DEFAULT 'fact', -- 属性
domain TEXT, -- 领域
source TEXT, -- 来源
date_created TEXT, -- 创建时间
date_modified TEXT, -- 修改时间
previous_version TEXT, -- 前一版本
superseded_by TEXT, -- 被谁取代
version INTEGER DEFAULT 1 -- 版本号
);
```
索引:`subject` / `domain` / `confidence`
### 7.3 记忆体文件说明
| 路径 | 类型 | 说明 |
|------|------|------|
| `04_memory/vector_db/keyword_index.json` (24.78 KB) | L1 | BM25 关键词索引 |
| `04_memory/vector_db/chroma/chroma.sqlite3` (536 KB) | L1_vec | ChromaDB 向量索引 |
| `04_memory/long_term/facts.db` (40 KB) | L2 | SQLite 结构化事实 |
| `04_memory/long_term/raw/YYYY-MM-DD.md` | L3 | 当日对话原文 |
| `04_memory/daily_summaries/YYYY-MM-DD.md` | 摘要 | 每日提炼结果 |
| `04_memory/logs/` | 日志 | 错误日志、冲突日志、入库日志 |
| `04_memory/memory_backup/` | 备份 | 记忆备份存档 |
---
## 八、工具脚本目录
### 8.1 05_tools/ 与 02_skills/ 的区别
- **`02_skills/`**:可被 WorkBuddy 对话触发的技能,有 `SKILL.md` 身份证
- **`05_tools/`**:底层公共工具,被技能调用或手动执行,不暴露给对话
### 8.2 系统诊断脚本
| 脚本 | 路径 | 大小 | 用途 |
|------|------|------|------|
| `check_automation_env.py` | `05_tools/01_system/` | 4.38 KB | 检查自动化运行环境配置 |
| `check_facts.py` | `05_tools/01_system/` | 1.45 KB | 查询 facts.db 中的事实 |
| `test_omlx_embedding.py` | `05_tools/01_system/` | 5.32 KB | 测试 oMLX Embedding API 连通性 |
**调用方式**:
```bash
~/.workbuddy/binaries/python/envs/agent-os/bin/python3 ~/workbuddy-agent-os/agent-sync/05_tools/01_system/check_automation_env.py
```
### 8.3 口播素材系统(content-inspiration)
**路径**:`~/workbuddy-agent-os/agent-sync/05_tools/05_crawl/content-inspiration/`
**版本**:v1.0.0 | **独立项目**,包含完整 Web 界面
解决的核心问题:口播创作者的素材灵感管理。
| 组件 | 脚本 | 大小 | 用途 |
|------|------|------|------|
| 采集 | `collect.py` | 9.76 KB | 多平台元数据采集 |
| 分析 | `analyze.py` | 8.25 KB | oMLX + Qwen2.5-VL AI 分析 |
| 下载 | `downloader.py` | 5.93 KB | yt-dlp 视频下载 |
| 界面 | `app.py` | 10.45 KB | Gradio Web 界面 |
| 工具 | `utils.py` | 4.86 KB | 公共工具函数 |
| 配置 | `config.yaml` | 1.64 KB | 运行时配置 |
| 数据 | `schema.sql` | 3.54 KB | SQLite 数据库表结构 |
**数据流**:
```
collect.py → JSONL 存档(data/raw/)
↓
analyze.py → oMLX Qwen2.5-VL 分析 → SQLite 索引
↓
app.py → Gradio Web 界面统一检索
↓
downloader.py → yt-dlp → ~/workbuddy-agent-os/agent-sync/agent-local/materials/video/
```
**启动方式**:
```bash
~/.workbuddy/binaries/python/envs/agent-os/bin/python3 ~/workbuddy-agent-os/agent-sync/05_tools/05_crawl/content-inspiration/app.py
```
---
## 九、运行时与缓存
### 9.1 06_runtime/ 结构
| 目录 | 用途 | 存储位置 |
|------|------|----------|
| `06_runtime/tasks/` | 任务执行记录 | agent-os(同步) |
| `06_runtime/cache/` | 临时缓存 | agent-os-local(本地) |
### 9.2 agent-os-local/ 完整结构
```
~/workbuddy-agent-os/agent-sync/agent-local/
├── memory/
│ ├── raw/ L3 对话原文(隐私数据)
│ │ ├── 2026-04-25.md (6.82 KB)
│ │ ├── 2026-04-26.md (6.29 KB)
│ │ ├── 2026-04-27.md (4.78 KB)
│ │ ├── 2026-04-28.md (4.54 KB)
│ │ └── bootstrap_*.md 启动时导入的历史记忆
│ └── vector_db/ 向量数据库(ChromaDB + 关键词索引)
│ ├── keyword_index.json (24.78 KB)
│ └── chroma/ ChromaDB 持久化数据
├── runtime/
│ └── cache/ 临时缓存
└── materials/ 采集的原始素材
├── web/ 网页保存
├── video/ 视频下载(yt-dlp 输出)
├── audio/ 录音文件
├── screenshots/ 截图
└── refined_for_inbox/ 已提炼待投递的 MD
```
---
## 十、迁移与备份
### 10.1 备份脚本(backup.sh)
**路径**:`~/workbuddy-agent-os/agent-sync/07_migration/backup.sh`(1.43 KB)
```bash
bash backup.sh [backup_dir]
# 默认备份到 04_memory/memory_backup/
```
**操作**:
- 备份核心配置(01_core/)
- 备份记忆体(long_term/、vector_db/、daily_summaries/)
- 备份技能包(02_skills/)
- 自动清理 30 天以上的旧备份
### 10.2 全量打包(pack.sh)
**路径**:`~/workbuddy-agent-os/agent-sync/07_migration/pack.sh`(1.17 KB)
```bash
bash pack.sh
# 输出:07_migration/exports/agent-os_YYYYMMDD_HHMMSS.tar.gz
```
排除项:缓存、虚拟环境、`__pycache__`、`.DS_Store`、`node_modules`
### 10.3 解包还原(unpack.sh)
**路径**:`~/workbuddy-agent-os/agent-sync/07_migration/unpack.sh`(1.11 KB)
```bash
bash unpack.sh <archive_path> [target_dir]
# 解压后按提示运行 init.sh → apply-config.sh → import_skills.sh
```
### 10.4 换机还原流程(3步)
```bash
# 1. 等坚果云同步完成,agent-os 目录出现在本机
# 2. 一键初始化(自动完成所有配置)
cd ~/workbuddy-agent-os/agent-sync/00_bootstrap && bash init.sh
# 3. 部署核心配置
bash apply-config.sh
# 4. 导入技能
bash import_skills.sh
# 5. 手动安装 oMLX(Apple MLX 框架,硬件依赖)
```
`init.sh` 自动完成:创建本地目录、重建软链接、创建 venv 安装依赖、填充设备信息、检测坚果云和 oMLX。
---
## 十一、自动化任务配置
### 11.1 WorkBuddy 自动化任务
| 任务 | 时间 | 脚本 | 说明 |
|------|------|------|------|
| 每日记忆提炼 | 每日 02:00 | `memory_manager/daily_digest.py` | 对话→L2 事实 |
| 收件箱汇聚 | 每日 02:30 | `collect_to_inbox/collect_to_inbox.py` | 知识库扫描→inbox |
| 收件箱提纯 | 每日 03:00 | `inbox_refine/inbox_refine.py` | inbox→分类归档 |
| RSS 检查 | 每小时 | auto_collector | 检查所有 RSS 源 |
| 社交平台检查 | 每 2 小时 | auto_collector + TikOmni | 小红书/抖音博主 |
| 网页变化检查 | 每小时 | auto_collector + Crawl4AI | 指定网页监控 |
| 采集日报 | 每日 23:00 | auto_collector | 今日采集汇总 |
### 11.2 自动化任务存储
自动化任务配置存储在:
- `~/.workbuddy/automations/<automation-id>/automation.toml` — 运行时配置
- `~/workbuddy-agent-os/agent-sync/.codebuddy/automations/<automation-id>/memory.md` — 执行记录
---
## 十二、同步策略详解
### 12.1 双轨同步
| 轨道 | 工具 | 同步范围 | 优势 |
|------|------|----------|------|
| 实时同步 | 坚果云客户端 | 整个 `~/workbuddy-agent-os/agent-sync/` 目录 | 即时、增量、无感 |
| 版本控制 | Git(Gitee 私有仓库) | 代码/配置/知识文件 | 历史追溯、分支管理、冲突解决 |
### 12.2 不同步的内容
以下内容通过软链接指向 `~/workbuddy-agent-os/agent-sync/agent-local/`,天然不会进入坚果云同步和 Git:
- L3 对话原文(`04_memory/long_term/raw/`)
- ChromaDB 向量库(`04_memory/vector_db/chroma/`)
- 临时缓存(`06_runtime/cache/`)
- 原始素材(`agent-os-local/materials/`)
### 12.3 Git 排除规则(.gitignore)
```gitignore
# 系统文件
.DS_Store / __pycache__ / *.pyc
# 虚拟环境
.venv/ / venv/
# 运行时缓存(已软链接)
06_runtime/cache/
# 大媒体文件
*.mp4 / *.mp3 / *.mov / *.zip / *.tar.gz
# WorkBuddy 运行时
.codebuddy/ / .workbuddy/
# Obsidian 插件(各设备自行安装)
.obsidian/plugins/
# 备份和报告
backup_*/ / system-check-report-*.md
```
### 12.4 Git 远程仓库
- **平台**:Gitee 私有仓库
- **地址**:`git@gitee.com:babycalf/mac-agent-os.git`
- **分支策略**:main 分支,单线开发
- **SSH 密钥**:`~/.ssh/id_ed25519a`(个人公钥)
### 12.5 索引卡片命名规范(多机协作)
多台电脑采集的素材通过**索引卡片**共享,避免大文件同步冲突:
```
{hostname}_{YYYYMMDD}_{slug}.md
示例:Redmi-12C_20260428_douyin-普通人逆袭.md
MBP-M3_20260428_bilibili-科普冷知识.md
```
卡片模板:
```yaml
---
title: 素材标题
source_url: https://...
local_path: ~/workbuddy-agent-os/agent-sync/agent-local/materials/video/xxx.mp4
type: video|audio|web|image
platform: douyin|xiaohongshu|bilibili|web
collected_by: Redmi-12C ← 标明采集机器
collected_at: 2026-04-28
tags: [标签1, 标签2]
---
```
---
## 十三、本地/远程使用方式
### 13.1 本地使用(当前配置)
**本机环境**:
- 设备:MacBook Air M1(Redmi-12C) / macOS 26.4
- Python:3.13.12(`~/.workbuddy/binaries/python/envs/agent-os/bin/python3`)
- Node.js:22.12.0(`~/.workbuddy/binaries/node/versions/22.12.0/bin/node`)
- 本地 LLM:oMLX v0.3.6(localhost:8000,API Key: `omlx`)
**使用流程**:
1. 打开 WorkBuddy 桌面客户端
2. 在 Claw 工作区对话,AI 自动加载 SOUL.md/IDENTITY.md/USER.md
3. 使用触发词(转笔记/剪藏/采集/提纯 等)调用技能
4. 自动化任务在后台按时执行
**关键路径速查**:
```
# Python(所有脚本用这个)
~/.workbuddy/binaries/python/envs/agent-os/bin/python3
# Node.js
~/.workbuddy/binaries/node/versions/22.12.0/bin/node
# 知识库(Obsidian Vault)
~/workbuddy-agent-os/agent-sync/03_knowledge/
# 本地 LLM API
http://localhost:8000/v1/chat/completions (Authorization: Bearer omlx)
http://localhost:8000/v1/embeddings (Authorization: Bearer omlx)
# 坚果云同步目录
~/Nutstore Files/
```
### 13.2 远程/换机使用
**前提条件**:
1. 新机器已安装 WorkBuddy 桌面客户端
2. 新机器已安装坚果云客户端,且同步完成
**还原步骤**:
```bash
# 1. 确认 agent-os 目录已通过坚果云同步到本机
ls ~/workbuddy-agent-os/agent-sync/README.md
# 2. 一键初始化(自动创建本地目录、重建软链接、安装依赖)
cd ~/workbuddy-agent-os/agent-sync/00_bootstrap && bash init.sh
# 3. 部署核心配置到 WorkBuddy
bash apply-config.sh
# 4. 导入技能
bash import_skills.sh
# 5. 冷启动记忆体(首次)
~/.workbuddy/binaries/python/envs/agent-os/bin/python3 \
~/workbuddy-agent-os/agent-sync/02_skills/memory_manager/bootstrap_from_memory.py --root ~/workbuddy-agent-os/agent-sync
# 6. 安装 oMLX(从 https://omlx.ai 下载)
# 7. 配置 Obsidian Vault → ~/workbuddy-agent-os/agent-sync/03_knowledge/
# 8. 重启 WorkBuddy
```
**换机注意事项**:
- `~/workbuddy-agent-os/agent-sync/agent-local/` **不会**通过坚果云同步,每台机器独立
- 向量库和 L3 原文需要在新机器上重新生成(`bootstrap_from_memory.py` 或 `semantic_search.py backfill`)
- 设备信息会由 `init.sh` 自动更新到 IDENTITY.md
- Python/Node 路径可能因 WorkBuddy 版本不同而变化,`init.sh` 会自动检测
### 13.3 跨平台兼容性
| 平台 | 说明 |
|------|------|
| **macOS** | 直接运行,无需额外配置 |
| **Linux** | 直接运行,部分系统命令可能需要 `sudo` |
| **Windows** | 需通过 WSL2 运行,路径使用 `/mnt/c/Users/xxx/` |
所有路径使用 `$HOME` 或相对路径,不硬编码绝对路径,确保跨平台兼容。
---
## 十四、数据流全景
### 14.1 内容采集→知识归档 完整流程
```
用户输入 / 自动监控
↓
┌──────────────────────────────────────────┐
│ content_processor(统一路由层) │
│ ├─ 视频 → bilinote │
│ ├─ 文章 → web-clipper │
│ ├─ 语音 → voice-summary │
│ └─ 社交 → social-collector │
└────────────┬─────────────────────────────┘
↓
各分类目录(视频笔记/阅读笔记/灵感素材/...)
↓
collect_to_inbox(每日 2:30 自动 / 手动"归集")
↓
00_inbox/(收件箱,标准化 MD)
↓
inbox_refine(每日 3:00 自动 / 手动"提纯")
↓
分类写入 03_knowledge/ 对应目录 + 更新首页
```
### 14.2 记忆提炼流程
```
每日对话记录(~/WorkBuddy/Claw/.workbuddy/memory/YYYY-MM-DD.md)
↓
memory_manager/daily_digest.py(每日 2:00 自动)
↓
┌─ 提取关键事实 → 去重 → 冲突检测
├─ 更新 L2 facts.db(SQLite)
├─ 更新 L1 keyword_index.json(BM25)
├─ 更新 L1_vec ChromaDB(向量)
└─ 关键原文 → L3 raw/(压缩存储)
```
### 14.3 语义检索流程
```
用户查询 → memory_manager/semantic_search.py
↓
BM25 关键词检索(keyword_index.json)
+ 向量语义检索(ChromaDB + oMLX Embedding)
↓
RRF 加权融合(BM25:0.4 + 向量:0.6)
↓
返回 Top-K 结果
```
### 14.4 多机协作数据流
```
本机采集 → ~/workbuddy-agent-os/agent-sync/agent-local/materials/(本机专属,不同步)
↓ AI 提炼
~/workbuddy-agent-os/agent-sync/03_knowledge/00_inbox/(标准化 MD)
↓ 坚果云实时同步
其他电脑收到的 inbox 内容
↓
inbox_refine → 归档到知识库 → Git commit → Gitee
```
---
## 十五、环境依赖清单
### 15.1 必需环境
| 软件 | 最低版本 | 安装方式 | 状态 |
|------|----------|----------|------|
| WorkBuddy 桌面客户端 | 最新版 | [codebuddy.cn](https://www.codebuddy.cn) | ✅ |
| Python | 3.10+ | WorkBuddy 自动管理 | ✅ 3.13.12 |
| Node.js | 18+ | WorkBuddy 自动管理 | ✅ 22.12.0 |
> Python 和 Node.js 由 WorkBuddy 自带,**不需要手动安装**。
### 15.2 Python 依赖库
| 包 | 版本要求 | 用途 | 使用者 | 安装状态 |
|---|---------|------|--------|---------|
| trafilatura | ≥2.0.0 | 网页正文提取 | kb_ingest, web-clipper | ✅ |
| sqlite-utils | ≥3.35 | SQLite 增强 | facts.db 操作 | ✅ |
| feedparser | ≥6.0.0 | RSS 解析 | auto_collector | ✅ |
| schedule | ≥1.2.0 | 定时任务 | auto_collector | ✅ |
| chromadb | ≥1.0.0 | 向量数据库 | semantic_search | ✅ 1.5.8 |
| scrapling | ≥0.1.0 | 三引擎反爬 | web_crawler | ✅ |
| crawl4ai | ≥0.1.0 | 智能结构化抓取 | web_crawler | ✅ |
| playwright | ≥1.50.0 | 浏览器自动化 | web_crawler | ✅ |
| playwright-stealth | latest | 反检测 | web_crawler | ✅ |
| openai-whisper | latest | 语音转文字 | voice-summary | ✅ |
| gradio | latest | Web 界面 | content-inspiration | ✅ 6.13 |
| yt-dlp | latest | 视频下载 | content-inspiration | ✅ 2026.3 |
**安装命令**(全部在 agent-os venv 中):
```bash
~/.workbuddy/binaries/python/envs/agent-os/bin/pip install -r ~/workbuddy-agent-os/agent-sync/requirements.txt
```
### 15.3 Node.js 依赖
| 包 | 用途 | 安装状态 |
|---|---|---------|
| @tikomni/skills | 小红书/抖音数据采集 | ✅ |
**安装命令**:
```bash
cd ~/.workbuddy/binaries/node/workspace && \
~/.workbuddy/binaries/node/versions/22.12.0/bin/npm install @tikomni/skills
```
### 15.4 系统软件
| 软件 | 用途 | 安装状态 |
|------|------|---------|
| oMLX v0.3.6 | 本地 LLM 运行 | ✅ 已安装 |
| Obsidian v1.12.7 | 知识库管理 | ✅ 已安装 |
| 坚果云 | 文件同步 | ✅ 已安装 |
| Playwright Chromium | 浏览器引擎 | ✅ headless shell 已安装 |
| Ollama | 本地 LLM(已停用) | ⚠️ 已停用,改用 oMLX |
---
## 十六、当前运行状态
### 16.1 模块状态总览
| 模块 | 状态 | 说明 |
|------|------|------|
| 核心配置(SOUL/IDENTITY/USER) | ✅ | 已部署到 ~/.workbuddy/ |
| Python 环境 | ✅ | venv 3.13.12 + 全部依赖 |
| Node.js 环境 | ✅ | 22.12.0 + TikOmni |
| 记忆系统 | ✅ | L2 有 52 条事实,L1 52 条索引,L1_vec 52 条向量(三方一致) |
| 知识库 | ✅ | 目录就绪 + 首页 + 模板 + 分类体系 |
| 收件箱提纯 | ✅ | inbox_refine 每日 3:00 自动 |
| 收件箱汇聚 | ✅ | collect_to_inbox 每日 2:30 自动 |
| 记忆提炼 | ✅ | daily_digest 每日 2:00 自动 |
| 技能包 | ✅ | 8 个自定义技能 + 多个插件技能 |
| 坚果云同步 | ✅ | 已配置 |
| Git 版本控制 | ✅ | Gitee 私有仓库 |
| oMLX | ✅ | v0.3.6 运行中 |
| Obsidian | ✅ | Vault 已绑定 03_knowledge/ |
| 口播素材系统 | ✅ | v1.0 已部署(Gradio + yt-dlp + AI 分析) |
### 16.2 本地 LLM 状态
| 模型 | 类型 | 大小 | 用途 | Chat API | Embedding API |
|------|------|------|------|----------|---------------|
| Qwen3-8B-MLX-4bit | LLM | 4.26GB | 中文理解/生成 | ❌ 500 错误 | — |
| Qwen2.5-VL-3B-Instruct-8bit | VLM | 3.9GB | 多模态理解 | ✅ 正常 | — |
| Qwen3-Embedding-0.6B | Embedding | 1.19GB | 向量嵌入(1024维) | — | ✅ 正常 |
> **关键发现**(2026-04-27):Qwen3-8B-MLX-4bit Chat API 返回 500 错误,已将 inbox_refine 降级使用 VLM 模型,添加降级机制。
### 16.3 磁盘空间
总量 228GB,已用 12GB,可用 161GB(截至 2026-04-25)
---
## 十七、已知问题与待解决项
### 17.1 已解决问题
| 问题 | 日期 | 解决方案 |
|------|------|----------|
| Qwen3-8B Chat API 500 错误 | 2026-04-27 | inbox_refine 降级使用 VLM 模型 + 启发式回退 |
| Ollama→oMLX 迁移 | 2026-04-27 | 更新所有 .md/.sh/.py 文件中的引用 |
| 旧路径 /Users/5kecheng/ → /Users/chengzige/ | 2026-04-25 | 全面清理,零残留 |
| 根目录散落脚本 | 2026-04-28 | 移入 05_tools/01_system/ |
| 目录隔离 | 2026-04-28 | 引入 agent-os-local + 软链接机制 |
### 17.2 待解决项
| 项目 | 优先级 | 说明 |
|------|--------|------|
| Homebrew 安装 | 中 | 可选,安装后可装 yt-dlp/ffmpeg/screenpipe |
| BiliNote Docker | 低 | 视频转笔记依赖,需 Docker Desktop |
| Qwen3-8B Chat API 修复 | 中 | oMLX 侧问题,等待更新 |
---
## 十八、附录:根目录文档索引
| 文件 | 大小 | 说明 |
|------|------|------|
| `README.md` | 7.71 KB | 项目主文档(架构、技能、状态) |
| `CORE-ARCHITECTURE.md` | 6.14 KB | 系统架构"宪法"(目录职责、软链接、同步策略) |
| `QUICKSTART.md` | 2.87 KB | 5 分钟快速上手指南 |
| `REQUIREMENTS.md` | 4.85 KB | 环境要求详细说明 |
| `SKILLS-CATALOG.md` | 11.38 KB | 技能清单与部署手册 |
| `CHANGELOG.md` | 3.75 KB | 版本变更日志 |
| `requirements.txt` | 2.01 KB | Python 依赖清单(含安装命令) |
| `.gitignore` | 846 B | Git 忽略规则 |
---
> **文档版本**:v2.1.0 | **生成时间**:2026-04-28 16:18
> **生成者**:Claw 🦀(AgentOS 智能体外骨骼)
> **数据来源**:agent-os 实际文件结构和内容分析