前言¶
在 DeepSeek Harness(DSH)里做对话智能体,常见做法是让用户上传图片,或让模型直接输出图片 URL。前者依赖模型的图片输入能力,后者容易触发准入检查,且气泡里未必能稳定配图。若希望「界面是图、模型读写文字」,需要一套把表情索引、发送约定和前端渲染串起来的机制。
dsh-meme(原 dsh-expression)是维护者 yyh-001 发布的 DSH 表情包插件,归类为「趣味换装」。它在 GitHub 上有 54 stars、4 forks,已发布到 npm,MIT 许可。下面介绍它解决什么问题、如何安装,以及日常怎么用。
这是什么¶
dsh-meme 是 DeepSeek Harness 的表情包插件,定位可以概括为「找得到、发得出、学得会」:
- 模型通过
send_meme按情绪桶抽候选,把[表情: 描述]写进回复;前端在对话气泡里按描述配图。 - 用户可在输入框点 😊,像 QQ/微信 一样从悬浮面板选图直接发出。
- 用户说「入库」时,
learn_meme可收录最近一张附件并自动识别分类与描述。 - 设置页管理图库、上传编辑、导出导入 ZIP,内置两套图库开箱可用。
插件仅依赖 node:sqlite,无其他第三方运行时依赖。内部插件 id 仍为 dsh-expression,与旧包名兼容。
核心功能¶
纯文本 token 发图¶
界面显示表情图片,模型收到和写出的是 [表情: 描述],不带网址、不写成 markdown 图片。这样不触发 DSH 图片准入检查;Think、轨迹、工具卡保持纯文字,只有对话气泡配图。引号差异("" / "")会在匹配前折叠。
按情绪抽图¶
send_meme 从六个情绪桶随机抽取若干张 caption 供模型挑选:
| 桶名 | 含义 |
|---|---|
happy |
开心、卖萌、可爱、喜欢 |
angry |
生气 |
sad |
难过、无语、求饶 |
shy |
害羞 |
confused |
困惑、惊讶 |
daily |
日常(睡觉、上班、早上好等) |
不满意可换情绪或同一 tag 再搜一批。
AI 自动学图¶
learn_meme 默认收录用户最近一张附件(不必填 attachment id),也可传 attachmentId 或 imageUrl。自动识图依赖当前默认模型是否支持图片输入;不支持时可手动指定 tag 与 caption。
图库管理与切换¶
默认内置两套图库,无需配置即可使用:
- official-001(官方表情包 1 号,92 张)——开箱默认
- dafeiyu-001(大肥鱼,49 张鲸鱼娘 chibi)
设置页「当前图库」下拉可切换。插件扫描内置 memes/* 以及「扫描目录」(默认 ~/.dsh/meme-packs)下带 index.db 的子文件夹;导入 ZIP 会放进扫描目录并立刻切换。配置保存在 ~/.dsh/dsh-expression.json,升级插件不丢。
设置页还支持:改扫描路径、导出/导入图库 ZIP、上传与编辑(分类/描述/关键词)、分类中文显示与筛选。
输入框一键发图¶
会话输入框左侧 😊 按钮打开悬浮面板,可搜索或浏览缩略图,点选即发出 [表情: 描述],无需模型代劳。
安装与启用¶
已发布到 npm(包名 dsh-meme,当前版本 0.1.39),一行装进任意 DSH profile(例如 ~/.dsh/profiles/web/):
dsh plugin --profile web add dsh-meme
# 等价于:
pnpm add dsh-meme
旧包名 dsh-expression 已弃用,请改用 dsh-meme。
也可从 GitHub 或本地安装:
pnpm add github:yyh-001/dsh-meme
# 或
pnpm add file:/path/to/dsh-meme
要求 Node.js >= 20。pnpm 对新包有默认约 24 小时的安全期,刚发布的版本可能被静默回落到旧版;急用可在 pnpm-workspace.yaml 的 minimumReleaseAgeExclude 里加上 dsh-meme。
社区目录页:SkillHub — yyh-001/dsh-meme。SkillHub 是独立社区站点,与 DeepSeek / 幻方无官方从属关系。
典型用法¶
装完后,用户用自然语言要图,模型走工具链即可:
用户: 发个无语的表情包
模型: send_meme tag=sad → 随机若干张 caption → 把 [表情: …] 贴进回复
前端: 按描述配图,对话里显示为表情
模型侧常用调用:
send_meme tag=sad limit=8 # 难过桶随机 8 张,挑一行贴进回复
send_meme tag=happy # 开心/卖萌
learn_meme # 收录最近一张用户图
learn_meme imageUrl="https://…" # 收录任意图片 URL
给模型的三条约定(完整说明见 send_meme 工具描述):
- 把候选里的
[表情: 描述]整段原样写进回复,不要加网址、不要改成 markdown 图片。 - 没命中就换情绪或回文字,别硬发。
- 发完保持简短,让图自己说话——不复述、不描述图的内容。
分享与扩展图库¶
发给朋友: 设置页导出图库得到 dsh-meme-pack-日期.zip,对方在设置页导入即可自动切换。须用插件导出的 ZIP;GitHub 仓库页的「Download ZIP」是源码压缩包,导入会失败。
挂到宣传页: 解压导出包(含 index.db、manifest.json、memes/),新建 GitHub 仓库放入根目录,加 previews/ 放 6–12 张缩略图,仓库 Topics 加上 dsh-meme-pack。宣传页:yyh-001.github.io/dsh-meme。
可与 dsh-companion 等人设、记忆、消息通道插件组合使用;发图能力由 dsh-meme 提供。
适用场景与注意¶
适合谁: 希望在 DSH Web 对话里稳定发表情、用纯文本 token 绕开图片准入、或需要本地图库管理与学图入库的开发者与用户。
使用前注意:
- 插件以当前 DSH 进程权限运行,安装前应检查 源码 与 MIT 许可证。
learn_meme自动识图依赖模型图片输入能力。- 内置
official-001上游 anka-afk/astrbot-meme-pack-official-01 未提供显式 LICENSE;个人默认使用无妨,公开再分发请保留manifest.json中的来源标注。 - 磁盘上仍有细粒度 tag(如
baka、sleep),模型侧主要认六个情绪桶;caption 对不齐时前端会折叠引号后再匹配。
反馈与交流:QQ 群 993579665。
小结¶
dsh-meme 把表情包索引、发送约定和前端渲染接到 DSH 上:模型写 [表情: 描述],用户也能 😊 点选发图,还能入库扩充图库。零第三方依赖、内置两套图库、设置页可切换与分享,适合需要「像聊天软件一样斗图」的 Harness 场景。