在 DeepSeek Harness (DSH) 的插件生态里,给智能体配一个「表情包库」是常见需求。但这事做起来容易踩坑:把所有图片丢进文件夹不管,智能体会混用真人照片和贴图;只靠固定标签,智能体根本不懂图片含义。dsh-sticker-library 专门解决这一类问题,提供从入库、去重、打标到安全拦截的一整套流程。
核心定位¶
这是一个给 DSH 的聊天表情包库插件。它不满足于「把图片存进文件夹」(那用 mkdir 就够了),而是解决智能体真正「会用表情包」时的四个易错点:如何区分贴图与聊天截图、如何让视觉模型理解图片含义、如何确保删除时文件被彻底清理、以及如何在前置阶段拦截不合适的内容。
由 JackZo400 维护,License 为 MIT。
核心功能¶
- 收图去重:基于内容哈希去重,同一张图再发一次会被原样拦截,避免重复入库。
- 视觉打标:利用视觉模型描述图片内容、使用场合和关键词,让智能体能按「含义」而非随机编号挑图。
- 按含义挑图:支持通过编号或关键词检索,挑不到时不会硬塞不相干图片,而是明确返回 null。
- 两条安全线:脏话、性暗示与低质烂梗在入库那一刻就拦截,不依赖下游模型每次都记住。
- 协议无关入库口:提供统一的文件保存接口,不依赖具体 IM 协议。
- 彻底删除:删除操作包含「删文件 + 内容哈希进黑名单」,防止原文件被误判为新图重新入库。
安装与启用¶
直接通过 npm 安装:
npm i dsh-sticker-library
安装后,可在 cordis.patch.yml 中配置 patch 引入(参考插件目录中的示例配置)。安装完成后可运行自测:
node test/selftest.mjs
典型用法¶
插件为 DSH Agent 提供了五个工具,同时也暴露了核心服务 shelf 给其他插件调用。
Agent 工具¶
| 工具名 | 功能说明 |
|---|---|
sticker_catalog |
列出库清单,展示图片描述与标签 |
sticker_pick |
挑选一张图片返回本地路径,支持编号或关键词 |
sticker_save |
把本地图片收进库(需由上游插件准备好图片路径) |
sticker_tag |
给未打标的图片补充视觉标签 |
sticker_forget |
删除指定图片:真删文件 + 哈希进黑名单 |
服务接口¶
const shelf = ctx.stickerShelf
// 列出清单
shelf.catalog(40)
// 按含义检索
shelf.resolve('无语')
// 协议无关的入库口
shelf.saveFiles(paths, { nick, uid })
// 批量给未打标图片打标
shelf.tagPending(10)
适用场景与注意¶
适用场景:需要智能体根据上下文语义挑选表情包,且对图片内容安全性(如避免低俗烂梗)有硬性要求的机器人项目。
注意事项:
- 不做发送:插件只负责挑选图片并返回路径,具体的发送动作由你决定。这给了你控制审核流程的空间。
- 脏话定义可配:插件不替你决定「什么算脏」,通过配置
prompt可调整拦截规则。修改提示词后需升级TAG_VER版本号,否则老图不会重新打标。 - 非并发设计:当前版本不做分布式或并发写,适合单进程、单目录的场景。
总结¶
dsh-sticker-library 通过去重、视觉打标和前置安全拦截,填补了 DSH 生态中关于表情包管理的空白。如果你正在做一个需要「懂表情包含义」且「不乱发烂梗」的智能体,这个插件是一个务实的选择。