dsh-harness-panel

DSH PLUGIN浏览器与联网

仓库 felixzhang-glitch/dsh-harness-panel

浏览器与联网 L4 · 沙盒安装通过 安全审查:低风险 可信度:银 可安装插件
安装这个插件

dsh-harness-panel 是 felixzhang-glitch 维护的 浏览器与联网 类 DSH 可安装插件, 仓库为 felixzhang-glitch/dsh-harness-panel,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-harness-panel 是浏览器与联网类的 DSH 可安装插件,验证等级 L4 · 沙盒安装通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级L4 · 沙盒安装通过 安全审查低风险
验证等级 L4 L4 · 沙盒安装通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-19 创建于 2026-10-17
README 10.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:felixzhang-glitch/dsh-harness-panel
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

智能体编排

上游标签

dsh-plugin

验证等级与安全审查

L4 · 沙盒安装通过
自动化流程结论,不是人工审核
验证等级L4 · 沙盒安装通过安装命令在隔离沙盒内真实执行成功,无依赖错误
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度银综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L4:在沙盒里真实装过,依赖能装上,不是纸面声明。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-harness-panel当前 L4 · 沙盒安装通过 低风险 0 未标注 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方felixzhang-glitch仓库 dsh-harness-panel · 默认分支 main
分类浏览器与联网network
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-17 · 2026-10-19最后推送 2026-10-19
本站收录2026-10-30首次进入本站目录的时间

README 全文

10.0 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-harness-panel

A DeepSeek Harness plugin that adds a Harness page to Settings — one place to inspect and start/stop MCP servers, enable/disable skills, start/stop hook bridges, and inspect or edit the AGENTS.md instruction chain, styled to match the native settings UI.

English · 中文

Features

MCP

  • Every configured @deepseek-ai/dsh-mcp-client row: connection status (observed from the upstream mcp/status seam, honestly unknown when unobserved), transport, sanitized target, tool inventory
  • A native start/stop switch on every addressable row, through the same pluginManager Remote the built-in Plugins page uses; disabling stops the mcp-client row and its tools
  • One-shot connectivity probe per server (streamable-http initialize POST / stdio spawn handshake, 10s deadline)
  • Env/header values never leave the host (keys only, URLs credential-redacted)

Skills

  • The current session's user-invocable skill catalog — the same seam the composer / menu reads (remote.skills), so the panel always agrees with the composer
  • A native enable/disable switch per skill. Disabling sets the provider's own frontmatter keys (user-invocable: false, disable-model-invocation: true) in the skill's SKILL.md, so it leaves the model catalog and the / menu in every registry scope; the panel keeps listing it with an off switch, and re-enabling restores the original frontmatter lines
  • Search filter, model-invocable badge, source path

Hooks

  • Mounted hook bridges (@deepseek-ai/dsh-hooks-claude-code / @deepseek-ai/dsh-hooks-codex): each row's configPath file parsed into event → matcher → command views
  • A per-command switch inside each expanded group: turning one hook off flips its type to the sentinel the bridges skip, records the original value, and reloads the bridge row so it takes effect immediately. The bridge row itself deliberately carries no whole-row switch — the loader's live re-enable of a row is unreliable, so the page stays at the granularity the file edit serves
  • Conventional on-disk locations (~/.claude/settings.json, ~/.codex/hooks.json, project-level, …) scanned read-only and clearly marked not mounted

AGENTS.md

  • The workspace-instruction chain the current session loads, in the loader's own order: $DSH_HOME/AGENTS.md, $DSH_AGENTS_HOME/AGENTS.md, then the project root down to the session working directory, base candidates before each directory's .local overlays
  • Every candidate's disposition: loaded, empty, truncated, omitted by the byte budget, duplicate within its candidate group, over the per-source cap, unreadable, or missing. The same budget algorithm the loader uses decides statuses and produces an exact content that will be injected preview
  • The active agent preset is resolved through the session projection, the preset's plugins list, and the root fallback, so the displayed maxBytes/candidate configuration is the one in effect
  • An inline editor per file, backed by a host write route with an allowlisted candidate path, a 1 MiB content cap, and an mtime precondition; saving through ~/.dsh/AGENTS.md -> ~/.agents/AGENTS.md preserves the symlink. Missing candidates can be created from their directory card

Design

The visual language follows the shipped settings sections rather than inventing its own: --dsw-* design tokens only (no hard-coded colors), native corner radii (--dsw-radius-xl cards, --dsw-radius-md controls), 0.5px hairline strokes, the underline tab strip used by the built-in Plugins page, and the shipped Switch atom from @deepseek-ai/dsh-client-ui-primitives — the exact control the Plugins page uses. Light and dark themes both work.

Install

Desktop profile (~/.dsh/profiles/desktop):

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

Or install by local path from Settings → Plugins.

Security boundary

  • MCP and hook bridge switches call the shipped remote.pluginManager.setPluginEnabled: the official manager writes the profile's cordis.patch.yml and reloads the row, exactly as the built-in Plugins page does. This host half registers no write route for them
  • The host half's write routes are POST /harness-panel/skills/toggle, POST /harness-panel/hooks/toggle-hook, and POST /harness-panel/agents/write. Each requires content-type: application/json, an x-harness-panel: 1 header, and a same-origin Origin when the browser sends one; the toggle bodies are bounded to 16 KiB and the AGENTS.md body to 4 MiB
  • A skill toggle edits only the two invocation keys of the named skill's own SKILL.md (verified against the file's declared name); a hook toggle edits only that command's type; an AGENTS.md write is refused unless the path is a candidate discovered for the requested working directory, and its expectedMtimeMs must match the file on disk. Symlinked candidates are written through so the link survives, but a resolved target outside the project root or either instruction home is refused
  • The host writes only those file edits plus $DSH_HOME/harness-panel/state.json (default ~/.dsh/harness-panel/state.json): skill names, descriptions, paths, disable times, and the original frontmatter/type lines, mode 0600. No instruction bodies, no credentials
  • AGENTS.md discovery reads with the host's Node filesystem, not the agent's sandboxed ctx.fs provider; file content is returned only to the same-origin panel and is never logged
  • Credentials never leave the host: env/header maps surface as key lists, URLs and error text are redacted
  • Routes bind to loopback only (the dsh webserver default)

Development

pnpm install
pnpm build       # emits lib/index.js (host ESM) + lib/client.js (browser bundle)
pnpm typecheck
pnpm test        # vitest: mcp aggregation, hooks parsing, AGENTS.md discovery/render/file edits, sanitization, skill file/state, route gates, switch models

The scripts prefer bunx and fall back to the local Node. On the macOS desktop install the DSH-bundled Node is hardened and cannot load the ad-hoc native rollup/rolldown bindings, so bunx tsdown / bunx vitest run is the path that works there.

Compatibility: DSH >=0.2.0 <0.3.0 (developed against desktop 0.2.1-rc.1). AGENTS.md discovery, dedupe and budget rendering mirror @deepseek-ai/dsh-agent-instructions 0.2.1-rc.2; if a later loader changes those semantics, the panel needs the same adjustment.


中文

DeepSeek Harness 设置面板插件:在设置导航中新增 Harness 入口,集中查看并启停 MCP 服务器、Skills 与 Hooks,并查看/编辑 AGENTS.md 指令链,视觉与原生设置页一致。

  • MCP:已配置服务器的连接状态(来自上游 mcp/status 事件,无观察时如实显示未知)、传输方式、脱敏目标、工具清单,一键探活;每个可寻址行右侧有原生启停开关,停用后 mcp-client 行与其工具一起下线
  • Skills:当前会话可见的 skill 目录(与 / 菜单同源),每个 skill 右侧有原生启用/停用开关。停用直接写入该 skill SKILL.md 的官方 frontmatter 键(user-invocable: false、disable-model-invocation: true),在任何 registry scope 都生效,skill 从模型目录与 / 菜单消失;面板仍以关闭状态列出,重新启用时按记录还原原始行
  • Hooks:已挂载的 hook 桥配置解析(事件点 → 匹配器 → 命令),展开后每条 command 有独立开关——关闭时把该 hook 的 type 改为 bridge 跳过的哨兵值(provider 自身的机制),记录原始值并重载 bridge 行立即生效。bridge 整行不设总开关:loader 对整行的热恢复不可靠,面板停留在文件编辑能服务的粒度。本机约定路径上未挂载的配置文件继续只读扫描
  • AGENTS.md:按 loader 的真实顺序展示当前会话的指令链($DSH_HOME/AGENTS.md → $DSH_AGENTS_HOME/AGENTS.md → 项目根到会话工作目录,每层先基础候选再 .local 覆盖),标注每个候选的最终去向:已注入、空文件、被截断、因预算省略、同组重复折叠、超过单文件上限、不可读或未创建。预算与去重按 dsh-agent-instructions 0.2.x 的算法复刻,并给出将注入内容的完整预览;当前 preset 通过会话投影与 preset plugins 解析,显示实际生效的 maxBytes 与候选配置。每个文件有内联编辑器,保存走候选路径白名单 + 1 MiB 内容上限 + mtime 前置校验;~/.dsh/AGENTS.md -> ~/.agents/AGENTS.md 这类符号链接写穿目标而保留链接,缺失候选可在对应目录卡片中新建

安全边界:MCP 与 hook 开关调用 shipped remote.pluginManager.setPluginEnabled,由官方 manager 写 profile 的 cordis.patch.yml 并 reload,与内置 Plugins 页一致;host 的写入路由为 POST /harness-panel/skills/toggle、POST /harness-panel/hooks/toggle-hook 与 POST /harness-panel/agents/write,均要求 JSON、x-harness-panel: 1 与同源 Origin,开关类 body 上限 16 KiB,AGENTS.md 写入上限 4 MiB。skill 开关只改目标 SKILL.md 的两个 invocation 键(先校验声明的 skill name),hook 开关只改该命令的 type;AGENTS.md 写入只接受本次按请求工作目录发现出的候选路径,且 expectedMtimeMs 必须与磁盘一致;符号链接写穿目标,但目标落在项目根或两个指令 home 之外时拒绝写入。host 写出的文件仅这些编辑与 $DSH_HOME/harness-panel/state.json(默认 ~/.dsh/harness-panel/state.json,0600),state 文件只含 skill 名称、描述、路径、停用时间与原始行记录,不含正文与凭据。AGENTS.md 发现与读取使用 host 的 Node 文件系统而非 agent 沙箱 provider;文件内容只返回给同源面板,不写日志。路由仅监听 loopback。

开发命令见上文;安装或重新构建后需重启 DSH(desktop profile 无 live reload)。

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-harness-panel 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:felixzhang-glitch/dsh-harness-panel` 即可。

dsh-harness-panel 的验证等级是什么意思?

L4 · 沙盒安装通过。安装命令在隔离沙盒内真实执行成功,无依赖错误

dsh-harness-panel 安全吗?

低风险。

dsh-harness-panel 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-harness-panel 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

felixzhang-glitch 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。