Back to home

lovejavacore

dsh-minecraft-pet

DeepSeek Harness(DSH)网页界面的桌面宠物——Steve、Creeper 和 Ultraman 会根据代理的工作状态做出反应。A desktop pet for the DeepSeek Harness (DSH) Web GUI — Steve, Creeper and Ultraman react to the agent's working status.

Stars
1
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

DSH Minecraft Pet · DSH 我的世界桌面宠物

License: MIT GitHub stars

一个运行在 DeepSeek Harness (DSH) Web GUI 右下角的 Minecraft 主题桌面宠物——史蒂夫(Steve)、苦力怕(Creeper)与奥特曼(Ultraman),根据当前 Agent 的工作状态实时切换动作,并在任务完成时播放专属音效。

A Minecraft-themed desktop pet in the bottom-right corner of the DSH Web GUI — Steve, Creeper and Ultraman react to the agent's working status with animations and per-pet completion sounds.

目录 Contents

特性 Features

🐾 三只宠物

宠物说明皮肤
⛏ 史蒂夫 Steve左手拿钻石镐,像素画普通 / 钻石甲
💥 苦力怕 Creeper侧视四腿,像素画
🦸 奥特曼 UltramanSVG 矢量,红银条纹初代 / 赛文 / 泰罗 / 迪迦 / 泽塔

🎬 三态动作

状态动作
待机 idle轻微上下浮动
工作 working史蒂夫挥镐、奥特曼出拳 + 踏步、苦力怕渐进变红膨胀(蓄力)
完成 completed专属必杀 + 音效

✨ 完成专属必杀

宠物必杀音效
史蒂夫跳跃 + 矿石掉落粒子「叮叮」上行琶音
苦力怕爆炸光球 + 火光粒子「嘶嘶 → Boom」
奥特曼·初代斯派修姆光线(蓝白光)变身英雄登场
奥特曼·赛文冰斧投掷(旋转飞出 + 命中闪光)变身英雄登场
奥特曼·泰罗斯特利姆光线(五彩光束)变身英雄登场
奥特曼·迪迦哉佩利敖光线(双手十字 + 紫光)变身英雄登场
奥特曼·泽塔泽斯蒂姆光线(双手并拢 + 蓝光)变身英雄登场

🖱 交互

操作效果
左键点击切换宠物(史蒂夫 → 苦力怕 → 奥特曼)
右键点击打开 / 关闭设置菜单
拖拽移动宠物
菜单内切换皮肤、四角定位、试听音效、静音、复位、隐藏

目录结构

dsh-minecraft-pet/
├── README.md
├── LICENSE
├── package.json
├── .gitignore
├── src/
│   ├── host.js        # Host 半:Agent 状态跟踪 + Client 私有 RPC
│   └── client.js      # Client 半:宠物 UI / 动画 / 音效 / 交互
└── audio/
    ├── generate.js    # 音效生成脚本(8-bit PCM WAV 程序化合成)
    ├── steve.wav
    ├── ultraman.wav
    └── creeper.wav

截图 / 演示 Screenshots

史蒂夫 Steve

更多宠物(苦力怕 / 奥特曼)与三态动作(待机 / 工作 / 完成)的动图可继续补充到 assets/ 目录。

如何安装 Install

环境要求

  • DeepSeek Harness (DSH) Web GUI(支持 Cordis 动态插件)
  • 可选:Node.js ≥ 14(用于运行 npm run audio 重新生成音效交付物)

本插件是一个 Cordis 动态插件(Dynamic Cordis Plugin),由「Host 半」和「Client 半」组成。

  1. 在 DSH Web GUI 中,将 src/host.jscreateHostHalf() 返回的 { ... } 作为 Host 代码(code.host), 将 src/client.jscreateClientHalf() 返回的 { ... } 作为 Client 代码(code.client)。
  2. 通过 cordis_define 定义插件,再用 cordis_run 激活。
  3. 首次使用前,在菜单里点一次「🔊 试听音效」以「预热」浏览器的音频自动播放。

这两个文件为了可读性被包装成了 module.exports 工厂函数;实际作为动态插件使用时, 直接取函数体内 return { ... } 的部分即可(host.js / client.jsreturn 行到结尾大括号)。

技术实现 Implementation

  • 状态来源(Host):监听 agent/status 事件(idle ⇄ running),按 Agent id 精确计数,避免子代理干扰; 通过 get-status 私有 RPC 边沿触发「已完成」。
  • 渲染(Client):注册到 shell.overlay 槽位,用纯 React.createElement + 内联 SVG 绘制像素画/矢量宠物。
  • 动画styles.insert 注入 CSS keyframes,对 SVG <g> 局部元素(镐子、手臂、腿)做 transform 动画。
  • 音效:客户端没有 AudioContext/fetch/文件访问,因此用纯 JS 程序化合成 8-bit PCM WAV 数据 URI, 渲染 <audio> 元素播放;audio/generate.js 用同一套合成算法生成可试听的 .wav 交付物。

常见问题 FAQ

  • 音效不响? 浏览器自动播放策略要求页面至少有过一次用户交互。先在菜单里点「🔊 试听音效」一次即可「预热」。
  • 如何切换奥特曼皮肤? 右键打开菜单,选中奥特曼后会出现「初代 / 赛文 / 泰罗 / 迪迦 / 泽塔」按钮。
  • 宠物位置怎么复位? 菜单里点「↺ 复位位置」,或直接拖拽到任意位置后用四角定位按钮重新固定。
  • 想加新宠物 / 新皮肤? 参考 src/client.js 里的 PETSULTRA_SKINS 与对应的 Art 渲染函数即可扩展,欢迎 PR。

贡献 Contributing

欢迎提交 Issue 和 Pull Request。

  1. Fork 本仓库并克隆到本地。
  2. 修改 src/host.js / src/client.js(纯 JavaScript,无 TypeScript / JSX / 打包)。
  3. 保持代码风格一致,提交信息清晰。
  4. 推送到你的 fork,发起 Pull Request 到 main 分支。

致谢 Acknowledgments

  • Minecraft(© Mojang / Microsoft)—— 史蒂夫、苦力怕形象来源
  • 奥特曼系列(© 圆谷制作株式会社 Tsuburaya Productions)—— 奥特曼形象与必杀技来源
  • DeepSeek Harness —— 运行平台

免责声明 Disclaimer

本项目仅用于学习与技术演示,为粉丝致敬性质,与 Mojang / Microsoft 及圆谷制作株式会社无关

  • 「Minecraft」「Steve」「Creeper」及相关形象版权归 Mojang / Microsoft 所有。
  • 「奥特曼 / Ultraman」及相关角色、必杀技名称版权归 圆谷制作株式会社 所有。

本项目不包含任何官方素材、音频或图像资源;所有宠物造型均为代码绘制的原创近似风格,音效为程序化合成。请勿将本项目用于任何商业用途。

License

MIT