🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

React 应用接入 CaiZongyuan/dsh-react-surface

DeepSeek Harness
CaiZongyuan46 天前有提交已提供中文文档扫描:含敏感能力

把现有 React 客户端应用挂载为原生界面

35.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add CaiZongyuan/dsh-react-surface
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · other
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 46 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-react-surface-workspace(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 23:01:04

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 19 处,展示前 18 条)
  • 删除本地文件递归
    packages/build/src/scaffold.test.ts:18
    .map((directory) => rm(directory, { recursive: true, force: true })),
  • 写入本地文件
    packages/build/src/scaffold.test.ts:25
    await writeFile(
  • 读取本地文件
    packages/build/src/scaffold.test.ts:50
    await readFile(join(result.outputDirectory, "package.json"), "utf8"),
  • 读取本地文件
    packages/build/src/scaffold.test.ts:54
    const entry = await readFile(
  • 读取本地文件
    packages/build/src/scaffold.test.ts:71
    const root = await readFile(
  • 读取本地文件
    packages/build/src/scaffold.test.ts:103
    await expect(readFile(result.files[0]!, "utf8")).rejects.toThrow();
  • 读取本地文件
    packages/build/src/scaffold.test.ts:116
    const client = await readFile(
  • 写入本地文件
    packages/build/src/scaffold.test.ts:131
    await writeFile(
  • 写入本地文件
    packages/build/src/scaffold.test.ts:136
    await writeFile(
  • 读取本地文件
    packages/build/src/scaffold.test.ts:146
    const client = await readFile(
  • 写入本地文件
    packages/build/src/scaffold.test.ts:155
    await mkdir(join(directory, "src"), { recursive: true });
  • 写入本地文件
    packages/build/src/scaffold.test.ts:156
    await writeFile(
  • 写入本地文件
    packages/build/src/scaffold.test.ts:161
    await writeFile(
  • 读取本地文件
    packages/build/src/scaffold.ts:46
    await readFile(manifestPath, "utf8"),
  • 写入本地文件
    packages/build/src/scaffold.ts:84
    await mkdir(dirname(file.path), { recursive: true });
  • 写入本地文件
    packages/build/src/scaffold.ts:85
    await writeFile(file.path, file.content, "utf8");
  • 读取本地文件
    packages/build/src/scaffold.ts:254
    await readFile(path, "utf8");
  • 读取本地文件
    packages/build/src/scaffold.ts:266
    await readFile(file.path, "utf8");
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把现有客户端 React 应用当作原生 DeepSeek Harness 界面来运行

README

由 DeepSeek 最新模型翻译生成
dsh-react-surface dsh-react-surface 用于把现有的客户端 React 应用接入 DeepSeek Harness,成为 DSH 原生 Surface。应用继续拥有自己的 UI、状态和业务逻辑;Runtime 统一负责 DSH 布局、生命周期、样式隔离、Shell 品牌协调、响应式降级、诊断和可选 Agent 协作。 仓库目前面向 DeepSeek Harness 0.1.5-rc.2,暂时通过 GitHub 源码安装,尚未发布 npm 版本。 核心能力 - 使用一个类型化的 defineReactSurface(...) 接入 Vite React 或 Next.js Client Component。 - 每个应用使用独立 ShadowRoot,并自动打包 CSS、CSS Modules、图片和字体。 - 支持 full-frame、center、workspace、right-panel、bottom-panel 五种布局。 - 支持键盘可访问的拖动分隔条、响应式降级和版本化的纯 UI 偏好。 - 可以只设置 Surface 样式,也可以在 Surface 激活期间协调整个可见 DSH Shell 的品牌 Token。 - 支持 lazy mount、隐藏后保留状态以及关闭时卸载。
展开完整文档(README 剩余 1 节)
dsh-react-surface

dsh-react-surface 用于把现有的客户端 React 应用接入 DeepSeek Harness,成为 DSH 原生 Surface。应用继续拥有自己的 UI、状态和业务逻辑;Runtime 统一负责 DSH 布局、生命周期、样式隔离、Shell 品牌协调、响应式降级、诊断和可选 Agent 协作。

仓库目前面向 DeepSeek Harness 0.1.5-rc.2,暂时通过 GitHub 源码安装,尚未发布 npm 版本。

核心能力

- 使用一个类型化的 defineReactSurface(...) 接入 Vite React 或 Next.js Client Component。
- 每个应用使用独立 ShadowRoot,并自动打包 CSS、CSS Modules、图片和字体。
- 支持 full-frame、center、workspace、right-panel、bottom-panel 五种布局。
- 支持键盘可访问的拖动分隔条、响应式降级和版本化的纯 UI 偏好。
- 可以只设置 Surface 样式,也可以在 Surface 激活期间协调整个可见 DSH Shell 的品牌 Token。
- 支持 lazy mount、隐藏后保留状态以及关闭时卸载。
- 通过 ctx.reactSurfaces.inspect() 获取不包含业务数据的本地诊断报告。
- 可选搭配 dsh-ag-ui,让当前 DSH Agent 感知和操作激活的 Surface。

Runtime 不加载任意 HTML、远程应用、iframe 或 Next.js 服务端产物。安装的 Surface 插件属于可信代码;ShadowRoot 只提供样式隔离,不是安全沙箱。

架构

DSH Web
├─ dsh-react-surface Runtime
│ ├─ 小型 ctx.reactSurfaces Interface │ ├─ Host Adapter:布局、品牌、兼容与完整清理 │ ├─ 每个已挂载应用一个 ShadowRoot │ └─ 可选 dsh-ag-ui Session Tool Lease └─ 应用 Adapter 插件 ├─ 引入现有 React 根组件 ├─ 声明布局、生命周期和品牌 Token └─ 按需注册浏览器 Tools

应用 Adapter 不需要查询 DSH DOM,也不需要直接调用 DSH Slot。Router、Provider、数据、权限和业务行为仍由应用自己负责。

源码安装

克隆并验证 Runtime:

git clone https://github.com/CaiZongyuan/dsh-react-surface.git
cd dsh-react-surface
bun install
bun run check

在现有 Vite 或 Next.js 项目中生成 Adapter:

bun packages/build/src/cli.ts init D:\Projects\my-react-app --framework vite

命令默认创建 integrations/dsh,不会覆盖应用文件。可以使用 --entry、--id、--title、--output 和 --dry-run 调整生成结果。

构建并安装到 DSH Web Profile:

cd D:\Projects\my-react-app\integrations\dsh
bun install
bun run build

dsh.cmd plugin --profile web add D:\Projects\dsh-react-surface\packages\runtime
dsh.cmd plugin --profile web add D:\Projects\my-react-app\integrations\dsh
dsh.cmd web

修改安装依赖图后需要重启 DSH;修改 Client 代码后重新构建并刷新浏览器。

如果旧版运行时在加载插件时报 Cannot read properties of undefined (reading 'list'),请在本仓库执行 bun run build,使用上面的命令重新安装 packages/runtime,然后重启 DSH。运行时会在 Session Controller 就绪后启动 Agent 桥接;该服务不可用时,普通 Surface 仍可使用。

Flexible Layout

Sidebar 底部入口使用当前应用的标题与 identity mark;只有一个应用时,尚未打开也会显示它的名称与标识,第一次点击直接打开。应用已激活或注册多个应用时,菜单提供关闭、切换与布局选择。侧边栏折叠后只显示标识,同时保留完整可访问名称与 tooltip。

layout: {
default: "workspace",
supported: [
"full-frame",
"center",
"workspace",
"right-panel",
"bottom-panel",
],
fallback: "full-frame",
resizable: true,
persist: true,
}

插件作者声明允许的布局,用户从统一启动器中切换。Runtime 保存的只有布局、面板尺寸和折叠状态,不保存应用业务数据。未知 DSH 结构或空间不足时会安全降级,不会盲目修改宿主 DOM。

品牌协调

branding: {
shell: "surface",
colorScheme: "light",
identity: { name: "Acme Dashboard", mark: "AD" },
tokens: {
accent: "#176b4d",
accentForeground: "#ffffff",
background: "#f6f8f7",
surface: "#ffffff",
elevated: "#e9efec",
foreground: "#202723",
mutedForeground: "#66736c",
border: "#d7dfdb",
fontFamily: "Inter, system-ui, sans-serif",
radius: "6px",
},
}

shell: "preserve" 只影响应用 ShadowRoot;shell: "surface" 会在 Surface 激活期间把稳定语义 Token 映射到经过验证的 DSH Shell Token。存在官方 Sidebar 品牌槽时,identity 还会临时替换左上角标记和名称。关闭或卸载后按所有权恢复,不会覆盖其他插件之后写入的新值。

可选 dsh-ag-ui

未安装 dsh-ag-ui 时,挂载、布局、导航和品牌功能全部正常工作,capabilities.agent.status 返回 unavailable。

安装后,应用可以通过 agent.register(...) 向当前原生 DSH Session 发布浏览器 Tools。Tools 只在 Surface 和 Session 同时激活期间存在。Bridge 使用 loopback/live-pair 门禁、Web Locks、多标签 leadership、随机 capability token 和 Host TTL。

中立示例位于 examples/ag-ui-tools,不包含任何特定业务项目内容。

Next.js

这里的 Next.js 支持是 Client Surface 支持:Client Components、Provider、Hooks 和浏览器状态可以复用;Server Components、Server Actions、Middleware 和 Next Server 继续运行在原部署中。

当前 DSH cohort 提供 React 18.3.1。即使 React 19 项目可以完成构建,使用 React 19 专属 Runtime API 的组件仍需要未来兼容的 DSH cohort。

详细限制和接入方式见 Next.js Client 接入。

开发验证

bun install
bun run check

bun run check 会执行类型检查、全部测试、Runtime 和真实示例构建、DSH lazy-CJS 产物检查及格式检查。

真实 DSH 浏览器验证单独运行:

bun run test:e2e
$env:DSH_AG_UI_DIR = "D:\Projects\Frontend\dsh-ag-ui"
bun run test:e2e

CLI 必须为 0.1.5-rc.2;默认 dsh 版本不匹配时,通过 DSH_CMD 指定对应可执行文件。测试使用临时 profile,并将基础和 Web bundle 固定到同一版本。

第一条验证未安装 dsh-ag-ui 时的安全降级;第二条还会打包并安装显式指定的 AG-UI 源码仓库。

更多文档:

- 应用接入
- 布局与品牌
- Next.js Client 接入
- 可选 dsh-ag-ui 接入
- 架构
- 安全模型
- 参与贡献
预览分享卡片长什么样 ↓CaiZongyuan/dsh-react-surface
分享 · DeepSeek Harness Hub
CaiZongyuan/dsh-react-surface

把现有 React 客户端应用挂载为原生界面

这是你的仓库?认领条目

回到顶部