把 OpenBiliClaw 本地推荐 Agent 的消费侧搬进 DSH Web 界面,左栏按钮呼出抽屉面板,并向 Agent 注册 22 个 openbiliclaw_* 工具让推荐/反馈/画像闭环。
- 语言
- JavaScript
- License
- BSD-3-Clause
- 分支
- main
安装
$ dsh plugin --profile web add github:whiteguo233/dsh-openbiliclaw在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 whiteguo233/dsh-openbiliclaw:先查看仓库 https://github.com/whiteguo233/dsh-openbiliclaw.git 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
把本地运行的 OpenBiliClaw 个性化推荐 Agent 集成进 DSH 的 Web GUI——左侧栏点开右侧抽屉即可看到推荐/收藏/对话/画像/设置,同时向 DSH Agent 注册 22 个工具,让 Agent 也能读取推荐、回应探测、保存内容,形成"推荐 → 反馈 → 画像 → 更准的推荐"的闭环。
核心能力
- 在 DSH 左侧栏底部追加 OpenBiliClaw 按钮,点击从右侧滑出抽屉面板(推荐/内容库/对话/画像/设置/通知)
- 向 DSH Agent 注册 22 个
openbiliclaw_*工具,覆盖推荐拉取、追加、换一批、提交反馈、惊喜卡片、对话、画像、保存/移除/列表、运行时状态等 - 自动加载
openbiliclaw-adapterskill(解析仓库内 SKILL.md frontmatter),让 Agent 在需要时可作为长期指令调用 bridge - 通过 HTTP 调用运行中的 OpenBiliClaw 后端
serve-api的/api/agent-bridge端点(基于 agent-bridge/v2 JSON 协议),避免每次 fork Python 进程 - 面板体验覆盖深色模式跟随、跨平台封面代理(含失败回退为文本/媒体占位)、WebSocket 实时推送、消息抽屉与「同步到平台」进度
技术实现
- 语言: TypeScript(Node 侧 ESM)+ React 18(浏览器侧面板)
- 关键依赖:
@deepseek-ai/cordis ^4.0.1(插件挂载)、@deepseek-ai/dsh-tools ^0.1.0-rc.6(tool 注册)、@deepseek-ai/dsh-client-runtime / dsh-client-ui-slots ^0.1.0-rc.6(slot/theme 注入)、原生fetch(与后端 HTTP 通信) - 架构模式: 同时声明
dsh.bundle.patch(cordis 行插入 node 半)与dsh.client.inject(浏览器半注入 runtime + ui-slots);Node 半通过ctx.tools.register/ctx.skills.register注册 22 个工具与 1 个 skill;Browser 半通过PanelLayoutController在帧 grid 中追加一列并重写grid-template-columns(push 中心列而非 overlay),仅侧栏按钮走sidebar.footer.actionslot - 入口文件:
src/index.ts(node 半)/src/client/index.ts(browser half)/cordis.patch.yml(cordis 注入声明)
适用场景
已在本地部署 OpenBiliClaw 并希望"不离开 DSH"就完成消费侧操作的用户:在 DSH 会话中边聊需求,边通过右侧抽屉查看跨平台推荐(小红书 / B 站 / 抖音 / YouTube / X / 知乎 / Reddit / Linux.do / V2EX / 微博),处理收藏/稍后看、回复兴趣/回避探测、查看画像,Agent 也可借助注册的 22 个工具把推荐上下文纳入回答,让"我看什么 → 你怎么想 → 我再推荐"全程闭环在 DSH 内。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness(DSH) | 0.1.0-rc.6+ | 插件 peer ABI 与 dsh-* 包 @deepseek-ai/cordis ^4.0.1 对齐;README 提示不要在同 profile 混用 0.0.1 时代的工具包 |
| OpenBiliClaw 后端 | 启用 Agent Bridge v2 | 默认监听 127.0.0.1:8420;本插件只做消费侧,爬取/源管理仍由主项目承担 |
| Node | 未声明 | package.json 未声明 engines 字段 |
| 平台 | 跨平台 | 仅声明 dsh.client.platform: "web",无 os/cpu 限制 |
| 原生模块 | 无 | 全部依赖为 JS/TS 包,无 node-pty / node:sqlite 等原生依赖 |
安装方式
dsh plugin --profile web add github:whiteguo233/dsh-openbiliclaw
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
apiUrl | string | OpenBiliClaw 后端 serve-api 的根地址;node 半的所有 bridge 工具走 <apiUrl>/api/agent-bridge。地址末尾不要带 /api。 | http://127.0.0.1:8420 |
workdir | string(必填) | OpenBiliClaw 主项目根目录;用于解析 config.toml / data/ 与读取 SKILL.md。 | /Users/white/workspace/OpenBiliClaw |
skillPath | string | adapter skill 文件绝对路径;找不到时只打 warn 不报错,工具仍可工作但 DSH 中无 skill 元数据。 | <workdir>/skills/openbiliclaw-adapter/SKILL.md |
timeoutMs | number | 单次 bridge HTTP 调用超时(毫秒),应用到所有 22 个工具。 | 300000(5 分钟) |
面板内的"设置 → 通用 → 连接"可改后端地址(保存到 localStorage,立即生效);该地址用于浏览器侧的
/api/*直接调用,与上表apiUrl(Node 侧)是两套配置。
常见问题
Q: 这个插件和官方 DSH 的设置面板冲突吗?
A: 不冲突。插件只新增内容:在侧栏底部加按钮、在帧 grid 追加最右侧一列(推开中心列,不覆盖),不改动 DSH 自带的列布局。面板挂载失败时只 console.error,不影响 DSH 主流程。
Q: 22 个工具是 Agent 自动会用,还是要我在对话里点名?
A: DSH Agent 会按需调用。openbiliclaw_recommend / openbiliclaw_chat / openbiliclaw_get_profile 等可在需要时被 LLM 选为工具调用;要严格控范围也可在对话里显式点名。
Q: requestId 是必须的吗?
A: 仅对写操作类工具强制要求(openbiliclaw_submit_feedback / openbiliclaw_respond_delight)。重试同一动作必须复用同一个 requestId(最长 400 字符),不同动作之间不要复用——这是后端的幂等键,复用错了会丢反馈或写错条目。
Q: 怎么看到"惊喜推荐"(proactive delight)?
A: 两种方式:面板会在 WebSocket 推送里收到 delight.candidate 事件并直接渲染在抽屉顶部;Agent 侧可调用 openbiliclaw_get_delight 拉取当前待处理卡,或调用 openbiliclaw_respond_delight 用 view/like/dislike/dismiss/chat 应答(dismiss 会将该条永久从推荐中剔除)。
Q: 兴趣/回避探测会主动弹给我吗?
A: 后端会通过 WebSocket 推送 interest.probe / avoidance.probe 事件,面板用乐观状态机立即反馈;Agent 侧也能调用 openbiliclaw_next_probe / openbiliclaw_next_avoidance_probe 取下一个待回答问题,并用 openbiliclaw_respond_interest_probe / openbiliclaw_respond_avoidance_probe 答复(confirm/reject/defer/chat,reject 兴趣会有 30 天冷却)。
Q: 收藏的内容会同步到 B 站账号吗?
A: openbiliclaw_save_local / openbiliclaw_remove_saved / openbiliclaw_list_saved 全部只写本地 SQLite,不会同步到外部账号。面板里的"同步到平台"按钮走主项目的同步接口,需要登录 B 站账号才会成功;非 B 站平台条目标注为"仅本地保存"。
上手难度
入门 — 把 workdir 填对、确保 OpenBiliClaw 后端开启 Agent Bridge v2,其他配置都有合理默认值,开箱即可使用面板与 Agent 工具。
已知问题与限制
- README 列出的配置项
pythonBin/stdoutMaxBytes在源码中不存在:当前实现走 HTTP(src/bridge.ts:74-99),不调用 Python 子进程,也无输出字节上限;按 README 写配置不会生效也不会报错。 - 插件消费侧有意不包含爬取、平台源管理、账号同步、
sync-saved等写副作用能力(src/index.ts:7-10注释明示),这些仍需在主项目 / 浏览器扩展 / 手机版内操作。 - 当
skillPath指向的文件读不到时,DSH skill 注册会静默跳过(仅打 warn),工具可工作但 LLM 看不到 skill 元数据;workdir配错会触发该分支。 - README 与 package.json 均未声明 Node 版本要求;若 DSH 主机 Node 版本过低,可能影响其他
dsh-*同级依赖;建议遵循 DSH 文档推荐的 Node 版本。 - 浏览器面板采用 DOM 层扩展帧 grid(
PanelLayoutController改写grid-template-columns),不依赖官方asideslot;如果未来 DSH 帧结构变化,可能需调整panel.module.css/layout.ts(源码注释src/client/index.ts:4-7已注明此风险)。
OpenBiliClaw 是本地运行、跨平台、可调教的个性化内容推荐 Agent;本仓库是它的 DeepSeek Harness 客户端插件——DSH 左侧栏一个 OpenBiliClaw 按钮,点开右侧滑出抽屉(推荐/内容库/对话/画像/设置),并注册 22 个 Agent Bridge 工具,让 Agent 读推荐、答探测、闭环学习。
English | 中文
这是什么
OpenBiliClaw 是一个本地运行、跨平台、可调教的个性化内容推荐 Agent:从你在 B 站 / 小红书 / 抖音 / YouTube / X / 知乎 / Reddit / Linux.do / Bangumi / V2EX / 微博的使用、反馈与对话里持续深化你的心理画像,再主动去这些平台为你找内容。
本仓库是它的 DeepSeek Harness(DSH)客户端插件,把「消费侧」搬进 DSH 的 Web GUI:
- 人用侧:在 DSH 左侧栏底部加一个 OpenBiliClaw 按钮,点开从右侧滑出一个与浏览器插件 / 手机版视觉一致的抽屉面板——推荐流、惊喜推荐、内容库、苏格拉底式对话、用户画像、后端设置,全部在 DSH 里点开即用;
- Agent 用侧:注册 22 个
openbiliclaw_*工具(Agent Bridge v2 CLI)和openbiliclaw-adapterskill,让 DSH 里的 Agent 能读取推荐、回答探测、保存内容、和用户对话,形成「推荐 → 反馈 → 画像 → 更准的推荐」的闭环。
典型场景:左边和 Agent 聊需求,点左下角的 OpenBiliClaw 按钮,右侧抽屉滑出来顺手刷两条推荐,点个「收藏」,过一会儿弹出兴趣探测,和它聊两句,画像就更懂你了——全程不离开 DSH。
边界说明:本插件只做消费侧。爬取 / 平台源管理 / 账号同步等能力仍属于主项目(后端 + 浏览器插件 / 手机版),有意不带入 DSH。
截图(真实使用场景)
| 推荐 · 亮色 | 推荐 · 深色(跟随 DSH 主题) |
|---|---|
![]() | ![]() |
| 内容库 | 对话 | 画像 |
|---|---|---|
![]() | ![]() | ![]() |
| 设置 · 模型 | 设置 · 调度 | 设置 · 通用 |
|---|---|---|
![]() | ![]() | ![]() |
功能
推荐(For You)
- 惊喜推荐 hero 大图:整卡宽的 16:9 封面 + ✨ 角标 + 「💗 91% 匹配」分数胶囊,展开可见推荐理由、看看/喜欢/稍后看/收藏/少来点/聊一聊
- 跨平台封面兼容:与浏览器插件 / PC Web 统一经后端
/api/image-proxy加载,归一化小红书、YouTube 等 CDN URL;代理失败时自动回退为文本或媒体占位,不留空白卡片 - 无限滚动:滚到底自动加载下一页;距离底部约 800px 时提前预加载;加载中显示底部转圈指示
- 换一批 / 追加一批 / 刷新;卡片内嵌喜欢/不感兴趣/评论反馈;底部动态流(探测、惊喜、保存事件)
- 未初始化时提供「开始初始化」入口,自动轮询初始化状态
内容库
- 稍后再看 / 收藏:打开、移除,与主项目共享同一份本地列表
- 顶部「同步到平台」:全量同步到 B 站收藏夹 / 稍后再看,轮询展示逐条结果(成功 / 失败 / 需登录)
- 每条可单独「同步 / 重试同步」;卡片内嵌 喜欢 / 不感兴趣 / 聊一聊,以及与另一列表的互切(收藏 ⇄ 稍后再看)
- 已同步(
synced/already_synced)的条目自动从侧栏隐藏(数据保留);空态区分「已全部同步」与「还没有收藏」 - 非 B 站平台条目标注同步状态(如「仅本地保存」),不误报为已同步
- 历史记录:近 30 天「点开过 / 看过 / 移除的」,光标分页 + 触底自动加载,带收藏/稍后/不再推荐等上下文徽章;「移除的」分类可一键恢复收藏 / 稍后再看
对话
- 苏格拉底式对话引擎:一问一答之间持续深化画像
- 兴趣 / 回避探测卡片:确认、拒绝、聊聊、稍后,乐观状态机即时反馈
- 待聊确认卡片:准 / 不准 / 聊聊,回复会带回被确认的原话上下文
画像
- 与 popup 同构的画像卡:MBTI、核心特质、深层需求、兴趣树、风格、洞察与觉察
- 新增「阿B 最近新记住了什么」认知卡,可展开影响/推理/依据,并支持加载更早的认知更新
设置(与浏览器插件后端设置页对齐)
- 模型:v2 实例模型(新建/编辑/删除实例、provider 条件字段、获取模型)、默认调用链(排序 + 测试整链)、模块路由(画像理解/内容发现/推荐表达/内容评估)、Embedding(含备选 provider + 测试)、LLM 并发/超时
- 调度:版本与更新(检查/应用)、全部调度参数、猜测兴趣参数
- 高级功能:P1 视觉画像 / P2 弹幕 / P3 关键帧、多模态处理、搜索词生成模式
- 通用:连接地址、语言、保存同步、数据目录、海外网络代理(带测试)、局域网访问密码、开机自启动、重新初始化
- 日志;全局「保存配置」栏 + 脏状态提示(未保存修改提醒)
面板体验
- 深色模式跟随 DSH 主题实时切换(保留 OpenBiliClaw 自己的粉/蓝配色体系)
- 后端在线状态点带迟滞:连续两次探测失败才置离线,单次抖动不再闪
- 图标使用插件(浏览器扩展)原版图标:品牌 logo + 四个 tab 图标逐字节对齐
与主项目的关系
┌───────────────────────────── DSH Web GUI ─────────────────────────────┐
│ 左边栏 │ 会话区 │ 详情栏 │ │
│ (DSH 自带, │ (DSH 自带) │ (DSH 自带) │ ← 右侧滑出 OpenBiliClaw │
│ 底部含 │ │ │ 抽屉(推荐/内容库/ │
│ OpenBiliClaw │ │ │ 对话/画像/设置) │
│ 按钮) │ │ │ │
└─────────────────────────────┬─────────────────────────────────────────┘
│ HTTP + WebSocket (默认 http://127.0.0.1:8420)
┌─────────────────────────────▼─────────────────────────────────────────┐
│ OpenBiliClaw 后端(主项目,同一份 config.toml / SQLite / 画像)│
└────────────────────────────────────────────────────────────────────────┘
▲
DSH Agent(本插件注册的工具 + skill)── Agent Bridge v2 CLI ──┘
- 面板与 Agent 工具走同一套后端状态:面板里收藏的,Agent 工具立刻看得到;Agent 代答的探测,面板同步生效
- Agent Bridge 要求后端开启 Agent Bridge v2(
python -m openbiliclaw.integrations.openclaw.cli <command>),插件默认通过<workdir>/.venv/bin/python调用 - 插件注册的 skill 读取
<workdir>/skills/openbiliclaw-adapter/SKILL.md(本仓库skills/openbiliclaw-adapter/SKILL.md附了同一份副本,方便对照)
插件组成
| 部分 | 说明 |
|---|---|
src/index.ts + src/tools.ts | node 半:22 个 openbiliclaw_* 工具(bridge CLI,经 ctx.shell 执行器——新版 DSH 中 bash 更名为 shell)+ 注册 adapter skill |
src/skill.ts | 解析 SKILL.md frontmatter 并注册为 DSH skill |
src/bridge.ts | Agent Bridge v2 CLI 调用封装(超时 / 输出上限) |
src/client/* | browser 半:左侧栏按钮(sidebar.footer.action)+ 右侧抽屉(shell.overlay)面板(React),含推荐/内容库/对话/画像/设置/消息抽屉、WebSocket 实时流、深色模式 |
lib/ | 构建产物(lib/index.js node 半 + lib/client.js 浏览器半),可直接安装 |
安装
前置
- 一个可用的 DeepSeek Harness 部署(含 Web GUI)
- 一个运行中的 OpenBiliClaw 后端(主项目,开启 Agent Bridge v2,默认监听 127.0.0.1:8420)
插件要求 DSH 0.1.0-rc.6 或更高版本;插件的 peer ABI 已与该版本的 dsh-* 包及 @deepseek-ai/cordis ^4.0.1 对齐。请不要在同一个 profile 中混用 0.0.1 时代的 DSH 工具包。
通过 DSH 插件 bundle 安装
本仓库声明了 dsh.bundle,因此可以作为完整插件包交给 dsh plugin add 或插件市场安装。bundle 会自动提供 openbiliclaw 配置行;安装后仍需按下面的配置说明,把 workdir 指向本地 OpenBiliClaw 主项目目录。
通过 npm/pnpm 安装(已发布版本)
npm install @openbiliclaw/dsh-plugin
# 或 pnpm add @openbiliclaw/dsh-plugin
安装后同样在 cordis.patch.yml 中增加 openbiliclaw 配置行(见下文)。
1. 界面槽位(当前 DSH 免配置)
面板渲染在两个加法槽位上,无需改 DSH 源码:
- 左侧按钮:
sidebar.footer.action(侧边栏底部、设置旁的附加动作) - 右侧抽屉:
shell.overlay(帧级浮层,滑出在详情/文件/变更面板之上,不占用任何列)
两个槽位都是官方 DSH 自带的 list 槽(当前官方 DSH 已移除旧的 aside 列),此步直接跳过。
2. 安装插件包
把本仓库放进 web profile 的依赖目录并声明插件行:
cp -r <本仓库> ~/.dsh/profiles/<profile>/node_modules/@openbiliclaw/dsh-plugin
在 ~/.dsh/profiles/<profile>/cordis.patch.yml 增加:
# DSH 0.1.0-rc.6+: 新增配置行必须放在 insert 下
- insert:
- id: openbiliclaw
name: '@openbiliclaw/dsh-plugin'
config:
workdir: '/你的/OpenBiliClaw/项目目录' # 后端项目根目录(含 .venv 与 skills/)
cordis.patch.yml 的顶层是 patch 列表;不带 insert 的 id 条目会被当作已有配置行覆盖,找不到 openbiliclaw 时会被跳过。
3. 重启
dsh web # 重启 DSH Web 进程,刷新页面
面板内的「设置 → 通用 → 连接」可改后端地址(默认 http://127.0.0.1:8420,面板本地保存、立即生效;地址本身不要再附加 /api)。
配置项(cordis 行 config)
| 键 | 默认 | 说明 |
|---|---|---|
workdir | (必填) | OpenBiliClaw 后端项目根目录;bridge CLI 与 SKILL.md 都从这里解析 |
pythonBin | <workdir>/.venv/bin/python | 用于调用 bridge CLI 的 Python |
skillPath | <workdir>/skills/openbiliclaw-adapter/SKILL.md | adapter skill 文件 |
timeoutMs | 300000 | 单次 CLI 调用超时 |
stdoutMaxBytes | 2000000 | CLI 输出上限 |
构建
构建需要 DSH 源码 checkout(类型与打包 preset 都从那里解析;本仓库不是 pnpm workspace 成员):
tsc -p tsconfig.json # 先产出 lib/types
tsdown --env.DSH_BUILD_FACE client # node 半 + 浏览器半(window.__ModuleLoader__ 闭包)
tsdown.config.ts 引用了 DSH checkout 的 packages/client/tsdown.client.ts(clientBundle preset),首次构建前把该路径改成你的 checkout。
Agent 侧工具一览
openbiliclaw_recommend / openbiliclaw_append_recommendations / openbiliclaw_reshuffle / openbiliclaw_get_delight / openbiliclaw_respond_delight / openbiliclaw_submit_feedback / openbiliclaw_get_activity_feed / openbiliclaw_chat / openbiliclaw_get_chat_history / openbiliclaw_next_probe / openbiliclaw_respond_interest_probe / openbiliclaw_next_avoidance_probe / openbiliclaw_respond_avoidance_probe / openbiliclaw_get_profile / openbiliclaw_get_profile_edit_state / openbiliclaw_edit_profile / openbiliclaw_list_saved / openbiliclaw_save_local / openbiliclaw_remove_saved / openbiliclaw_get_runtime_status / openbiliclaw_get_platform_availability / openbiliclaw_get_capabilities
边界(有意不做)
- 平台源 / 爬取配置、源状态、池配比(这些属于主项目的「平台源」设置页)
- 同步到外部平台账号(本地收藏/稍后看始终本地优先,手动同步在主项目)
- 浏览器插件专属的设备配对、断开暂停等
相关链接
- 主项目:OpenBiliClaw · 项目主页
- DSH:DeepSeek Harness
License
友情链接
English
A DeepSeek Harness (DSH) client plugin for OpenBiliClaw, the local-first cross-platform content-discovery agent. It adds a left-sidebar OpenBiliClaw button that opens a right-side drawer over the DSH web GUI (the sidebar.footer.action + shell.overlay seats) with the consumer side of OpenBiliClaw — recommendations with a hero delight banner, infinite scroll with prefetch, saved/history library, Socratic dialogue with interest/avoidance probes, the user profile card, and a settings surface aligned with the browser extension — and registers 22 openbiliclaw_* tools plus the openbiliclaw-adapter skill so DSH agents can drive the same backend in a closed loop. Cover images use the same backend image proxy as the browser and PC Web clients, with CDN URL normalization and a local fallback for failed loads. Crawling and source management intentionally stay in the main project. Requires DSH 0.1.0-rc.6 or newer (with the matching dsh-* ABI and @deepseek-ai/cordis ^4.0.1) plus a running OpenBiliClaw backend (Agent Bridge v2, default http://127.0.0.1:8420). When adding the plugin to cordis.patch.yml, wrap the row in a top-level insert entry; a bare id row is treated as an override and skipped when it does not already exist. See the Chinese section above for install, build and configuration details.
收录徽章
[](https://deepseek-plugin.org/plugins/whiteguo233/dsh-openbiliclaw)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。







