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 生態中關於表情包管理的空白。如果你正在做一個需要「懂表情包含義」且「不亂髮爛梗」的智能體,這個插件是一個務實的選擇。

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

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

小夜