今天在 GitHub Trending 上看到一个有意思的项目:OpenBiliClaw,一个本地运行的跨平台内容推荐 AI Agent——先深度理解你,再带着对你的理解主动跨平台搜寻你会喜欢的内容,支持 B 站、小红书、抖音、YouTube、X、知乎、Reddit 等 12 个平台,数据 100% 留在本地。
一、项目概述
现代推荐系统本质上是"中间商"——平台站在海量内容和海量用户之间做匹配分发,权重由平台决定,优化目标是留存和变现,用户满意度只是手段而非目的。结果是推荐越来越像你已经看过的东西,信息茧房越裹越紧。而且每个平台都是一座孤岛,你在 B 站看了三年机械键盘,小红书完全不知道。
OpenBiliClaw 反过来。 它是一个本地运行的 AI Agent,先深度理解用户,再根据理解跨平台主动探索内容,从 B 站起步,现已扩展为通用跨平台方案:
- 本地优先:核心行为、推荐和对话数据存在本地 SQLite,不上云
- 跨平台覆盖:B 站 · 小红书 · 抖音 · YouTube · X · 知乎 · Reddit · Linux.do · Bangumi · V2EX · 微博 · 开放 Web
- 可调教:喜欢/不感兴趣、聊天反馈都会持续更新画像
- 多种接入方式:Chrome 插件、桌面 Web 界面(
/web)、移动端 Web(/m)、Flutter 原生 App(独立仓库)、DeepSeek Harness 插件
二、技术原理
2.1 五层心理画像系统
OpenBiliClaw 的核心是一个五层灵魂画像引擎,逐层抽象用户心理特征:
事件层(Events)→ 偏好层(Preferences)→ 觉察层(Awareness)→ 洞察层(Insights)→ 灵魂层(Soul)
这不是简单的标签系统,而是通过 LLM 从用户行为和对话中持续提炼深层心理需求,理解的是"你这个人",不只是"你的点击记录"。例如:一个关注机械表的人可能也会喜欢建筑美学,一个看量子物理科普的人可能对哲学感兴趣——系统用心理学桥接逻辑主动出击。
2.2 主动探索 vs 被动匹配
传统协同过滤只推荐"从这条路径走过的人最终都去了哪里"的内容,无法推给你"没人从这条路径走过"的内容。OpenBiliClaw 的探索策略则不同:基于对你的理解主动猜测可能感兴趣但从未接触过的领域,猜对了升级为正式兴趣,猜错了安静退出,不打扰用户。
2.3 架构设计
┌──────────────────────────────────────────────────────┐
│ Chrome 插件 │
│ (平台交互 · Cookie 同步 · 平台任务调度) │
└──────────────────┬───────────────────────────────────┘
│ HTTP / WebSocket
┌──────────────────▼───────────────────────────────────┐
│ 本地 FastAPI 后端(:8420) │
│ ┌──────────────┬────────────────────────────────┐ │
│ │ 画像引擎 │ 跨平台内容发现引擎 │ │
│ │ Profile │ Discovery │ │
│ └──────┬──────┴──────────────┬─────────────────┘ │
│ │ │ │
│ ┌──────▼──────────────────────▼───────────────┐ │
│ │ LLM 层 │ │
│ │ (OpenAI / Anthropic / Gemini / 本地 Ollama)│ │
│ └────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────┐ │
│ │ 本地 SQLite 数据库 │ │
│ │ 信号 · 画像 · 推荐 · 配置 · 缓存 │ │
│ └────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
后端基于 FastAPI + Pydantic v2,依赖管理使用 pyproject.toml(Hatch 构建系统),版本 0.3.205:
# 核心依赖(pyproject.toml)
dependencies = [
"httpx[socks]>=0.27",
"scrapetube>=2.1", # YouTube 抓取
"yt-dlp>=2024.1.0", # 多平台视频下载/元数据
"bilibili-api-python>=16", # B 站 API
"openai>=1.0",
"anthropic>=0.40",
"google-genai>=1.66",
"websockets>=13", # 实时推送
"Pillow>=10.0",
"fastapi>=0.115",
"rich>=13",
"typer>=0.12",
"pydantic>=2.0",
"apscheduler>=3.10",
"uvicorn>=0.32",
]
2.4 容器化部署
项目提供了多架构 Docker 镜像(linux/amd64、linux/arm64、linux/arm/v7),可在树莓派、Mac M 系列、x86 Linux、Windows Docker Desktop 上无缝运行:
FROM python:3.11-slim
WORKDIR /app
COPY pyproject.toml ./
RUN python -c "..." \
&& pip install -r /tmp/requirements.txt
COPY README.md config.example.toml ./
COPY src ./src
RUN pip install --no-deps .
EXPOSE 8420
CMD ["python", "-m", "openbiliclaw.docker_runtime", "serve-api", "--host", "0.0.0.0", "--port", "8420"]
三、安装与快速开始
3.1 环境要求
- Python 3.11+
- Docker(可选,用于容器化部署)
- Chrome 浏览器(安装插件)
3.2 最简安装(桌面安装包)
- 从 Latest Release 下载桌面安装包(macOS
.dmg/ Windows.exe) - 安装后自动在菜单栏/托盘运行,无需手动启动后端
- 从 Chrome 应用商店安装 浏览器插件
3.3 AI 助手部署后端
把下面这句话粘给 Claude Code / Codex CLI / Cursor 等 AI 编程助手即可自动部署:
请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/agent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch)
3.4 Docker 部署
# 多架构镜像一行启动
docker run -d \
--name openbiliclaw \
-p 8420:8420 \
-v ~/.openbiliclaw:/data \
ghcr.io/whiteguo233/openbiliclaw:latest
3.5 连接来源并初始化
- 在浏览器登录 B 站(默认初始化来源),或改选其他平台
- 打开
http://127.0.0.1:8420/web访问桌面端界面 - 手机扫码访问
http://<电脑局域网IP>:8420/m/(移动端 Web)
四、使用方法与实战
4.1 智能推荐
系统基于画像主动推送内容,每条推荐都附带"像朋友一样"的推荐理由,而非简单的"猜你喜欢":
# 推荐请求(内部逻辑示意)
async def generate_recommendation(user_profile: Profile, platforms: list[str]) -> list[ContentItem]:
# 1. 基于画像生成探索意图
intent = profile_engine.generate_exploration_intent(user_profile)
# 2. 跨平台并行发现
results = await asyncio.gather(
*[platform.discover(intent) for platform in platforms]
)
# 3. LLM 排序并生成推荐理由
ranked = llm.rank_and_explain(user_profile, flatten(results))
return ranked
4.2 对话调教
通过自然语言对话持续更新画像:
用户:我最近对东方美学很感兴趣
系统:好的,已记录。你的画像新增「东方美学」这一探索方向,
我会主动在 B 站、知乎、小红书等平台为你发现相关内容。
4.3 反馈机制
- 👍 喜欢 / 👎 不感兴趣:直接影响后续推荐
- 收藏 / 稍后再看 / 30 天历史:全部保留在本地
五、常见问题与解决方案
Q: 首次启动后端连接失败?
确保端口 8420 未被占用,后端支持 --host 和 --port 参数自定义:
openbiliclaw serve-api --host 0.0.0.0 --port 8420
Q: 推荐质量不高? 画像需要时间积累。初期多通过对话和反馈(喜欢/不感兴趣)调教,系统会在 1-2 周后显著提升推荐精准度。
Q: 如何更换 LLM 提供商?
配置文件支持 OpenAI / Anthropic / Google Gemini / 本地 Ollama,修改 config.toml 中的 llm.backend 字段即可。
Q: Docker 部署内存占用高?
精简版安装包首次启动会自动下载 bge-m3 向量模型(~1GB),如网络条件允许可选择 -with-embedding 完整版离线运行。
Q: 想接入更多平台?
项目采用插件化架构,新平台接入可参考现有平台实现(位于 src/openbiliclaw/sources/)。
六、总结
OpenBiliClaw 是一次对"推荐系统权力关系"的翻转实验——不是让平台决定你看什么,而是让 AI Agent 基于对你的理解主动去找。12 个平台的数据汇聚在一个本地 SQLite 中,用心理学画像而非协同过滤来破茧,全程无需上云。这个思路本身,比项目本身更值得关注。