dsh-memewiki
给 DSH 用的梗百科 / 黑话词典插件。
⚠️ 这是 DSH 插件,不是 AstrBot 插件。 仓库里出现
astrbot_plugin_memewiki字样,只是因为本项目的灵感来自那个 AstrBot 插件;装进 AstrBot 里不会生效。
致谢:灵感来自 AstrBot 插件 astrbot_plugin_memewiki(作者 in1t1a1),谢谢原作者提供的灵感。原仓库已删除,这里不放链接。
内置 6792 条网络梗词条,查词离线可用、零依赖(只用 Node 自带的 node:sqlite)。
当你问一句「XX 是什么梗」时,它会在模型看到这句话之前就把对应词条查好塞进上下文,让模型直接接梗;同时提供一个 search_meme_wiki 工具,让模型自己想查的时候也能查。
作者:@thawline 致谢:灵感来自 AstrBot 插件
astrbot_plugin_memewiki(原仓库已删除),感谢原作者
特性
- 预查注入:只对「像在问梗」的消息触发(问梗句式、裸词、停用词过滤),闲聊不会被塞东西;你主动讲梗的来历(「这是康康的梗」「这是叉叉叉的梗,你应该说……」)时另注入一段反馈引导——先接住,再问要不要补进梗维基。
- 一条都不多:没命中就不注入,命中只注入那一条。
- 设置页可管:DSH 设置 → 插件 → 梗百科(词条库 / 反馈 / 关于 三个页签)里能查、增、改、删词条,页签在梗百科标题下面,搜索框和新建 / 更新词库 / 检查更新在页签下面,能看到本机词条总数;标题也能直接改名,改成已存在的名字会报错而不是覆盖。
- 自动思考梗开关:不想让它自动预查时,一个勾选框关掉即可,下一轮生效。
- 双向匹配:除了「问句里包含标题」,还支持「标题里包含查询词」(查询 ≥ 3 字才启用,避免两个字乱中)。
- 串子程度可调:手动接管玩梗尺度(0–100 滑杆)。拉到低很尊重、黑称不接;拉到高放开串、黑称也玩;不开时交给模型自己判断,看梗冲谁去。
- 检查更新:设置页标题旁边显示当前版本,点「检查更新」去 GitHub 比对一次最新版本,有新版本会告诉你去哪拉。
- 一键更新词库:设置页点「更新词库」,后台跑
scripts/sync-cnmeme.mjs --no-existing,只把站点上的新词条补进来(不覆盖你手改过的),跑完自动刷新条数。全程纯 Node 脚本,不经过模型,不烧 token。 - 上传词条:设置页「词条库」每条梗后面有「上传」,把本地改好的正文整篇传到梗维基(来源 / 用法 / 其他小节),站内 AI 和真人审核。
- 提交昵称:设置页「反馈」里可以填以后把纠正反馈给梗维基时用的名字,默认「大肥鱼」,改完失焦自动保存(trim、最长 40 字)。
- 反馈给梗维基:设置页「反馈」里填一个联系方式、点「连接梗维基」领一张 90 天凭证;以后你纠正某个梗、或主动说「这是XX的梗」时,模型会先接住、再问要不要把它补进梗维基(cnmeme.wiki),同意后走
feedback_meme_wiki——只提交要补的那一段,插件自己去拉原文、在「用法」小节末尾追加、拼好整篇再提交,不用模型贴全文;站内 AI 先审、拿不准转人工。提交记录显示在设置页。用户不用注册网站、不用登录,凭证由插件在后台领。 - 关于页:设置页顶部有三个页签「词条库 / 反馈 / 关于」,「反馈」页最上面是反馈规则,下面是提交昵称、反馈给梗维基和提交记录。关于页里有项目简介、Star 按钮、仓库地址和致谢,词库来源梗维基(cnmeme.wiki)的原网站也放在致谢下方。
- 离线:查词、注入全在本地,不发网络请求;只有你主动点「更新词库」「检查更新」或提交反馈时才联网。
用了它,实际会变成什么样
- 群里冒出一个生梗,模型不再硬猜。 以前它要么当没看见,要么编一个像模像样的解释;现在查得到就直接接,接不上就说“不知道”。
- 不用装东西。 原版要 Python + AstrBot +
sqlite3,这里只要 Node ≥ 22.13,零依赖,pnpm add完事。 - 词条能自己管。 设置页里增删改查,改完下一轮就生效,不用改代码、不用重启。
- 不想让它多嘴时一个勾就关。 「自动思考梗」关掉后,预查注入彻底停,模型只在主动调工具时才查库。
- 短着问也查得到。 以前问「码头」查不到「去码头整点薯条」,现在 3 个字以上会做反向匹配。
- 不把聊天发出去。 原版的联网兜底被去掉,所有查询只发生在本地那个 16MB 的 SQLite 里。
安装
这是 DSH 插件,不是 AstrBot 插件,请装进 DeepSeek Harness。
在 profile 目录(通常是 C:\Users\<你>\.dsh\profiles\desktop)下执行:
pnpm add github:thawline/dsh-memewiki
或者把仓库 clone 到本地,再用 link: 引用。
装好后,把 "dsh-memewiki" 加进同一个 package.json 的 dsh.profile.bundles 数组,重启 DSH。
还没发布到 npm,所以
pnpm add dsh-memewiki会 404 —— 用上面的 GitHub 方式。 也不要把它交给 AstrBot 的插件安装流程:那是另一套 Python 插件体系,装进去不会生效。
配置
配置文件:~/.dsh/memewiki.json
{
"自动思考梗": true,
"串子开关": false,
"串子程度": 50
}
自动思考梗:是否在每轮请求前自动查词库并注入。默认true。串子开关:是否手动接管玩梗尺度。默认false(关着时模型自己判断)。串子程度:0–100。≤20 很低(很尊重,黑称不接)、≤45 偏低(损操作可以,损长相不行)、≤70 中等(跟着社区玩)、>70 很高(放开串,黑称也玩)。开关关着时不生效。
词条数据
data/memes.db 是 SQLite 数据库,表结构:
CREATE TABLE memes (
title TEXT PRIMARY KEY, -- 词条名
slug TEXT, -- 拼音/英文别名
tags TEXT, -- 标签,逗号分隔
usage TEXT, -- 怎么用 / 怎么接
origin TEXT, -- 出处
other TEXT, -- 其他分节(演化 / 相关 / 备注等)
summary TEXT, -- 释义
aliases TEXT -- 别名,逗号分隔
);
词库来自 cnmeme.wiki 的公开 API(来源、用法、标签、别名与摘要),2026-11-05 同步至 6792 条,对应站点当前的公开词条。最初 6668 条来自原版插件随包分发的 data/memes.db(2026-10-26 构建)。
更新词库
梗是会长出来的。想再同步一次,跑(需要联网,只读站点的公开 API):
node scripts/sync-cnmeme.mjs # 补新词条 + 同步被站点改过的词条
node scripts/sync-cnmeme.mjs --dry-run # 只报告会改什么,不写库
node scripts/sync-cnmeme.mjs --no-existing # 只补新词条,不动已有条目
脚本会先翻完全站公开列表(约 4–5 分钟),再只拉有变化的详情;写库前自动备份成 data/memes.db.bak-时间戳。你在设置页手动填的 aliases 不会被冲掉,正文为空时也保留本地旧值。跑完 meta.built_at / count 会更新,设置页的总条数跟着变。
不想开终端的话,直接在 DSH 设置页 → 插件 → 梗百科点「更新词库」:后台跑的是 --no-existing(只加新词条),页面上会显示同步进度和结果,跑完条数自动刷新。按钮不经过模型,零 token。
与原版的差异
本插件是一次独立实现,不是逐行翻译。AstrBot 是 Python 的 Star 插件框架,DSH 是 Node.js 的插件体系,外壳必须重写;词库、匹配逻辑、预查闸门、注入文案这些设计受原版启发。
| 能力 | 参考的 AstrBot 版 astrbot_plugin_memewiki |
本插件 dsh-memewiki |
|---|---|---|
| 运行环境 | AstrBot(Python) | DSH(Node.js,ESM,零依赖) |
| 词库读取 | SQLite(sqlite3) |
node:sqlite(Node ≥ 22.13 自带) |
| 预查注入点 | @filter.on_llm_request → _append_temp |
ctx.systemPrompt.context()(order 950,仅该轮) |
| 玩梗尺度 | 无 | 「串子程度」0–100 滑杆 + 开关(默认关,交给模型判断) |
| 版本检查 | 无 | 设置页显示当前版本 + 「检查更新」按钮(只在你点击时连一次 GitHub raw) |
| 注入内容 | 接梗规则 + 命中词条 | 相同设计(规则约 750 字符 + 一条词条) |
| 查询工具 | search_meme_wiki |
同名工具,参数 { query } |
| 匹配方式 | 精确 + 查询词包含标题 | 精确 + 查询词包含标题 + 标题包含查询词(≥3 字) |
| 注入开关 | 配置项 | 设置页「自动思考梗」勾选框(写 ~/.dsh/memewiki.json) |
| 词条管理 | AstrBot WebUI 面板 + /黑话 命令 |
DSH 设置页「梗百科」(增删改查 + 总数) |
| 图片卡片 | /梗 → Pillow 渲染图片 |
❌ 暂未实现 |
| 联网兜底 | cnmeme.wiki 公开 API(像梗才查、同词 10 分钟一次、带缓存) | ❌ 不联网(见下) |
| 预查闸门 | 本地精确 → 像梗才联网 → 同词节流 → 缓存 | 本地匹配 + 像梗判断(问梗句式 / 裸词 / 停用词) |
| 黑话自建 | /黑话 词 释义 命令 |
设置页新增词条(等价,但走界面) |
关于联网
预查注入永远不联网。 原版在本地查不到时会去 cnmeme.wiki 搜;这里没有做,原因:
- 隐私:联网意味着把用户的聊天片段发到第三方,梗查询往往带着上下文;
- 稳定:外部 API 挂了就多一次失败路径,还要处理超时、缓存、节流;
- 够用:6792 条覆盖了绝大多数常见梗,查不到时模型说「不知道」比编一个更安全。
需要联网版的话,可以在设置页把「自动思考梗」关掉,改用 search_meme_wiki 工具自行决定何时查(工具同样只查本地库)。
另外有两个显式的联网动作:设置页的「更新词库」和「提交新词条」。这两个只在你点了之后才连一次 cnmeme.wiki,平时不跑。
已知限制
- 只有本地词库,生僻梗、新梗查不到(例如「蚌埠住了」当前词库就没有)。
- 预查判断靠句式与停用词表,不是分类模型;宁可漏查,不硬塞。
- 没有图片卡片、没有命令系统(DSH 的设置页替代了
/黑话)。
许可
MIT。词库数据版权归原项目与 cnmeme.wiki;本项目仅做格式适配,功能设计受原版启发,详见 NOTICE。
No comments yet. Be the first to write one.