dsh-bili-meme
Verifieddsh-bili-meme · v0.3.1 · MIT
DeepSeek Harness 插件:让 AI 发 B站评论时带上表情。697 条短代码按包内置(小黄脸/番剧/游戏),可按作品开关,发送前校验。
Install
dsh plugin add dsh-bili-meme Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-bili-meme
让 DeepSeek Harness 里的 AI 发 B站 评论时带上表情,而不是把
[笑哭]抄成一串看不懂的方括号。
B站 评论正文里原样写 [笑哭]、[doge]、[吃瓜] 这类短代码,服务端就会把它渲染成表情图。但模型并不知道哪些短代码合法——自己编一个 [笑死]、[猫猫头],发出去只会显示成一行方括号文字。
这个插件把评论区实际可用的表情面板(默认抓取 697 条 / 18 个包,含小黄脸、tv_小电视、热词系列、收藏集、颜文字等)做成可检索的词表,并提供取候选与发送前校验两个动作。
它解决什么、不解决什么
| ✅ 解决 | 模型按情绪/关键词挑到真实存在的短代码;发之前能校验正文里的短代码是否合法 |
| ✅ 解决 | 一条评论里表情的自然用法(放句尾、最多 2-3 个)由提示词约束,不靠模型自觉 |
| ❌ 不解决 | 图片投递。评论区表情是服务端渲染的,不需要本地图片;这跟 dsh-meme 那种「发图片」完全是两条通道 |
| ❌ 不解决 | 解锁付费/未拥有表情。面板返回的是你账号可用的那批,换号会有差异 |
安装
插件市场 / npm:
dsh plugin --profile web add dsh-bili-meme
本地开发(目录放进你 profile 的 node_modules,并在 bundles 里加上 dsh-bili-meme):
git clone https://github.com/ACE-DGWSKK/dsh-bili-meme.git
cd dsh-bili-meme
npm test
零依赖、无构建步骤——index.js 直接就是入口,改完即生效。
它给模型什么
工具 bili_meme
| 参数 | 说明 |
|---|---|
tag |
情绪:laugh / happy / love / shy / sad / angry / confused / surprised / tired / money / cool / refuse / meow / daily / mood / kaomoji,也认中文(笑、开心、生气、无语…) |
query |
关键词:搜短代码 / 中文名 / 图库名,如「猫」「吃瓜」「doge」「塔菲」 |
limit |
返回几张候选,1-12,默认 6 |
check |
校验模式:传一段准备发的正文,返回其中合法/不合法的表情标记 |
返回长这样:
laugh(笑/乐) 共 33 个,随机给 5 个:
1. [笑哭] — 笑哭 · 小黄脸
2. [滑稽] — 滑稽 · 小黄脸
...
用法: 短代码原样拼进评论正文即可渲染,别改字、别加空格。一条评论最多 2-3 个,放句尾更自然。
提示词段:插件会往 system prompt 里加一条 dsh-bili-meme:emotes,告诉模型「想带表情先调 bili_meme 取候选、短代码必须抄候选原文、别自己编」。它不铺开整张词表——铺了既烧 token 又诱导模型乱抄。
词表从哪来 / 怎么更新
接口:https://api.bilibili.com/x/emote/user/panel/web?business=reply
BILI_SESSDATA=你的SESSDATA node scripts/gen-emotes.mjs
脚本会把面板重新抓一遍并重写 emotes.js(同时按关键词给每条打情绪 tag)。不带 cookie 时接口可能返回空面板——这个面板是账号维度的。
emotes.js 是生成文件,别手改。
配合什么用
- 配
bili_reply(刷B站 插件的评论工具):先bili_meme取候选,把短代码拼进text再发 - 单独用也行:
check模式就是个「这段正文里的表情能不能渲染」的离线校验器
按作品开关表情包
词表里的 697 条来自 18 个包(小黄脸、tv_小电视、热词系列、颜文字、Mygo、鸣潮×2、塔菲×2、贝拉、卦者灵风、粉妆玉琢……)。全部内置在 emotes.js 里,装上就有;但一次只给模型看需要的那些,候选才不会被无关表情淹没。
bili_meme_packs { action: "list" } # 列出 18 个包,* = 已启用
bili_meme_packs { action: "only", packs: "mygo 鸣潮" } # 只留这两个
bili_meme_packs { action: "enable", packs: "塔菲" } # 加一个
bili_meme_packs { action: "disable", packs: "热词" } # 关一个
bili_meme_packs { action: "all" } # 全开(默认)
也可以直接问:「只开 Mygo 和鸣潮的表情包」,模型会自己调这个工具。
状态存在 $DSH_HOME/dsh-bili-meme/settings.json:
{ "mode": "some", "enabledPacks": ["5390", "9996"] }
mode: "all"(默认,或文件不存在)= 全开;mode: "some" + 空数组 = 全关(bili_meme 会明确告诉你没有可用表情)。改完立即生效,不用重启。
目前没有 GUI 设置面板,改开关只有两条路:对话里让模型调
bili_meme_packs,或直接编辑这个 JSON。
自动更新
插件启动 8 秒后查一次 npm(registry.npmjs.org/dsh-bili-meme/latest),之后每 6 小时一次。发现新版本就把 tarball 解到:
$DSH_HOME/dsh-bili-meme/versions/<version>/ # 或 ~/.dsh/dsh-bili-meme/...
$DSH_HOME/dsh-bili-meme/state.json # 记当前装的是哪一代
下一次启动由 index.js 读 state 决定加载哪一代;加载失败会记一笔并退回自带版本,不会把插件弄挂。
- 不动 profile、不改自己的文件——只往插件家目录写,删掉那个目录就回到自带版本;
- 只解
package/前缀、拒绝..,tarball 当敌意输入处理;单包上限 8 MB; - 关掉:bundle patch 里给这个插件加
config: { update: { enabled: false } }(离线/审计环境用)。
⚠️ 这套机制依赖入口是包名或稳定入口文件。如果 profile 的 patch 直接写死某个版本的
index.js路径,那永远只会加载那一份——这也是dsh-meme当年踩过的坑。
为什么你会看到【方头括号】
表情是服务端渲染的:短代码在表情表里有 url 才出图。收藏集 / 充电专属那类表情,收评论的人没解锁(没买、没充电),服务端没有图可给,就把原文降级成 【包名_表情】 —— 这就是粗方头括号的来历。
所以有两件事要分清:
- 输入永远写半角
[xxx]。【】不是输入语法,写了只会原样显示(真实评论里能抓到[暖]【狗头】这种半角混粗括号的,粗的那个没渲染) - 挑到付费表情,对方可能只看到文字。所以插件给
paid: true的候选打了「需拥有」标记,默认候选优先免费表情
表情包类型(面板里的 type):1 官方免费、4 颜文字(纯文本)、3 收藏集、12 充电专属。后两种在词表里是 paid: true。
已知限制
- 表情渲染在客户端:网页/App 里显示为图,第三方客户端或导出文本里就是
[笑哭]原文 - 颜文字包(
tag=kaomoji)是纯文本,不带方括号,别给它套[] - 评论长度上限、表情数量上限由 B站 服务端决定,插件不代管
License
MIT