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