
10086ggqq/dsh_theme_terraria
dsh-theme-terraria
dsh-theme-terraria is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add dsh-theme-terraria`Restart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-theme-terraria)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from 10086ggqq/dsh_theme_terraria, cleaned of badges and images.
dsh_theme_terraria
把 DeepSeek Harness 的 Web UI 换成一整块泰拉瑞亚(Terraria)像素世界——向导陪你写代码。
目录
1. 项目概述与核心定位
dsh_theme_terraria(npm 包名 dsh-theme-terraria)是 DeepSeek Harness(dsh)的泰拉瑞亚主题插件。它用一个自包含的 index.html(约 98 KB,零外部 JS 依赖)替换官方 React 前端,把「AI 编码代理控制台」包装成一场像素冒险:
- 标准 dsh 插件包:本仓库本身就是一个 npm 包——入口
index.js导出插件规范硬性要求的apply(ctx),cordis.patch.yml声明dsh.bundle补丁层,一条dsh plugin --profile web add dsh-theme-terraria即可安装/卸载,不改动 dsh 安装中的任何文件。 - 不是纯皮肤:主题直连 dsh 宿主的 JSON-RPC(HTTP 上行)+ WebSocket(事件下行)协议,会话创建、消息发送、流式输出、工具审批、模型切换、工作空间管理全部真实可用。填入 DeepSeek API 密钥即可与模型对话。
- 四个难度档 = 四个 Agent 预设:旅途(standard,全功能编码代理)、软核(code,Code Mode SDK)、中核(minimal,极简双工具)、硬核(cordis,自定义 preset 模板)。切难度就是切预设,插件的组合随难度实时变化。
- 单文件交付:整块 UI 内联在一个 HTML 文件里,由插件直接伺服,无任何运行时框架、无构建步骤。
核心定位一览
| 官方 UI 概念 | 泰拉瑞亚主题映射 |
|---|---|
| Agent Preset(预设) | 难度档:旅途 / 软核 / 中核 / 硬核 |
| 会话(Session) | 旅途 / 冒险 |
| 用户消息 | 冒险者 |
| 工具审批请求 | 审批石板 |
| 任务清单(todo) | 任务清单 HUD |
| API 密钥状态 | 生命水晶指示灯 |
| 插件组合 | 随难度更换的装备 |
2. 安装与部署指南(含避坑)
环境要求
- 已安装的 dsh(DeepSeek Harness)CLI,命令行
dsh --version可用 - Node.js
^22.19 || >=24与 pnpm(dsh plugin内部转发给 pnpm 管理依赖) - DeepSeek API 密钥(对话功能必需,其他界面可无密钥浏览)
安装步骤(标准插件安装)
# 1. 把主题作为插件安装进 web profile
dsh plugin --profile web add dsh-theme-terraria
# 2. 启动 Web 服务
dsh web
# 默认地址:http://127.0.0.1:3080/
dsh plugin add 会把 dsh-theme-terraria 写入 web profile 的依赖与 dsh.profile.bundles 层列表;本插件的 cordis.patch.yml 补丁层停用官方 web-runtime 行并插入同构的 terraria-theme 行,插件入口 index.js 导出的 apply(ctx) 再把官方 @deepseek-ai/dsh-web-app 的前端解析器指向本包的 web/index.html——除换皮外,官方 Web 运行时的全部行为(dist 伺服、/api 信任边界、DSH_WEB_URL、URL 打印)保持不变。
包尚未发布到 npm 时
# 从 GitHub 仓库安装
dsh plugin --profile web add github:10086ggqq/dsh_theme_terraria
# 或从本地检出的本仓库安装
dsh plugin --profile web add /path/to/dsh_theme_terraria
在 deepseek-harness 仓库内以源码方式运行 dsh 时,上述命令加
pnpm前缀(如pnpm dsh plugin --profile web add ...、pnpm dsh web)。
桌面版(Electron 应用)里如何生效
桌面应用窗口有两个硬限制:主窗口加载的是 dsh-app://app/,而这个协议把 /、/index.html、
/assets/*、/favicon.svg、/manifest.webmanifest 直接映射到应用内置的官方前端,
宿主服务出来的 dist 在窗口里永远不会被请求;只有其余路径才会带上宿主 cookie 转发给宿主。
本插件因此走两条路:
- 整体接管(默认):注入层先预检
/terraria/theme.html(就是web/index.html), 然后把窗口导航到该地址 —— 桌面窗口里跑的就是网页端那同一份 UI:标题屏、向导对话、 人物创建、任务 HUD、8-bit 音效、壁纸与桌宠全部一致。/api/*仍由桌面壳带 cookie 转发, WebSocket 连宿主 origin(地址由宿主经__DSH_TRANSPORT__.streamBaseUrl提供)。 - 兜底皮肤:主题页不可用(路由缺失 / 预检失败)或你手动关掉接管时,官方界面会套上一层
注入式像素皮肤(
skin/terraria.css覆盖官方--dsw-*令牌与通用元素样式),至少不是原样。
桌面壳专属适配:
- 原生标题栏配色:preload 读页面里的
--dsw-*令牌,给窗口控制按钮那一条与原生菜单配色; - 给窗口控制按钮让位:三个按钮画在窗口右上角、压在网页之上,顶栏因此按实测宽度右侧留白
(
navigator.windowControlsOverlay的 titlebar-area,拿不到时按 138 × DPR 估算), 让「对话 / 终端 / 音效 / 音乐 / 设置」整体左移,而不是把整个界面往下压; - 窗口拖动:顶栏与标题屏空白是
-webkit-app-region: drag,其中的按钮显式no-drag, 所以拖得动窗口也点得动按钮(早期用整条 fixed 拖拽带,会把顶栏按钮的点击全部吞掉); - 浮层必须
no-drag:弹窗浮层(#modal-root)显式no-drag,并且打开期间给<html>挂data-terraria-modal把底下的拖拽区整体撤掉 —— 标题屏那条整屏 drag 区会把画在它上面的浮层点击 全部吃掉(「继续会话」「人物桌宠」的「关闭」点了没反应就是这个);弹窗还可以用 <kbd>Esc</kbd>、 点背景或点「关闭」退出。
…


