前言¶
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.mux → session/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 投影全部通过。
参数配置面板¶
参数配置面板支持全维度热修改与持久化,涵盖:
- 漂浮弹窗与公告控制
- 跑马灯与滚动条
- 界面视觉与个性化(4 套预设主题、自定义全站主色/渐变/边框色、单位落款与文案、徽标上传)
- Agent 运行与通信(端口、WS、工单前缀、默认模型、温度、上下文轮数、权限确认等级、盖章开关)
- DSH 原生系统参数
- 存储与重置(保存、导出 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)并行访问的场景
注意事项
- 插件仅在宿主进程(
dsh web)内运行;3081 页面不能脱离 dsh 单独使用。 - 事件通道默认使用本插件与宿主同进程的 SSE 桥;配置面板保留 WebSocket 地址与重试间隔项。
- 插件以当前 dsh 进程权限运行,安装前应检查源码与 MIT 许可证。
- 测试会话会真实写入本地会话存储,注意清理。
结尾¶
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