Bundle
dsh-minecraft-ui
A playable Minecraft-inspired voxel workspace overlay for DeepSeek Harness Web
- Source
- TFboy1
- stars
- 13 stars
- License
- MIT
- Updated
- Updated 2 hours ago
Readme
<p align="center">
<img src="./docs/banner.png" alt="DSHcraft — Play Your Agent Workspace" width="100%">
</p>
[](https://www.npmjs.com/package/dsh-minecraft-ui) [](https://www.bilibili.com/video/BV1d48c6BEPj) [](https://www.ifdian.net/item/1a20ed042f0711f1865a52540025c377) [](https://www.creem.io/payment/prod_1yc40mIhKwwrc7iqFOG9G2) [](https://github.com/TFboy1/dsh-minecraft-ui/stargazers) [](./LICENSE)
[](https://github.com/TFboy1/dsh-minecraft-ui/actions/workflows/ci.yml) [](https://www.npmjs.com/package/dsh-minecraft-ui) [](#项目介绍) [](https://threejs.org/) [](https://react.dev/) [](https://nodejs.org/)
[](#) [](./docs/README_EN.md) [](./docs/README_JA.md) [](./docs/README_FR.md) [](./docs/README_DE.md)
<p align="center">
把 DeepSeek Harness 变成一座可游玩的 Minecraft 风格 Agent 工作空间。<br>
<sub>探索体素世界 · 装备模型 · 附魔推理强度 · 与正在工作的 Agent 并肩冒险</sub>
</p>
## 安装
DSHcraft 是一个同时声明 `dsh.bundle` 和 `dsh.client` 的正式组合包。安装后,它会贡献稳定 Cordis 行 `minecraft-ui`,浏览器模块身份为 `dsh-minecraft-ui`。
不要直接在正在使用的主 Web profile 中启用候选版本。先安装到独立 canary profile,检查组合层,再通过 Guardian stage / canary / promote 流程提升。
### npm(推荐)
安装预构建包:
```bash
dsh plugin --profile <canary> add dsh-minecraft-ui
dsh --profile <canary> --dump-config
```
### 本地 tarball
```bash
pnpm install
pnpm run verify
pnpm pack
dsh plugin --profile <canary> add ./dsh-minecraft-ui-0.3.0.tgz
dsh --profile <canary> --dump-config
```
### 固定 Git commit
```bash
dsh plugin --profile <canary> add github:TFboy1/dsh-minecraft-ui#<commit-sha>
```
Git 安装会运行本包的 `prepare` 构建。pnpm 10+ 要求用户显式允许该安装脚本;只对可信源码授权,并按 DSH 输出的准确包键配置 `allowBuilds: dsh-minecraft-ui`。不希望授予安装时构建权限时,请使用 npm 预构建包或 tarball。
卸载:
```bash
dsh plugin --profile <canary> remove dsh-minecraft-ui
```
## 项目介绍
把 DeepSeek Harness 变成一座可游玩的 Minecraft 风格 Agent 工作空间。
DSHcraft 不是一套重新实现的聊天界面。它以 Cordis Client Plugin 的形式挂载到官方 `shell.overlay`,保留 DSH 原生的 Workspace、Session、Conversation、Trajectory、Composer、权限、模型选择和上下文统计,只把进入方式、空间隐喻与视觉表现改造成方块世界。
## 界面预览
<p align="center">
<a href="https://www.bilibili.com/video/BV1d48c6BEPj"><strong>▶ Minecraft 版 DeepSeek Harness 长这样?【B站AI创作公开赛】</strong></a><br>
<sub>点击前往哔哩哔哩观看完整视频演示</sub>
</p>
<table>
<tr>
<td align="center" width="50%">
<strong>可游玩的方块世界</strong><br>
<img src="./docs/screenshots/voxel-world.png" alt="DSHcraft 方块世界与游戏 HUD">
</td>
<td align="center" width="50%">
<strong>背包与合成界面</strong><br>
<img src="./docs/screenshots/inventory-crafting.png" alt="DSHcraft 背包、快捷栏与合成界面">
</td>
</tr>
<tr>
<td align="center" width="50%">
<strong>Agent 插件箱</strong><br>
<img src="./docs/screenshots/agent-plugin-chest.png" alt="DSHcraft Agent 插件箱与工具详情">
</td>
<td align="center" width="50%">
<strong>模型仓库</strong><br>
<img src="./docs/screenshots/model-chest.png" alt="DSHcraft 模型仓库与模型装备">
</td>
</tr>
<tr>
<td align="center" width="50%">
<strong>推理强度附魔</strong><br>
<img src="./docs/screenshots/reasoning-enchantment.png" alt="DSHcraft 推理强度选择界面">
</td>
<td align="center" width="50%">
<strong>语义化设施</strong><br>
<img src="./docs/screenshots/enchanting-table.png" alt="DSHcraft 附魔台与场景交互提示">
</td>
</tr>
</table>
## 核心理念
| DSH 概念 | DSHcraft 表现 |
| --- | --- |
| 正在运行的工作 | 室内工作小狗 |
| 最新 Agent 进展 | 小狗头顶状态牌 |
| Model | 装备 |
| Reasoning effort | 附魔 |
| Tool / Plugin capability | 箱子中的物品 |
| Chat / Composer | 工作台 |
| Context / Token | 经验条与背包压力 |
| Memory | 末影箱式长期存储隐喻(概念预留) |
| MCP | 红石系统(概念预留) |
| Workspace / Project | 地图与制图台 |
| Community Plugin | 野外静态社区宝箱 |
## 功能
### 方块世界
- 基于 Three.js 的第一人称体素世界。
- 可移动、跳跃、疾跑、潜行、挖掘、放置方块和切换快捷栏。
- 世界差异、玩家位置、背包、箱子与选择状态可持久化。
- 方块破坏后生成世界掉落物,包含弹出、下落、旋转、拾取延迟和靠近自动拾取。
- 背包空间不足时,未能拾取的剩余数量继续留在世界中。
### 原生 DSH 工作台
按 `G` 或使用室内工作台进入 Minecraft 风格的原生 DSH 界面:
- Workspace / Project 文件夹展开、收起和排序。
- 新建、打开、重命名、Fork、归档 Session。
- 原生“对话 / 轨迹”视图和历史分页。
- 原生 Composer、Queue、Steer、Stop、Slash Command 与附件逻辑。
- 原生权限模式、审批、模型、推理强度、Context 和 Token 统计。
- 额外提供 3×3 合成面板,但不替代原生会话功能。
### 工作小狗
- 只为**正在运行的工作**生成小狗;空闲 Session 不生成生物。
- 一只小狗对应一项运行中的 Session 工作。
- 状态牌显示该 Agent 最新进展,可覆盖思考、回复流、Tool Call、命令、队列、审批等待、错误和上下文整理等状态。
- Tool Call 会把小狗引导到对应设施并播放四足动作:
- Read → 资料书架
- Command → Agent 终端
- Web Search → 制图台
- Write / Edit → 工作台
- 右击小狗会切换到它对应的 Session,并直接打开原生工作台。
### 语义设施
| 设施 | 功能 | 快捷键 |
| --- | --- | --- |
| 工作台 | 原生 DSH 会话与 3×3 合成 | `G` |
| 模型箱 | 查看与选择模型装备 | `M` |
| 插件箱 | 管理当前 Agent 的工具能力 | `P` |
| 附魔台 | 调整推理强度 | `R` |
| 制图台 | 浏览 Workspace / Project 地图 | `N` |
| 社区插件宝箱 | 探索社区插件目录 | `L` |
| 资料书架 | Read 工具活动位置 | — |
| Agent 终端 | Command 工具活动位置 | — |
| 公告牌 | 操作教程 | — |
工作台、箱子、附魔台、书架、终端、制图台等设施被破坏后会掉落其自身物品,可进入背包并重新放置。旧存档中因早期错误掉落规则而丢失的室内核心设施会恢复一次。
## 操作
| 输入 | 行为 |
| --- | --- |
| `W A S D` | 移动 |
| `Space` | 跳跃 |
| `Ctrl` | 疾跑 |
| `Shift` | 潜行 |
| 鼠标移动 | 转动视角 |
| 左键长按 | 挖掘方块 |
| 右键 | 使用方块、打开设施或工作小狗 |
| 鼠标中键 | 选取目标方块 |
| 滚轮 / `1`–`9` | 切换快捷栏 |
| `E` | 背包 |
| `F` | 与副手交换 |
| `T` | 游戏内聊天 |
| `Tab` | Session 列表 |
| `Esc` | 游戏菜单 |
| `G` | 原生工作台 |
| `M` | 模型箱 |
| `P` | 插件箱 |
| `R` | 附魔台 |
| `N` | Workspace 地图 |
| `L` | 社区插件宝箱 |
首次点击画面后浏览器会请求 Pointer Lock。打开任何设施时会立即释放鼠标锁定。
## 配置
Bundle 自带安全默认值,用户可以在该 profile 的后置 patch 中覆盖稳定行 `minecraft-ui`:
```yaml
- id: minecraft-ui
config:
dataDirectory: dshcraft
catalogUrl: https://awesome-dsh-plugin.com/plugins.json
catalogCacheTtlMs: 21600000
catalogLimit: 2000
confirmationTtlMs: 60000
```
| 字段 | 默认值 | 说明 |
| --- | ---: | --- |
| `dataDirectory` | `dshcraft` | `$DSH_HOME` 内的安全相对目录 |
| `catalogUrl` | 社区目录 URL | 仅允许 HTTP(S) |
| `catalogCacheTtlMs` | `21600000` | 社区目录缓存时长 |
| `catalogLimit` | `2000` | 最多保留的目录条目数,范围 1–5000 |
| `confirmationTtlMs` | `60000` | 社区插件确认 token 有效期 |
Cordis 会用 Schemastery 校验配置并填充默认值;非法路径、协议和数值范围会在插件激活时直接报错。
## 社区插件安全模型
社区插件采用“发现 → 收集 → 检查 → 明确确认”的流程:
1. 从策展目录读取插件元数据。
2. 将候选插件收集到社区宝箱。
3. 展示安装命令、风险标记和第三方代码警告。
4. 用户确认后返回一份 Guardian 安装计划。
确认结果始终是 **dry-run**。DSHcraft 不会 spawn CLI,也不会自行修改任何 profile。候选插件必须交给 Guardian stage,在独立 canary 验证后再由用户决定是否 promote。
## 架构
```text
dsh-minecraft-ui/
├─ src/index.js # Host 插件、Config、RPC 与持久化
├─ cordis.patch.yml # dsh.bundle 贡献的组合层
├─ client/src/index.jsx # shell.overlay 注册与样式生命周期
├─ client/src/game-root.jsx # DSH 状态绑定与游戏 UI 组合
├─ client/src/engine.js # Three.js 世界、交互、掉落物和工作小狗
├─ client/src/world.js # 地形、建筑、方块与存档迁移
├─ client/src/inventory.js # 物品定义和堆叠规则
├─ client/src/inventory/ # 合成、容器和玩家背包状态机
├─ client/src/dsh/ # Session 投影、工具路由和社区战利品
├─ client/src/ui/ # 工作台、箱子、地图和 HUD
├─ scripts/build.mjs # Host / Client 确定性构建
├─ scripts/verify-package.mjs # Bundle、身份、许可与体积契约检查
├─ lib/index.js # 构建后的 Host 入口
├─ lib/client.js # lazy-CJS 浏览器 bundle
└─ test/ # Node test runner 测试
```
### 为什么使用 `shell.overlay`
官方 DSH Root 和 AppFrame 继续拥有 Sidebar、Conversation、Details 与 Composer。DSHcraft 只注册一层可逆的世界 Overlay,并在进入工作台时露出、换肤原生界面。
这种方式避免在第二个 React Root 中重复挂载 Session/Conversation,从而保护草稿、附件、流式状态和 Session 生命周期的一致性。
## 开发
### 环境要求
- Node.js 22+
- pnpm 11+
- 可运行的 DeepSeek Harness Web 环境
### 常用命令
```bash
pnpm install
pnpm test
pnpm run build
pnpm run package:check
pnpm run verify
pnpm pack --dry-run
```
- `pnpm test`:运行 Host、Package、背包、合成、移动、Session、模型、世界、工作小狗和掉落物测试。
- `pnpm run build`:从 `src/` 与 `client/src/` 生成 `lib/index.js`、`lib/client.js`;构建不改写源码目录。
- `pnpm run package:check`:检查 Bundle manifest、Client factory 身份、发布白名单、双许可和 bundle 体积。
- `pnpm run verify`:依次执行语法检查、构建、测试、Package 契约和产物检查。
- `prepare`:支持固定 commit 的 Git 安装。
- `prepack`:在 tarball / npm 发布前强制执行完整验证。
修改 Client 源码后必须重新运行 `pnpm run build`。前端人工验证由用户在独立 canary 中执行。
## 持久化
能力与社区状态默认写入:
```text
$DSH_HOME/dshcraft/capabilities.json
$DSH_HOME/dshcraft/community.json
$DSH_HOME/dshcraft/community-cache.json
```
世界、玩家与背包存档由游戏持久化服务管理。不要直接修改 DSH Session 日志。
## 已知限制
- 当前交互面向键盘和鼠标,不支持触屏游戏模式。
- 这是 DSH 的空间化主题与客户端,不是完整 Minecraft 实现。
- 社区目录不可用时会回退到缓存或内置候选条目。
- 部分设施属于 DSH 语义映射,行为与原版 Minecraft 方块不完全相同。
- Client bundle 包含 Three.js 和内嵌字体,因而被设置为 2 MB 以内的显式体积预算。
## License
项目代码采用 [MIT License](./LICENSE)。
像素字体使用 Monocraft,其许可文件位于 [`licenses/Monocraft-LICENSE.txt`](./licenses/Monocraft-LICENSE.txt)。Minecraft 是 Mojang Studios 的商标;本项目与 Mojang Studios 或 Microsoft 无隶属关系。
Install
dsh plugin --profile web add github:TFboy1/dsh-minecraft-ui
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-minecraft-ui from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.