前言¶
在 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 页相同的
pluginManagerRemote;停用后 mcp-client 行及其工具一起下线。 - 支持对单个服务器做一次性连通性探测(streamable-http 的
initializePOST / 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。
- 排查 MCP:在 MCP 区查看各行状态与工具列表;对异常服务器使用探活;需要下线某 client 时关闭该行开关(与 Plugins 页行为一致)。
- 整理 Skills:用搜索缩小列表;对不需要出现在
/菜单或模型侧的 skill 关闭开关(会改该 skill 的SKILL.mdfrontmatter);需要时再打开开关恢复。 - 细粒度 Hook:展开已挂载 bridge 的事件组,对单条 command 关断或恢复,观察 bridge 重载后的效果;未挂载的本机配置文件仅作只读参考。
- 对齐 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