ExElectron/dsh-gov-portal
一个以中国地方政务网站视觉规范为设计基准的独立 WebUI 插件:在独立端口(默认 3081)提供政务风办事大厅界面,通过宿主进程内的 apiProxy 网关 1:1 对接 DeepSeek Harness 的会话、模型、模式、权限、统计等全部真实 Agent 能力(零业务硬编码)。
catalog 简介 / catalog descriptioncatalog description:—
编辑导读Editor's Brief
## 核心特性
- 该插件在独立端口上提供政务门户风格的 Web 界面,默认端口为 3081,并通过宿主进程的 apiProxy 网关连接 DeepSeek Harness 的会话、模型、预设、权限与统计能力,不内置硬编码业务流程。
- 界面元素包括带访问计数的顶部工具栏、带徽章和搜索框的页头、主导航栏、双滚动频道、80/20 工作台布局、两个悬浮窗口以及完成盖章动画。
- 会话控件会从 session.models 和 session.selectModel 枚举模型与推理强度,从 agentPreset.list 列出智能体预设,并在创建会话时通过 settings.describe 和 settings.update 应用权限预设。
- 运行时面板会消费 events.mux 的会话/事件帧,用于文本、思考、工具、轨迹和待办输出;统计则聚合 sessionStats 投影以及 assistant/message 用量,用于轮次、步骤、耗时、token 数和吞吐量。
- 电子档案和监督视图使用 session.list、session.history、session.search、会话导出以及实时 session/event 数据,以检查、导出和筛选会话记录与追踪事件。
## 使用场景
- 它可以通过公共服务窗口布局展示 DeepSeek Harness 智能体交互,支持工单式提交、回执流式展示和会话统计。
- 它可以提供一个管理审核界面,用于沙箱审批请求、问题回复、会话归档和轨迹日志。
- 它可以通过 schemastery schema 驱动表单暴露 Harness 配置,这些表单由 settings.describe 为宿主命名空间生成。
## 技术细节
- 该包是一个 Cordis 插件,会在 3081 端口启动服务,提供静态公共资源,桥接 /api 请求,并暴露 /plugin 端点,例如访问计数。
- 前端无需构建且无依赖,使用 HTML、CSS 变量和 JavaScript 模块实现工具函数、API 访问、存储、滚动频道、悬浮面板和应用状态。
- 集成默认使用同一宿主进程中的 SSE 桥接,同时配置面板保留 WebSocket 地址和重试间隔字段。
- 前端设置存储在浏览器 localStorage 的 dsh.govPortal.v1 下,插件级配置(如端口和访问计数)存储在 ~/.dsh/gov-portal.json 中。
## 注意事项
- 该界面仅运行在 dsh web 宿主进程内,无法脱离 DeepSeek Harness 单独使用。
- 修改监听端口需要重启 dsh web,因为端口参数在插件启动时读取。
- 端到端聊天测试会在 ~/.dsh/sessions 下创建真实会话,并可能消耗 API 配额。
## Core Features
- The plugin provides a government-portal-style web interface on an independent port, defaulting to 3081, and connects through the host process apiProxy gateway to DeepSeek Harness sessions, models, presets, permissions, and statistics without hardcoded business flows.
- Interface elements include a top toolbar with visit counting, a header with emblem and search box, a main navigation bar, dual marquee channels, an 80/20 workbench layout, two floating windows, and a completion stamp animation.
- Session controls enumerate models and inference strengths from session.models and session.selectModel, list agent presets from agentPreset.list, and apply permission presets through settings.describe and settings.update during session creation.
- Runtime panels consume events.mux session/event frames for text, thinking, tool, trajectory, and todo output, while statistics aggregate sessionStats projections and assistant/message usage for turns, steps, timing, tokens, and throughput.
- The electronic archive and supervision views use session.list, session.history, session.search, session export, and real-time session/event data to inspect, export, and filter session records and trace events.
## Use Cases
- It can present DeepSeek Harness agent interactions through a public-service counter layout with ticket-style submission, receipt streaming, and session statistics.
- It can provide an administrative review surface for sandbox approval requests, question responses, session archives, and trajectory logs.
- It can expose Harness configuration through schemastery schema-driven forms generated from settings.describe for host namespaces.
## Technical Details
- The package is a Cordis plugin that starts a service on port 3081, serves static public assets, bridges /api requests, and exposes /plugin endpoints such as visit counting.
- The front end is build-free and dependency-free, using HTML, CSS variables, and JavaScript modules for utilities, API access, storage, marquees, floating panels, and application state.
- Integration uses an SSE bridge in the same host process by default, while the configuration panel retains WebSocket address and retry interval fields.
- Configuration is stored in browser localStorage under dsh.govPortal.v1 for front-end settings and in ~/.dsh/gov-portal.json for plugin-level values such as port and visit count.
## Notes
- The interface runs only inside the dsh web host process and cannot be used separately from DeepSeek Harness.
- Changing the listening port requires restarting dsh web because the port parameter is read when the plugin starts.
- End-to-end chat tests create real sessions under ~/.dsh/sessions and may consume API quota.
安装Install
dsh plugin --profile web add github:ExElectron/dsh-gov-portal
把 ExElectron/dsh-gov-portal 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-gov-portal · Deepseek Harness 综合智能办事平台
一个以中国地方政务网站视觉规范为设计基准的独立 WebUI 插件:在独立端口(默认 3081)提供政务风办事大厅界面,通过宿主进程内的 apiProxy 网关 1:1 对接 DeepSeek Harness 的会话、模型、模式、权限、统计等全部真实 Agent 能力(零业务硬编码)。
界面采用可复用的政务服务门户设计语言,完整设计规范见 docs/design-system.md;宿主集成面调研见 docs/harness-integration.md。
功能总览
页面架构(严格政务风)
- 顶部工具条(政务网站深蓝底白字 + WindowsXP 原版像素点阵字体:宋体 12px 点阵关闭抗锯齿):
[设为首页] [加入收藏] [无障碍浏览]+ 居中红色标语(可配置)+ 右侧实时日期时间(精确到秒)+ 访问次数统计「本站已被访问:xxxxxx 次」(服务端持久化计数,6 位补零,/plugin/visits端点,存于~/.dsh/gov-portal.json)。 - 主 Header:红色公章徽标(预设红/蓝/绿/金印章或上传图片)+ 平台名/副标题 + 政务搜索框(蓝色
[查询])+ 绿色状态圆点系统状态: 正常运行。 - 主导航:经典深蓝渐变(
#1874cd → #0d47a1)白字黑体,平台首页 / 业务大厅 / 电子卷宗 / 督办流水 / 参数配置 / 政策法规,Hover 高亮。 - 双通道跑马灯:左侧【重要通知】与右侧【行情指数】反向滚动,速度/方向/内容/真实轮询 API 均可配。
- 80/20 主布局:左侧直办大厅(工单编号条 → 交互回执窗口 → 统计行 → 公文输入表单),右侧支撑侧栏(常用办事通道 / 便民服务提示)。
- 动态飘窗 ×2(DVD 屏保匀速碰撞反弹,悬停暂停、
[×]销毁):红头重要通知弹窗 + 官方矩阵二维码弹窗。 - 办结盖章:流式输出完成时右上角盖半透明
【准予办结】红色印章动画(可关闭)。
与 DeepSeek Harness 的真实对接(1:1,不硬编码)
| 界面元素 | 宿主能力 | 说明 |
|---|---|---|
| 模型下拉 + 推理强度 | session.models / session.selectModel |
按 provider 分组动态枚举,推理强度随模型动态刷新 |
| 模式下拉(标准/创造/PTC/极简/自定义 preset) | agentPreset.list / agentPreset.select |
全量动态枚举,创建工单时随 session.create 传入 |
| 权限下拉(read-only / workspace-write / danger-full-access) | settings.describe + settings.update('permission', {defaultPreset}) |
从 settings schema 动态枚举;所选权限在新建工单时写入宿主「新会话默认」,由宿主初始化(零 Token 消耗,不向会话发送权限消息) |
| 回执流(文本/思考/工具/轨迹/todo) | events.mux → session/event 帧 |
与主 GUI 同一事件源 |
| 统计行(轮/步/LLM时长/工具时长/首token/速度/缓存命中/输入输出/TPS) | sessionStats 投影 + assistant/message usage 聚合 |
全实时计算 |
| 沙箱审批弹窗(准予执行/不予批准) | approval/requested 帧 + POST /api/respond |
与权限预设联动 |
| 系统咨询弹窗(问题答复) | question/requested 帧 + respond |
多选支持 |
| 电子卷宗(会话索引/查阅/导出 JSONL) | session.list / session.history / session.search / GET /api/session.export |
— |
| 督办流水(轨迹事件表) | session/event 实时追加 |
chunk 级可过滤 |
| DSH 原生系统设置(模型/凭据/沙箱等全部命名空间) | settings.describe(schemastery schema 驱动表单)/ settings.update |
可调整原版 Harness 的全部配置 |
参数配置面板(全维度热修改 + 持久化)
漂浮弹窗与公告控制、跑马灯与滚动条、界面视觉与个性化(4 套预设主题 + 自定义全站主色/渐变/边框色 + 单位落款与文案 + 徽标上传)、Agent 运行与通信(端口/WS/工单前缀/默认模型/温度/上下文轮数/权限确认等级/盖章开关)、DSH 原生系统参数、存储与重置(保存 / 导出 JSON 卷宗 / 导入 / 恢复出厂)。前端配置存 localStorage(键 dsh.govPortal.v1),插件端口等存 ~/.dsh/gov-portal.json。
目录结构
Dsh_GovUI/
├── package.json # 插件包(dsh.bundle.patch → cordis.patch.yml)
├── cordis.patch.yml # 向 profile 插入插件行(inject: [apiProxy])
├── lib/
│ └── index.js # Cordis 插件:3081 服务 + 静态资源 + /api 桥 + /plugin 端点
├── public/ # 前端(无构建,零依赖)
│ ├── index.html
│ ├── css/gov.css # 政务风设计系统(CSS 变量 + 四套主题)
│ └── js/{util,api,store,marquee,float,panels,app}.js
├── docs/
│ ├── design-system.md # 政务服务门户设计规范
│ └── harness-integration.md # DSH 集成面调研(473 行)
├── test/
│ ├── server-smoke.mjs # 插件冒烟测试(mock ctx)
│ ├── e2e-check.mjs # 浏览器运行时检查(Edge headless + CDP,17 项)
│ ├── e2e-chat.mjs # 真实 Agent 对话端到端测试
│ └── screenshot.mjs # 各面板截图
└── shots/ # 效果截图
安装与启用
# 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 主控台
验证
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)
已验证记录:
- 模式下拉动态枚举出
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投影(turns/steps/llmMs/toolMs/ttftMs/decodeMs/decodeTokens)全部通过。
注意事项
- 修改端口后需重启 dsh(监听参数在插件启动时读取)。
- 事件通道默认使用本插件与宿主同进程的 SSE 桥(最稳);配置面板保留 WebSocket 地址/重试间隔项。
- 插件仅在宿主进程(dsh web)内运行;3081 页面不能脱离 dsh 单独使用。
- 测试会话会真实写入
~/.dsh/sessions,可在电子卷宗中查阅或删除。
amruthpillai/reactive-resume
tt-a1i/archify
zhu1090093659/dsh-web-ui
strukto-ai/mirage
liustack/modlens
omdsh-dev/DSH-better-sidebar
ccch1mneyyy/dsh-TUI