Editor's note

kingOfSoySauce/dsh-skin-market

Native skin marketplace and lifecycle manager for DeepSeek Harness

This is a DeepSeek Harness (DSH) plugin. Review its GitHub README, installation information, maintenance status, and public security signals here.

DSH 皮肤市场

一个嵌入 DSH 设置页的皮肤市场,可以浏览、安装、使用、停用、更新和卸载社区皮肤。

DSH 设置中的皮肤市场发现页

DSH 皮肤市场中的 Deep Whale 皮肤详情弹窗

在线预览

点击查看在线皮肤市场

近期收录

  • 2026-08-18:dsh-endfield-ui0.5.0)——终末地工业风 DSH Web 工作台主题,安装版本固定到 commit 7993d607

查看近期收录日志

当前在线目录收录 201 款社区皮肤。

最近一次自动同步:2026-08-18。自动任务会同步 registry、catalog、项目 README 和近期收录日志。

安装皮肤市场插件

用命令安装:

dsh plugin --profile web add 'github:kingOfSoySauce/dsh-skin-market'

安装前请确保已关闭其他皮肤插件,避免冲突;或者使用下面的提示词,让 DSH 先检查冲突再安装,更省心。

复制给 DSH:先检查冲突,再安装皮肤市场

展开后复制下面的完整提示词:

请把 dsh-skin-market 插件安装到 DSH 的 web profile。不能先安装再检查,必须严格按以下顺序执行:

1. 安装前只读检查 web profile 的 package.json(dependencies 与 dsh.profile.bundles)、profile 的 cordis.patch.yml 和 $DSH_HOME/cordis.patch.yml(如有)。
2. 从当前启用的 bundles 中识别皮肤、主题或外观插件:排除 @deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app 和 dsh-skin-market;读取候选 package.json 的名称、描述、dsh.client/dsh.bundle 声明,必要时再读 README。无法确定的候选先列出包名和描述。
3. 如果发现已启用的皮肤插件,列出它们并停在安装前,提醒我先停用以避免冲突;未经我确认不得修改任何 profile 文件,也不得执行安装。
4. 如果没有冲突,明确说“未检测到已启用的皮肤插件”,然后直接执行:

dsh plugin --profile web add 'github:kingOfSoySauce/dsh-skin-market'

5. 安装后读取 web profile 的 package.json,确认 dependencies 和 dsh.profile.bundles 中都有 dsh-skin-market;缺失则报告安装或注册失败。
6. 告诉我如何重启 DSH Web,并确认重启后可从“设置 → 皮肤市场”打开。不要替我安装任何皮肤。

如果安装命令报错(例如 pnpm 不在 PATH、allowBuilds 构建审批、manifest 缺失),再读 https://github.com/kingOfSoySauce/dsh-skin-market 的 README「安装失败时,可以让 DSH 自己排查」一节处理,或把完整报错贴给我。

安装完成后,重启 DSH Web,打开「设置 → 皮肤市场」。

安装失败时,可以让 DSH 自己排查

皮肤市场的安装、更新和卸载会调用 DSH 的 profile 插件管理器;当前 DSH 使用 pnpm 管理 profile 依赖。如果出现 pnpm is not recognizedpackage manifest missingallowBuilds 相关报错,不必手动猜测 profile 状态。

复制安装失败排查提示词

把完整原始报错填入后复制给你的 DSH Agent:

请帮我排查 DSH Web 皮肤市场的安装失败。下面是完整原始报错:

<把完整报错粘贴到这里>

请严格按以下 3 步处理,并报告每一步的结果:

1. 确认当前使用的 profile 名称和实际目录,并检查 DSH 进程自身是否能找到 pnpm(Windows 同时检查 pnpm.cmd)。如果 pnpm 不在 PATH,先说明如何安装或修复 pnpm,并停止把问题误判为 allowBuilds 配置问题。
2. 只有确认 pnpm 可用后,才检查 profile 的 pnpm-workspace.yaml。若 pnpm 输出了构建审批 key,只把报错中完整、精确的 key 合并到 allowBuilds,对应值设为 true;不要启用 dangerouslyAllowAllBuilds,也不要放宽其他包。不要读取 .env、凭据或聊天记录。
3. 重新执行原来的皮肤安装命令。完成后验证 profile package.json 依赖、node_modules 中目标包的 package.json、dsh.client/dsh.bundle 声明和 loader 注册项;如果仍失败,请指出具体失败阶段和完整错误,不要把 package manifest missing 当作根因。

当前面向 DSH Web 0.1.0-rc.6。目录中的安装目标固定到收录时的完整 commit。

皮肤市场同时支持带 dsh.bundle 的完整插件和只有 dsh.client 的纯前端皮肤。对于后者,市场会在安装后自动、幂等地写入该皮肤已审核的 rowId 和 package 注册项;卸载时一并移除。维护者不必为了进入市场而额外复制一份 cordis.patch.yml,但仍须在 package 或 README 中提供明确的 row ID 和 DSH 兼容范围。

兼容性验证

截至 2026-08-17,npm 的 DSH latestnext 均为 0.1.0-rc.6。本项目使用重新安装的该版本完成了以下验证:

  • 皮肤市场 0.1.15:132 条目录校验、70 项自动化测试、类型检查、Host/Client 构建、站点构建和 package preflight 全部通过
  • DSH Web 实机启动:市场 Host 路由、客户端设置入口、在线目录和 5 分钟静默更新正常加载
  • Liang Intensity 0.1.4 联合冒烟:8 项测试和客户端 bundle 构建通过,并可在同一 DSH Web profile 中保持 active

这组结果证明上述版本组合可以启动和运行,不代表市场内所有第三方皮肤都已完成同等级别的人工兼容或安全审核。

在线目录更新

已安装的皮肤市场不需要升级插件才能看到新收录或更新后的皮肤:

  • 打开市场时由 DSH Host 从 GitHub Pages 拉取最新 catalog.json
  • 页面保持打开时每 5 分钟静默检查一次;窗口重新获得焦点时也会立即静默检查
  • GitHub 上出现更高的市场插件版本时,标题右侧会显示下载按钮;悬停后显示“更新”,安装完成后提示重启生效
  • 浏览器会用 IndexedDB 保留最近一次有效目录;再次打开时先展示缓存,再在后台校验在线目录
  • 列表首批只渲染 20 个皮肤,接近底部时每次无感追加 20 个;搜索和排序仍覆盖完整目录
  • 首次无缓存时显示结构化骨架屏,预览图延迟加载并保留固定尺寸,避免页面跳动
  • 远程目录通过 schema、唯一 ID/package/rowId、GitHub 仓库地址和固定 commit 安装目标校验后,才会进入可安装生命周期
  • 验证成功的目录会缓存到当前 profile;离线、超时或远程数据不合法时自动回退到缓存,再回退到插件内置目录
  • 每日抓取任务在完整测试通过后直接部署在线目录,同时继续创建 registry PR 留下可审查记录

收录你的皮肤

如果你开发了 DSH 皮肤,先准备一个公开的 GitHub 仓库,再复制下面整段提示词给你的 Agent。把 <你的皮肤仓库地址> 换成真实地址即可。

这不是终端命令,而是交给 Agent 的任务说明:

请把我的 DSH 皮肤提交到 DSH 皮肤市场。

皮肤仓库:<你的皮肤仓库地址>
目标目录仓库:https://github.com/kingOfSoySauce/dsh-skin-market
目录路径:registry/skins

请自主完成以下工作:
1. 只用只读方式检查皮肤仓库;识别单包或 monorepo 子包,读取 package.json、DSH bundle/client 声明、cordis.patch.yml、README、许可证、真实预览图和 release/tag。
2. 确认它确实是可安装的 DSH Web 皮肤,不要仅凭仓库名、README 文案或 dsh-plugin topic 判定。
3. 解析准备收录版本对应的完整 40 位 commit SHA。安装目标必须固定到该 SHA,禁止使用 main、master、HEAD 或其他可变分支。
4. 不要猜测皮肤名、包名、rowId、许可证、兼容版本或素材授权。缺少关键信息时先列出缺项,不要创建虚假条目。
5. 预览图只选择仓库内真实截图,使用固定 commit 的 GitHub raw HTTPS 地址;不要使用 SVG、data URI、第三方图床或带追踪参数的 URL。
6. fork 或 clone 目标目录仓库并新建分支;按照 registry/skin.schema.json,在 registry/skins 下只新增一个独立 YAML。不要修改或提交生成的 data/catalog.json,也不要覆盖已有条目。
7. 在目标目录仓库根目录运行 npm run registry:check 和相关测试。这个检查只验证 registry,不会改写生成文件。不得安装到我的真实 DSH profile,不得读取 .env、凭据、聊天记录或工作区外的私密文件。
8. 检查 git diff --name-only,确认变更只包含 registry/skins/<条目文件>.yml;提交变更并向目标目录仓库创建 PR。PR 标题使用“feat(registry): add <皮肤名>”,正文列出仓库、子包、版本、commit、许可证、预览来源、兼容性、自动检查结果和仍需人工确认的风险。
9. 创建 PR 后返回 PR 链接;如果没有 GitHub 权限或需要登录,只准备好分支、commit 和可复制的 PR 内容,并明确告诉我下一步。

收录不等于安全认证。不要声称该皮肤已被 DSH 官方、安全团队或市场背书。

皮肤市场里的「提交皮肤」也可以根据仓库地址生成这段提示词。

registry/skins/ 是社区提交的唯一事实来源,每个皮肤一个 YAML 文件。data/catalog.json 是生成文件,不需要在社区 PR 中维护;PR 合并到 main 后会由仓库自动重生成。这样新增皮肤之间不会因为共同编辑一个目录文件而反复冲突。

收录要求

  • 必须是公开、可安装的 DSH Web 皮肤仓库或 monorepo 子包
  • 安装来源必须固定到完整 40 位 commit SHA
  • 必须提供明确的 package、row ID、许可证和兼容范围
  • 预览图必须是仓库中的真实界面截图
  • Topic、仓库名称和 Stars 只用于发现与排序,不代表安全审核或官方背书

仓库健康建议

市场在同步已收录仓库时会检查三项便于用户理解和安装的基础规范,并在皮肤详情页展示结果:

  • README 是否展示仓库内、可固定到版本的真实界面截图
  • README 或 package 元数据是否明确声明支持的 DSH Web 版本范围
  • package 名称、dsh.client Web 声明、row ID 和已构建客户端入口是否满足市场的一键安装要求

检查结果用于给维护者提供改进建议,不代表安全认证。暂未满足某项规范时,页面会说明如何完善,而不会把仓库描述为“不可用”。

“兼容性待验证”和“市场能否安装”是两个独立维度:

  • 兼容性表示维护者是否明确声明并验证了支持的 DSH Web 版本;缺少声明时会提示风险,但不会单独阻止市场安装。
  • 市场安装表示目录是否具备固定安装目标、package、dsh.client Web 声明、row ID 和可解析的已构建客户端入口。符合这些条件时,市场会调用 DSH 的 plugin add 命令完成安装;不要求插件仓库自行实现名为 add 的命令。

本地开发

需要 Node.js 22 或更高版本。

git clone https://github.com/kingOfSoySauce/dsh-skin-market.git
cd dsh-skin-market
npm install
npm run dev

npm run dev 只启动使用 Mock Host 数据的预览页面,不会修改任何 DSH profile。

本地目录调试

本地开发 DSH 皮肤时,市场默认仍会从 GitHub Pages 请求远程 catalog.json,因此刚写入本地 registry/skins 的条目可能被远程目录覆盖。启动 DSH Web 前设置下面的开发环境变量,市场会固定使用当前构建包内的 data/catalog.json,不发起远程目录请求:

DSH_SKIN_MARKET_LOCAL_CATALOG=1 dsh web

该开关只影响当前进程的目录读取;安装、激活、停用、更新和卸载仍然经过本地市场的完整生命周期。未设置时保持线上行为:优先读取远程目录,并在失败时回退到缓存和内置目录。

本地条目验证完成后,再删除该环境变量运行 DSH,确认远程目录行为没有被改变。

常用检查命令:

npm run registry
npm test
npm run typecheck
npm run build

完整的本地安装和回滚验证步骤见 TESTING.md

目录维护

npm run crawl:smoke
npm run crawl:top-stars
npm run crawl:full-ingest

为没有仓库截图的皮肤生成实机截图时,先联网缓存固定 commit 的源码包,之后安装与截图阶段可离线重复运行:

npm run screenshots:prepare
npm run screenshots:capture

当前脚本覆盖 KinGao294/dsh-skintianyhjg-lab/dsh-fontbilbillm/deepseek-harness-angelina-themesdancingmemory/dskin,每个仓库补录首页、对话历史和设置或插件配置页,产物和校验报告写入 .preview/skin-screenshots/。脚本只在本地历史模板不存在时连接监听 127.0.0.1 的临时 mock,创建一条 test 历史;mock 固定返回零 usage。后续皮肤复制该隔离模板,只点“新会话”并从左侧历史重新打开 test,不会再次发送消息。报告会断言目标截图阶段 messageSent: falselocalMockRequests: 0externalModelRequestSent: falsehistoryReopened: truetokenSpend: 0npm run screenshots:trial 可在缓存缺失时自动下载后立即试跑;截图使用独立 DSH home,不修改日常 web profile。

逐张确认是插件生效后的真实 DSH 界面,再显式提升到站点:

npm run screenshots:promote -- --skin kingao294.dsh-skin --yes-reviewed

提升后的 URL 写入条目的 marketScreenshots。构建目录时,详情轮播中的市场补录图固定排在前面,仓库自己的 screenshots 去重后保持原顺序接在后面;左侧列表和推荐卡片仍优先使用仓库原始第一张图作为封面,仓库没有图片时才使用市场实机图。后续同步不会覆盖补录图。维护者可向市场仓库提交 PR 删除或替换 marketScreenshots,也可以先把图片提交到上游仓库,再由市场 PR 移除补录版本。

正式目录条目位于 registry/skins/,Schema 位于 registry/skin.schema.json。全量任务会合并 Awesome DSH 与 GitHub dsh-plugin Topic 两个发现源;只有 dsh.client、但元数据不足以由市场安全注册的皮肤仍会展示,并提供仓库安装说明。具备稳定 package、Web client 声明、row ID 和已构建入口的纯前端皮肤可由市场自动注册,不要求额外提供 dsh.bundle。仓库的 GitHub Actions 会定期同步已收录仓库并为目录变化创建 PR。

全量任务会同时尝试抓取 README.zh-CN.mdREADME.zh.mdREADME-zh.mdREADME_CN.mddocs/README.zh*.md 等中文文档;如果仓库没有单独的中文描述,中文 README 的首段会作为目录描述的回退来源。定时同步还会刷新 README 的目录统计和近期收录日志

安全说明

  • 浏览器只能提交 registry 中的 skinId,不能提交任意命令或安装地址
  • 安装、更新和激活失败时会恢复 profile manifest 快照并清理半安装状态
  • GitHub Stars 由定时收录任务写入带更新时间的目录快照,页面和 Host 都不在浏览时请求 GitHub API
  • 市场不会代替开发者登录 GitHub,也不会静默创建 PR

页面异常时重置皮肤

如果皮肤冲突导致 DSH 页面无法操作,先停止当前 DSH 进程,再执行:

~/.dsh/profiles/web/node_modules/.bin/dsh-skin-market-reset --profile web

该命令会关闭皮肤市场管理的所有皮肤并恢复默认外观,但保留已经安装的皮肤包和皮肤市场。随后重新启动 DSH 即可。命令使用原子写入;任何一步失败都会恢复执行前的 profile 文件。

License

MIT

REPOSITORY SIGNALS

Security & install evidence

This score is based solely on public repository metadata and the install evidence registered here — it is not a code security audit.

Traceable source

From a public plugin catalog, linked to a public GitHub repository.

License

The repository declares the MIT license.

Maintenance activity

Code updates within the last 180 days.

Install evidence

No verifiable install metadata registered yet — please review the repository instructions manually.

Install lifecycle scripts

The inspected package metadata declares no install lifecycle scripts.