dsh-harness-panel:在 DSH 设置里集中管 MCP、Skills、Hooks 与 AGENTS.md

前言

在 DeepSeek Harness(DSH)里做智能体开发,MCP 连接、会话 Skills、Hook 桥和 AGENTS.md 指令链往往分散在 profile 配置、各工具默认路径和 loader 逻辑里。内置 Plugins 页能启停插件行,但看不到 MCP 探活、skill 与 composer / 菜单是否一致、hook 命令级开关,也很难对照 loader 顺序理解「最终会注入哪段指令」。

下面介绍社区插件 dsh-harness-panel(维护者 felixzhang-glitch):在设置导航中增加 Harness 入口,用与原生设置页一致的风格,把上述能力收进一页。插件归类为客户端;当前 GitHub 星标为 0。目录页见 SkillHub,源码与说明见 GitHub 仓库。

这是什么

dsh-harness-panel 是 DSH 的设置面板插件:在 Settings 里新增 Harness 分区,集中查看并启停 MCP 服务器、启用/停用 Skills、管理 Hook 桥配置,以及查看与编辑 AGENTS.md 指令链。界面使用 --dsw-* 设计令牌、与内置 Plugins 页相同的下划线 Tab 和 @deepseek-ai/dsh-client-ui-primitives 的 Switch,支持明暗主题。

package.json 中版本为 0.3.0,许可证 MIT;引擎要求 Node >=22.0.0,DSH >=0.2.0-0 <0.3.0(README 写明在 desktop 0.2.1-rc.1 上开发)。AGENTS.md 的发现、去重与预算渲染与 @deepseek-ai/dsh-agent-instructions 0.2.1-rc.2 对齐;若上游 loader 语义变更,面板需同步调整。

核心功能

MCP

  • 对每个已配置的 @deepseek-ai/dsh-mcp-client 行展示:连接状态(来自上游 mcp/status,未观察到时显示 unknown)、传输方式、脱敏后的 target、工具清单。
  • 每行提供原生启停开关,经与内置 Plugins 页相同的 pluginManager Remote;停用后 mcp-client 行及其工具一起下线。
  • 支持对单个服务器做一次性连通性探测(streamable-http 的 initialize POST / stdio 握手,10 秒超时)。
  • 环境变量与 header 仅以键名展示,URL 做凭证脱敏,敏感值不离开本机。

Skills

  • 展示当前会话中用户可调用 skill 目录,数据源与 composer / 菜单相同(remote.skills),避免面板与菜单不一致。
  • 每个 skill 有启用/停用开关。停用时在对应 SKILL.md 写入官方 frontmatter:user-invocable: false、disable-model-invocation: true,使该 skill 从模型目录与各 registry scope 的 / 菜单中消失;面板仍以关闭状态列出,重新启用时按记录还原原始 frontmatter 行。
  • 提供搜索过滤、model-invocable 标记、来源路径。

Hooks

  • 对已挂载的 hook 桥(@deepseek-ai/dsh-hooks-claude-code / @deepseek-ai/dsh-hooks-codex)解析 configPath 指向的文件,按事件 → 匹配器 → 命令展示。
  • 展开后每条 command 有独立开关:关闭时将该 hook 的 type 改为 bridge 会跳过的哨兵值,记录原值并重载 bridge 行。bridge 整行不设总开关(README 说明 loader 对整行热恢复不可靠)。
  • 对 ~/.claude/settings.json、~/.codex/hooks.json 及项目级等约定路径做只读扫描;未挂载的文件会明确标注 not mounted。

AGENTS.md

  • 按 loader 顺序展示当前会话指令链:$DSH_HOME/AGENTS.md → $DSH_AGENTS_HOME/AGENTS.md → 项目根到会话工作目录(每层先基础候选再 .local 覆盖)。
  • 标注每个候选状态:已加载、空、截断、因字节预算省略、同组重复、超单文件上限、不可读或缺失;预算算法与 loader 一致,并提供将注入内容预览。
  • 通过会话投影与 preset 的 plugins 解析当前 agent preset,显示实际生效的 maxBytes 与候选配置。
  • 每个文件支持内联编辑;保存走 host 写路由,路径须在白名单候选内,内容上限 1 MiB,并校验 expectedMtimeMs。缺失候选可在目录卡片中创建;经 ~/.dsh/AGENTS.md -> ~/.agents/AGENTS.md 等符号链接写入时保留链接。

安装与启用

README 给出的 desktop profile 安装方式如下。先将本地仓库路径写入 profile 的 package.json,再安装并重启 DSH(desktop profile 无 live reload)。

cd ~/.dsh/profiles/desktop
# package.json → dependencies: "dsh-harness-panel": "link:<path to this repo>"
# package.json → dsh.profile.bundles: add "dsh-harness-panel"
pnpm install
# restart DSH (the desktop profile has no live reload)

也可在 Settings → Plugins 中通过本地路径安装。

安装并重启后,在设置导航中打开 Harness 即可使用四个 Tab 对应的能力。

典型用法

用法以在 Harness 页内操作为主,无需额外 CLI。

  1. 排查 MCP:在 MCP 区查看各行状态与工具列表;对异常服务器使用探活;需要下线某 client 时关闭该行开关(与 Plugins 页行为一致)。
  2. 整理 Skills:用搜索缩小列表;对不需要出现在 / 菜单或模型侧的 skill 关闭开关(会改该 skill 的 SKILL.md frontmatter);需要时再打开开关恢复。
  3. 细粒度 Hook:展开已挂载 bridge 的事件组,对单条 command 关断或恢复,观察 bridge 重载后的效果;未挂载的本机配置文件仅作只读参考。
  4. 对齐 AGENTS.md:对照链路与「将注入内容」预览,确认预算与去重结果;在允许的路径上内联编辑并保存(注意 mtime 校验);从目录卡片创建缺失文件。

Host 侧写入路由包括 POST /harness-panel/skills/toggle、POST /harness-panel/hooks/toggle-hook、POST /harness-panel/agents/write;请求需 content-type: application/json、x-harness-panel: 1,并在浏览器发送时带同源 Origin。MCP 与 hook bridge 的启停不经过上述写路由,而是调用官方 remote.pluginManager.setPluginEnabled 写 cordis.patch.yml 并 reload。

适用场景与注意

适合谁:经常在 DSH desktop 上调试 MCP、需要让 Skills 列表与 composer 一致、要按命令开关 Hook、或要按 loader 规则查看/改 AGENTS.md 的开发者。

权限与安全:插件以当前 DSH 进程权限运行;skill/hook 开关会改磁盘上的 SKILL.md 与 hook 配置,AGENTS.md 写入受路径白名单与 mtime 约束。状态写入 ~/.dsh/harness-panel/state.json(mode 0600),不存指令正文与凭证。路由默认仅绑定 loopback。安装前请自行审阅 源码 与 MIT 许可证。

生态说明:DSH 采用「一切皆插件」思路;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-harness-panel 把 MCP 状态与探活、会话 Skills、Hook 命令级开关和 AGENTS.md 指令链预览/编辑放进原生风格的 Harness 设置页,减少在多处配置文件之间来回对照。

  • 目录页:https://www.skillhub.cn/plugins/felixzhang-glitch/dsh-harness-panel
  • GitHub:https://github.com/felixzhang-glitch/dsh-harness-panel
羽毛球分组比赛记分
小程序二维码

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

Xiaoye