DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在构建 Web 界面时,如果希望应用具备离线访问能力,并能被安装到桌面或移动端,需要额外的 Service Worker 和 Manifest 配置。下面介绍的 dsh-pwa-plugin 正是为了解决这一问题。
插件简介¶
这是一个为 DeepSeek Harness 提供的 PWA 插件。它通过 Service Worker 实现智能缓存策略,允许静态资源离线访问,并提供标准的 PWA Manifest 以支持将应用安装为独立应用。
插件由 RaulLazaro 维护,采用 MIT 许可证。
安装与启用¶
安装过程包含三个步骤,需要在 DSH 的 Web 配置文件中进行修改。
- 添加依赖
在 DSH Web Profile 的 package.json 中添加依赖项:
{
"dependencies": {
"dsh-pwa-plugin": "file:~/workspace/dsh-pwa-plugin"
}
}
- 注册插件
在 Profile 的 cordis.patch.yml 中插入插件配置:
- insert:
- id: dsh-pwa
name: 'dsh-pwa-plugin'
- 重启 DSH
执行以下命令重启服务:
dsh web
核心功能¶
插件托管并注入以下文件:
/sw.js:Service Worker 脚本/manifest.webmanifest:PWA 配置清单- 图标文件
插件会自动检测并静默激活新版本,无需手动干预。
缓存策略¶
插件为不同类型的资源定义了差异化的缓存策略:
| 资源类型 | 策略 | 说明 |
|---|---|---|
| HTML | Network-first | 始终尝试获取最新版本 |
| JS/CSS/Fonts/Images | Cache-first | 可用时优先从缓存提供 |
| API calls | Not cached | 始终走网络请求 |
工作原理¶
- 插件作为 Host 插件运行,提供静态资源文件。
- 插件将 Service Worker 注册脚本注入到 HTML 中。
- Service Worker 启动后,缓存静态资源(包括图标)供离线使用。
- Manifest 文件允许浏览器将应用安装为 PWA。
- 利用 DSH 内置的
/favicon.svg作为图标源,不进行覆盖。 - 更新检测到后,会自动触发页面重新加载以应用新版本。
注意事项¶
- HTTPS 要求:Service Worker 必须在 HTTPS 环境下运行(
localhost除外)。 - API 限制:Service Worker 无法缓存 API 调用,API 请求始终走网络。
- 版本依赖:需要
@deepseek-ai/cordis版本在^4.0.1以上。 - 更新机制:检测到新版本后,需要页面重新加载才能生效。