通用个性化内容推荐 Agent——本地运行、跨平台理解你、只为你一个人构建
A general-purpose personalized content discovery Agent — runs on your machine, understands only you
一个纯本地、私有、开源的自进化跨平台内容发现 Agent:从你的跨平台使用、反馈和对话中持续深化���理画像,带着对你的理解主动去 B 站、小红书、抖音、YouTube、X、知乎、Reddit 等来源找内容。
| 跨平台 | 本地优先 | 可调教 |
|---|---|---|
| B 站 / 小红书 / 抖音 / YouTube / X / 知乎 / Reddit / Web | 数据默认留在本机 SQLite | 喜欢、不感兴趣、聊天反馈都会改变后续推荐 |
开发版还提供本机扩展 E2E 自检:后端可驱动已安装插件打开或复用抖音 / 小红书 / X 真实页面,先归位到平台入口,再执行白名单 DOM 操作并校验事件是否自然进入本地 /api/events。
喜欢这个方向?欢迎 Star 支持项目继续适配更多平台。
普通用户先走这四步;Firefox、Docker 和手动部署等备用路径保留在后面的 安装与部署详情。
- 安装浏览器插件:推荐从 Latest Release 的
openbiliclaw-v*聚合页下载手动安装(Chrome / Edge / Brave 用openbiliclaw-extension-v*.zip,Firefox 用已签名的openbiliclaw-extension-v*-firefox.xpi);也可从 Chrome 应用商店一键安装(自动更新,但受审核排期影响,版本可能滞后于 Releases)。 - 部署后端(两种方式,按需选一,都推荐):
- 🖥️ 下载桌面安装包(最省事):同一个 Latest Release 聚合页会把当前后端源码、插件包和可用桌面安装包放在一起;桌面包可能单独热修或暂时不同步,页面里的
Current Channels会标出对应desktop-v*。下载 macOS.dmg/ Windows.exe后双击即用,自带本地 embedding、常驻菜单栏/托盘。当前为未签名的实验性预发布,macOS DMG 内会显示首次打开说明,详见 安装与部署详情。 - 🤖 让 AI 助手部署(想改源码 / 深度定制选它):把下面整句粘给 Claude Code、Codex CLI、Cursor、Windsurf 或其他 AI 编程助手。
- 🖥️ 下载桌面安装包(最省事):同一个 Latest Release 聚合页会把当前后端源码、插件包和可用桌面安装包放在一起;桌面包可能单独热修或暂时不同步,页面里的
请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/agent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)
- 在同一个浏览器登录内容平台:默认会用 B 站 做初始化来源,也可以取消 B 站、改勾 小红书 / 抖音 / YouTube / X / 知乎 / Reddit。初始化至少需要一个已登录且能取到信号的来源,勾选会同时开启该来源。
- 打开桌面端或移动端 Web:后端启动后访问
http://127.0.0.1:8420/web;手机可扫插件二维码打开http://<电脑局域网 IP>:8420/m/,再从手机浏览器保存到主屏幕,像桌面 App 一样快速进入。
![]() QQ 用户群 |
![]() 微信用户群 二维码 7 天内有效,失效后会更新 |
名字起源于 B 站(
Bili= Bilibili,Claw= 爪子),项目最早只支持 B 站。从 v0.3.0 起已扩展为通用跨平台 Agent —— 已落地 B 站 / 小红书 / 抖音 / YouTube / X / 知乎 / Reddit 初始化信号、抖音 search / hot / feed、X 服务端内容发现、知乎插件 search / hot / feed / creator / related discovery、Reddit rdt-cli 默认 search / hot / subreddit / related discovery 和通用 Web 多类源,持续接入更多内容平台。
推荐系统本质上是一个中间商——平台站在海量内容和海量用户之间做��配分发。现代推荐系统远比「优化点击率」复杂:它同时权衡点击率、完播率、点赞/投币概率、停留时长、用户留存、创作者生态健康、广告收入等十几个目标,把它们加权压成一个分数来排序。听起来很科学,但问题在于:这些权重是平台定的,优化目标归根结底是平台的——用户满意度只是被当作留存和变现的手段,而非目的本身。你以为你在挑内容,其实是中间商在替你决定你能看到什么。结果就是:推荐越来越像你已经看过的东西,偶尔的惊喜全靠运气。
而且每个平台都是一座孤岛。你在 B 站看了三年机械键盘,小红书完全不知道;你在小红书种草的咖啡器具,B 站从来不会推给你。你的兴趣被割裂在不同平台的数据库里,没有人帮你把它们连起来。
OpenBiliClaw 反过来。 它是一个本地运行的 AI Agent——先深度理解你,再根据对你的理解跨平台主动搜寻你会喜欢的内容。项目从 B 站起步,现已扩展到小红书、抖音、YouTube、X(Twitter)、知乎和 Reddit,后续还会覆盖更多内容平台:
不是从视频出发匹配标签,而是从你出发。通过行为分析推断 MBTI、认知风格、深层心理需求,构建五层灵魂画像(事件→偏好→觉察→洞察→灵魂)。它理解的是你这个人,不是你的点击记录。
这是和传统推荐最核心的差异:系统会基于对你的理解,主动猜测你可能感兴趣但从未接触过的领域。一个关注机械表的人可能会喜欢建筑美学,一个看量子物理科普的人可能对哲学感兴趣——它用心理学桥接逻辑主动出击,猜对了升级为正式兴趣,猜错了安静退出。协同过滤永远不会推给你「没人从这条路径走过」的内容,但 OpenBiliClaw 会。
所有数据留在你硬盘上的一个 SQLite 文件里。LLM 默认用你自己的 API Key,也可实验性复用本机 Codex CLI 的 ChatGPT OAuth 凭据。没有云端,没有账号,没有任何人能看到你的画像。这个 Agent 怎么长,完全你说了算——反馈推荐、对话调教、换 LLM、改数据库,随你。
💡 和其他推荐工具的对比
各平台官方推荐 关键词过滤插件 OpenBiliClaw 推荐逻辑 协同过滤 标签匹配 心理画像 + 五层记忆 内容来源 单一平台 单一平台 跨平台(B 站 · 小红书 · 抖音 · YouTube · X · 知乎 · Reddit · 更多) 信息茧房 越推越窄 不解决 猜测兴趣主动破茧 数据归属 平台所有 通常云端 100% 本地 推荐解释 "猜你喜欢" 无 像朋友一样告诉你为什么 可定制 不可以 低 换 LLM / 改画像 / 写 Skill
核心入口现在有三个:浏览器插件负责平台内交互和登录会话,桌面端 Web(/web)提供大屏推荐首页,移动端 Web(/m)适合手机使用。桌面端和移动端都只调用本地 API,Cookie 同步和平台任务仍由插件承担。
![]() 智能推荐 像朋友一样解释为什么你会喜欢 |
![]() 灵魂画像 自然语言描述的深度人格分析 |
![]() 结构化特质 MBTI · 核心特质 · 深层需求 |
![]() 对话调教 聊天告诉它你想看什么 |
启动后端后访问 http://127.0.0.1:8420/web(或直接 http://127.0.0.1:8420/,会自动跳转),即可在浏览器大屏上使用推荐首页。
![]() 桌面推荐首页 惊喜推荐 Hero · 为你推荐网格 · 朋友式推荐理由 |
![]() 推荐卡片网格 封面 + 推荐理由 · 喜欢 / 不感兴趣 / 稍后 / 收藏 / 聊一聊 |
![]() 画像 + 实时看板 侧栏 Runtime 看板 + 后台动态 · 人格素描 · 核心特质 · MBTI 推断 |
|
![]() 手机推荐页 惊喜推荐 + 池子状态 · 朋友式推荐原因 看看 / 喜欢 / 稍后 / 收藏 / 不感兴趣 / 聊一聊 |
![]() 手机画像页 人格素描 · 核心特质 · 深层需求 · MBTI |
![]() 手机对话页 与插件共享主聊天历史 |
最新版本:v0.3.145 / extension v0.3.96 / desktop v0.3.145.1: Eval 缓存与推荐理由并发优化(2026-06-26)。完整变更详见 docs/changelog.md。
- 候选 eval 缓存更稳 —— 评分缓存按候选身份、完整画像 digest 和近期负样本 digest 命中,不再被 profile 对象重建或无关事件水位打穿。
- eval 默认大 batch + 双 worker —— 文本
discovery.evaluate_batch默认 batch 提到 45,周期 drain 默认可并发跑两个 batch;多模态仍保留独立小 batch。 - 推荐理由生成更稳 —— 文案生成默认 2 worker、batch 保守为 30,并在批量响应异常时先拆半重试,避免一次坏输出放大全量逐条请求。
- prompt-cache 前缀更稳定 —— eval 和推荐理由批量调用关闭重复 core memory 注入,prompt 内仍保留完整结构化画像。
普通用户的正常流程是:先安装浏览器插件,再把一句话发给 AI 助手安装后端,在同一个浏览器登录内容平台;如果要在手机上使用,再打开移动端 Web。脚本、Docker 和手动部署只作为备用路径,放在下面折叠区。
插件是主要入口:它会在 B 站、小红书、抖音、YouTube、X 和知乎页面显示侧边栏、采集你的反馈,并把知乎 / Reddit 等登录态任务安全地交给本地后端使用。
插件基于 Manifest V3,支持所有兼容 Chrome 插件的浏览器,包括 Chrome、Edge、Brave、Arc、Vivaldi、Opera 等。
推荐方式 · 从 Latest Release 聚合页下载最新版手动安装(拿到最新功能与修复 —— Chrome 应用商店受审核排期影响,版本通常会滞后几天到一两周):
- 打开 OpenBiliClaw Latest Release,也就是最新
openbiliclaw-v*用户下载聚合页 - Chrome / Edge / Brave 下载
openbiliclaw-extension-v*.zip;Firefox 下载已签名的openbiliclaw-extension-v*-firefox.xpi - 打开扩展管理页面(Chrome:
chrome://extensions/· Edge:edge://extensions/· Brave:brave://extensions/),开启右上角「开发者模式」 - Chrome / Edge / Brave 将下载的
.zip文件拖入页面安装;Firefox 直接打开下载的.xpi并确认安装
省事方式 · Chrome 应用商店一键安装(安装后由浏览器自动更新,适合不想手动升级的人;缺点是版本可能滞后于 Releases):
👉 在 Chrome 应用商店安装 OpenBiliClaw —— 打开后点「添加至 Chrome」即可。
插件更新取决于安装渠道:Chrome Web Store / Edge Add-ons(以及未来 AMO 上架版)由浏览器自动更新;从 GitHub Release 下载的 Chrome zip / Firefox signed XPI、开发者模式加载或 Firefox 临时加载的用户,需要下载新版安装包并按同样方式重新加载。后端设置里的“自动更新”开关只更新本地后端源码,不会更新浏览器插件。
Firefox 用户:正式安装与临时调试(Firefox 140+)
Firefox 用 sidebar_action 而不是 Chrome 的 sidePanel,所以 release 会提供独立产物:
openbiliclaw-extension-v*-firefox.xpi:Mozilla AMO unlisted 签名后的正式安装包,普通 Firefox Release / Beta 可以直接安装。openbiliclaw-extension-v*-firefox.zip:未签名开发包,只用于about:debugging临时加载或 AMO 签名输入。普通 Firefox 直接安装它会提示“未通过验证 / could not be verified”。
临时调试或源码构建时使用:
unzip openbiliclaw-extension-v*-firefox.zip -d openbiliclaw-firefox
# 或从源码构建
git clone https://github.com/whiteguo233/OpenBiliClaw.git
cd OpenBiliClaw/extension
npm install
npm run build:firefox # 产出 dist-firefox/
npm run package:firefox # 额外打成未签名 openbiliclaw-extension-v*-firefox.zip
# AMO 凭据配置后可签名成正式安装包:
# AMO_JWT_ISSUER=... AMO_JWT_SECRET=... npm run sign:firefox:only加载方式:
- 打开
about:debugging#/runtime/this-firefox - 点「Load Temporary Add-on…」
- 选解压目录里的
manifest.json(或源码构建后的extension/dist-firefox/manifest.json)
注意:Firefox 临时加载在浏览器重启后会失效;普通用户应优先使用已签名的 .xpi。
普通用户直接用桌面安装包最省事;想改源码、换 LLM、深度定制就用 AI 一句话部署。
到 Latest Release 的 openbiliclaw-v* 聚合发布页下载对应系统的安装包。这个聚合页会同步展示:
-
当前后端源码 tag:
backend-v* -
当前插件 release:
extension-v*,并附openbiliclaw-extension-v*.zip/openbiliclaw-extension-v*-firefox.xpi(Firefox 正式安装)/openbiliclaw-extension-v*-firefox.zip(Firefox 临时调试) -
当前桌面安装包 release:
desktop-v*,并附可用的.dmg/.exe;桌面包可能单独热修或临时不同步,以页面Current Channels为准 -
macOS:下载
OpenBiliClaw-macos-v*-arm64.dmg(Apple 芯片常规自动发布;Intelx64包��有会另行附加),打开后先看 DMG 里的首次打开说明 First Launch.html,再把 OpenBiliClaw 拖进「应用程序」。 -
Windows:下载
OpenBiliClaw-windows-*-Setup.exe,双击安装。
安装包自带本地 Ollama + bge-m3 embedding,开箱即用;也内置默认内容源依赖,包括 X 的 twitter-cli 和 Reddit 的 rdt-cli(Reddit rdt 命令后端会优先使用已连接插件同步的 reddit_session,插件不可用时可手动运行 rdt login,未登录会 fallback 插件)。启动后常驻 macOS 菜单栏 / Windows 系统托盘,右键可「打开 Web 界面 / 查看运行日志 / 退出」。数据与 AI / 脚本安装复用同一个目录:~/OpenBiliClaw(macOS / Linux)/ %USERPROFILE%\OpenBiliClaw(Windows),升级或卸载不会动它;旧安装包曾写入的 ~/Library/Application Support/OpenBiliClaw / %LOCALAPPDATA%\OpenBiliClaw 会在新版本首次启动时非覆盖拷贝回来。
⚠️ 首次打开要绕过系统拦截(应用尚未签名 / 公证):
macOS:DMG 内已放入首次打开说明。先拖进「应用程序」,再右键 / Control-click 图标 →「打开」→ 在弹窗里再点「打开」;或到「系统设置 → 隐私与安全性」点「仍要打开」。若仍提示“已损坏”,确认包来自本项目 Releases 后执行:
APP="/Applications/OpenBiliClaw.app" xattr -dr com.apple.quarantine "$APP" codesign --force --deep --sign - "$APP" open "$APP"Windows:SmartScreen 弹窗点「更多信息 → 仍要运行」。
这是实验性预发布:未签名、随后端版本滚动更新,适合只想最快试用、不碰命令行的人。要二次开发 / 改源码请用下面的方式 B。
把下面整句粘给 Claude Code、Codex CLI、Cursor、Windsurf 或其他 AI 编程助手即可。括号里的限制是给 AI 助手看的,你不用理解。
请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/agent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)
AI 助手会克隆仓库、安装依赖、用局域网可访问的默认绑定启动后端(0.0.0.0:8420)、做健康检查,并问几个有默认值的问题。自动初始化前会真实验证 LLM provider 和 embedding 服务;有一个不通就先停下让你修配置,不会硬跑出空画像。看不懂就选默认;小红书、抖音、YouTube、X 和知乎数据只有你明确同意才会进入初始画像。
Chrome Web Store / AMO 发布包默认只声明本机后端权限,插件侧建议保持 127.0.0.1 / localhost。如果要让手机访问移动端 Web,可继续用 openbiliclaw start --host 0.0.0.0 --port 8420 启动后端,插件二维码会优先展示电脑的局域网 IP。让插件直接连接局域网另一台机器或远程域名,需要带对应 host 权限的开发者构建,或等待后续可选授权开关。
默认登录 B 站 并勾选 B 站来源即可生成第一版画像和推荐;如果不想接 B 站,也可以在初始化来源选择里取消它,改勾已登录的 小红书 / 抖音 / YouTube / X / 知乎,勾选会同时开启该来源。至少保留一个来源,且它需要能拉到行为信号。
后端启动后会同时托管桌面端和移动端 Web,都只调用本地 API,不做 Cookie 同步或平台登录。
openbiliclaw start- 桌面端:浏览器直接访问
http://127.0.0.1:8420/web(或http://127.0.0.1:8420/,自动跳转)。大屏两栏布局,推荐流、画像、聊天、消息和设置全在一页。 - 移动端:点击插件顶部的手机图标扫二维码,或手动输入
http://<电脑局域网 IP>:8420/m/。适合手机上刷推荐、看画像、和阿B聊天。
首次运行
openbiliclaw init时会询问是否允许局域网访问(默认 Y)。如果选了 N 或想改回来,编辑config.toml的[api].host(0.0.0.0= 局域网可达,127.0.0.1= 仅本机)。
打开 /m/ 后可以把手机页面保存成桌面快捷入口:iPhone / iPad 用 Safari 的「分享 → 添加到主屏幕」;Android Chrome / Chromium 浏览器用菜单里的「安装应用」或「添加到主屏幕」。局域网 HTTP 在部分 Android 浏览器上可能只生成快捷方式;如果想要更稳定的完整 PWA 安装提示,建议在可信环境里用 HTTPS 反代访问本机后端。
页面包含「推荐 / 稍后 / 收藏 / 画像 / 对话」五个底部 Tab:推荐页支持「换一批 / 加载更多 / 喜欢 / 不感兴趣 / 稍后再看 / 收藏 / 写一句 / 聊一聊」,稍后和收藏页管理「���后再看 / 收藏」列表,画像页展示人格素描、核心特质、兴趣和认知更新,对话页与插件共享主聊天历史。
不用 AI 助手:直接跑一句话安装脚本
macOS / Linux / WSL2(Bash):
curl -fsSL https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/scripts/install.sh | bashWindows 原生(PowerShell,不需要 Docker / WSL2):
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/scripts/install.ps1 -UseBasicParsing | iex脚本依赖 git 和 Python 3.11+。它会自动克隆仓库,然后先在终端向导里收集 LLM provider、embedding、B 站 Cookie、小红书 opt-in、抖音 opt-in、YouTube opt-in、X opt-in、知乎 opt-in 等决策,再安装依赖、启动后端和健康检查;确认齐全后会先验证 LLM provider 和 embedding 服务都能真实响应,再自动运行 init,完成画像生成和首轮发现。不确定的选项直接回车或选默认。
高级:Docker 部署
适合已经安装 Docker Desktop 的用户。v0.3.11+ 自带 Ollama embedding sidecar。
请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/docker-deployment.md 的说明帮我用 Docker Compose 部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch)
详见 Docker 部署指南。Docker 主路径同样走 agent_bootstrap.py --mode docker,会在确认 LLM、embedding、B 站 Cookie 和各来源 opt-in ��先验证 AI 服务,再自动运行 init;docker exec ... openbiliclaw init 只作为高级手动 fallback。
高级:多源登录与插件链路
OpenBiliClaw 不保存你的平台密码,也不替你绕过登录。它复用当前浏览器里的登录会话,只抓你自己能看到的内容。
| 源 | 登录方式 | 不登录的影响 |
|---|---|---|
| B 站 | 在装了插件的浏览器打开 https://www.bilibili.com 正常登录 | 拉不到观看历史 / 收藏 / 关注,画像会明显变弱 |
| 小红书 | 在同一浏览器打开 https://www.xiaohongshu.com 正常登录 | 小红书 discovery 和详情抓取不可用 |
| 抖音 | 在同一浏览器打开 https://www.douyin.com 正常登录 | init --yes-douyin、fetch-douyin 和 discover --source douyin 的 search / hot / feed 可能返回 0 条 |
| YouTube | 在同一浏览器打开 https://www.youtube.com 正常登录 | init --yes-youtube 和 fetch-youtube 可能返回 0 条;仍可用 import-youtube 从 Takeout 导入 |
| X(Twitter) | 在同一浏览器打开 https://x.com 正常登录 | init --yes-x、fetch-x 和 X discovery 拉不到数据(服务端重放需要 auth_token+ct0,登录后扩展自动同步) |
| 知乎 | 在同一浏览器打开 https://www.zhihu.com 正常登录 | init --yes-zhihu、fetch-zhihu、discover --source zhihu 和 discover-zhihu* 拉不到数据 |
在同一浏览器打开 https://www.reddit.com 正常登录;插件会同步 reddit_session 给日常 discovery 的 rdt-cli,rdt login 仅作为插件不可用时的 fallback |
fetch-reddit --mode bootstrap 拉不到初始化信号;rdt credential 未同步时 rdt 路径会 fallback 到插件任务 |
小红书、抖音、YouTube、知乎走 Chrome 插件任务链路,Reddit 日常 discovery 默认走随后端安装的 rdt-cli、初始化信号仍走插件,X 走服务端 cookie 重放(扩展只负责同步 x.com cookie + 捕获互动),都不需要你额外启动 CDP 调试 Chrome。[sources.browser].cdp_url 只保留给通用 Web / 自定义网页源的浏览器抓取场景。
高级:本地 embedding / Ollama
如果你不想给 embedding 单独配置 API Key,或担心远程 embedding 配额,可以装一次 Ollama 后使用本地 bge-m3:
# macOS
# 安装并启动官方 Ollama.app(会创建 ollama 命令行入口)
open https://ollama.com/download/mac
# Linux
curl -fsSL https://ollama.com/install.sh | sh && ollama serve &macOS / Windows 用户可以从 ollama.com/download 安装官方 App。启动 Ollama 后运行:
uv run openbiliclaw setup-embedding向导会自动拉取 bge-m3(约 568MB,CPU 可跑)并写入配置。
高级:手动安装与 discovery 调试
人类维护者可以参考 docs/agent-install.md(给智能体看的精简契约)和 docs/agent-deployment.md(详细排查说明)。
# 克隆项目
git clone https://github.com/whiteguo233/OpenBiliClaw.git
cd OpenBiliClaw
# 使用 uv (推荐)
uv sync
# 或使用 pip
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"# 复制配置模板
cp config.example.toml config.toml
# 编辑配置(设置 LLM API Key 等)
vim config.toml# 一键初始化(拉取历史 · 生成画像 · 首轮发现)
openbiliclaw init
# 可选:启用本地 Ollama 作为独立 embedding provider(无需额外 API Key)
openbiliclaw setup-embedding
# 手动触发内容发现
openbiliclaw discover
# 可选:抖音内容发现(需先启用 [sources.douyin];search / hot / feed 从首页 DOM 操作触发)
openbiliclaw discover --source douyin
# 可选:独立调试抖音 search / hot / feed 召回
openbiliclaw discover-douyin --keyword 机械键盘 --source search,feed --no-cache --no-evaluate
# 查看推荐
openbiliclaw recommend
# 查看用户画像
openbiliclaw profile开发者也可以从源码构建插件:
cd extension
npm install
npm run packageOpenBiliClaw 仓库内置了一个 workspace skill。把仓库挂到任何支持 skill 的 AI 编码助手(OpenClaw / Claude Code / Codex CLI / Cursor 等),助手就能直接调用你本机上的 OpenBiliClaw。
- ✨ 主动推荐 — 系统在后台持续发现内容,遇到高分惊喜时通过 WebSocket 主动推送给 OpenClaw,OpenClaw 再转述给你——你不需要开口问
- 🔮 主动追问兴趣 — 系统猜测你可能对某个方向感兴趣,生成一个假设和问题,通过 OpenClaw 主动来问你"这个方向你认不认?"——你回答后画像自动更新
- 🧭 主动确认避雷 — 系统也会确认你可能想避开的内容形态,OpenClaw 可用
next-avoidance-probe/respond-avoidance-probe完成确认;只有确认后才写入过滤偏好 - 💬 苏格拉底式对话 — 不止是确认兴趣,OpenClaw 可以跟你深聊:追问动机、提出假设、确认理解,越聊越懂你
- 📖 读当前灵魂画像 — MBTI、核心特质、深层需求、兴趣领域
- 🎯 按需拉个性化推荐 — 带解释、带置信度、带主题标签
- 💬 把反馈写回学习闭环 —
like/dislike/comment即时更新画像与池子评分 - 🔄 同步 B 站账号行为 — 拉历史、收藏、关注等长期信号,注入记忆系统
把下面这段粘给 OpenClaw(或 Claude Code / Codex CLI / Cursor),它会自动读指南并完成接入:
请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/openclaw-quickstart.md 的说明帮我把当前仓库接入 OpenClaw(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)
接入后不只是"你问它答"——系统会主动找你。以下是两个最核心的场景:
OpenClaw 在后台开着 listen,某次 refresh 后系统发现了一条高分内容:
OpenClaw(收到 WebSocket 推送
delight.candidate,主动找你):刚发现一条你可能会意外喜欢的: 《为什么说回县城你也躺不平》 — 县域经济的明斯基时刻。你最近一直在盯地缘政治和宏观债务,这条用硬核推演把土地财政和债务周期的齿轮��合讲清楚了。
[BV1KMwuzdEcB]要不要看看?
你:"这条非常到位。"
OpenClaw(内部执行
submit-feedback --recommendation-id 4268 --feedback-type like)
你没有开口要推荐——是系统主动捅过来的。
OpenClaw 收到 interest.probe 事件(或主动拉取 next-probe),发现有一个猜测兴趣假设待确认:
OpenClaw(主动找你):
我从你最近的轨迹里嗅到你可能对【建筑美学】(比如:参数化设计、混凝土美学)感兴趣——你最近看了很多关于结构和空间的内容。这个方向你自己认不认?
你:"嗯对,最近在看很多参数化设计的东西,安藤忠雄那种清水混凝土的美感很戳我。"
OpenClaw(内部执行
chat --message "嗯对,最近在看很多参数化设计的东西……",返回苏格拉底式追问):你说的这个方向我有个猜测——你是不是其实更在意底层结构而不只是结论?安藤忠雄那种用最少元素构建最大张力的方式,跟你平时看大模型逻辑时追求的"把齿轮咬合讲清楚"好像是同一种审美驱动。你觉得呢?
对话内容自动回写进灵魂画像——下一轮推荐就会把建筑美学纳入正式兴趣,搜索策略也会开始往这个方向发力。
当然,传统的"你问→它答"也完全支持:
你:"给我推三条今天值得看的 B 站内容。"
OpenClaw(内部执行
recommend --limit 3,整理后回复)
整个闭环都是本地的——OpenClaw 只是调 CLI 桥接,画像和数据仍留在你自己的 SQLite 文件里,一条都不会上云。
📖 完整命令参考与常见问题,见 OpenClaw 接入指南。
- 🧠 五层灵魂画像 — 事件→偏好→觉察→洞察→灵魂,推断 MBTI、认知风格和深层需求,像心理咨询师一样理解你
- 🔮 挑战式兴趣探针 — 基于心理学桥接逻辑主动猜测你可能喜欢的未知领域,按 near/lateral/bridge/wildcard 控制距离;普通池最多 5 条,挑战池单独最多 3 条,弱正向先进入短期 buffer,避免一次确认后短期刷屏
- 🧭 不喜欢领域探针 — 主动确认你可能想避开的内容形态、低质表达或风格边界;确认后写入
disliked_topics并清理候选池,未确认前不影响推荐 - 🌐 跨平台内容源 — 从 B 站起步,已扩展到小红书、抖音、YouTube、X(Twitter)、知乎和 Reddit 初始化信号 / 抖音 search / hot / feed discovery / X 服务端 cookie 重放发现 / 知乎插件 search / hot / feed / creator / related discovery / Reddit rdt-cli 默认 search / hot / subreddit / related discovery 和通用 Web,架构支持持续接入更多平台。你的兴趣不再被单一平台割裂
- 🔍 多源发现策略 — B 站四策略(搜索 · 关联链 · 趋势 · 跨域探索,API search 降级或冷却时可由扩展打开真实搜索页抓渲染结果兜底)+ 小红书三层安全发现 + 抖音 DOM-first search / hot / feed + YouTube search / trending / channel + X 搜索 / For-You / 关注作者 + 知乎 search / hot / feed / creator / related + Reddit search / hot / subreddit / related,跨平台协同工作
- 🎯 智能多样性 — PoolCurator 五维评分 + 跨源跨轮主题配额(任意 topic ≤10% 池子占比) + share-aware 池子修剪保护小源;告别"一刷都是 AI"
- ⚡ "换一批"瞬间响应 — popup reshuffle ~0.6s(v0.3.0 从 2.6s 优化下来),连续刷不卡顿
- 💬 有温度的推荐 — 不是"因为你看过类似视频",而是像朋友一样解释为什么你会喜欢
- 🔄 持续学习 — 苏格拉底式对话 + 行为分析 + 反馈即时生效,越用越懂你
- 🧩 浏览器插件(Chrome / Edge / Brave / Arc 等) — 侧边栏展示推荐、跨站行为采集(B 站 + 小红书 + 抖音 + YouTube + X + 知乎)以及知乎 / Reddit 登录态任务、对话交互、认知更新卡片推送,装上就能用
- 🚀 图形化引导初始化 — 不想进命令行也行:安装包首启
/setup/、桌面 Web/web未初始化空态和插件「推荐」tab 都会列出来源选择与前置清单(所选平台登录 / LLM / embedding;B 站默认勾选但可取消),点「开始初始化」就能一步步看着画像与首轮内容池建起来(命令行openbiliclaw init仍是等价入口) - 🔬 自动化评测优化 — 5 个模块各有 LLM-as-judge 的 SGD/RL 自优化循环,prompt 质量随轮次自动提升,不需要人工调参
- 🔒 完全私有 — 所有数据本地 SQLite;LLM 用你自己的 Key;每个实例只为你一个人构建
- 🔌 本地 embedding provider — 可选 Ollama + bge-m3,不需要额外 embedding API Key 也能跑相似度计算(CPU 即可,跨 Mac/Win/Linux)
- 🔧 完全可控 — 给每个模块单独换 LLM、直接编辑画像、写自定义 Skill 扩展发现策略
┌─────────────────────────────────────────────────────────────┐
│ Chrome Extension │
│ (统一行为采�� -> /api/events -> 画像 pipeline · 停留满意度 · 推荐展示 · 对话 · 探针) │
│ (Cookie 同步 · bili/xhs/dy/yt/zhihu 任务调度 · 可选初始化画像导入 · 自启动设置)│
└──────────────────────────┬──────────────────────────────────┘
│ REST API / WebSocket(presence + Cookie 同步 + 可换库存 + source-aware click + 探针)
│ + 移动/桌面 Web(/m · /web)· 可选 [api.auth] 密码门禁(本机免登录 / LAN 需密码)
┌──────────────────────────▼──────────────────────────────────┐
│ Agent 编排层 │
│ (Skill 系统 · 对话管理 · Runtime Gate · 账号同步) │
├──────────┬──────────┬───────────┬────────────────────────────┤
│ Soul │ Memory │ Discovery │ Recommendation │
│ Engine │ System │ Engine │ Engine │
│(画像+探针)│ (五层+buffer)│(待评估池+负样本)│ (跨源混排+放大保护) │
├──────────┴──────────┴───────────┴────────────────────────────┤
│ LLM 适配层(API Key/Codex OAuth) · B 站 API · 扩展代理发现 │
│ Runtime: Account Sync + producers + candidate eval + probe arbiter │
│ Runtime status: pool_available/raw/pending/eval_count │
│ Profile pipeline: accepted 浏览器事件 -> interest/surface/role buffer │
│ SQLite: events · discovery_candidates · content_cache │
│ recommendations · chat_turns · avoidance_state │
│ Profile overrides: 画像编辑 -> profile_overrides.json 覆盖层 │
│ (get_profile/sync 读时叠加 · 抗画像重建 · 三端编辑) │
│ Profile taxonomy: 固定兴趣分类词表 · 存量迁移 · 同名异义整理 │
└─────────────────────────────────────────────────────────────┘
多源适配架构——通过 SourceAdapter 协议统一接入不同平台,每个平台有自己的发现方式:
| 来源 | 发现方式 | 说明 |
|---|---|---|
| B 站 | Search · Trending · Related Chain · Explore · 扩展搜索任务桥 | 四大策略均衡协作,API 直连为主;服务端 search 降级 / 冷却且扩展在线时,后端可入队浏览器搜索任务,扩展打开真实搜索页并回传渲染结果 |
| 小红书 | 被动收集 · 关键词搜索 · 创作者订阅 · 初始化画像导入 | 扩展驱动,安全无风控 |
| 抖音 | 初始化画像导入 · 后台搜索 · 热点关联 · 首页推荐流 | 扩展驱动,强信号入画像;日常发现从抖音首页开始模拟 DOM 操作触发加载,search/feed 被动收集页面响应 / 渲染结果,hot 可用热榜 seed 调 related 候选,不抢用户焦点 |
| YouTube | 初始化画像导入 · Google Takeout 离线导入 · 后端直连补池 | 扩展读取观看历史 / 订阅 / 点赞入画像;Takeout 可补旧历史;日常发现由后端搜索 / 热门 / 频道独立补池 |
| X(Twitter) | 初始化点赞 / 收藏导入 · 关键词搜索 · For-You · 关注作者 | 服务端 cookie 重放(默认安装内置 twitter-cli,只读);扩展捕获你在 x.com 的互动并同步 cookie;推文为纯文本卡片 |
| 知乎 | 初始化画像导入 · 事件 smoke · 搜索 · 热榜 · 首页推荐 · 作者 · 相关扩展 | 扩展在已登录知乎 tab 中读取浏览 / 收藏 / 动态点赞收藏;fetch-zhihu 只做 smoke,guided init 勾选知乎时同类信号进入首版画像;日常发现通过插件任务返回回答 / 文章 / 问题文字候选 |
| 初始化 saved/upvoted/subscribed · 搜索 · 热门 · Subreddit · 相关扩展 | fetch-reddit --mode bootstrap 通过扩展验证初始化事件拉取;日常发现默认用随后端安装的 rdt-cli 登录态命令后端返回帖子 / 评论文字候选,插件会自动同步 reddit_session 到 rdt credential store,rdt 未登录 / 不可用时自动 fallback 到插件任务,也可在配置页强制切到插件 |
|
| 通用 Web | 浏览器 + LLM 抽取 | 适配任意网页 |
安全取数——B 站和通用 Web 由后端直连(B 站走 WBI 签名 API),但当 B 站 search API 降级或被风控冷却且扩展在线时,后端已有任务桥可入队搜索任务,扩展会在后台打开真实登录浏览器的搜索页并抓取已渲染的 DOM 结果作为兜底候选。小红书 / 抖音 / YouTube / 知乎由浏览器扩展在你已登录的页面里读取数据:初始化画像默认不深滚、分批回传,后端既不直接爬取也不代登录,YouTube 还可用 Google Takeout 离线导入旧历史;知乎的 fetch-zhihu 事件命令默认只做 smoke、不进入画像,guided init 勾选知乎时才把同类 bootstrap_events 信号纳入首版画像;Reddit guided init 会把 saved / upvoted / subscribed subreddit 转成首版画像信号,fetch-reddit --mode bootstrap 可只做事件拉取 smoke,日常 discovery 默认通过随后端安装的 rdt-cli 执行 search / hot / subreddit / related,已连接插件会把 reddit_session 同步到 rdt-cli credential store,命令后端未登录 / 不可用或显式切到插件后端时由扩展任务执行。X 则由后端用扩展同步来的 x.com cookie(auth_token+ct0)做服务端只读重放,扩展只��责同步 cookie 和捕获你自己的互动。普通浏览器行为事件会等画像初始化完成后才进入持续学习链路:accepted 事件先写入 memory,再进入 ProfileUpdatePipeline 的 interest / surface / role buffer,随后通过 request_replenishment(reason="event_ingest") 排队补货需求;runtime 的 pending_signal_events 只表示 search / related_chain 的发现水位,不是画像待处理队列。首轮画像信号只在你点击「开始初始化」后按所选来源拉取。日常补池时,抖音 search / hot / feed 都在后台 tab 先打开抖音首页,再用真实 DOM 操作触发搜索、热点或推荐流加载;search/feed 被动监听页面响应和已渲染 DOM,hot 在页面路径不足时可用热榜 seed 通过已登录页面的 related API bridge 拉取相关候选;YouTube 由后端按平台缺口直接补,知乎 discovery 由插件在后台任务 tab 执行各自的 source_modes,Reddit discovery 默认由 rdt-cli 执行且可自动 fallback 到插件,初始化 / 事件 smoke 会等待对应 bootstrap 任务结果。
统一评估——各来源先把 raw candidates 写入 discovery_candidates,后端再按来源混合取样,统一用 Soul 画像、正文 / 标签、互动指标和近期负反馈样本做 batch 评估。refresh 发现新 raw 后会即时 drain,独立 candidate eval loop 也会周期性处理已有 pending raw,因此评估不再依赖补货计划是否非空。开启可选封面图评估且 evaluation 模型支持图像时,候选封面会优先复用运行时图片缓存,未命中才白名单抓取,压缩后进入同一个共享 evaluator;真正判断“你会不会喜欢”不分散在各个平台 producer 里。
多样性选择——通过评估的候选再经过 平台配额预留 → 主题去重 → 风格均衡 → 跨平台混排 → 数量封顶,避免“一刷都是 AI”。各平台保存配比默认 B 站 / 小红书 / 抖音 / YouTube / X / 知乎 / Reddit = 5 / 1 / 1 / 1 / 1 / 1 / 1,可在 [scheduler.pool_source_shares] 调整;开箱只启用 B 站,其余平台需显式打开。
候选池计数——界面上的“可换”只统计 pool_available_count:已生成推荐文案、带分类与可跳转链接、且不在最近已看窗口内的内容;还在整理中的素材计入 pool_pending_count,其中 pool_pending_eval_count / pool_evaluated_pending_count 拆出待评估与已评估待入池阶段,插件 / 移动端 / 桌面端都不会把它显示成“可换”。推荐读取、换一批和续页消费候选池后,后端会通过 runtime stream 立即广播新的池子快照,让所有已打开界面同步扣减后的库存。
从用户行为中推断:
- 人格画像 — 自然语言描述的用户画像
- MBTI — 四维度 + 置信度
- 认知风格 — 信息处理偏好
- 深层需求 — 心理层面的内容驱动力
- 猜测兴趣 — 系统推测的潜在兴趣方向(分子料理、建筑美学、制表工艺...)
OpenBiliClaw/
├── src/openbiliclaw/ # Python 后端核心
│ ├── agent/ # Agent 编排和 Skill 系统
│ ├── soul/ # 用户灵魂引擎 (深度画像 · MBTI · 兴趣/避雷探针)
│ ├── memory/ # 多层网状记忆系统
│ ├── discovery/ # 内容发现引擎 (多源策略 · 待评估池 · 配额均分 · 多样性选择)
│ ├── recommendation/ # 推荐与表达引擎 (跨平台混排)
│ ├── sources/ # 多源适配层 (SourceAdapter 协议)
│ │ ├── bilibili_adapter # B 站 (API 直连)
│ │ ├── xiaohongshu_adapter # 小红书 (扩展代理)
│ │ ├── xhs_tasks # 小红书插件任务队列 / bootstrap_profile
│ │ ├── dy_tasks # 抖音插件任务队列 / bootstrap_profile + search + hot + feed
│ │ ├── yt_tasks # YouTube 插件任务队列 / bootstrap_profile
│ │ ��── zhihu_tasks # 知乎插件任务队列 / bootstrap_events + search/hot/feed/creator/related
│ │ ├── reddit_tasks # Reddit bootstrap 插件任务 / extension fallback discovery / rdt 默认 discovery helpers
│ │ └── web_adapter # 通用 Web (Playwright + LLM)
│ ├── youtube/ # YouTube Takeout 离线导入解析
│ ├── api/ # 本地 FastAPI (配置回滚 / 降级模式 / popup API)
│ ├── runtime/ # 后台刷新、feedback 合并、presence gate、autostart/Ollama、降级 RuntimeContext
│ ├── bilibili/ # B 站接入层 (WBI 签名 · 速率控制)
│ ├── llm/ # 多模型 LLM 适配 + 结构化 JSON 容错
│ └── storage/ # 数据存储层
├── extension/ # Chrome 浏览器插件 (B 站 + 小红书 + 抖音 + YouTube + X + 知乎 + Reddit + 自启动/配置修复)
├── skills/ # 内置 Skill 定义
├── docs/ # 项目文档
└── tests/ # 测试 (1900+)
| 模块 | 技术 |
|---|---|
| 后端 | Python 3.11+ |
| 浏览器插件 | TypeScript + Chrome Extension (Manifest V3) |
| LLM | 内置 Gemini / DeepSeek / OpenAI / Claude / OpenRouter / Ollama;支持任何兼容 OpenAI 协议的服务;OpenAI provider 可实验性复用 Codex CLI OAuth |
| B 站交互 | 自研 API 客户端 (WBI 签名 · v_voucher 自动恢复 · 速率控制) |
| 小红书交互 | 扩展 DOM/state 元数据提取 + 插件任务调度;滚动型初始化会前台打开 /explore 并点击页面 profile 入口(零后端爬取) |
| 抖音交互 | 扩展 DOM + MAIN-world 被动 fetch tap + 插件任务调度;初始化导入发布 / 收藏 / 点赞 / 关注信号,search / hot / feed discovery 从抖音首页模拟 DOM 操作触发加载,search/feed 被动收集页面响应 / 渲染结果,hot 可用热榜 group_id seed 走已登录页面 related fallback(零后端代登录) |
| YouTube 交互 | 扩展 DOM 任务调度读取观看历史 / 订阅 / 点赞;Google Takeout 可离线导入旧数据 |
| X 交互 | 服务端 cookie 重放(默认安装内置 twitter-cli,只读且 lazy import);扩展捕获你在 x.com 的互动并同步 cookie;推文为纯文本卡片 |
| 知乎交互 | 扩展任务调度在已登录浏览器内读取事件 smoke / 初始化画像信号��� search / hot / feed / creator / related 候选;回答 / 文章 / 问题为纯文本卡片 |
| Reddit 交互 | 默认安装内置 rdt-cli,读取 search / hot / subreddit / related 候选;插件自动同步 reddit_session 到 rdt credential,rdt login 仅作手动 fallback;rdt 未登录 / 不可用或显式选择 extension 时,扩展任务调度在已登录浏览器内读取 discovery;bootstrap saved/upvoted/subscribed 始终走插件;帖子 / 评论为纯文本卡片 |
| 存储 | SQLite + Embedding 向量索引 |
| 容器化 | Docker Compose (后端) |
| Agent 框架 | 自研轻量框架 |
- 文档导航 — 一站式文档入口
- 项目规格说明书 — 完整的项目设计与规划
- 架构设计 — 系统架构详解
- 记忆系统设计 — 多层网状记忆架构
- 内容发现引擎 — 多源发现 + 平台配比 + 多样性选择
- 灵魂引擎 — 深度画像 + MBTI + 兴趣猜测
- CLI 参考 · 配置参考
- 开发指南 — 如何参与贡献
最新版本:v0.3.151 / extension v0.3.151 / desktop v0.3.151: LLM 探测诊断与发布渠道版本对齐(2026-07-02)。最近更新见上方摘要;完整历史见 docs/changelog.md。普通用户从 Latest Release 的 openbiliclaw-v* 聚合页下载插件包和可用桌面安装包;自动化频道 release 仍分别保留 backend-v*、extension-v*、desktop-v*。
OpenBiliClaw 的目标是做你的全网个性化内容入口——从 B 站起步,已落地小红书、抖音、YouTube、X、知乎和 Reddit 初始化信号,抖音 search / hot / feed discovery、X(Twitter)服务端发现、知乎插件 search / hot / feed / creator / related discovery、Reddit rdt-cli 默认 search / hot / subreddit / related discovery 与通用 Web 适配器,下一步:
- 更多内容源 — V2EX、微博、各类 BBS / 论坛……每个平台都是一个
SourceAdapter,架构已经验证可扩展 - 跨平台兴趣融合 — 你在 B 站看的机械键盘 + 小红书种草的咖啡器具 + 抖音点赞收藏的短视频偏好 + YouTube 长视频观看和订阅 + X 点赞收藏的资讯 = 一个完整的你。画像融合让推荐不再割裂
- 更智能的发现 — 跨平台关联推荐("你在小红书关注了咖啡器具,B 站有个手冲咖啡纪录片你可能喜欢",或用抖音 feed 口味补足短视频兴趣)
- 社区生态 — 用户自定义 SourceAdapter、共享发现策略、贡献平台适配器
欢迎贡献!请查看 开发指南 了解如何参与。
- 感谢 @addtion99 在 #8 提出浏览器插件后端地址 / 端口可配置需求,并给出 popup 侧实现思路。
- 感谢 @jiaobenhaimo 在 #53 贡献 Safari 扩展、稍后再看、YouTube 搬运检测、营销号过滤等功能设计与实现,其中 OR-join 去重修复和稍后再看功能已合入主线。
- 感谢 @tangle111-design 在 #69 贡献
style_key观看模式、推荐语气、B 站初始化和 LLM / 画像流程方面的功能探索;相关思路已拆分评审并选择性合入主线。
默认数据流向:浏览器插件 → 你配置的本地 OpenBiliClaw 后端 → 本机 SQLite。插件不会把数据发送到 OpenBiliClaw 开发者运营的服务器。若你配置云端 LLM / embedding,相关内容会按你的配置发送给对应服务商。详见 隐私政策。















