[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94845":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":9,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":16,"hasPages":16,"topics":18,"createdAt":9,"pushedAt":9,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":14,"starSnapshotCount":14,"syncStatus":42,"lastSyncTime":9,"discoverSource":43},94845,"OpenBiliClaw","whiteguo233\u002FOpenBiliClaw","whiteguo233","本地私有、开源的自进化跨平台 AI 内容发现 Agent：先理解你，再主动从 B站、小红书、抖音、YouTube、X、知乎、Reddit、微博等平台与开放 Web 寻找内容。（支持 deepseek harness 插件） | Local-first open-source cross-platform AI content discovery agent: understands you, then proactively finds content across Bilibili, Xiaohongshu, Douyin, YouTube, X, Zhihu, Reddit, Weibo and the open web.（support deepseek harness plugin）",null,"https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw","Python",2559,122,0,55.27,false,"main",[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"ai-agent","bilibili","content-discovery","llm","privacy-first","recommendation-system","cross-platform","xiaohongshu","chrome-extension","douyin","local-first","personal-ai","python","self-hosted","typescript","youtube","zhihu","dsh-plugin","dsh","deepseek-harness","2026-08-24 04:01:22","\u003Cdiv align=\"center\">\n\n# 🦀 OpenBiliClaw\n\n**通用个性化内容推荐 Agent——本地运行、跨平台理解你、只为你一个人构建**\n\n*A general-purpose personalized content discovery Agent — runs on your machine, understands only you*\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Python 3.11+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.11+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fwhiteguo233\u002FOpenBiliClaw?filter=openbiliclaw-v*&style=flat-square&label=Release&color=success)](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Freleases\u002Flatest)\n[![CI](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fci.yml?branch=main&style=flat-square&label=CI)](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Factions\u002Fworkflows\u002Fci.yml)\n[![讨论帖](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLINUX_DO-讨论帖-orange?style=flat-square&logo=discourse)](https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1978894)\n[![Chrome 应用商店](https:\u002F\u002Fimg.shields.io\u002Fchrome-web-store\u002Fv\u002Fcdfjfkdjjhdaccbldipkjhpibnfbiamg?style=flat-square&label=Chrome%20应用商店&logo=googlechrome&logoColor=white&color=4285F4)](https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fcdfjfkdjjhdaccbldipkjhpibnfbiamg)\n[![Gitee 镜像](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitee-镜像-C71D23?style=flat-square&logo=gitee&logoColor=white)](https:\u002F\u002Fgitee.com\u002Fwhiteguo233\u002FOpenBiliClaw)\n[![DSH 插件市场](https:\u002F\u002Fimg.shields.io\u002Fstatic\u002Fv1?label=%E2%AD%90%20DSH&message=%E6%8F%92%E4%BB%B6%E5%B8%82%E5%9C%BA&color=7C3AED&style=flat-square)](https:\u002F\u002Fdshfind.com\u002Fzh\u002Fplugins)\n\n[项目主页](https:\u002F\u002Fwhiteguo233.github.io\u002FOpenBiliClaw\u002F) | [English](README_EN.md) | 中文\n\n\u003C\u002Fdiv>\n\n> ### 🆕 重要更新：OpenBiliClaw 现在可以装进 DeepSeek Harness\n>\n> 新增 **DSH 客户端插件** —— 把 OpenBiliClaw 装进 [DeepSeek Harness](https:\u002F\u002Fgithub.com\u002Fdeepseek-ai\u002FDeepSeek-Harness)：DSH 界面常驻第四栏（推荐 \u002F 内容库 \u002F 对话 \u002F 画像 \u002F 设置），并注册 22 个 Agent Bridge 工具，让 DSH 里的 Agent 也能读推荐、答探测、闭环学习——边用 DSH 干活，边刷跨平台个性化内容。→ [`github.com\u002Fwhiteguo233\u002Fdsh-openbiliclaw`](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002Fdsh-openbiliclaw)\n>\n> 📱 想要原生 App？Flutter 移动端客户端（Android \u002F iOS \u002F Web \u002F 桌面）在独立仓库 [`OpenBiliClaw-mobile`](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile)：推荐、对话、画像、收藏 \u002F 稍后再看 \u002F 30 天历史一应俱全，连接同一本地后端。\n\n## 10 秒看懂 OpenBiliClaw\n\n一个纯本地、私有、开源的自进化跨平台内容发现 Agent：从你的跨平台使用、反馈和对话中持续深化心理画像，带着对你的理解主动去 B 站、小红书、抖音、YouTube、X、知乎、Reddit、Linux.do、Bangumi、V2EX、微博与开放 Web 找内容。\n\n| 跨平台 | 本地优先 | 可调教 |\n|---|---|---|\n| B 站 \u002F 小红书 \u002F 抖音 \u002F YouTube \u002F X \u002F 知乎 \u002F Reddit \u002F Linux.do \u002F Bangumi \u002F V2EX \u002F 微博 \u002F Web | 数据默认留在本机 SQLite | 喜欢、不感兴趣、聊天反馈都会改变后续推荐 |\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fcdfjfkdjjhdaccbldipkjhpibnfbiamg\">\u003Cb>安装浏览器插件\u003C\u002Fb>\u003C\u002Fa>\n  ·\n  \u003Ca href=\"#快速开始\">\u003Cb>让 AI 助手部署后端\u003C\u002Fb>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Csub>喜欢这个方向？\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\">欢迎 Star 支持项目继续适配更多平台\u003C\u002Fa>。\u003C\u002Fsub>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fhero-demo-zh.gif\" width=\"820\" alt=\"OpenBiliClaw 跨平台本地推荐 Agent 演示：信号进入本地后端、生成画像、解释推荐理由、根据反馈继续学习\" \u002F>\n\u003C\u002Fp>\n\n## 快速开始\n\n普通用户只需四步；Firefox、Docker、脚本和手动部署等备用路径都在 [安装与部署详情](#安装与部署详情)。\n\n1. **装插件** —— [Chrome 应用商店一键安装](https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fcdfjfkdjjhdaccbldipkjhpibnfbiamg)（自动更新），或从 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Freleases\u002Flatest) 下载 zip 手动安装（最新功能先到，商店版可能滞后几天）。\n2. **装后端** —— 从同一个 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Freleases\u002Flatest) 下载桌面安装包（macOS `.dmg` \u002F Windows `.exe`，开箱即用、常驻菜单栏\u002F托盘）。每个平台有两种安装包:**精简版**(默认,首启自动下载向量模型 bge-m3)与 **`-with-embedding` 完整版**(已内置 bge-m3 ~1.1GB,离线开箱即用)——网络差 \u002F 想离线的选完整版,其余选精简版。想改源码或深度定制,就把下面这句话粘给 Claude Code \u002F Codex CLI \u002F Cursor 等 AI 编程助手：\n\n   ```text\n   请按照 https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fdocs\u002Fagent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)\n   ```\n\n3. **连接来源** —— 在装了插件的浏览器登录 [B 站](https:\u002F\u002Fwww.bilibili.com)（默认初始化来源），或改选小红书 \u002F 抖音 \u002F YouTube \u002F X \u002F 知乎 \u002F Reddit \u002F Linux.do \u002F V2EX \u002F 微博；Linux.do、Bangumi、V2EX 与微博均可做公开发现，登录 Linux.do、V2EX 或微博后还能在初始化时只读导入个人信号，Bangumi 可用公开用户名初始化画像。微博公开发现无需登录，个人收藏 \u002F 关注 \u002F 互动初始化需要已登录微博浏览器态。\n4. **打开界面** —— 浏览器访问 `http:\u002F\u002F127.0.0.1:8420\u002Fweb`；手机扫插件二维码打开 `http:\u002F\u002F\u003C电脑局域网 IP>:8420\u002Fm\u002F`，保存到主屏幕即可当 App 用；想要原生 App 体验，可安装独立仓库的 [Flutter 客户端](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile)（Android \u002F iOS \u002F Web \u002F 桌面，安装包见 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile\u002Freleases\u002Flatest)），在设置里填后端地址即可连接同一后端。\n\n## 用户交流群\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" width=\"50%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fuser-community-qrcode.png\" width=\"200\" alt=\"QQ 用户交流群二维码\" \u002F>\u003Cbr\u002F>\n      \u003Cb>QQ 用户群\u003C\u002Fb>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"50%\">\n      \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FPU6Xgch8yg\">\u003Cimg src=\"docs\u002Fimages\u002Fdiscord-community-qrcode.jpg\" width=\"200\" alt=\"Discord 社区二维码\" \u002F>\u003C\u002Fa>\u003Cbr\u002F>\n      \u003Cb>Discord 社区\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>扫码或\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FPU6Xgch8yg\">点击加入\u003C\u002Fa>，链接长期有效\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 为什么需要 OpenBiliClaw？\n\n> 名字起源于 B 站（`Bili` = Bilibili，`Claw` = 爪子），项目最早只支持 B 站。从 v0.3.0 起已扩展为通用跨平台 Agent，覆盖 B 站 \u002F 小红书 \u002F 抖音 \u002F YouTube \u002F X \u002F 知乎 \u002F Reddit \u002F Linux.do \u002F Bangumi \u002F V2EX \u002F 微博与通用 Web，持续接入更多内容平台。\n\n推荐系统本质上是一个**中间商**——平台站在海量内容和海量用户之间做匹配分发。现代推荐系统远比「优化点击率」复杂：它同时权衡点击率、完播率、点赞\u002F投币概率、停留时长、用户留存、创作者生态健康、广告收入等十几个目标，把它们加权压成一个分数来排序。听起来很科学，但问题在于：**这些权重是平台定的，优化目标归根结底是平台的**——用户满意度只是被当作留存和变现的手段，而非目的本身。你以为你在挑内容，其实是中间商在替你决定你能看到什么。结果就是：推荐越来越像你已经看过的东西，偶尔的惊喜全靠运气。\n\n而且每个平台都是一座孤岛。你在 B 站看了三年机械键盘，小红书完全不知道；你在小红书种草的咖啡器具，B 站从来不会推给你。你的兴趣被割裂在不同平台的数据库里，没有人帮你把它们连起来。\n\n**OpenBiliClaw 反过来。** 它是一个本地运行的 AI Agent——先深度理解你，再根据对你的理解**跨平台**主动搜寻你会喜欢的内容。项目从 B 站起步，现已覆盖小红书、抖音、YouTube、X（Twitter）、知乎、Reddit、Linux.do、Bangumi、V2EX、微博和开放 Web：\n\n### 🧠 先懂你，再找内容\n\n不是从视频出发匹配标签，而是从你出发。通过行为分析推断 MBTI、认知风格、深层心理需求，构建五层灵魂画像（事件→偏好→觉察→洞察→灵魂）。它理解的是你这个人，不是你的点击记录。\n\n### 🔮 根据理解主动探索，而非被动匹配\n\n这是和传统推荐最核心的差异：系统会基于对你的理解，**主动猜测你可能感兴趣但从未接触过的领域**。一个关注机械表的人可能会喜欢建筑美学，一个看量子物理科普的人可能对哲学感兴趣——它用心理学桥接逻辑主动出击，猜对了升级为正式兴趣，猜错了安静退出。协同过滤永远不会推给你「没人从这条路径走过」的内容，但 OpenBiliClaw 会。\n\n### 🔒 100% 本地，100% 你的\n\n核心行为、推荐和对话数据留在你硬盘上的 SQLite，配置、画像、凭据与缓存也只保存在本机文件中。LLM 默认用你自己的 API Key，也可实验性复用本机 Codex CLI 的 ChatGPT OAuth 凭据。没有 OpenBiliClaw 运营的云端账号，没有任何人能看到你的画像。这个 Agent 怎么长，完全你说了算——反馈推荐、对话调教、换 LLM、迁移或改数据库，随你。\n\n> 💡 **和其他推荐工具的对比**\n>\n> | | 各平台官方推荐 | 关键词过滤插件 | OpenBiliClaw |\n> |---|---|---|---|\n> | 推荐逻辑 | 协同过滤 | 标签匹配 | 心理画像 + 五层记忆 |\n> | 内容来源 | 单一平台 | 单一平台 | 跨平台（B 站 · 小红书 · 抖音 · YouTube · X · 知乎 · Reddit · Linux.do · Bangumi · V2EX · 微博 · Web） |\n> | 信息茧房 | 越推越窄 | 不解决 | 猜测兴趣主动破茧 |\n> | 数据归属 | 平台所有 | 通常云端 | 100% 本地 |\n> | 推荐解释 | \"猜你喜欢\" | 无 | 像朋友一样告诉你为什么 |\n> | 可定制 | 不可以 | 低 | 换 LLM \u002F 改画像 \u002F 写 Skill |\n\n## 📸 功能预览\n\n核心入口现在有五个：浏览器插件负责平台内交互和登录会话，桌面端 Web（`\u002Fweb`）提供大屏推荐首页，移动端 Web（`\u002Fm`）适合手机使用，另有独立仓库的原生 Flutter 客户端（[OpenBiliClaw-mobile](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile)）覆盖 Android \u002F iOS \u002F Web \u002F 桌面，以及把同一套面板搬进 DSH Web 界面的 [DSH 客户端插件](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002Fdsh-openbiliclaw)（第四栏 + 22 个 Agent Bridge 工具）。桌面端、移动端 Web、原生客户端和 DSH 插件都只调用本地 API，Cookie 同步和平台任务仍由插件承担。\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" width=\"25%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-recommend.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>智能推荐\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>像朋友一样解释为什么你会喜欢\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"25%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-profile-portrait.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>灵魂画像\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>自然语言描述的深度人格分析\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"25%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-profile-traits.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>结构化特质\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>MBTI · 核心特质 · 深层需求\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"25%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-chat.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>对话调教\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>聊天告诉它你想看什么\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 🖥️ 桌面端 Web 预览\n\n启动后端后访问 `http:\u002F\u002F127.0.0.1:8420\u002Fweb`（或直接 `http:\u002F\u002F127.0.0.1:8420\u002F`，会自动跳转），即可在浏览器大屏上使用推荐首页。\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" width=\"50%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fdesktop-home.png\" width=\"480\" \u002F>\u003Cbr\u002F>\n      \u003Cb>桌面推荐首页\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>惊喜推荐 Hero · 为你推荐网格 · 朋友式推荐理由\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"50%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fdesktop-cards.png\" width=\"480\" \u002F>\u003Cbr\u002F>\n      \u003Cb>推荐卡片网格\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>封面 + 推荐理由 · 喜欢 \u002F 不感兴趣 \u002F 稍后 \u002F 收藏 \u002F 聊一聊\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\" colspan=\"2\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fdesktop-profile.png\" width=\"480\" \u002F>\u003Cbr\u002F>\n      \u003Cb>画像 + 实时看板\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>侧栏 Runtime 看板 + 后台动态 · 人格素描 · 核心特质 · MBTI 推断\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 📱 移动端 Web 预览\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" width=\"33%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fmobile-recommend.png\" width=\"210\" \u002F>\u003Cbr\u002F>\n      \u003Cb>手机推荐页\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>惊喜推荐 + 池子状态 · 朋友式推荐原因\u003C\u002Fsub>\u003Cbr\u002F>\n      \u003Csub>看看 \u002F 喜欢 \u002F 稍后 \u002F 收藏 \u002F 不感兴趣 \u002F 聊一聊\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"33%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fmobile-profile.png\" width=\"210\" \u002F>\u003Cbr\u002F>\n      \u003Cb>手机画像页\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>人格素描 · 核心特质 · 深层需求 · MBTI\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"33%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fmobile-chat.png\" width=\"210\" \u002F>\u003Cbr\u002F>\n      \u003Cb>手机对话页\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>与插件共享主聊天历史\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n> 📱 想要原生 App？独立仓库 [OpenBiliClaw-mobile](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile)（Flutter）提供 Android \u002F iOS \u002F Web \u002F Linux \u002F macOS \u002F Windows 客户端：推荐、对话、画像、收藏 \u002F 稍后再看 \u002F 30 天历史、消息收件箱一应俱全，B 站封面走 CDN 直连省两跳。Android 签名 APK 与 iOS 自签名 IPA 从 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile\u002Freleases\u002Flatest) 下载（iOS 需用个人 Apple 账号重签）。当前为新特性预览版，尚未经过长期实测。\n\n\u003Cdetails>\n\u003Csummary>更多截图\u003C\u002Fsummary>\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" width=\"33%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-recommend-feedback.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>推荐反馈\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>点赞 \u002F 多来点 \u002F 少来点 \u002F 没兴趣\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"33%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-profile-values.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>价值偏好与兴趣\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>内在驱动力 · 猜测兴趣方向\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" width=\"33%\">\n      \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot-profile-style.png\" width=\"200\" \u002F>\u003Cbr\u002F>\n      \u003Cb>认知风格\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>信息处理偏好 · 内容口味\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003C\u002Fdetails>\n\n## 最近更新\n\n📌 最新版本：**v0.3.207（2026-08-15）**\n\n- **补货提速** —— B 站份额已满时不再停摆，健康来源会继续回填全局库存，一天跑不满的问题修复。\n- **免费联网找灵感** —— 新增 Bing RSS 无 key 搜索兜底，没配 Exa \u002F You 也能拿到真实搜索结果。\n- **Exa \u002F You.com 直连** —— 填 `exa_api_key` \u002F `you_api_key` 即走 Python 直连 API，不再依赖 mcporter。\n- **来源更稳** —— V2EX \u002F 微博的缺失 CLI 与 `upstream_rejected` 不再刷 traceback，失败时优雅降级。\n\n完整变更详见 [docs\u002Fchangelog.md](docs\u002Fchangelog.md)。\n\n## 安装与部署详情\n\n普通用户的正常流程是：先安装浏览器插件，再把一句话发给 AI 助手安装后端，在同一个浏览器登录内容平台；如果要在手机上使用，再打开移动端 Web。脚本、Docker 和手动部署只作为备用路径，放在下面折叠区。\n\n### 1. 安装浏览器插件\n\n插件是主要入口：它会在受支持站点显示侧边栏、采集你的反馈，并承接知乎、Reddit、Linux.do、V2EX、微博等登录态只读任务。Linux.do、V2EX 与微博的任务 tab 和普通行为采集隔离；微博公开 discovery 由后端独立完成，个人初始化才使用微博 host permission 和同源任务桥。\n\n插件基于 Manifest V3，支持所有兼容 Chrome 插件的浏览器，包括 **Chrome、Edge、Brave、Arc、Vivaldi、Opera** 等；另提供 **Safari（macOS）** 构建，Release 自动附带 `openbiliclaw-extension-v*-safari.dmg`（配置 Apple 凭据时为 Developer ID 签名 + 公证；未配置时为 ad-hoc 实验包，需在 Safari 开启「允许未签名扩展」），也可本地经 Apple `safari-web-extension-converter` 转成 Xcode 工程后安装（详见 [Safari 构建文档](docs\u002Fsafari-extension-build.md)）。\n\n**推荐方式 · 从 Latest Release 聚合页下载最新版手动安装**（拿到最新功能与修复 —— Chrome 应用商店受审核排期影响，版本通常会滞后几天到一两周）：\n\n1. 打开 [OpenBiliClaw Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Freleases\u002Flatest)，也就是最新 `openbiliclaw-v*` 用户下载聚合页\n2. Chrome \u002F Edge \u002F Brave 下载 `openbiliclaw-extension-v*.zip`；Firefox 若 release 提供 `openbiliclaw-extension-v*-firefox.xpi` 就直接安装，否则下载 `openbiliclaw-extension-v*-firefox.zip` 并按下方 `about:debugging` 临时加载；Safari（macOS）下载 `openbiliclaw-extension-v*-safari.dmg`，打开后首次运行 App，再到 Safari 设置 → 扩展里勾选 OpenBiliClaw\n3. 打开扩展管理页面（Chrome：`chrome:\u002F\u002Fextensions\u002F` · Edge：`edge:\u002F\u002Fextensions\u002F` · Brave：`brave:\u002F\u002Fextensions\u002F`），开启右上角「开发者模式」\n4. Chrome \u002F Edge \u002F Brave 将下载的 `.zip` 文件拖入页面安装；Firefox 的 `.xpi` 可直接打开确认安装，临时 zip 需要先解压再加载 `manifest.json`\n\n**省事方式 · Chrome 应用商店一键安装**（安装后由浏览器自动更新，适合不想手动升级的人；缺点是版本可能滞后于 Releases）：\n\n> 👉 **[在 Chrome 应用商店安装 OpenBiliClaw](https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fcdfjfkdjjhdaccbldipkjhpibnfbiamg)** —— 打开后点「添加至 Chrome」即可。\n\n插件更新取决于安装渠道：Chrome Web Store \u002F Edge Add-ons，以及审核通过后的 Firefox AMO 上架版由浏览器自动更新；从 GitHub Release 下载的 Chrome zip \u002F Firefox signed XPI \u002F Firefox 临时 zip \u002F Safari dmg、开发者模式加载或 Firefox 临时加载的用户，需要下载新版安装包并按同样方式重新加载。Firefox AMO 上架审核是异步的，listed 版本公开前请从 Release 使用 `*-firefox.zip` 临时加载；审核通过后由 Firefox 自动更新。后端设置里的“自动更新”开关只更新本地后端源码，不会更新浏览器插件。\n\n\u003Cdetails>\n\u003Csummary>Firefox 用户：正式安装与临时调试（Firefox 140+）\u003C\u002Fsummary>\n\nFirefox 用 `sidebar_action` 而不是 Chrome 的 `sidePanel`，所以 release 会提供独立产物：\n\n- `openbiliclaw-extension-v*-firefox.xpi`：Mozilla AMO unlisted 签名后的正式安装包；仅在发布环境启用 AMO signing 且凭据可用时生成，普通 Firefox Release \u002F Beta 可以直接安装。\n- `openbiliclaw-extension-v*-firefox.zip`：未签名开发包，只用于 `about:debugging` 临时加载或 AMO 签名输入。普通 Firefox 直接安装它会提示“未通过验证 \u002F could not be verified”。\n\n临时调试或源码构建时使用：\n\n```bash\nunzip openbiliclaw-extension-v*-firefox.zip -d openbiliclaw-firefox\n\n# 或从源码构建\ngit clone https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw.git\ncd OpenBiliClaw\u002Fextension\nnpm install\nnpm run build:firefox          # 产出 dist-firefox\u002F\nnpm run package:firefox        # 额外打成未签名 openbiliclaw-extension-v*-firefox.zip\n# AMO 凭据配置后可签名成正式安装包：\n# AMO_JWT_ISSUER=... AMO_JWT_SECRET=... npm run sign:firefox:only\n```\n\n加载方式：\n\n1. 打开 `about:debugging#\u002Fruntime\u002Fthis-firefox`\n2. 点「Load Temporary Add-on…」\n3. 选解压目录里的 `manifest.json`（或源码构建后的 `extension\u002Fdist-firefox\u002Fmanifest.json`）\n\n注意：Firefox 临时加载在浏览器重启后会失效；如果 release 提供已签名 `.xpi`，普通用户应优先使用 `.xpi`。\n\n\u003C\u002Fdetails>\n\n### 2. 部署后端（二选一）\n\n普通用户直接用**桌面安装包**最省事；想改源码、换 LLM、深度定制就用 **AI 一句话部署**。\n\n#### 方式 A：下载桌面安装包（实验性，最省事）\n\n到 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Freleases\u002Flatest) 的 `openbiliclaw-v*` 聚合发布页下载对应系统的安装包。这个聚合页会同步展示：\n\n- 当前后端源码 tag：`backend-v*`\n- 当前插件 release：`extension-v*`，并附 `openbiliclaw-extension-v*.zip` \u002F `openbiliclaw-extension-v*-firefox.zip`（Firefox 临时调试）；启用 AMO signing 时还会附 `openbiliclaw-extension-v*-firefox.xpi`（Firefox 正式安装）\n- 当前桌面安装包 release：`desktop-v*`，同版本桌面 channel 完成后会附可用的 `.dmg` \u002F `.exe`；缺失 channel 显示未发布，不回填上一版资产\n\n- **macOS**：从发布页下载与你的 Mac 匹配的 DMG：Apple 芯片用 `OpenBiliClaw-macos-v*-arm64.dmg`；Intel 用 `OpenBiliClaw-macos-v*-x64.dmg`（如发布页提供）。打开后推荐双击 `安装并启动 Install OpenBiliClaw.command`：它会校验新包、退出旧实例、原子替换「应用程序」中的 app，再启动刚安装的版本；传统拖拽仍可用，但升级时需先退出旧版并在替换后手动重开。\n- **Windows**：下载 `OpenBiliClaw-windows-*-Setup.exe`，双击安装。安装或升级成功后，安装器会结束旧实例并从安装目录自动启动刚安装的新版本（静默安装也一样）。\n\n安装包自带本地 Ollama + `bge-m3` embedding，开箱即用；也内置默认内容源依赖，包括 X 的 `twitter-cli` 和 Reddit 的 `rdt-cli`（Reddit rdt 命令后端会优先使用已连接插件同步的 `reddit_session`，插件不可用时可手动运行 `rdt login`，未登录会 fallback 插件）。启动后常驻 **macOS 菜单栏 \u002F Windows 系统托盘**，右键可「打开 Web 界面 \u002F 查看运行日志 \u002F 退出」。数据与 AI \u002F 脚本安装复用同一个目录：`~\u002FOpenBiliClaw`（macOS \u002F Linux）\u002F `%USERPROFILE%\\OpenBiliClaw`（Windows），升级或卸载不会动它；旧安装包曾写入的 `~\u002FLibrary\u002FApplication Support\u002FOpenBiliClaw` \u002F `%LOCALAPPDATA%\\OpenBiliClaw` 会在新版本首次启动时非覆盖拷贝回来。若 `config.toml` \u002F `config.local.toml` 损坏导致启动失败，桌面包会把坏文件备份为 `*.invalid` 并重新生成默认配置，随后打开 `\u002Fsetup\u002F` 重新初始化；`data\u002F` 不会被删除。\n\n> ⚠️ **macOS 安全阻挡（应用尚未签名 \u002F 公证）**：\n> - 当前 Release 是 ad-hoc signed、未 notarized。首次打开安装助手或应用时如果提示“无法验证开发者”或“未经安全验证”，请右键 \u002F Control-click 对应项目 →「打开」→ 在弹窗里再点「打开」；也可以到「系统设置 → 隐私与安全性」点击「仍要打开」。\n> - 如果提示“`OpenBiliClaw.app` 已损坏，无法打开。您应该将它移到废纸篓”，通常是下载隔离属性导致。确认包来自本项目 Releases 后运行：\n>\n>   ```bash\n>   APP=\"\u002FApplications\u002FOpenBiliClaw.app\"\n>   xattr -dr com.apple.quarantine \"$APP\"\n>   ```\n>\n>   然后再次打开应用。\n> - **Windows**：SmartScreen 弹窗点「更多信息 → 仍要运行」。\n>\n> 这是**实验性预发布**：未签名、随后端版本滚动更新，适合只想最快试用、不碰命令行的人。要二次开发 \u002F 改源码请用下面的方式 B。\n\n#### 方式 B：AI 一句话部署（可定制 \u002F 可改源码）\n\n把下面整句粘给 Claude Code、Codex CLI、Cursor、Windsurf 或其他 AI 编程助手即可。括号里的限制是给 AI 助手看的，你不用理解。\n\n```text\n请按照 https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fdocs\u002Fagent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)\n```\n\nAI 助手会克隆仓库、安装依赖、用局域网可访问的默认绑定启动后端（`0.0.0.0:8420`）、做健康检查，并问几个有默认值的问题。自动初始化前会真实验证全局 LLM 实例链和独立 embedding 服务；有一个不通就先停下让你修配置。小红书、抖音、YouTube、X、知乎、Reddit、Linux.do、V2EX 与微博数据只有你明确同意才会进入初始画像；微博个人事件需要已登录微博浏览器和扩展，公开发现仍可匿名进行。\n\nChrome Web Store \u002F AMO 发布包默认只声明本机后端权限。让插件连接局域网另一台机器或远程域名时，在设置里选择协议并填写地址，浏览器会请求该 `scheme:\u002F\u002Fhost\u002F*` 的可选权限；WebExtension host permission 无法跨浏览器限定端口，但实际请求仍固定到配置端口。公网地址强制 HTTPS。后端需先用 `ext-key generate` 和 `ext-key enable` 开启默认关闭的设备认证。\n\n有公网域名时，最短路径是叠加 [`docker-compose.https.yml`](docker-compose.https.yml)，由 Caddy 自动申请和续期证书；PC、手机和插件共用 `https:\u002F\u002F\u003C域名>`。命令与安全门禁见 [HTTPS 部署指南](docs\u002Fhttps-deployment.md)。\n\n### 3. 在同一个浏览器登录内容平台\n\n默认登录 [B 站](https:\u002F\u002Fwww.bilibili.com) 并勾选 B 站来源即可生成第一版画像和推荐；如果不想接 B 站，也可以改勾已登录的小红书 \u002F 抖音 \u002F YouTube \u002F X \u002F 知乎 \u002F Reddit \u002F [Linux.do](https:\u002F\u002Flinux.do) \u002F [V2EX](https:\u002F\u002Fwww.v2ex.com)，或选择 Bangumi 并填写公开用户名。至少保留一个能拉到画像信号的来源；未登录 Linux.do \u002F V2EX 和未填身份的 Bangumi 仍可公开 discovery，但不能单独完成画像初始化。\n\n### 4. 打开桌面端或移动端 Web\n\n后端启动后会同时托管桌面端和移动端 Web，都只调用本地 API，不做 Cookie 同步或平台登录。\n\n```bash\nopenbiliclaw start\n```\n\n- **桌面端**：浏览器直接访问 `http:\u002F\u002F127.0.0.1:8420\u002Fweb`（或 `http:\u002F\u002F127.0.0.1:8420\u002F`，自动跳转）。大屏两栏布局，推荐流、30 天历史、画像、聊天、消息和设置全在一页。\n- **移动端**：点击插件顶部的手机图标扫二维码，或手动输入 `http:\u002F\u002F\u003C电脑局域网 IP>:8420\u002Fm\u002F`。适合手机上刷推荐、回看 30 天历史、看画像和与阿B聊天。\n- **Flutter 原生客户端**：从 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile\u002Freleases\u002Flatest) 下载 Android APK（新机型选 `arm64-v8a`，老设备选 `armeabi-v7a`）直接安装，或下载 iOS 未签名 IPA 用个人 Apple 账号重签；装好后右上角设置里填后端 IP \u002F 端口即可连接同一后端（Web \u002F iOS \u002F macOS 默认 `127.0.0.1:8420`，Android 模拟器默认 `10.0.2.2:8420`，真机填电脑局域网 IP，远程部署填服务器 IP 并建议开启密码门禁）。\n\n> 首次运行 `openbiliclaw init` 时会询问是否允许局域网访问（默认 Y）。如果选了 N 或想改回来，编辑 `config.toml` 的 `[api].host`（`0.0.0.0` = 通过可用的 IPv4 \u002F IPv6 局域网访问，`127.0.0.1` = 仅本机）。二维码优先使用 IPv4；仅有 IPv6 时会自动生成带方括号的 IPv6 地址。\n\n打开 `\u002Fm\u002F` 后可以把手机页面保存成桌面快捷入口：iPhone \u002F iPad 用 Safari 的「分享 → 添加到主屏幕」；Android Chrome \u002F Chromium 浏览器用菜单里的「安装应用」或「添加到主屏幕」。局域网 HTTP 在部分 Android 浏览器上可能只生成快捷方式；如果想要更稳定的完整 PWA 安装提示，建议在可信环境里用 HTTPS 反代访问本机后端。\n\n页面底部收敛为「推荐 \u002F 内容库 \u002F 画像 \u002F 对话」四个一级 Tab。内容库内再按「稍后再看 \u002F 收藏 \u002F 历史记录」切换：前两项管理保存列表；历史记录按「主动点开过 \u002F 出现过但没点开 \u002F 最近移除」分页展示近 30 天内容，同一内容的多个移除原因会一起显示，收藏和稍后再看可以分别恢复。旧的稍后、收藏和历史直达链接会自动迁移到对应内容库子项。\n\n\u003Cdetails>\n\u003Csummary>不用 AI 助手：直接跑一句话安装脚本\u003C\u002Fsummary>\n\nmacOS \u002F Linux \u002F WSL2（Bash）：\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\nWindows 原生（PowerShell，不需要 Docker \u002F WSL2）：\n\n```powershell\n[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; iwr https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fscripts\u002Finstall.ps1 -UseBasicParsing | iex\n```\n\n脚本依赖 `git` 和 Python 3.11+。它会自动克隆仓库，然后先在终端向导里收集首选 LLM 实例、embedding、B 站 Cookie，以及小红书 \u002F 抖音 \u002F YouTube 的 opt-in 决策，再安装依赖、启动后端和健康检查；确认齐全后会先验证全局 LLM 实例链和 embedding 服务都能真实响应，再自动运行 init，完成画像生成和首轮发现。X \u002F 知乎 \u002F Reddit \u002F Linux.do \u002F Bangumi \u002F V2EX \u002F 微博可在启动后的 `\u002Fsetup\u002F` 或设置页显式开启；Linux.do、Bangumi、V2EX 与微博的公开 discovery 无需登录，微博个人初始化需要已登录微博浏览器和扩展，Bangumi 个人初始化需要公开用户名。不确定的选项直接回车或选默认。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>高级：Docker 部署\u003C\u002Fsummary>\n\n适合已经安装 Docker 的用户，自带 Ollama embedding sidecar。预构建镜像无需克隆源码：\n\n```bash\nmkdir -p ~\u002Fopenbiliclaw && cd ~\u002Fopenbiliclaw\ncurl -fsSLO https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fdocker-compose.prebuilt.yml\ndocker compose -f docker-compose.prebuilt.yml up -d\n# 然后打开 http:\u002F\u002F127.0.0.1:8420\u002Fsetup\u002F 完成初始化\n```\n\n也可以把下面这句粘给 AI 编程助手，走终端向导 + 自动 init：\n\n```text\n请按照 https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fdocs\u002Fdocker-deployment.md 的说明帮我用 Docker Compose 部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch)\n```\n\n源码构建、升级与排查详见 [Docker 部署指南](docs\u002Fdocker-deployment.md)。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>高级：多源登录与插件链路\u003C\u002Fsummary>\n\nOpenBiliClaw 不保存你的平台密码，也不替你绕过登录。需登录的来源复用当前浏览器里的会话，匿名来源只读公开内容；两者都不会越过你能访问的边界。\n\n| 源 | 登录方式 | 不登录的影响 |\n|---|---|---|\n| **B 站** | 在装了插件的浏览器打开 https:\u002F\u002Fwww.bilibili.com 正常登录 | 拉不到观看历史 \u002F 收藏 \u002F 关注，画像会明显变弱 |\n| **小红书** | 在同一浏览器打开 https:\u002F\u002Fwww.xiaohongshu.com 正常登录 | 小红书 discovery 和详情抓取不可用 |\n| **抖音** | 在同一浏览器打开 https:\u002F\u002Fwww.douyin.com 正常登录 | `init --yes-douyin`、`fetch-douyin` 和 `discover --source douyin` 的 search \u002F hot \u002F feed 可能返回 0 条 |\n| **YouTube** | 在同一浏览器打开 https:\u002F\u002Fwww.youtube.com 正常登录 | `init --yes-youtube` 和 `fetch-youtube` 可能返回 0 条；仍可用 `import-youtube` 从 Takeout 导入 |\n| **X（Twitter）** | 在同一浏览器打开 https:\u002F\u002Fx.com 正常登录 | `init --yes-x`、`fetch-x` 和 X discovery 拉不到数据（服务端重放需要 `auth_token`+`ct0`，登录后扩展自动同步） |\n| **知乎** | 在同一浏览器打开 https:\u002F\u002Fwww.zhihu.com 正常登录 | `init --yes-zhihu`、`fetch-zhihu`、`discover --source zhihu` 和 `discover-zhihu*` 拉不到数据 |\n| **Reddit** | 在同一浏览器打开 https:\u002F\u002Fwww.reddit.com 正常登录；插件会同步 `reddit_session` 给日常 discovery 的 rdt-cli，`rdt login` 仅作为插件不可用时的 fallback | `fetch-reddit --mode bootstrap` 拉不到初始化信号；rdt credential 未同步时 rdt 路径会 fallback 到插件任务 |\n| **Linux.do** | 在同一浏览器打开 https:\u002F\u002Flinux.do 正常登录；公开 discovery 无需登录 | 未登录时 `fetch-linuxdo` 和 `init --yes-linuxdo` 拉不到书签 \u002F 点赞 \u002F 阅读记录，但 search \u002F hot \u002F feed \u002F creator \u002F related discovery 仍可用 |\n| **Bangumi** | 无需登录；可选填公开用户名读取公开收藏，或填个人令牌读取私密收藏；插件在 bgm.tv \u002F bangumi.tv 仅做账号身份自动识别（不读 Cookie、不采集浏览行为） | 未填用户名时不能把 Bangumi 作为唯一画像初始化来源，但匿名 search \u002F ranked \u002F 按日期 discovery 仍可用 |\n| **V2EX** | 无需登录；可选填 PAT；guided init \u002F 增量任务在扩展中读取本人主题、本人回复、收藏主题和收藏 Node 的公开渲染字段 | 未连接扩展时仍可匿名 search \u002F node \u002F tab \u002F hot \u002F latest discovery；收藏 scope 需要实际登录态 |\n\n小红书、抖音、YouTube、知乎和 Linux.do 走 Chrome 插件任务链路，Reddit 日常 discovery 默认走随后端安装的 rdt-cli、初始化信号仍走插件，X 的 discovery 走服务端 cookie 重放；这些读取链路都不需要你额外启动 CDP 调试 Chrome。Linux.do 上游请求全部在真实站点 tab 内以同源 GET 执行，`_t` 只作登录布尔，Cookie 值和原始响应不会上传。Reddit\u002FX、YouTube、小红书、抖音与知乎原生保存 executor 已 6\u002F6 接入并通过 fixture 测试；2026-07-14 的真实账号回归中，六平台 favorite 与 watch-later\u002Ffallback 均得到 `synced\u002Falready_synced`。Linux.do 不提供任何站内写回。`[sources.browser].cdp_url` 只保留给通用 Web \u002F 自定义网页源的浏览器抓取场景。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>高级：本地 embedding \u002F Ollama\u003C\u002Fsummary>\n\n如果你不想给 embedding 单独配置 API Key，或担心远程 embedding 配额，可以装一次 Ollama 后使用本地 `bge-m3`：\n\n```bash\n# macOS\n# 安装并启动官方 Ollama.app（会创建 ollama 命令行入口）\nopen https:\u002F\u002Follama.com\u002Fdownload\u002Fmac\n\n# Linux\ncurl -fsSL https:\u002F\u002Follama.com\u002Finstall.sh | sh && ollama serve &\n```\n\nmacOS \u002F Windows 用户可以从 [ollama.com\u002Fdownload](https:\u002F\u002Follama.com\u002Fdownload) 安装官方 App。启动 Ollama 后运行：\n\n```bash\nuv run openbiliclaw setup-embedding\n```\n\n向导会自动拉取 `bge-m3`（约 1.1GB，CPU 可跑）并写入配置。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>高级：手动安装与 discovery 调试\u003C\u002Fsummary>\n\n> 人类维护者可以参考 [docs\u002Fagent-install.md](docs\u002Fagent-install.md)(给智能体看的精简契约)和 [docs\u002Fagent-deployment.md](docs\u002Fagent-deployment.md)(详细排查说明)。\n\n#### 手动安装\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw.git\ncd OpenBiliClaw\n\n# 使用 uv (推荐)\nuv sync\n\n# 或使用 pip\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install -e \".[dev]\"\n```\n\n#### 手动配置\n\n```bash\n# 复制配置模板\ncp config.example.toml config.toml\n\n# 编辑配置（设置 LLM API Key 等）\nvim config.toml\n```\n\n#### 运行\n\n```bash\n# 一键初始化（拉取历史 · 生成画像 · 首轮发现）\nopenbiliclaw init\n\n# 可选：启用本地 Ollama 作为独立 embedding provider（无需额外 API Key）\nopenbiliclaw setup-embedding\n\n# 手动触发内容发现\nopenbiliclaw discover\n\n# 可选：抖音内容发现（需先启用 [sources.douyin]；search \u002F hot \u002F feed 从首页 DOM 操作触发）\nopenbiliclaw discover --source douyin\n\n# 可选：Linux.do 书签 \u002F 点赞 \u002F 阅读记录只读 smoke（默认不写 memory）\nopenbiliclaw fetch-linuxdo\n\n# 可选：Linux.do 正式发现（search \u002F hot \u002F feed \u002F creator \u002F related）\nopenbiliclaw discover-linuxdo --limit 30\n# 等价：openbiliclaw discover --source linuxdo --limit 30\n\n# 可选：独立调试抖音 search \u002F hot \u002F feed 召回\nopenbiliclaw discover-douyin --keyword 机械键盘 --source search,feed --no-cache --no-evaluate\n\n# 可选：微博公开 discovery（需先启用 [sources.weibo]；公开读取不写画像）\nopenbiliclaw discover --source weibo\nopenbiliclaw discover-weibo 机械键盘\nopenbiliclaw discover-weibo-hot\nopenbiliclaw discover-weibo-creator 1234567890\n\n# 查看推荐\nopenbiliclaw recommend\n\n# 查看用户画像\nopenbiliclaw profile\n```\n\n开发者也可以从源码构建插件：\n\n```bash\ncd extension\nnpm install\nnpm run package\n```\n\n\u003C\u002Fdetails>\n\n## 🤖 接入 OpenClaw \u002F Hermes \u002F WorkBuddy Agent\n\nOpenBiliClaw 仓库内置了一个 [workspace skill](skills\u002Fopenbiliclaw-adapter\u002FSKILL.md) 和版本化的 Agent Bridge。把仓库挂到任何支持 skill 或本地 JSON CLI 的 Agent 宿主（OpenClaw \u002F Hermes \u002F WorkBuddy \u002F Claude Code \u002F Codex CLI \u002F Cursor 等），宿主就能直接调用你本机上的 OpenBiliClaw。\n\n### 接入之后能干什么\n\n- ✨ **主动推荐** — 系统在后台持续发现内容，遇到高分惊喜时通过 WebSocket 主动推送给 OpenClaw，OpenClaw 再转述给你——**你不需要开口问**\n- 🔮 **主动追问兴趣** — 系统猜测你可能对某个方向感兴趣，支持 confirm \u002F reject \u002F defer \u002F chat 四态反馈，画像自动更新\n- 🧭 **主动确认避雷** — 系统也会确认你可能想避开的内容形态，支持四态反馈；只有确认后才写入过滤偏好\n- 💬 **苏格拉底式对话** — 带 durable `turn_id` 的多轮对话，重试或切换宿主后仍可读取历史\n- 📖 **读当前灵魂画像** — MBTI、核心特质、深层需求、兴趣领域\n- 🎯 **按需拉多源推荐** — 支持平台范围、换一批、追加、库存可用量和完整内容元数据\n- 💬 **把反馈写回学习闭环** — 推荐和惊喜卡片反馈都支持 durable 幂等\n- 💾 **本地优先保存** — 收藏 \u002F 稍后再看先落本地；外部同步必须显式授权\n- 🔄 **同步 B 站账号行为** — 拉历史、收藏、关注等长期信号，注入记忆系统\n\n### 一句话让 OpenClaw 完成接入\n\n把下面这段粘给 OpenClaw（或 Claude Code \u002F Codex CLI \u002F Cursor），它会自动读指南并完成接入：\n\n```text\n请按照 https:\u002F\u002Fraw.githubusercontent.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fmain\u002Fdocs\u002Fopenclaw-quickstart.md 的说明帮我把当前仓库接入 Agent Bridge（目标宿主是 OpenClaw；务必用 Bash 的 curl 下载这个文档，不要用 WebFetch — 会丢关键指令）\n```\n\n### 用户使用示例\n\n接入后不只是\"你问它答\"——**系统会主动找你**。以下是两个最核心的场景：\n\n#### 场景一：系统主动推一条惊喜内容\n\nOpenClaw 在后台开着 `listen`，某次 refresh 后系统发现了一条高分内容：\n\n> **OpenClaw**（收到 WebSocket 推送 `delight.candidate`，主动找你）：\n>\n> > 刚发现一条你可能会意外喜欢的：\n> > **《为什么说回县城你也躺不平》** — 县域经济的明斯基时刻。你最近一直在盯地缘政治和宏观债务，这条用硬核推演把土地财政和债务周期的齿轮咬合讲清楚了。`[BV1KMwuzdEcB]`\n> >\n> > 要不要看看？\n>\n> **你**：\"这条非常到位。\"\n>\n> **OpenClaw**（内部执行 `submit-feedback --recommendation-id 4268 --feedback-type like --request-id feedback-4268-like-1`，重试复用该 ID）\n\n你没有开口要推荐——是系统主动捅过来的。\n\n#### 场景二：系统主动追问你的兴趣\n\nOpenClaw 收到 `interest.probe` 事件（或主动拉取 `next-probe`），发现有一个猜测兴趣假设待确认：\n\n> **OpenClaw**（主动找你）：\n>\n> > 我从你最近的轨迹里嗅到你可能对【建筑美学】（比如：参数化设计、混凝土美学）感兴趣——你最近看了很多关于结构和空间的内容。这个方向你自己认不认？\n>\n> **你**：\"嗯对，最近在看很多参数化设计的东西，安藤忠雄那种清水混凝土的美感很戳我。\"\n>\n> **OpenClaw**（内部执行 `chat --message \"嗯对，最近在看很多参数化设计的东西……\"`，返回苏格拉底式追问）：\n>\n> > 你说的这个方向我有个猜测——你是不是其实更在意底层结构而不只是结论？安藤忠雄那种用最少元素构建最大张力的方式，跟你平时看大模型逻辑时追求的\"把齿轮咬合讲清楚\"好像是同一种审美驱动。你觉得呢？\n\n对话内容自动回写进灵魂画像——下一轮推荐就会把建筑美学纳入正式兴趣，搜索策略也会开始往这个方向发力。\n\n#### 场景三：你也可以主动要推荐\n\n当然，传统的\"你问→它答\"也完全支持：\n\n> **你**：\"给我推三条今天值得看的 B 站内容。\"\n>\n> **OpenClaw**（内部执行 `recommend --limit 3`，整理后回复）\n\n整个闭环都是本地的——Agent 宿主只是调 CLI 桥接，画像和数据仍留在你自己的 SQLite 文件里，一条都不会上云。\n\n> 📖 完整命令参考与常见问题，见 [Agent Bridge 接入指南](docs\u002Fopenclaw-quickstart.md) 和 [能力说明](docs\u002Fagent-integration.md)。宿主启动后先执行 `capabilities`，不要缓存旧的功能子集。\n\n## ✨ 核心特性\n\n- 🧠 **五层灵魂画像** — 事件→偏好→觉察→洞察→灵魂，推断 MBTI、认知风格和深层需求（[详解](docs\u002Fmodules\u002Fsoul.md)）\n- 🔮 **兴趣探针** — 基于心理学桥接主动猜测你可能喜欢的未知领域，猜对升级为正式兴趣，猜错安静退出\n- 🧭 **避雷探针** — 主动确认你想避开的内容形态和风格边界，确认后才写入过滤偏好\n- 🌐 **跨平台内容源** — B 站 \u002F 小红书 \u002F 抖音 \u002F YouTube \u002F X \u002F 知乎 \u002F Reddit \u002F Linux.do \u002F Bangumi \u002F V2EX \u002F 微博 \u002F 通用 Web，兴趣不再被单一平台割裂（[详解](docs\u002Fmodules\u002Fdiscovery.md)）\n- 🎯 **智能多样性** — 主题配额 + 跨平台混排 + 小源保护，告别「一刷都是 AI」\n- ⚡ **「换一批」瞬间响应且默认去重** — reshuffle ~0.6s；当前卡、推荐历史和持久化已看账本三层排除，连续刷不卡顿也不靠“忽略当前”开关\n- 💬 **有温度的推荐理由** — 像朋友一样解释为什么你会喜欢，而不是「因为你看过类似视频」\n- 🔄 **持续学习** — 苏格拉底式对话 + 行为分析 + 反馈即时生效，越用越懂你\n- ⭐ **本地优先收藏 \u002F 稍后看** — 推荐卡先写本地 SQLite，自动同步默认关闭；桌面 Web 刷新后首屏就显示保存数量徽标；B站和六个扩展平台均支持收藏与原生稍后看\u002F收藏回退，2026-07-14 七平台两类动作真实账号回归均为 `synced\u002Falready_synced`\n- 🕘 **30 天内容历史** — 插件、桌面与移动端统一显示点开过、出现未点和最近移除；按页懒加载封面，移除的本地收藏 \u002F 稍后看可一键恢复\n- 🧩 **浏览器插件** — Chrome \u002F Edge \u002F Brave \u002F Arc \u002F Firefox \u002F Safari，侧边栏推荐 + 跨站行为采集，装上就能用\n- 📱 **Flutter 原生客户端** — 独立仓库 [OpenBiliClaw-mobile](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile)，Android \u002F iOS \u002F Web \u002F Linux \u002F macOS \u002F Windows 连接同一本地后端；B 站封面 CDN 直连省两跳\n- 🚀 **图形化引导初始化** — 安装包 `\u002Fsetup\u002F`、桌面 Web 和插件都能点一下完成初始化，不碰命令行\n- 📦 **跨机器迁移** — 桌面配置页一键导出 \u002F 导入可移植配置、SQLite、画像、Cookie 与图片缓存；导入先校验暂存，可查询 \u002F 取消，重启后带回滚副本应用。`.obcbackup` 含明文敏感信息，但不含源机 API 登录密码 \u002F 会话签名密钥或扩展设备 key\n- 🔬 **自动化评测优化** — 5 个模块各带 LLM-as-judge 自优化循环，prompt 质量随轮次自动提升\n- 🔒 **完全私有** — SQLite、配置、画像与缓存都留在本机，LLM 用你自己的 Key，每个实例只为你一个人构建\n- 🔌 **本地 embedding** — 可选 Ollama + bge-m3，CPU 即可，无需额外 API Key\n- 🔧 **完全可控** — 同类型 LLM 可配置多个独立渠道，拖拽全局 \u002F 模块故障切换链；也可直接编辑画像、写自定义 Skill\n\n## 🏛️ 架构概览\n\n```text\ninteractive（对话 \u002F 配置探测）───────────────────────┐\n                                                    ├─ runtime total gate (default 4) ─ 有序实例链 ─ Provider 适配\nbackground ─ background admission (default 3) ──────┘\n             ├─ refill: expression > evaluation > supply\n             │  ├─ 低库存 supply 含探索词 \u002F 来源抽取\n             │  └─ while queued: guarantee 2, may borrow all 3\n             │     expression owner: 8 immediate \u002F 3s fixed tail \u002F 60 drain \u002F 30×2 provider\n             └─ maintenance: at most 1 while refill waits;\n                parked when canonical available = 0\n\n引导初始化：信号 → 偏好 → 完整画像提交 → 发现 → 评估 → 推荐文案 → canonical 内容可用\n                                                     └→ 终态后再调度可选探针\n\nAgent 宿主（OpenClaw \u002F Hermes \u002F WorkBuddy）\n         → capabilities(agent-bridge\u002Fv2) + JSON CLI \u002F skill descriptors\n         → integrations.agent 别名 \u002F integrations.openclaw 兼容适配器\n         → runtime \u002F soul \u002F recommendation \u002F saved_sync 业务所有者\n\n配置恢复草稿（正常或降级；业务 API 仍阻断）\n         ├→ \u002Fapi\u002Fconfig\u002Fprobe-service → 临时 registry → 总并发 gate\n         └→ \u002Fapi\u002Fconfig\u002Fdiscover-models → 精确实例 GET \u002Fmodels（不写配置）\n                                      → 可编辑模型下拉 + 本地 Effort 建议\n抖音来源补货：daemon presence 门（显式手动调用绕过）→ 单轮共享插件等待预算\n             → dy_task 终态 → pending_eval；离线零入队，失败有界退避\n本机数据迁移：导出 → 去除 api.auth 的配置 + SQLite 在线快照 + 可移植文件 → 明文 .obcbackup\n            导入(request_id) → processing(上传\u002F校验) → 私有暂存 ↔ status \u002F cancel\n                               ↘ 每次打开通用设置强制对账；applied 偏好按 migration_id 每浏览器一次\n                               → 重启取得项目 + canonical data-dir lock → 替换成功 | 回滚原数据\n持久对话回复：reply_to_turn_id + 固定时间\u002Fpayload → POST-time frozen binding → pending SQLite → rowid 串行 reply worker → 可见 completion CAS（app-stable 对话 lease）\n回复后学习\u002F对象结算：独立 11-kind typed 结算单队列 → actual worker + guard\n确认入口（待聊列表\u002F卡片）→ 单锚(kind+ref+generation) → 全入口 frozen admission \u002F 归属矩阵\n                       ├→ 待聊≤3 · 主动零冷却 \u002F 系统12h+对象72h · 确认先于用户附着\n                       ├→ worker忙：dialogue_busy + Retry-After → 三端等待态自动重试\n                       ├→ 已澄清疑惑：只展示当前持有者；当前 session 已有 turn 则隐藏\n                       ├→ frozen kind\u002Fref\u002Fgeneration → worker-only apply → event\u002Fobject\u002Fderived\u002Fmarker → applied\n                       │                                                └→ publication-only retry → 跨 session 投影 \u002F 精确解锚\n                       ├→ one context digest → prompt\u002Fhistory\u002Fevent\u002Flearn\u002Fsettlement provenance\n                       ├→ action 本地≤1s：完成 200 \u002F 阻塞 202 → popup\u002F移动\u002F桌面 1\u002F2\u002F5s 轮询≤30s\n                       └→ 疑惑 FIFO≤5 \u002F 队头 fencing \u002F 12h 补扫\n配置保存：事务落盘后统一 HTTP 202 queued\u002Fapply_revision → latest-wins 后台应用队列 → apply-status \u002F 成功失败回执；data_dir 仅持久化，完整重启后切换\n配置热重载：保持接单并排空旧 worker → 原子暂停\u002Frevoke → 新 worker；安全窗25分钟\n实时连接：runtime-stream 20s idle 心跳 → 短暂 close 显示重连中并自动续连\n封面：proxy 前台 + refresh 预取 → app-stable lane（总4\u002F后台3、前台优先）\n                               → cache-key singleflight → 白名单抓取 → 原子缓存\n```\n\n```\n┌────────────────────────────────────────────────┐\n│    浏览器插件（Chrome \u002F Firefox \u002F Safari）     │\n│   行为采集 · MAIN-world tap（评论\u002F弹幕·xhs强信号）│\n│   Cookie 同步 · 平台任务 · 侧边栏推荐             │\n└──────────────────────┬─────────────────────────┘\n                       │ HTTP 默认：IPv4 0.0.0.0 + IPv6 [::] → REST \u002F WebSocket\n                       │ HTTPS 可选：公网 Caddy :443 \u002F LAN TLS Proxy :8443 → loopback HTTP → 同一 API\n                       │ + 桌面 Web (\u002Fweb) · 移动 Web (\u002Fm) · QR LAN-IP\n                       │ + ping 预检降级 → \u002Fweb · \u002Fsetup · \u002Fm → 配置后原地恢复\n┌──────────────────────▼─────────────────────────┐\n│                  Agent 编排层                    │\n│ Skill · 对话 · Runtime · 反馈 10s 可撤销提交屏障    │\n├─────────┬──────────┬───────────┬───────────────┤\n│  Soul   │  Memory  │ Discovery │ Recommendation │\n│ 灵魂画像 │ 五层记忆  │多源发现+准入│   推荐与表达     │\n├─────────┴──────────┴───────────┴───────────────┤\n│ 普通事件\u002F推荐点击 → generic durable cursor ─┐    │\n│ 内容反馈 → content_feedback durable cursor ─┴→ buffer+cursor 同一原子 checkpoint │\n│ 30天历史：click events + recommendations + saved_item_removals → 三端分页\u002Flazy │\n│ dislike：单卡同步隐藏；主题写入后 effective snapshot → 推荐历史\u002F换批\u002F通知最终复核 │\n│ discovery 可继续宽搜；异步语义清池只优化库存，不作为展示正确性边界 │\n│ 首启 fence+task admission → listener；后台 owner recovery → tick_if_buffered │\n│ 热重载 pause\u002Fdrain\u002Frecover 后 rebind；周期画像维护才调用 tick │\n│ 对话 → typed settlement worker → learning          │\n│ 旧反馈批：unified_interest_line=false 时启用   │\n│ 初始化屏障：完整画像落盘 → 发现\u002F评估\u002F表达 → 可浏览推荐 │\n│ B站供给：普通相关性搜索 + 预算内 1×5 pubdate recent lane → 统一评估 │\n│ 候选评估：时间中性相关性 + Agent 结构化时效证据 → eligible \u002F review hold \u002F expired + 发布时间 bonus │\n│ 推荐时效 shadow：含 bonus vs 无 bonus Top10\u002F50\u002F100 聚合 → class\u002Fsource\u002Fage 审计（不改 serving）│\n│ 封面：proxy前台 + refresh预取 → app-stable 4\u002F3 lane → singleflight\u002F原子缓存 │\n│ Soul 认知纪律：待聊双轨冷却 · 单对话锚 · worker-only 结算 · 轻量 winner receipt · 疑惑 FIFO · 台账 · 深层门控 │\n│   LLM 适配层 · 多平台源适配（SourceAdapter）        │\n│   模块路由 → LLM 实例链 → Provider 适配 · 多平台源适配（SourceAdapter） │\n│   可选视觉预热：封面 \u002F 画像质心 \u002F 关键帧 + 弹幕 document embedding     │\n│   provenance（provider\u002Fmodel\u002Fdim\u002F采样）→ 成功空 \u002F 瞬时失败 → 下轮重试   │\n│   配置恢复草稿（正常\u002F降级）→ 临时探测 \u002F 精确实例 \u002Fmodels（不写盘）│\n│   本机迁移：checksummed .obcbackup → request-id pending ↔ status\u002Fcancel → 重启 replace\u002Frollback │\n│  来源族注册表：alias · strategy · URL host             │\n│             → pool 统计 · seen_items 持久化已看账本     │\n│ Bangumi 官方匿名 API → search\u002Franked\u002Flatest producer → shared eval │\n│ V2EX 匿名 API\u002FFeed → 有界 Topic\u002FReply 增强 → 五分支 producer → shared eval │\n│ V2EX 身份梯级：PAT verified > browser observed > user accepted；冲突时只暂停账号画像写入 │\n│ 时效生命周期：正文逐字证据 + code-owned 复审时钟 → 可展示 \u002F temporal_review_hold \u002F 过期 │\n│ evaluator prefilter 默认 shadow → 隐私安全决策\u002F原始分数 join → 只读质量 gate（不自动 enforce）│\n│ cognition named views → task-scoped gate：仅 awareness_confusions compact；其余 legacy │\n│ token diet：偏好逐段真实装箱；洞察 近期\u002F裁决保底 + 相关\u002F重要\u002F多样性加权≤40 → 完整历史 merge │\n│ keyword planner → 24h 安全跨 digest pending 整理 → 缺口\u002F生成\u002F领取（0=硬过期）│\n│ admitted backlog → copy 水位 ∪ 可换 topic 空位缺口 → eligible-first 补文案（0=legacy drain-all）│\n│ API projected=available+eligible copy-pending+evaluated → 3×30 worker → 串行入池 → 四端 │\n│ API raw 断供 → 欠份额来源即时并行补给 → 真实新增清退避 \u002F 重复空转阶梯退避 │\n│ 惊喜就绪门：正式推荐词\u002F主题就绪 + seen_items 硬过滤 → 打分并原子快照 → 四端 × 写回已看账本 │\n│ 库存 API\u002FOpenClaw 启动钩子 → 历史恢复\u002F原子维护 → 再暴露 LLM │\n│ 换屏快路：当前卡硬排除 → hold\u002Fstale 清退 + PoolServeSnapshot → 最终时效复核+recommendation\u002Fshown → reshuffle 事件 │\n│ 平台定向（仅 PC Web Tab）：source_platform → 平台候选（不跨平台补位）→ 同一排序\u002F文案\u002F持久化 │\n│ 平台库存：platform-availability → 同一 canonical 可推集合 → total == Σ by_platform │\n│ 后台维护：独立 DB worker → ≤50 行\u002F批 → 释放写锁；未变化跳过 \u002F 10min 巡检 │\n│ \u002Fapi\u002Fsaved\u002F* · 保存 Router · B 站原生保存 Adapter      │\n│ 六平台 Adapter → ExtensionNativeSaveBroker → extension_native_save_jobs │\n│ 七平台 source task multiplex：xhs \u002F dy \u002F yt \u002F x \u002F zhihu \u002F reddit \u002F linuxdo │\n│ 七源 source task multiplex：xhs \u002F dy \u002F yt \u002F x \u002F zhihu \u002F reddit \u002F v2ex  │\n│ 扩展在线周期回拉（默认关闭，显式 opt-in）：Runtime → 六源 bootstrap task（全局串行）→ installed extension │\n│ task-result → staged durable ingress → 原子有界 seen keys（每源5000）→ terminal │\n│ V2EX 完整收藏快照 → 连续两次缺失确认 → durable retraction\u002Frestore outbox → account-scoped Node affinity │\n│ XHS 自动任务：来源\u002F调度领取门 → SQLite 节流\u002F风控冷却 → 关闭或限流时不开新 tab │\n│ XHS 搜索：inactive tab → MAIN 搜索响应归一化 → isolated replay \u002F DOM 兜底   │\n│ Linux.do：isolated task tab → 同源 GET → 五路 discovery \u002F 三路 bootstrap │\n│ extension_native_save_jobs -> \u002Fapi\u002Fsources\u002F\u003Cslug>\u002Fnext-task -> installed extension │\n│ exact OpenBiliClaw \u002F YouTube Watch Later 目标 → 安全 task-result          │\n│ trusted-local E2E 精确授权 → 单 item saved sync → 六字段安全 callback      │\n│ unsupported_adapter_missing 可重试 · unsupported_content_type local-only │\n│ Canonical ID · Local-first SavedSync · Task Poll · SQLite（事件 · 已看账本 · 候选池 · 推荐 · 保存\u002F任务 · 移除快照）│\n│ 六平台 adapter → broker → shared MV3 recovery barrier → Reddit\u002FX\u002FYT\u002FXHS\u002FDY\u002FZhihu executor（6\u002F6 fixture + real-account）│\n└────────────────────────────────────────────────┘\n\nWeb\u002FAPI durable → rowid 顺序回复 worker → app-stable 对话 lease(max active 1) → SocraticDialogue(queued) → 可见 CAS\n惊喜\u002Flegacy\u002F兴趣探针\u002F避雷探针 chat ────────────────────────────────┘（回复与必要副作用同 lease）\n回复完成后的 11-kind learning\u002Fsettlement → 独立 typed 结算单 worker（不属于 reply backlog）\nCLI\u002FOpenClaw → SocraticDialogue(legacy_direct) → user+agent 历史 → 队列\u002Fguard 外 direct learning\n学习 → 绕过后台门禁、保留总并发 ── 新避雷：共享清池 → content_cache\n瞬态\u002Fprovider\u002F超时\u002F取消 → 回滚临时历史 → durable pending + 队头有界重试；显式空\u002F无效响应 → failed CAS\ndurable turn → 固定时间\u002Fpayload → 确认入口（待聊列表\u002F卡片） → frozen anchor admission → relation matrix\n                                                   └→ 卡片\u002F锚\u002Fchat\u002Fprobe\u002Fconfusion\u002Freplay\u002Flegacy 全部 worker-only\n卡片 action → 同步 200（空队列快路）| 202 processing → popup\u002F移动\u002F桌面轮询；CLI 无 action\n\n桌面首屏：推荐 hydration │ runtime hydration │ health\u002Fprofile\u002Factivity\u002Fconfig 次级 hydration（三分支独立）\n桌面后台恢复（已有卡片）：跳过可能补池的推荐 GET │ 只同步 runtime \u002F 库存状态\n\n海外请求：设置页 `[network].mode` → 系统代理（默认）\u002F 直连 \u002F 自定义代理 → LLM、YouTube、X\u002FReddit CLI、Bangumi、更新、GitHub 项目统计；国内平台（含 V2EX）保持独立直连\n手动抖音发现：CLI discover → daemon 同款 producer → 统一关键词终态 → 插件 search\u002Fhot\u002Ffeed → 待评估池\n```\n\n### 可选视觉与弹幕预热\n\n开启 `[discovery].keyframe_enabled` 时，只要多模态 embedding 可用，系统也会构建关键帧与 P1\n共用的视觉质心；P1 封面 bonus 仍只由 `visual_profile_enabled` 控制。关键帧按全局采样并把\n采样算法、`keyframe_max_frames`、embedding fingerprint 和维度写入缓存 provenance；换模型或\n采样配置会安全重建。partial 关键帧结果携带稳定 sampled-slot，成功槽位可先入缓存但不落完成戳；\n只有确认 no-data 或完整采样且所有 embedding 成功才完成，失败槽位保留下轮重试资格。\n\n`keyframe_fetch_limit`、`danmaku_fetch_limit` 和 `danmaku_max_chars` 同时受配置文件与配置 API\n范围校验；弹幕摘要按完整 `danmaku_max_chars` 做 document embedding，不静默截成固定前缀。\n跨平台视觉 bonus 以 0 为固定点；多平台正负两侧对齐到当前全局观测极值并受组合 cap 限制，单平台不放大绝对幅度，0 \u002F 缺失保持 0。完整契约见\n[`docs\u002Fmodules\u002Frecommendation.md`](docs\u002Fmodules\u002Frecommendation.md) 与 [`docs\u002Farchitecture.md`](docs\u002Farchitecture.md)。\n\n远程扩展连接采用显式、默认关闭的设备认证：`ext-key generate` → 配置仅存摘要 → `\u002Fapi\u002Fauth\u002Fextension-token` 换短会话；HTTP 使用 Bearer Header，WebSocket \u002F 图片代理仅携带短会话 query。\n\n公网域名的 Docker 部署可叠加默认关闭的 [Caddy HTTPS overlay](docs\u002Fhttps-deployment.md)：自动\n申请 \u002F 续期受信证书，通过共享 loopback 代理 REST 与 WebSocket，并把宿主机 `8420` 收紧为\n仅本机可达。可信局域网 \u002F 自管环境仍可选择内置 TLS Proxy：精确校验 HTTPS Origin\u002FHost，\n并为本地 CA 证书管理显式 SAN；无远程 SAN 时证书只适合 localhost。两种入口互斥，默认 HTTP\n路径完全不变。\n\n> 完整架构细节（runtime 状态机、候选池计数、画像覆盖层等）见 [架构设计](docs\u002Farchitecture.md) 与 [可视化架构图](docs\u002Findex.md#可视化架构图)。\n\n### 内容发现引擎\n\n**多源适配架构**——通过 `SourceAdapter` 协议统一接入不同平台，每个平台有自己的发现方式：\n\n| 来源 | 发现方式 | 取数方式 |\n|------|----------|------|\n| **B 站** | 搜索 · 趋势 · 关联链 · 跨域探索 | 后端 WBI 签名 API 直连，降级时插件真实搜索页兜底 |\n| **小红书** | 被动收集 · 搜索 · 创作者订阅 · 初始化导入 | 插件在已登录页面读取，零后端爬取 |\n| **抖音** | 初始化导入 · 搜索 · 热点 · 推荐流 | CLI\u002Fdaemon 共用正式 producer，插件后台 tab 模拟 DOM 操作，候选统一进入待评估池 |\n| **YouTube** | 初始化导入 · Takeout 离线导入 · 搜索 \u002F 热门 \u002F 频道 | 插件读画像信号，日常发现后端直连补池 |\n| **X（Twitter）** | 初始化导入 · 搜索 · For-You · 关注作者 | discovery 使用服务端只读 cookie 重放；原生书签 executor 已接入但未实号验证 |\n| **知乎** | 初始化导入 · 搜索 · 热榜 · 推荐 · 作者 · 相关 | 插件在已登录 tab 内读取，返回文字卡片 |\n| **Reddit** | 初始化导入 · 搜索 · 热门 · Subreddit · 相关 | discovery 默认 rdt-cli；Saved executor 已接入但未实号验证 |\n| **Linux.do** | 书签 \u002F 点赞 \u002F 阅读记录初始化 · 搜索 · 热门 · 最新 · 作者 · 相关 | 插件在真实 `linux.do` 任务 tab 内执行同源只读 GET；公开发现无需登录，不上传 Cookie 或原始响应 |\n| **Bangumi** | 公开收藏初始化 · 搜索 · 排名 · 按日期浏览 | 官方匿名只读 API；无需 Cookie\u002Ftoken，日期结果可能含未播条目 |\n| **V2EX** | 搜索 · Node · Tab · 热门 · 最新 | 官方匿名 API \u002F JSON Feed；PAT 可选增强 API 2.0，Topic 为无封面文字卡 |\n| **通用 Web** | 浏览器 + LLM 抽取 | 适配任意网页 |\n\n发现之后的统一流程：\n\n- **安全取数** — 后端不代登录、不爬你看不到的内容；所有平台复用你浏览器里已有的登录会话，首轮画像信号只在你点「开始初始化」后按所选来源拉取。账号周期回拉默认关闭，只有显式设置 `source_incremental_enabled=true` 后，已启用来源才会在扩展在线时按全局 \u002F 逐源周期运行；这不影响手动初始化、手动拉取或后台内容发现。抖音仍额外默认关闭，Linux.do 任务只允许 GET，`_t` 仅作布尔登录提示。\n- **连续统一评估** — 各来源原始候选进入同一待评估池，由共享 evaluator 结合灵魂画像、正文和近期负反馈批量打分；默认 3×30 worker 任一完成即补位，调度只计 durable 库存，串行 admission 按实时 headroom 封顶。可选 embedding 预过滤默认先 shadow 观测，确认无误后才 enforce 跳过明显低相似候选。\n- **多样性选择** — 平台配额 → 主题去重 → 风格均衡 → 跨平台混排 → 数量封顶；开箱只启用 B 站，其余平台在设置里显式打开。\n\n> 各平台任务链路、候选池计数、fallback 策略等完整机制见 [内容发现引擎文档](docs\u002Fmodules\u002Fdiscovery.md)。\n\n### 灵魂引擎\n\n从用户行为中推断：\n- **人格画像** — 自然语言描述的用户画像\n- **MBTI** — 四维度 + 置信度\n- **认知风格** — 信息处理偏好\n- **深层需求** — 心理层面的内容驱动力\n- **猜测兴趣** — 系统推测的潜在兴趣方向（分子料理、建筑美学、制表工艺...）\n\n## 🏗️ 项目结构\n\n```\nOpenBiliClaw\u002F\n├── src\u002Fopenbiliclaw\u002F          # Python 后端核心\n│   ├── agent\u002F                 # Agent 编排和 Skill 系统\n│   ├── soul\u002F                  # 用户灵魂引擎 (深度画像 · MBTI · 兴趣\u002F避雷探针)\n│   ├── memory\u002F                # 多层网状记忆系统\n│   ├── discovery\u002F             # 内容发现引擎 (多源策略 · 待评估池 · 配额均分 · 多样性选择)\n│   ├── recommendation\u002F        # 推荐与表达引擎 (跨平台混排)\n│   ├── sources\u002F               # 多源适配层 (SourceAdapter 协议，含 V2EX 任务桥)\n│   │   ├── bilibili_adapter   # B 站 (API 直连)\n│   │   ├── bangumi_client     # Bangumi 官方匿名 v0 API 客户端\n│   │   ├── bangumi            # Bangumi 条目 \u002F 公开收藏归一化\n│   │   ├── v2ex_client        # V2EX 匿名 API\u002FFeed 与可选 PAT 客户端\n│   │   ├── v2ex               # V2EX Topic 归一化\n│   │   ├── xiaohongshu_adapter # 小红书 (扩展代理)\n│   │   ├── xhs_tasks          # 小红书插件任务队列 \u002F bootstrap_profile\n│   │   ├── dy_tasks           # 抖音插件任务队列 \u002F bootstrap_profile + search + hot + feed\n│   │   ├── yt_tasks           # YouTube 插件任务队列 \u002F bootstrap_profile\n│   │   ├── zhihu_tasks        # 知乎插件任务队列 \u002F bootstrap_events + search\u002Fhot\u002Ffeed\u002Fcreator\u002Frelated\n│   │   ├── reddit_tasks       # Reddit bootstrap 插件任务 \u002F extension fallback discovery \u002F rdt 默认 discovery helpers\n│   │   ├── linuxdo_tasks      # Linux.do 同源只读 bootstrap \u002F 五路 discovery 任务\n│   │   └── web_adapter        # 通用 Web (Playwright + LLM)\n│   ├── youtube\u002F               # YouTube Takeout 离线导入解析\n│   ├── api\u002F                   # 本地 FastAPI (配置回滚 \u002F 降级模式 \u002F popup API)\n│   ├── tls_proxy.py           # 默认关闭的 LAN\u002Fself-managed HTTPS 入口\n│   ├── runtime\u002F               # 后台刷新、feedback 合并、presence gate、CLI\u002F桌面共享 autostart 对账、Ollama、降级 RuntimeContext\n│   ├── bilibili\u002F              # B 站接入层 (WBI 签名 · 速率控制)\n│   ├── llm\u002F                   # 多模型 LLM 适配 + 结构化 JSON 容错\n│   └── storage\u002F               # 数据存储层\n├── extension\u002F                 # Chrome\u002FFirefox\u002FSafari 插件（含 Linux.do \u002F V2EX \u002F 微博只读任务桥）\n├── skills\u002F                    # 内置 Skill 定义\n├── docs\u002F                      # 项目文档\n└── tests\u002F                     # 测试 (1900+)\n```\n\n> 原生移动客户端（Flutter，Android \u002F iOS \u002F Web \u002F Linux \u002F macOS \u002F Windows）在独立仓库 [OpenBiliClaw-mobile](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile)。\n\n## 🛠️ 技术栈\n\n| 模块 | 技术 |\n|------|------|\n| 后端 | Python 3.11+ |\n| 浏览器插件 | TypeScript + Chrome Extension (Manifest V3) |\n| LLM | 同一 Provider 类型可建多个独立 Base URL \u002F token \u002F model 实例，并配置全局及模块有序降级链；首次迁移自动保留旧配置备份，`config-export-legacy` 可生成旧版副本；内置 Gemini \u002F DeepSeek \u002F OpenAI \u002F Claude \u002F OpenRouter \u002F OrcaRouter \u002F Ollama，兼容任意 OpenAI 协议服务；OpenAI 可实验性复用 Codex CLI ChatGPT OAuth（官方 Codex 传输） |\n| B 站交互 | 自研 API 客户端 (WBI 签名 · v_voucher 自动恢复 · 速率控制) |\n| 小红书交互 | 扩展 DOM\u002Fstate 元数据提取 + 插件任务调度；search \u002F creator 在后台标签执行，search 用 MAIN-world 页面响应桥避开隐藏页虚拟 DOM 限制；仅滚动型初始化会前台打开 `\u002Fexplore` 并点击页面 profile 入口（零后端爬取） |\n| 抖音交互 | 扩展 DOM + MAIN-world 被动 fetch tap + 插件任务调度；初始化导入发布 \u002F 收藏 \u002F 点赞 \u002F 关注信号，search \u002F hot \u002F feed discovery 从抖音首页模拟 DOM 操作触发加载，search\u002Ffeed 被动收集页面响应 \u002F 渲染结果，hot 可用热榜 `group_id` seed 走已登录页面 related fallback（零后端代登录） |\n| YouTube 交互 | 扩展 DOM 任务调度读取观看历史 \u002F 订阅 \u002F 点赞；Google Takeout 可离线导入旧数据 |\n| X 交互 | 服务端 cookie 重放（默认安装内置 `twitter-cli`，只读且 lazy import）；扩展捕获你在 x.com 的互动并同步 cookie；推文为纯文本卡片 |\n| 知乎交互 | 扩展任务调度在已登录浏览器内读取事件 smoke \u002F 初始化画像信号和 search \u002F hot \u002F feed \u002F creator \u002F related 候选；回答 \u002F 文章 \u002F 问题为纯文本卡片 |\n| Reddit 交互 | 默认安装内置 rdt-cli，读取 search \u002F hot \u002F subreddit \u002F related 候选；插件自动同步 `reddit_session` 到 rdt credential，`rdt login` 仅作手动 fallback；rdt 未登录 \u002F 不可用或显式选择 extension 时，扩展任务调度在已登录浏览器内读取 discovery；bootstrap saved\u002Fupvoted\u002Fsubscribed 始终走插件；帖子 \u002F 评论为纯文本卡片 |\n| Linux.do 交互 | 普通页面使用统一行为 adapter；隔离任务 tab 只执行同源 GET，支持 search \u002F hot \u002F feed \u002F creator \u002F related 与 bookmarks \u002F likes \u002F read_history；只回传归一化字段或结构化错误，Cookie 和原始响应不上报 |\n| Bangumi 交互 | 官方匿名只读 v0 API；search \u002F ranked \u002F 按日期浏览进入统一候选池，可选公开用户名读取公开收藏用于初始化；不收 Cookie\u002Ftoken，不做站内写回 |\n| V2EX 交互 | 官方匿名 API \u002F Feed；search \u002F node \u002F tab \u002F hot \u002F latest 进入统一候选池，可选 PAT 只读增强；扩展按需读取四个只读 bootstrap scope，心跳只回传登录布尔值；不发帖、不回复、不收藏、不关注 Node |\n| 可选 HTTPS | 公网域名使用固定版本 Caddy Docker overlay 自动管理证书；LAN\u002Fself-managed 使用 Python TLS Proxy + `[tls]` extra，本地 CA\u002FSAN；默认关闭且两种入口互斥 |\n| 存储 | SQLite + Embedding 向量索引 |\n| 容器化 | Docker Compose (后端) |\n| Agent 框架 | 自研轻量框架 |\n\n## 📖 文档\n\n- [文档导航](docs\u002Findex.md) — 一站式文档入口\n- [常见问题 FAQ](docs\u002Ffaq.md) — 安装 \u002F 连接 \u002F 更新高频问题速查\n- [项目规格说明书](docs\u002Fspec.md) — 完整的项目设计与规划\n- [架构设计](docs\u002Farchitecture.md) — 系统架构详解\n- [记忆系统设计](docs\u002Fmemory-design.md) — 多层网状记忆架构\n- [内容发现引擎](docs\u002Fmodules\u002Fdiscovery.md) — 多源发现 + 平台配比 + 多样性选择\n- [灵魂引擎](docs\u002Fmodules\u002Fsoul.md) — 深度画像 + MBTI + 兴趣猜测\n- [CLI 参考](docs\u002Fmodules\u002Fcli.md) · [配置参考](docs\u002Fmodules\u002Fconfig.md)\n- [开发指南](docs\u002Fcontributing.md) — 如何参与贡献\n- [Flutter 移动客户端](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw-mobile) — 独立仓库的原生 App（Android \u002F iOS \u002F Web \u002F 桌面）\n\n## 📜 更新日志\n\n最新版本见上方 [最近更新](#最近更新)；完整历史见 [docs\u002Fchangelog.md](docs\u002Fchangelog.md)。普通用户从 [Latest Release](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Freleases\u002Flatest) 的 `openbiliclaw-v*` 聚合页下载插件包和可用桌面安装包；自动化频道 release 仍分别保留 `backend-v*`、`extension-v*`、`desktop-v*`。\n\n## 🗺️ 后续规划\n\nOpenBiliClaw 的目标是做你的**全网个性化内容入口**——从 B 站起步，已覆盖小红书、抖音、YouTube、X、知乎、Reddit、Linux.do、Bangumi、V2EX、微博与通用 Web，下一步：\n\n- **更多内容源** — 各类 BBS \u002F 论坛与垂直社区；每个平台都遵循统一来源契约与验收门禁\n- **跨平台兴趣融合** — 你在 B 站看的机械键盘 + 小红书种草的咖啡器具 + 抖音点赞收藏的短视频偏好 + YouTube 长视频观看和订阅 + X 点赞收藏的资讯 = 一个完整的你。画像融合让推荐不再割裂\n- **更智能的发现** — 跨平台关联推荐（\"你在小红书关注了咖啡器具，B 站有个手冲咖啡纪录片你可能喜欢\"，或用抖音 feed 口味补足短视频兴趣）\n- **社区生态** — 用户自定义 SourceAdapter、共享发现策略、贡献平台适配器\n\n## 🤝 贡献\n\n欢迎贡献！请查看 [开发指南](docs\u002Fcontributing.md) 了解如何参与。\n\n## 🙏 致谢\n\n- 感谢 [@addtion99](https:\u002F\u002Fgithub.com\u002Faddtion99) 在 [#8](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F8) 提出浏览器插件后端地址 \u002F 端口可配置需求，并给出 popup 侧实现思路。\n- 感谢 [@jiaobenhaimo](https:\u002F\u002Fgithub.com\u002Fjiaobenhaimo) 在 [#53](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F53) 贡献 Safari 扩展、稍后再看、YouTube 搬运检测、营销号过滤等功能设计与实现，其中 OR-join 去重修复和稍后再看功能已合入主线。\n- 感谢 [@tangle111-design](https:\u002F\u002Fgithub.com\u002Ftangle111-design) 在 [#69](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F69) 贡献 `style_key` 观看模式、推荐语气、B 站初始化和 LLM \u002F 画像流程方面的功能探索；相关思路已拆分评审并选择性合入主线。\n- 感谢 [@DongLanQwQ0](https:\u002F\u002Fgithub.com\u002FDongLanQwQ0) 在 [#102](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F102) 贡献桌面 Web 侧栏折叠动画、delight 卡片拖拽死区、栈式 toast 通知等交互细节打磨，已合入主线。\n- 感谢 [@DongLanQwQ0](https:\u002F\u002Fgithub.com\u002FDongLanQwQ0) 在 [#110](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F110) 贡献桌面 Web 主题引擎 oklch 化重构，引入 `--hue-primary` 单一控制点与 12 色相可调拾色器、五级强调色阶与统一交互态，已合入主线。\n- 感谢 [@wuwafly3](https:\u002F\u002Fgithub.com\u002Fwuwafly3) 持续贡献多模态推荐能力：在 [#100](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F100) 中实现 DashScope（阿里百炼）多模态 embedding provider 与封面 image-only 向量，并在 [#135](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F135) 中进一步实现用户视觉画像（P1）、B 站弹幕语义（P2）、视频关键帧（P3）及跨平台视觉加权管线；主干在这些实现上完成契约加固、失败重试、配置界面与真实环境验收。\n- 感谢 [@LHMQ878](https:\u002F\u002Fgithub.com\u002FLHMQ878) 在 [#182](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\u002Fpull\u002F182) 修复 `agent_bootstrap` 对引号键 TOML 实例段（如 `[llm.instances.\"openai\"]`）的 section 匹配，避免二次运行 bootstrap 时重复声明表导致 `tomllib` 解析失败，已合入主线。\n\n## ⭐ Star History\n\n如果 OpenBiliClaw 帮你找回了对推荐流的控制权，[点个 Star](https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw) 是对「继续适配更多平台」最直接的投票。\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwhiteguo233\u002FOpenBiliClaw\">\n  \u003Cimg alt=\"GitHub Stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fwhiteguo233\u002FOpenBiliClaw?style=flat-square&logo=github&label=Stars\" \u002F>\n\u003C\u002Fa>\n\n> ⚠️ 实时 Star 历史图表临时替换为 Star 徽章：GitHub 自 2026-06-30 起将 stargazers API 限制为仅仓库管理员\u002F协作者可读，star-history 图表暂时无法渲染，待上游恢复或配置新的加密 token 后换回。\n\n## 隐私速览\n\n默认数据流向：浏览器插件 → 你配置的本地 OpenBiliClaw 后端 → 本机 SQLite。插件不会把数据发送到 OpenBiliClaw 开发者运营的服务器。Linux.do 的 `_t` 仅在浏览器内转换为登录布尔，Cookie 值、CSRF 数据和原始站点响应不上传。若你配置云端 LLM \u002F embedding，相关内容会按你的配置发送给对应服务商。详见 [隐私政策](docs\u002Fprivacy.md)。\n默认数据流向：浏览器插件 → 你配置的本地 OpenBiliClaw 后端 → 本机 SQLite \u002F 数据文件。插件不会把数据发送到 OpenBiliClaw 开发者运营的服务器。若你配置云端 LLM \u002F embedding，相关内容会按你的配置发送给对应服务商。你主动从配置页导出的 `.obcbackup` 可能包含模型 \u002F 来源 API Key、Cookie、画像和历史，且**没有加密**；它会排除源机整段 API auth（密码、session、设备 key 等），但仍只能在可信设备间传递。详见 [隐私政策](docs\u002Fprivacy.md)。\n\n## 📄 License\n\n[MIT](LICENSE)\n\n## 友情链接\n\n\u003Cdetails>\n\u003Csummary>友情链接\u003C\u002Fsummary>\n\n[![LINUX DO](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLINUX_DO-友情链接-4D6BFE?style=flat-square&logo=discourse&logoColor=white)](https:\u002F\u002Flinux.do\u002F)\n\n\u003C\u002Fdetails>\n","OpenBiliClaw 是一个本地优先、开源的跨平台 AI 内容发现 Agent，旨在基于用户行为与反馈构建私有化心理画像，并主动从 B 站、小红书、抖音、YouTube、X、知乎、Reddit、微博等平台及开放 Web 抓取个性化内容。核心特点包括：纯本地运行（默认 SQLite 存储）、支持自进化推荐、兼容 DeepSeek Harness 插件生态、提供 Chrome 扩展与多端客户端。适用于注重隐私的个人用户、希望摆脱中心化推荐算法的信息消费者，以及需离线\u002F可控环境部署的内容聚合场景。",2,"trending"]