Taffy 表情包状态机:右下角表情实时联动 agent 状态——待审批 / 已批准 / 被拒 / 求饶、思考、工具执行、插话、等你回答、压缩记忆、长任务疲惫、审批没人理、空闲 / 休眠;SSE 推流同步、拖拽定位、中键控制台、工具卡片镜像控制台、表情锁定、外观设置持久化与今日时长统计。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:vegetable-kun/DSH_Plugin_Taffy
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
中文简体 | English
这是一个 dsh 的插件,把 Taffy 表情包挂在 DeepSeek Harness Web UI 右下角,随 agent 状态自动切换:待审批、思考中、干活中、出错、被打断……全部有专属表情。标准 DSH 插件包(bundle + web client),素材随包分发,一条命令安装。

安装
dsh plugin --profile web add github:vegetable-kun/DSH_Plugin_Taffy
然后重启 dsh web 即生效。安装器会自动把包加进 profile 的 bundles 层列表,无需手动编辑任何配置。
效果详细说明
| 状态 | 表情 | 触发条件 |
|---|---|---|
| 闲置 | taffy2-idling |
兜底默认 |
| 输入中 | taffy-se_xy |
输入框有草稿 |
| 思考中 | taffy-dumb |
模型流式输出中 |
| 工具执行中 | taffy-tang-laughing |
tool/call 活跃 |
| 待审批 | taffy-fork |
approval 请求弹出,带脉冲动画 |
| 已批准! | taffy-spread_heart |
同意后 3 秒 |
| 黑客 | taffy-hacker |
批准后的工作期间,对话完成即结束 |
| 审批被拒 | taffy-embarrassing |
拒绝后持续,直到开始打字被"消费" |
| 用户中止 | taffy-angry |
turn/end reason=aborted,5 秒 |
| 出错/截断 | taffy-suicide |
turn/end reason=error/max-tokens,5 秒 |
| 插话收到! | taffy-suprised |
模型正在输出/干活时收到新消息,4 秒 |
| 被阻塞了… | taffy-cry |
turn/end reason=blocked,6 秒 |
| 得意 | taffy-admirable |
一轮用 ≥5 次工具后正常完成,4 秒 |
| 假哭 | taffy-fake_crying |
连续两次拒绝审批,5 秒 |
| 求饶 | taffy-begging |
60 秒内第二次审批请求,5 秒窗口(过期回落待审批) |
| 等你回答 | taffy-staring 静态图 |
ask_user_question 提问挂起,回答即恢复 |
| 记忆压缩中 | taffy-pressure 静态图 |
上下文压缩 start→end(含 90 秒兜底) |
| 长任务疲惫 | taffy-angry_staring 静态图 |
单轮持续超 3 分钟,turn/end 即清 |
| 审批没人理 | taffy-cry_denying |
审批挂起超 30 秒无人处理,决定落地即恢复 |
| 休眠 | taffy4 静态图 |
空闲超 10 分钟,省 GIF 解码;打字/任何活动即醒 |
| 开机问候 | tafei 静态图 |
页面加载后首屏打招呼 2 秒,不遮蔽任何业务状态 |
优先级链:锁定 > 求饶(时间盒) > 等你回答 > 记忆压缩 > 审批没人理 > 待审批 > 批准庆祝 > 惊讶 > 哭 > 中止/出错/假哭闪帧 > 得意 > 长任务疲惫 > 运行中(黑客/思考/工具) > 打字 > 开机问候(2秒) > 休眠 > 闲置。所有新状态都有明确出口:求饶是时间盒、等你回答由回答消息/结果配对/轮次结束三路清除、压缩由 end 事件加兜底超时双保险、疲惫与没人理由时间阈值动态推导并随轮次/决定自动消失,均不会阻塞下层状态。
使用
- 左键拖动移动位置;中键点击打开浮动控制台;右键兜底
- 控制台:实时状态徽章 / 锁定任意表情(调试用)/ 测试审批 / 重置位置
- 设置面板 → 「Taffy 表情」页:启用开关、大小(50–1000px)、不透明度、鼠标穿透、今日状态时长统计
- 外观设置保存在浏览器 localStorage(键
dsh-taffy-mood/settings),刷新不丢
卸载 / 停用
dsh plugin --profile web remove dsh-taffy-mood # 从 profile 移除
# 或在设置页关闭「启用表情」临时隐藏
配置
阈值可在 ~/.dsh/profiles/web/cordis.patch.yml 里给 dsh-taffy-mood 行追加 config 字段(蛇形命名,只传想改的):
- id: dsh-taffy-mood
config:
surprised_ms: 6000 # 插话惊讶 6 秒(默认 4000)
ignored_after_ms: 60000 # 审批没人理 60 秒(默认 30000)
sleep_after_ms: 600000 # 休眠 10 分钟(默认 600000)
tired_after_ms: 300000 # 长任务疲惫 5 分钟(默认 180000)
# turn_flash_ms / crying_ms / admirable_ms / begging_window_ms / begging_show_ms / compacting_failsafe_ms 同理
未列出的字段保持原默认值;非法值(负数、非数字)会被 host 忽略并回退到默认。
结构与技术要点
package.json dsh.bundle.patch + dsh.client.platform: "web"
cordis.patch.yml - insert: dsh-taffy-mood
host.js Host 半边:session/event 状态机 + 包内素材路由 + JSON API
client.js Client 半边:__ModuleLoader__ 包装的 overlay/控制台/设置页
assets/ 全部素材(15 张在用 GIF + 备用 JPG)
test/smoke.mjs 冒烟测试:node test/smoke.mjs
- Host 通过
ctx.on('session/event')审计日志事件驱动状态机(approval/*、tool/*、turn/end、assistant/chunk、user/message);运行检测直接扫描 agents 注册表(事件计数会漏掉激活前已 running 的 agent) - 浏览器半边经
/dsh-taffy-mood/api/state轮询状态、/api/action提交动作(lock / clear-rejected / test-approve),素材经/dsh-taffy-mood/assets/*白名单路由提供并内存缓存 - 写动作严格 POST-only + Origin 校验(仅放行
127.0.0.1/localhostloopback 与缺 Origin 的本地工具),防止跨源页面通过<img>触发审批弹卡 - 轮询节奏按需调度:活跃状态 300ms 跟手,空闲 2s 兜底,时间态到期精确触发
- 插话判定 = 工具执行中或 2.5 秒内有 chunk,避免新轮次启动瞬间的时序误报
- 打字检测用官方
conversation.composer.dockInputZone 的props.input.draft - 阈值可通过
~/.dsh/profiles/web/cordis.patch.yml覆盖(config:字段,蛇形命名),如surprised_ms: 6000/sleep_after_ms: 600000 - 素材按内容哈希永久缓存(
max-age=31536000, immutable),URL 形如/assets/taffy-cry.a1b2c3d4.gif;换包换 URL 不卡旧版,老 URL 走 301 兼容 - 纯 ESM host + ModuleLoader 包装 client,无构建步骤、无 npm 依赖,clone 即源码即产物
有问题欢迎投issue和pr,喜欢就点个免费的star吧
License
MIT
链接
同类插件
PC2005-cloud/dsh-pet#dsh-pet★ 1228
DSH Web UI 桌面宠物:25 个透明动画、屏幕漫游、点击反应与拖拽,附可复现的素材生成链。
Nagi-ovo/dsh-ads★ 656
2005 年中文站点风格的整活广告插件:侧栏广告/信息流/角落弹窗 + 假关闭叉,素材全虚构。
vlln/whale-girl★ 356
桌面宠物(QQ 宠物形态):右下角悬浮、可拖拽/投喂/玩耍。
yyh-001/dsh-meme★ 169
聊天表情包:纯文本斗图、情绪主动发图、像 QQ/微信 一样发图、AI 自动学图、自定义表情包。
a86582751/dsh-nexttavern★ 163
面向 DeepSeek Harness 的角色扮演工作台:人物卡可以导入(SillyTavern/TauriTavern),也可以从零交互式写出一张;长篇 TXT 能改编成可玩的角色卡,精读或粗颗粒度两种读法;主代理按剧情主动查阅世界书,正文在独立的酒馆阅读 TAB 中呈现;同一对话里探索多条世界线(重新生成、改后发送、显式分支);带作用域的文风预设(16 种自带文风)、角色 Agent 集群、独立决策卡,以及角色卡或小说导出;长篇由固定设定前缀、硬切上下文窗口、可追溯导演笔记与关键词/语义/混合检索撑住,嵌入可用在线服务,也可完全本地运行。面向 Harness 0.1.2-alpha.3,安装需按文档应用显式兼容补丁。
Sutera-Diffusus/dsh-whale-musume★ 119
元气鲸鱼娘桌宠:摸头养成、按工具类型联动的工作状态、494 条台词、30 项成就、成长日记、拖拽惯性、主题适配与无障碍模式。关键词感知与余额关心默认关闭、需手动开启;可选的天气心情只在你填了城市后才会请求 Open-Meteo。无遥测。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。