dsh-deepexcel
Deepcel 工作簿 · DeepSeek Harness (dsh) 皮肤中心 v2 皮肤:Excel 风格工作簿,单元格化消息、工作表网格、工作簿标签。Small-tailqwq/dsh-deepcel 的 v2 完整移植。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 27, 2026
- Updated
- Aug 28, 2026
Introduction
Deepcel 工作簿 · v2 皮肤
Small-tailqwq/dsh-deepcel 的 v2 skin 资产目录重写。v1 是一个 cordis 客户端插件(src/client/index.ts + CSS Modules + skin.json v1 清单);v2 按 @linxin666/dsh-client-ui-skin-center 的 skin-manifest-v2 契约重写为纯资产目录,由 skin-center 作为唯一加载器/渲染器。
目录
deepcel/
├── skin.json # v2 清单(skinManifestVersion: 2)
├── skin.css # L1 token + L2 语义样式(工作簿 chrome、工作区网格、坐标)
├── patches.css # L3 自由选择器补丁(原生面板/菜单/对话框/消息改造成单元格)
├── hooks.mjs # facets.client 逃生舱(v1 客户端 JS 移植,defineSkinHooks)
└── preview/ # light.webp / dark.webp 预览图
v1 → v2 改动要点
| v1 | v2 |
|---|---|
cordis 插件 + apply(ctx) + ctx.effect | defineSkinHooks() 默认导出,apply(ctx) + ctx.onCleanup(幂等) |
inject: ['locale', 'layout', 'sessions'] 服务注入 | 无服务注入;locale 读 document.documentElement.lang(MutationObserver 监听),侧边栏点击原生按钮,会话跟踪选中的原生会话行 |
CSS Modules(cls('workbookChrome') 哈希类名) | 明文类名(.workbookChrome 等),加载器在 html[data-dsh-skin="deepcel"] 下强制作用域 |
body[data-dsh-deepcel] 作用域 + :global(#root) | 全部选择器去掉 v1 前缀,由加载器重写为 html[data-dsh-skin="deepcel"] …;:global(#root) → #root |
亮/暗 token 写在 body[data-dsh-deepcel] / [data-ds-dark-theme] | token 写在 :root(亮)与 body[data-ds-dark-theme](暗),加载器自动克隆 root-body token |
v1 字段 package / wiring / bodyAttr | 移除(v2 fail-closed,遗留字段仅告警) |
--dsw-alias-* 全量 remap + --deepcel-* 布局变量 | 保留,新增 --dsw-alias-label-primary-foreground: #fff 满足主按钮对比度契约 |
hooks 信任模型(重要)
skin-center 的安全模型:用户目录直接放置的皮肤($DSH_HOME/skins/<id>/)默认不运行 hooks——GET /skins/<id>/hooks.mjs 返回 403,除非该皮肤通过 provenance 校验(dsh-market.provenance.json 中的 sha256 与磁盘文件字节一致,source: https://dsh-market.com)或作为 builtin 安装。
本皮肤自带 dsh-market.provenance.json(已同步全部文件哈希)。安装时必须把该文件一起放入皮肤目录,否则 hooks 被拒,工作簿 chrome(功能区、公式栏、行列坐标、工作表标签、选区)不渲染,只剩声明式外观:
- ✅ 正确安装:复制
skin.json skin.css patches.css hooks.mjs dsh-market.provenance.json preview/到$DSH_HOME/skins/deepcel/→ hooks 放行(catalog 显示channel: market,warnings 为空,hooks.mjs返回 200)。 - ❌ 漏掉 provenance:hooks 被拒(403),无功能区/网格/坐标。
若 provenance 缺失且无法补上(例如想完全绕开市场来源),备选方案是把皮肤作为 builtin 安装进 skin-center 包:
# 1) 复制皮肤目录进 skin-center 内置 skins/
cp -r <此目录> "<harnessHome>/profiles/web/node_modules/@linxin666/dsh-client-ui-skin-center/skins/deepcel"
# 2) 把 "skins/deepcel" 追加到该包 package.json 的 files 白名单
# (shippedSkinIds 据此把 deepcel 列入目录,origin=builtin → hooks 放行)
# 3) 重启 dsh web(shippedSet 在插件挂载时冻结,需重启才能重新读取白名单)
布局降级
v2 加载器会注入一条 viewport-lock 规则,强制 html[data-dsh-skin] body { padding: 0 !important }。因此 v1 的 body padding 方案不可用:
- 功能区的固定偏移改由
body[data-deepcel-chrome] #root { padding: … }承载; - 所有几何/位移规则(hero 布局、侧边栏折叠、工作簿流网格)都挂在 hooks 设置的
body[data-deepcel-chrome]标记后,仅当 hooks 运行时才改变原生布局; - hooks 被拒(仅声明式生效)时,页面保持原生几何,只叠加 token/补丁外观。
原生控件可用性
- 右上角原生面板开关(底部面板 / 侧栏 / 详情)保持可点:
titleRow仅headerControls接收点击,其余区域指针穿透给原生控件,不被工作簿 chrome 遮挡。 - 侧栏开关不隐藏(原生「展开/收起侧边栏」与状态栏
<按钮共存),侧栏工具完整保留。 - 新会话 / 新工作区 / 设置由工作簿功能区代理,原生重复入口通过
data-deepcel-native-proxy隐藏。
验证
GET /api/skin-center/v2/catalog→ 出现origin: user, channel: market, id: deepcel(warnings 为空)GET /api/skin-center/v2/skins/deepcel/stylesheet|patches|hooks.mjs→ 200POST /api/skin-center/v2/active {"active":"deepcel"}→ 应用成功,html[data-dsh-skin="deepcel"]生效,工作簿 chrome / 侧栏 / 面板开关全部可用
许可与商标:沿用上游 BSD-3-Clause 与 NOTICE 声明(Deepcel 独立社区项目,与 Microsoft 无隶属关系)。