DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

SodiumLayer /

SodiumLayer/dsh-obscura

Verified

Obscura settings-page plugin for DeepSeek Harness: starts and health-checks the obscura MCP server, resolves its binary from PATH or bin/, and keeps the mcp-obscura entry in your profile in sync.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@14562787

dsh-obscura-plugin

DeepSeek Harness 的 Obscura 懒人插件:在DeepSeek Harness启动时自动拉起 obscura 的 MCP 服务

安装与使用的详细说明见 INSTALL.md。

dsh plugin --profile web add github:SodiumLayer/dsh-obscura

它做什么

需求 实现
DSH 启动时自动启动 obscura 的 MCP 服务 宿主半在启动序列里解析可执行文件并 spawn obscura mcp --http --port <port>,轮询 MCP 握手确认真的可用,随 DSH 退出停止(只停自己启动的进程)
报告 obscura 是否可用 + 不可用时的下载入口 面板只显示一条 版本 信息,来自真实执行的 obscura --version ;拿不到版本就显示「不可用」
插件目录内放置可执行文件 + 一键跳转 包内 bin\ 目录 + 面板「打开文件夹」按钮;解析优先级:自定义路径 → 系统 PATH → 插件 bin\(含解压出的子目录)。自定义路径既接受可执行文件,也接受它所在的文件夹
一键测试 harness 是否已接入 obscura MCP 「测试接入」分两段:服务段直接请求面板上那个 MCP 接入地址做 initialize + tools/list;接入段读 loader 条目与 mcp__obscura__* 工具数 —— 分开才能区分「服务没跑」与「服务在跑但没接入」
MCP 配置开关 + 接入地址 开关:开 = 在 profile 的 cordis.patch.yml 写入/复用它的一行 mcp-obscura;关 = 移除该行。接入地址文本框留空则随 --port 自动生成 http://localhost:<端口>/mcp,填写则用你的地址;端口/地址变化时配置行自动跟随,手工改错了则会被明确提示不一致
服务控制 启动服务 / 重启服务 / 停止服务 三个按钮,外加一个自定义启动参数文本框:插件只固定子命令 mcp,host、port、stealth 等全部由这个框决定(默认 --http --host 127.0.0.1 --port 3000)

设计要点(为什么这样写)

  • 零运行时依赖:宿主半只用 node 内置模块。面板不依赖任何前端库(只用宿主注入的 react)。
  • patch 文件逐行编辑:cordis.patch.yml 是你拥有的文件。本插件只替换/删除/追加 mcp-obscura 那一行,文件头注释、其他插件行、以及它无法解释的 !!js 表达式逐字节保留(有往返不变性单测)。
  • 绝不假装成功:文件存在 ≠ 能运行(要真执行 --version);进程在跑 ≠ 服务健康(要真发 MCP 请求);写入配置 ≠ 已生效(挂载发生在启动时,面板会说要重启)。
  • 不越界:不结束别人的进程(端口被占就报冲突)、不接管外部实例的生命周期、不联网下载其他文件、open-folder 只允许打开自己的 bin。
  • 所有权由子进程句柄决定,不由一个布尔标志决定:只要本实例持有子进程句柄,那个进程就是「我们的」,停止服务一定杀得掉。曾经额外依赖一个 owned 标志,导致重复点「启动服务」时把自己刚拉起的监听误判成外部实例、清掉标志,从此停止服务也杀不掉它 —— 这是已修复的真实缺陷。
  • 参数框是唯一控制面:插件只固定 mcp 子命令与「按参数里的 --port 连接」这件事,主机/端口/stealth/proxy 全部来自参数框;--port 决定健康检查与 harness 接入地址,因此改端口会跟着改,缺 --http 会明确报错而不是静默跑 stdio。
  • 配置行是设置的投影,不是第二个真源:cordis.patch.yml 里那一行由 effectiveMcpUrl() 生成并随设置自动重写。曾经两者各自演化,导致面板测的是新端口、harness 指着旧端口 —— 面板现在还会在两者不一致时明确报警,而不是把旧值当「服务段」显示出来。
  • 状态只有一个真源:MCP 开关反映的是 cordis.patch.yml 里那一行是否存在,而不是「是否已挂载」;挂载与否由「测试接入」的接入段报告。两者不混为一谈。
  • 一个开关只留一处:stealth 曾是独立设置项,现在被折算进启动参数(旧的 stealth: true 会自动迁移),面板上每个能改变行为的项都看得见、改得动。
  • 不阻断 DSH:Obscura 的任何失败都收敛为面板上的一个状态与一行原因,而不是启动异常。
  • 采用宿主事实:profile 的 dir / patchPath 取自主机的 profileContext,不靠猜 —— 否则自定义 profile 会改错文件。

许可

MIT


非官方声明

本项目是第三方插件,与 DeepSeek(DeepSeek Harness)及 Obscura 上游均无隶属关系,亦未获其背书;相关名称与商标归各自所有者

本仓库不包含、也不分发 obscura 的任何二进制或源码:bin/*.exe 请自行从上游获取,并自行遵循其许可条款

—/ 5

No ratings yet

Verified DSH bundle

Commit 145627876620

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout