dsh-meme:讓 DSH 對話裏找得到、發得出表情包

前言

在 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),也可傳 attachmentIdimageUrl。自動識圖依賴當前默認模型是否支持圖片輸入;不支持時可手動指定 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.yamlminimumReleaseAgeExclude 里加上 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 工具描述):

  1. 把候選裏的 [表情: 描述] 整段原樣寫進回覆,不要加網址、不要改成 markdown 圖片。
  2. 沒命中就換情緒或迴文字,別硬發。
  3. 發完保持簡短,讓圖自己說話——不復述、不描述圖的內容。

分享與擴展圖庫

發給朋友: 設置頁導出圖庫得到 dsh-meme-pack-日期.zip,對方在設置頁導入即可自動切換。須用插件導出的 ZIP;GitHub 倉庫頁的「Download ZIP」是源碼壓縮包,導入會失敗。

掛到宣傳頁: 解壓導出包(含 index.dbmanifest.jsonmemes/),新建 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(如 bakasleep),模型側主要認六個情緒桶;caption 對不齊時前端會摺疊引號後再匹配。

反饋與交流:QQ 羣 993579665

小結

dsh-meme 把表情包索引、發送約定和前端渲染接到 DSH 上:模型寫 [表情: 描述],用戶也能 😊 點選發圖,還能入庫擴充圖庫。零第三方依賴、內置兩套圖庫、設置頁可切換與分享,適合需要「像聊天軟件一樣鬥圖」的 Harness 場景。

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

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

小夜