dsh-sticker-library:表情包库与安全入库方案

在 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)

适用场景与注意

适用场景:需要智能体根据上下文语义挑选表情包,且对图片内容安全性(如避免低俗烂梗)有硬性要求的机器人项目。

注意事项:

  1. 不做发送:插件只负责挑选图片并返回路径,具体的发送动作由你决定。这给了你控制审核流程的空间。
  2. 脏话定义可配:插件不替你决定「什么算脏」,通过配置 prompt 可调整拦截规则。修改提示词后需升级 TAG_VER 版本号,否则老图不会重新打标。
  3. 非并发设计:当前版本不做分布式或并发写,适合单进程、单目录的场景。

总结

dsh-sticker-library 通过去重、视觉打标和前置安全拦截,填补了 DSH 生态中关于表情包管理的空白。如果你正在做一个需要「懂表情包含义」且「不乱发烂梗」的智能体,这个插件是一个务实的选择。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜