dsh-theme-minecraft
把 DeepSeek Harness 变成一个像 Minecraft Java Edition 一样使用的 AI Coding Agent —— 打开 dsh web,第一眼不是「AI 编程工具」,而是「我打开了 Minecraft,这个世界里住着一个 AI」。
工作原理:本主题是一个标准 DSH 插件(bundle),不修改 DeepSeek Harness 任何核心源码。 会话、消息流、工具调用、审批、预设、工作区、凭据等真实能力全部通过 DSH 现有 JSON-RPC / WebSocket API 完成,界面上的每一帧状态都有真实数据来源,没有任何伪造。
✨ 功能特性
- 原版主菜单 —— WebGL 旋转全景 + 像素 Logo + 黄色闪字 + 石板按钮,
dsh web打印的 URL 打开即是 - 会话即世界存档 —— 「继续对话」渲染成存档选择页,重命名 / 归档 / 刷新都走真实
session/*调用 - 模式选择 = Agent 预设 —— 生存 / 创造 / 冒险 / 专家四张像素皮肤,对应 DSH 的 standard / ptc / minimal / cordis 预设
- 世界内聊天台 —— Steve 与「AI him」对话:流式输出、思考过程可折叠、模型 / Token / 工作区实时面板
- 工具调用卡片 —— 📖 打开书、⚙️ 红石机关、⛏️ 挖掉方块……每个真实
tool/call/tool/result都有像素皮肤 - 危险操作审批 —— 审批面板弹出时跑酷小游戏自动暂停,允许 / 拒绝后恢复(
approval/requestwaterfall) - 村民提问 —— AI 的澄清问题以村民对话气泡呈现,回答直接回流 DSH(
user-questions/request) - AI 思考跑酷 —— Chrome 离线小恐龙跑酷(T-Rex Runner,Chromium BSD 许可)只由真实 THINKING / STREAMING / TOOL_CALLING 状态驱动,空闲时绝不假装在思考
- 五页设置中心 —— 游戏 / AI / 世界 / 音频 / 视觉:设置存 localStorage,音乐存 IndexedDB,API Key 存 DSH 凭据库
- 音效与音乐 —— WebAudio 合成 8-bit 音效,支持导入自己的背景音乐(MP3 / WAV / OGG / FLAC / M4A / AAC / OPUS)
- 桌宠与粒子 —— 互动桌宠(美西螈/猫/狼/苦力怕/恶魂,支持喂食、好感度、图鉴换宠)+ 经验球 / 红石粒子(限量 80 粒),独立开关
- 零侵入 —— 经典 DSH Web 界面原样保留,
/index.html一键切回
📦 安装与使用
1. 环境要求
| 依赖 | 要求 |
|---|---|
| Node.js | ^22.19 或 >=24(DeepSeek Harness 运行要求) |
| DeepSeek Harness | 已安装,且 dsh 命令可用 |
| 浏览器 | 支持 WebGL 与 WebSocket 的现代浏览器 |
| DEEPSEEK_API_KEY | 真实对话必需,见下方「配置」步骤 |
2. 安装主题
方式一:安装到 web profile(标准用法)
dsh plugin --profile web add dsh-theme-minecraft # npm 发布后
dsh plugin --profile web add ./dsh-theme-minecraft # 或本地目录安装
安装后插件进入 ~/.dsh/profiles/web,随 dsh web 自动挂载,无需其他步骤。
方式二:仓库内源码运行(开发调试)
在 DeepSeek Harness 仓库根目录执行:
pnpm dsh web --patch ./dsh-theme-minecraft/cordis.source.patch.yml --no-open
# 浏览器打开 http://127.0.0.1:3080/
3. 配置
- 登录:使用
dsh web打印的带?token=的 URL 完成登录(与原版一致的签名 Cookie 流程,主题复用了connection.authorizeIndex,没有绕过任何认证)。 - API Key(二选一):
- 主题内:主菜单 → 设置… → AI 设置 → 保存(走
credentials/set写入 DSH 凭据库,值只进不出); - 环境变量:在
.env里提供DEEPSEEK_API_KEY。
- 主题内:主菜单 → 设置… → AI 设置 → 保存(走
4. 启动
dsh web
打开终端打印的 URL,即看到 Minecraft 主菜单。想回到经典界面,直接访问
http://<host>:<port>/index.html。主菜单的「模型选择」可切换新对话使用的模型
(session/modelCatalog 列出部署内全部可路由提供方,含非 DeepSeek 厂家;选择经
session/selectModel 安装到新会话)。
🛠 技术栈
| 技术 | 用途 | 版本 / 兼容范围 |
|---|---|---|
| JavaScript(ESM) | 插件与前端全部逻辑,零运行时依赖 | ES2022+ |
| Node.js | 宿主运行环境 | ^22.19 或 >=24 |
| Cordis 插件框架 | 插件生命周期与依赖注入 | >=0.x(peer 依赖) |
| WebSocket + JSON-RPC | 与 DSH 的全部真实通信(RPC / 流 / 事件) | DSH 内置 API |
| WebGL | 主菜单全景立方体贴图 | 浏览器原生(无 three.js) |
| Canvas 2D | AI 思考跑酷小游戏渲染(iframe 内 T-Rex) | 浏览器原生 |
| Web Audio API | 8-bit 音效合成与背景音乐播放 | 浏览器原生 |
| IndexedDB / localStorage | 设置与音乐文件持久化 | 浏览器原生 |
📁 项目结构
dsh-theme-minecraft/
├── .github/
│ └── workflows/
│ └── static.yml # GitHub Pages 自动部署(demo/ 素材演示站)
├── demo/ # Minecraft-Panorama 素材演示站(GitHub Pages)
│ ├── index.html # 主菜单演示(three.js 高清全景背景)
│ ├── 404.html # Pages 404 页面
│ ├── asset/ # 全景立方体贴图 6 张 + 界面素材
│ ├── css/ # 演示站样式与像素字体
│ ├── figure/ # 角色头像(Steve / 村民 / 苦力怕)
│ ├── loading/ # 加载地形页演示
│ └── worlds/ # 选择世界页演示
├── docs/
│ └── 开发文档.md # 主题设计开发文档
├── screenshots/ # README 演示截图
├── web/ # 主题本体(单页应用)
│ ├── index.html # SPA 外壳
│ ├── manifest.webmanifest # PWA 清单
│ ├── css/
│ │ ├── minecraft.css # 主菜单 / 存档页 / 设置页视觉
│ │ └── hud.css # 游戏 HUD
│ ├── fonts/ # Minecraft 风格像素字体(ttf / woff)
│ ├── assets/ # 官方素材:全景图、GUI、头像
│ ├── js/
│ │ ├── rpc.js # 浏览器协议客户端(unary RPC + 流 + $events)
│ │ ├── panorama.js # 原生 WebGL 立方体贴图全景
│ │ ├── menu.js # 主菜单 / 存档 / 模式 / 设置
│ │ ├── world.js # 游戏 HUD、AI 状态机、审批与提问面板
│ │ ├── store.js # localStorage 设置 + IndexedDB 音乐
│ │ ├── audio.js # WebAudio 合成音效 + 背景音乐
│ │ ├── particles.js # 经验球 / 红石粒子(限量 80 粒)
│ │ ├── pet.js # 桌宠(iframe 挂载 web/pet/pet.html)
│ │ ├── ui.js # 对话框 / toast / 闪字库 / 模式风味命名
│ │ └── main.js # 路由与启动
│ ├── pet/ # 桌宠应用本体(pet.html + picture/ 素材)
│ └── mini-games/
│ ├── dino-runner.js # 跑酷封装(T-Rex iframe 适配,createDinoGame 工厂)
│ └── t-rex/ # Chrome 离线小恐龙跑酷本体(Chromium BSD 许可)
├── index.js # Host 插件:注册 / 与 /minecraft 两条路由
├── cordis.patch.yml # bundle 层挂载声明(DSH 插件标记)
├── cordis.source.patch.yml # 仓库内源码调试层
├── package.json # dsh.bundle.patch 声明(bundle 形态)
├── LICENSE # MIT
├── .gitignore
├── README.md
└── README_EN.md
📸 效果截图
主菜单 —— 下界全景旋转背景,黄色闪字是每个玩家的 reminder:

世界存档 —— 历史会话渲染为存档卡片,可直接进入、重命名或刷新:

模式选择 —— 四种游戏模式即四种 Agent 预设,右侧是 DSH 真实描述:

世界内对话 —— Steve 与「AI him」聊天,AI 思考时弹窗出现小恐龙跑酷小游戏:

工具与思考过程 —— 工具调用卡片、可折叠思考过程、完成时的经验球粒子:

设置中心 —— 游戏 / AI / 世界 / 音频 / 视觉五个标签页:

仓库另带一个独立的 three.js 全景演示站(
demo/目录,即 Minecraft-Panorama 素材站), push 到 main 后由 GitHub Pages 自动部署;主题本体不依赖 three.js,全景由原生 WebGL 实现。
📄 License 信息
本项目以 MIT 协议开源。
⚠️ 素材版权说明:
Minecraft名称与官方素材(全景图、GUI 贴图、角色头像、像素字体) 版权归 Mojang AB / Microsoft 所有,本项目仅作非商用粉丝主题使用。请勿将本仓库用于 商业产品;如需移除,Mojang 可随时提出要求。
🤝 贡献指南
欢迎 Issue 与 PR!为提高协作效率,请遵循以下约定。
提交 Issue
- Bug 报告请包含:
- 环境信息:操作系统、浏览器及版本、Node.js 版本、DeepSeek Harness 版本;
- 复现步骤(从哪条命令开始)、期望行为、实际行为;
- 浏览器控制台与
dsh web终端日志截图。
- 功能请求请说明:想解决的场景、期望的 Minecraft 表现形式、对应的 DSH 能力(若已知)。
提交 Pull Request
1. Fork 本仓库
2. 新建分支 git checkout -b feat/your-feature # 或 fix/your-fix
3. 提交变更 git commit -m "feat: 支持 xxx" # 遵循 Conventional Commits
4. 推送并建 PR Push 到你的 Fork,向 main 分支发起 Pull Request
5. 等待 Review 按评审意见修改,通过后由维护者合并
注意事项:UI 变更请附改动前后的截图;请勿在 PR 中引入对 DeepSeek Harness 核心源码 的修改——主题能力只应通过 DSH 现有插件机制与 API 实现。
No comments yet. Be the first to write one.