跳到主要内容

dsh-blockworld

已验证

@zebbkira/dsh-blockworld · v0.2.2 · MIT · Web 界面

A deterministic block-world skin and context castle for the DeepSeek Harness web GUI.

安装

dsh plugin add @zebbkira/dsh-blockworld

dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南

源码

标签

作者

说明文档

DSH Blockworld

一个为 DeepSeek Harness Web GUI 设计的方块世界皮肤插件。它不只是更换背景和图标:每个会话都会把真实的上下文、工具、Skill、MCP 与压缩轨迹装配成一座可检查的西方幻想城邦。

本项目不是 Minecraft 官方产品,也未获 Mojang 或 Microsoft 认可。发布包不包含 Minecraft 官方纹理、图标、声音、商标或其他游戏资产。城堡、城区、地形与材质由本项目程序化绘制;昼夜全景是为本项目生成并人工验收的原创 AI 辅助素材;声音由浏览器实时合成。素材来源与限制见 assets/README.md

它如何建城

  • 首次 request/header 把系统提示词铺成永久地基。
  • 官方 projectedTokens / contextWindow 投影驱动城堡从地基、门楼、主堡、城墙、塔楼成长到完整城垛;95% 后轮廓停止扩大,转为红石警戒。
  • 用户消息铺路和增加楼层,助手消息点亮房间、补齐墙体与屋顶。
  • Shell、Terminal 与 Subprocess 建成铁匠铺;文件工具建成工坊仓库;Web/Search 建成观星台;Code/LSP 建成建筑师公会;Plan/Todo/Interaction 建成市政厅。
  • 实际加载的 Skill 建成法师图书塔。Skill catalog 只进入清单,不会被误判为已加载。
  • mcp__<server>__<tool> 的首次真实调用建成 MCP 传送门;重复调用最多升级三级,之后只增加铭牌计数。
  • Compaction 将旧结构沉入地下档案馆;活动城堡按新的官方投影缩小,历史压缩仍可检查。
  • Session ID 稳定决定地形、城区槽位与变体:同一会话刷新完全复现,不同会话形成不同城邦。

界面与隐私

启用后,会话标题栏出现“城堡 + 上下文百分比”按钮。抽屉默认关闭,并通过 Portal 锚定在 [data-conversation-scroll] 中:宽屏从中央会话列右侧展开,窄屏变成中央列底部面板。它不会注册或替换 DSH 的 details,因此项目文件树和其他右侧栏插件保持原样。

城堡 Canvas 可以点击,旁边同时提供完整的键盘建筑清单。羊皮纸卷轴默认只显示名称、状态、调用次数和估算占用;系统提示词、消息、工具 Schema、工具参数/结果、Skill 正文与 MCP 明细只有主动展开才显示。隐私遮罩会立即隐藏原文和项目路径。

总容量及系统、工具、消息三大分类读取 DSH 官方 contextPressurecontextBreakdown 投影;单项数字使用本地字符权重并明确标记为 ~ 估算。

安装

需要支持插件 bundle 的 DeepSeek Harness Web profile。发布后可从 npm 安装:

dsh plugin --profile web add @zebbkira/dsh-blockworld

也可以直接安装本地仓库进行开发:

dsh plugin --profile web add E:\dsh-blockworld-theme

首次安装保持关闭。打开 DSH 的“设置 → 常规 → 方块世界”,选择“跟随系统昼夜”“昼间城邦”或“夜间城邦”即可启用。设置会原子保存到 $DSH_HOME/blockworld-state.jsonlocalStorage 只承担当前浏览器的快速缓存。

卸载插件后,主题注册、会话投影、Slot、监听器和插件样式会随 Cordis/客户端加载器一并撤回。

公开状态格式

interface BlockworldStateV1 {
  version: 1
  theme: 'off' | 'system' | 'day' | 'night'
  motion: 'system' | 'full' | 'reduced'
  sound: { enabled: boolean; volume: number }
  privacyMask: boolean
}

Host 提供同源 GET /blockworld/statePUT /blockworld/state,写入请求上限 32 KiB。浏览器侧独立注册 blockworld Conversation View target,只消费 DSH 的公开 session event 与 token-meter 投影,不导入 trajectory 或其他插件的内部组件。

开发与验证

pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run smoke:client
pnpm run pack:check

测试覆盖状态校验与原子写入、32 KiB 路由上限、公开事件折叠、Skill catalog/加载区分、MCP 命名、工具城区分类、三级升级、容量阶段、确定性布局、压缩遗迹、抽屉关闭/焦点恢复、隐私遮罩、原文展开、文件树共存和运行中建造帧。

固定数据预览

预览不需要 API key。它使用固定时间、固定会话数据和减少动态模式;同一个 URL 会复现同一座城邦。

pnpm exec vite --host 127.0.0.1 --port 4173

打开 http://127.0.0.1:4173/preview/?case=day-86。场景切换器位于 [data-testid="visual-capture-frame"] 外,因此截图工具可以只截取三栏应用框架。

内置场景为 day-emptyday-25day-60day-86night-86night-97-warningall-districtsdetails-opencompact-bottomprivacy-mask。也可以直接覆盖 theme=day|nightstage=survey|foundation|walls|battlements|warningwidth=wide|compactprivacy=on|off

视觉验收

视觉验收同时检查预览矩阵和真实 DSH Web profile。预览应保持木材侧栏、带阅读层的全景会话区和石材详情栏三种可辨识材质;用户气泡、上下文注入、失败提示与新建会话按钮应继承各自的方块材质并达到 WCAG AA 文字对比度;25% 地基至少占世界画布宽度三分之一;详情栏不被城堡抽屉遮挡;减少动态时不应存在运行中的动画。

从 DeepSeek Harness 仓库创建一次性本地 profile:

$env:DSH_HOME = Join-Path $env:TEMP 'dsh-blockworld-visual-profile'
pnpm dsh plugin --profile web add E:\dsh-blockworld-theme
pnpm dsh --profile web --host 127.0.0.1 --port 43111

在 DSH 中连接一个工作区,再到“设置 → 通用设置 → 方块世界”分别选择昼间与夜间城邦。浏览器验收以 [data-slot="root"][data-slot="sidebar"][data-conversation-scroll][data-slot="details"]data-chat-flow-kind 为稳定锚点;插件只在这些锚点的应用框架子节点与已声明的消息类型中施加材质,不依赖构建生成的 class 名。

License

MIT. See LICENSE.