5V1A-afk/dsh-sticker-pack ↗★ 0
dsh-sticker-pack
DSH 表情包插件:订阅远端 pack.json 素材源,把它们变成 agent 可用的表情包,agent 在回复正文里内联贴图;贴图概率由插件自己掷骰,出图在 HTTP 与本地路径之间自动择优,微信会话改发静态图文件,熔断等待上限由用户在设置里调(5–30 秒滑杆或任意秒数)。 适合需要让Agent在对话中自动匹配、展示和发送趣味表情包的互动场景。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:5V1A-afk/dsh-sticker-pack配置
在 profile 的 cordis.patch.yml 里按 id 覆盖:
- id: dsh-sticker-pack
config:
remotes: # 远端 pack.json 源(可多个,最多 16 个)
- https://gcore.jsdelivr.net/gh/you/stickers@main/pack.json # 域见下
- url: https://example.com/pack/pack.json
name: 朋友的表情包
remoteTtlMs: 600000 # 清单复用窗口,0 = 每次用到都刷新
remoteTimeoutMs: 6000 # 单个源超时(默认 6 秒)
linkStyle: auto # auto(默认)| http | file,见下
gifBias: 2 # 动图在同分候选里的权重倍数,1 = 均匀
largeFileBytes: 2097152 # 超过这个大小就在工具输出里提醒“偏大”
recentWindow: 3 # 最近用过的几张排到后面,0 = 纯随机
scanTtlMs: 1000 # 目录扫描复用窗口,0 = 每次重扫
probability: 0.6 # 贴图概率,设置页可覆盖(0.6 = 60%)
deadlineMs: 15000 # 等待上限(v0.6.2),设置页可覆盖;正数即可,无上限
prompt: true # false = 不注册那段贴图策略
httpBaseUrl: http://127.0.0.1:19387 # 可选,见下
remotes 也可以直接写进 ~/.dsh/sticker-pack/settings.json——设置页保存时会保留它不认识的
键,所以手编一个文件比改 profile 的 patch 层省事(同样,remotes 只在文件里没有这个键时
才读配置)。
probability 写在配置里就是「出厂值」:一旦设置页写过一次 settings.json,文件里的值
优先于配置,配置里的值只在文件里没有这个键时生效(删掉 settings.json 即回到配置值)。
deadlineMs(等待上限,v0.6.2)走同一条规则,所以「配置里写 20000、设置里改成 8 秒」
的结果是 8 秒;想让配置重新说了算,删掉 settings.json 里那一行即可。
linkStyle:两种出图形式,各有取舍
| 本地路径 | HTTP URL | |
|---|---|---|
| 形态 |  |  |
| 渲染时机 | 消息落定后才出现 | 边写边出现 |
| 依赖端口 | 不依赖 | 端口变了就失效 |
| 依赖插件路由 | 不依赖 | 依赖 /sticker-pack/i/ 注册成功 |
linkStyle 选哪一种:
auto(默认)—— 优先 HTTP:先看httpBaseUrl有没有配,没配就用插件自己问到的 监听端口。两者都拿不到就退回本地路径。http—— 同上;没有端口时也不会硬凑,仍然退回本地路径(没有第三种形式)。file—— 永远只用本地路径,即使端口已知。
以前这件事要你在 patch 里手写 httpBaseUrl(v0.3.0 起就有这个配置项),现在默认就会自己
找端口;httpBaseUrl 仍然优先,可以覆盖自动探测的结果。
原因(都已对着客户端源码确认):本地路径图片被显式排除在流式渲染之外
(const file = streaming ? void 0 : parseFileLink(destination)),而正文里的绝对
http(s) URL 会直接进 ``。另外根相对路径不行:正文里写
 不会被当成请求打到本插件的路由,它会被当作本地文件路径
改写成 api/file?path=%2Fsticker-pack%2Fi%2Fx。