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以上。 - 更新機制:檢測到新版本後,需要頁面重新加載才能生效。