dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
lingxin-maz/dsh-profilespanel
DeepSeek Harness (DSH) plugin status panel & profile ops console: pending-restart (SSE), one-click restart, multi-profile sync install (web+desktop), supply-chain preview, rollback/undo, updates/align, health, diff, boot report, audit log & agent tools.
PROJECT TOPICS
PROJECT README
仓库名
dsh-profilespanel· 本仓库采用 dsh-plugins 格式:每个插件一个独立目录、根 README 提供安装指引(当前含 1 个插件)。插件:dsh-profile-panel — DSH 插件状态面板 / profile 运维控制台:观察、诊断、变更管理与 Agent 化——当前 profile、bundle 状态、待重启检测(SSE)、一键重启、多 profile 同步安装(含双端模式)、供应链版本预览、回滚/撤销、更新检测与对齐、健康检查、profile 对比、启动报告、审计日志、市场对接与 Agent 工具。
| 插件 | npm 包名 | 说明 | 安装命令 |
|---|---|---|---|
| dsh-profile-panel | dsh-profile-panel |
插件状态面板 / profile 运维控制台 | dsh plugin --profile <name> add dsh-profile-panel |
每个插件均为独立包(自带
package.json/cordis.patch.yml/src/lib/client/tests),可单独安装,也可通过下方 GitHub 直装整仓获取。
| 路径 | 作用 |
|---|---|
package.json |
插件包定义(main → lib/index.js;dsh 字段声明 bundle patch 与客户端注入) |
cordis.patch.yml |
bundle 层栈插入声明(dsh.bundle.patch) |
src/ |
TypeScript 源码(宿主端 + src/client/ 客户端) |
lib/ |
编译后的宿主端代码 + 类型声明(package.json 的 main 指向 lib/index.js) |
client/ |
编译后的客户端 bundle(exports["./client"],设置页面板 UI) |
tests/ |
宿主单测(tests/host/)+ 客户端组件测试(tests/client/) |
scripts/ |
构建辅助脚本(normalize-client-banner.mjs) |
tsconfig*.json / tsdown.config.ts / vitest*.config.ts |
类型检查、构建与测试配置 |
.github/workflows/ci.yml |
push/PR 自动 typecheck + build + test |
构建产物(lib/ + client/)随仓库提交:github: 直装无需在消费端构建,装完即可运行(prepare 脚本保留作刷新路径)。
npm 包名
dsh-profile-panelDSH 插件状态面板:观察、诊断、变更管理与 Agent 化——当前 profile、bundle 状态、待重启检测(SSE)、一键重启、多 profile 同步安装(含双端模式)、供应链版本预览、回滚/撤销、更新检测与对齐、健康检查、profile 对比、启动报告、审计日志、市场对接与 Agent 工具。
DeepSeek Harness 生态里已有 dshmarket(安装市场)、官方 dsh-host-plugin-inventory(只读清单)、dsh-client-ui-settings-plugins(仅配置编辑)。本插件定位是它们都缺的那一层:profile 的运维控制台:
| 能力 | dsh-profilespanel | dshmarket | 官方内置 |
|---|---|---|---|
| 多 profile 同步安装(单端/双端 web+desktop/自定义勾选) | ✅ 逐 profile 回报 | 单 profile | ❌ |
供应链版本预览(minimumReleaseAge 发布年龄预警 + 建议 pin) |
✅ | 部分 | ❌ |
| 安装前快照 + 失败自动回滚 + 手动撤销 | ✅ | 部分 | ❌ |
| 更新检测 / 单条更新 / 跨 profile 版本对齐 | ✅ | 有 | ❌ |
| 待重启检测 + SSE 实时推送(含其他 profile) | ✅ | 有 | ❌ |
| 健康检查(缺失包/peer 缺口/孤儿 bundle/层栈重复 + 重启后组合预览) | ✅ | ❌ | ❌ |
| 两 profile 并排 diff(版本漂移/漏装) | ✅ | ❌ | ❌ |
| 启动报告(boot 激活结果 + 失败原因) | ✅ | ❌ | 只读部分 |
| 审计日志(本地 JSONL 变更时间线) | ✅ | ❌ | ❌ |
Agent 工具(profile_status / profile_updates / profile_sync_install / profile_restart) |
✅ | ❌ | ❌ |
| 免重启热加载(宿主支持时) | ✅ | 有 | ❌ |
| 一键重启(桌面端优雅 dispose → relaunch) | ✅ | 有 | ❌ |
市场对接:下载模块内置市场搜索 + github: 直装 |
✅ | 本体即市场 | ❌ |
其他优势:
minimumReleaseAge 策略降级(downgraded 标记),建议显式 pin;github:owner/repo[#path:/sub]),拒绝本地路径、git URL 与命令注入;审计日志纯本地、不含对话内容;package.json / pnpm-lock.yaml / node_modules/.modules.yaml;当前 profile 变更出现「需要重启」横幅,其他 profile 待重启以提示条展示;SSE 实时推送(断线自动回落轮询);desktopRuntime.requestRestart()(优雅 dispose → app.relaunch());纯 dsh web 显示 CLI 重启提示;支持「安装后自动重启」倒计时 + 取消;downgraded 供应链降级标记);minimumReleaseAge 策略预警与建议 pin;profile_status / profile_updates / profile_sync_install / profile_restart 面向模型注册,变更类走宿主审批;dsh.hot 的待重启 bundle 提供「热加载(免重启)」选项(宿主不支持时降级提示);github:owner/repo[#path:/sub] 直装(市场里大部分插件是 GitHub-only,npm registry 查不到);市场页可通过 dsh-profile-panel:install-target 事件或 #dshpp-install=<target> 深链把包名直接送进下载模块。dsh CLI),并有一个 webCapable profile(如 desktop / web);pnpm(安装器通过 pnpm 解析 registry / GitHub 目标;桌面端自带 pnpm 时自动使用)。dsh plugin --profile <name> add dsh-profile-panel
# 发布首日可能受 minimumReleaseAge 策略影响而解析旧版,可用显式版本:
dsh plugin --profile <name> add dsh-profile-panel@1.0.0
本仓库已包含构建产物(lib/ + client/),github: 安装无需在消费端构建,装完即可运行:
dsh plugin --profile <name> add github:lingxin-maz/dsh-profilespanel
dsh plugin --profile desktop add ../dsh-profilespanel
profile-panel 分区)即见完整面板;GET http://127.0.0.1:<port>/api/profile-panel/status 返回 200 即安装成功。profile-panel:
profile: web # 显式指定 profile(默认:桌面端取 desktopProfiles,纯 CLI 取 --profile,缺省 web)
allowRestart: true # false 时禁用一键重启(systemd/pm2 托管场景)
pollIntervalMs: 5000 # 变更检测轮询间隔
minimumReleaseAgeDays: 7 # 供应链版本预览的发布年龄阈值(F1)
| 接口 | 方法 | 语义 |
|---|---|---|
/api/profile-panel/status |
GET | profile 名/目录、bundle 清单(含来源归因/热加载标记)、pendingRestart、变更明细、重启能力、可安装 profile 列表、桌面端检测与 selection、其他 profile 待重启 |
/api/profile-panel/events |
GET | SSE 状态推送(pending / clean / installing / installed / restarting) |
/api/profile-panel/poll |
GET | SSE 的长轮询回落通道(?since=<seq>) |
/api/profile-panel/restart |
POST | 一键重启(同源 + 环回门控;桌面端 202,纯 web 501 + hint) |
/api/profile-panel/install |
POST | 多 profile 同步安装 { package, spec?, profiles[]?, mode?('single'\|'dual'\|'all'), preview?, rollback?, autoRestart? };package 亦接受 github:owner/repo[#path:/sub](F17,不可带 spec) |
/api/profile-panel/install-preview |
POST | 安装事前版本/发布年龄预警(F1);GitHub 目标返回来源预览(F17) |
/api/profile-panel/market/search |
GET | 市场搜索(dshmarket 同源目录)?q=<关键词>&limit=<1-20>(F17) |
/api/profile-panel/undo |
POST | 撤销最近变更(恢复 manifest 快照,F2) |
/api/profile-panel/updates |
GET | 逐 bundle 更新检测(F3) |
/api/profile-panel/update |
POST | 更新指定 bundle(F3) |
/api/profile-panel/align |
POST | 多 profile 版本对齐(F3) |
/api/profile-panel/health |
GET | 健康检查 + 重启后组合预览(F6) |
/api/profile-panel/diff |
GET | 两 profile 并排 diff(?profiles=a,b,F7) |
/api/profile-panel/boot-report |
GET | 最近一次 boot 激活报告(F9) |
/api/profile-panel/audit |
GET | 审计时间线(F10) |
/api/profile-panel/hot-reload |
POST | 免重启加载 HMR 能力 bundle(F12) |
/api/profile-panel/cancel-restart |
POST | 取消待执行的重启(F13) |
pnpm install
pnpm typecheck # 宿主端 + 客户端类型检查
pnpm build # 宿主端 tsc + 客户端 tsdown(产物 lib/ 与 client/)
pnpm test # 宿主单测 + 客户端组件测试
CI(.github/workflows/ci.yml)会在 push/PR 时自动执行 typecheck / build / test。
github:owner/repo[#path:/sub] 目标;拒绝本地路径、git URL、http 源与命令注入;pnpm install 重建 node_modules);dual 目标另一端缺失时降级为单端 + warning;updates / install-preview 依赖 registry 可用性,离线时降级为 warning;package.json 的 name 为准;更新检测对这类依赖跳过 registry 查询;dshmarket 快照(可能滞后于在线目录),两者都没有时降级为空结果 + warning;CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。