dsh-gov-portal:政務風獨立 WebUI,1:1 對接 DSH Agent 能力

前言

DeepSeek Harness(DSH)的主控臺默認在 3080 端口提供通用 Web 界面。若你需要一套獨立端口、視覺風格貼近中國地方政務網站的辦事大廳界面,同時又不希望在插件裏硬編碼業務邏輯,就需要一個能透過宿主 apiProxy 網關對接會話、模型、權限、統計等全部真實 Agent 能力的 WebUI 插件。

下面介紹 ExElectron 維護的 dsh-gov-portal:在默認端口 3081 提供政務風辦事大廳,界面按地方政務網站視覺規範設計,後端能力全部來自宿主進程,零業務硬編碼。

這是什麼

dsh-gov-portal(GitHub:ExElectron/dsh-gov-portal)是 DSH 的 Cordis 插件包。它在獨立端口(默認 3081)運行靜態前端與 API 橋,通過宿主內的 apiProxy 網關 1:1 對接 DSH 的會話、模型、模式、權限、統計等能力。

插件採用 MIT 許可證,要求 Node.js ^22.19.0 || >=24.0.0。完整設計規範見倉庫 docs/design-system.md,宿主集成面調研見 docs/harness-integration.md

頁面架構與界面能力

界面嚴格按政務服務門戶設計語言組織,主要區域如下。

頂部工具條:深藍底白字,使用 Windows XP 原版像素點陣宋體 12px(關閉抗鋸齒)。包含「設爲首頁」「加入收藏」「無障礙瀏覽」、居中紅色標語(可配置)、右側即時日期時間(精確到秒),以及訪問次數統計「本站已被訪問:xxxxxx 次」。計數由服務端持久化,6 位補零,通過 /plugin/visits 端點讀寫,存於 ~/.dsh/gov-portal.json

主 Header:紅色公章徽標(預設紅/藍/綠/金印章或上傳圖片)、平臺名與副標題、政務搜索框(藍色「查詢」按鈕)、綠色狀態圓點顯示「系統狀態: 正常運行」。

主導航:經典深藍漸變(#1874cd → #0d47a1)白字黑體,包含平臺首頁、業務大廳、電子卷宗、督辦流水、參數配置、政策法規等入口,Hover 高亮。

雙通道跑馬燈:左側「重要通知」與右側「行情指數」反向滾動,速度、方向、內容與真實輪詢 API 均可配置。

80/20 主佈局:左側爲直辦大廳(工單編號條、交互回執窗口、統計行、公文輸入表單),右側爲支撐側欄(常用辦事通道、便民服務提示)。

動態飄窗:兩個勻速碰撞反彈的飄窗(懸停暫停,「×」可銷燬)——紅頭重要通知彈窗與官方矩陣二維碼彈窗。

辦結蓋章:流式輸出完成時,右上角可顯示半透明「【准予辦結】」紅色印章動畫,可在參數配置中關閉。

與 DSH 宿主的真實對接

插件不硬編碼 Agent 業務,界面元素與宿主能力一一映射:

界面元素 宿主能力 說明
模型下拉 + 推理強度 session.models / session.selectModel 按 provider 分組動態枚舉,推理強度隨模型刷新
模式下拉 agentPreset.list / agentPreset.select 全量動態枚舉,創建工單時隨 session.create 傳入
權限下拉 settings.describe + settings.update('permission', {defaultPreset}) 從 settings schema 動態枚舉;所選權限寫入宿主「新會話默認」
回執流 events.muxsession/event 與主 GUI 同一事件源
統計行 sessionStats 投影 + assistant/message usage 聚合 輪/步/LLM 時長/工具時長/首 token/速度/緩存命中/輸入輸出/TPS 等即時計算
沙箱審批彈窗 approval/requested 幀 + POST /api/respond 與權限預設聯動
系統諮詢彈窗 question/requested 幀 + respond 支持多選
電子卷宗 session.list / session.history / session.search / GET /api/session.export 會話索引、查閱、導出 JSONL
督辦流水 session/event 即時追加 chunk 級可過濾
DSH 原生系統設置 settings.describe / settings.update schemastery schema 驅動表單,覆蓋模型、憑據、沙箱等全部命名空間

README 中記錄的已驗證枚舉包括:模式下拉出現 standard 標準模式 / code PTC 模式 / minimal 極簡模式 / cordis 創造模式 / liangshen 梁神模式;權限下拉出現 read-only / workspace-write / danger-full-access 三檔;settings.describe 動態渲染 11 個宿主命名空間表單;真實對話事件鏈 turn/start → user/message → assistant/chunk → assistant/message → turn/end(completed)sessionStats 投影全部通過。

參數配置面板

參數配置面板支持全維度熱修改與持久化,涵蓋:

  1. 漂浮彈窗與公告控制
  2. 跑馬燈與滾動條
  3. 界面視覺與個性化(4 套預設主題、自定義全站主色/漸變/邊框色、單位落款與文案、徽標上傳)
  4. Agent 運行與通信(端口、WS、工單前綴、默認模型、溫度、上下文輪數、權限確認等級、蓋章開關)
  5. DSH 原生系統參數
  6. 存儲與重置(保存、導出 JSON 卷宗、導入、恢復出廠)

前端配置存於 localStorage(鍵 dsh.govPortal.v1),插件端口等存於 ~/.dsh/gov-portal.json

安裝與啓用

插件通過 dsh plugin 安裝到 web profile,安裝後需重啓 dsh web 生效。

# 1. 安裝到 web profile(pnpm link + 自動 reconcile 進 dsh.profile.bundles)
cd <本目錄>
dsh plugin --profile web add link:<本目錄絕對路徑>

# (如遇 pnpm 寫入 package.json 的 EPERM,可手動補:
#   dependencies: "dsh-gov-portal": "link:../../../Desktop/test/Dsh_GovUI"(按實際相對路徑)
#   dsh.profile.bundles 末尾追加 "dsh-gov-portal")

# 2. 重啓 dsh web(插件在 dsh 進程內,需重啓生效)
dsh web

# 3. 訪問
#    http://127.0.0.1:3081/         政務辦事大廳(本插件)
#    http://127.0.0.1:3080/         DeepSeek Harness 主控臺

修改端口後需重啓 dsh,監聽參數在插件啓動時讀取。

驗證與測試

倉庫提供四類測試腳本,可按需運行:

node test/server-smoke.mjs      # 靜態資源 + API 橋分發 + SSE + respond + 導出(mock ctx)
node test/e2e-check.mjs         # 瀏覽器運行時 17 項檢查(需 3081 在線)
node test/e2e-chat.mjs          # 真實對話:創建會話→提交→事件鏈→統計(消耗少量 API 額度)
node test/screenshot.mjs        # 各面板截圖(輸出 shots/*.png)

e2e-chat.mjs 會真實寫入 ~/.dsh/sessions,可在電子卷宗中查閱或刪除。

適用場景與注意事項

適合誰

  • 需要在 DSH 上提供政務風辦事大廳界面的開發者或團隊
  • 希望保留 DSH 全部 Agent 能力(模型、模式、權限、審批、統計),僅替換前端呈現的場景
  • 需要獨立端口(3081)與主控臺(3080)並行訪問的場景

注意事項

  1. 插件僅在宿主進程(dsh web)內運行;3081 頁面不能脫離 dsh 單獨使用。
  2. 事件通道默認使用本插件與宿主同進程的 SSE 橋;配置面板保留 WebSocket 地址與重試間隔項。
  3. 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與 MIT 許可證。
  4. 測試會話會真實寫入本地會話存儲,注意清理。

結尾

dsh-gov-portal 把 DSH 的 Agent 能力裝進一套可配置的政務風 WebUI,不重複實現業務邏輯,界面與宿主通過 apiProxy 保持 1:1 對接。若你正在 DSH 生態中尋找替代主控臺界面的方案,可從下面鏈接查看詳情。

  • SkillHub 目錄頁:https://www.skillhub.cn/plugins/ExElectron/dsh-gov-portal
  • GitHub 倉庫:https://github.com/ExElectron/dsh-gov-portal
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜