dsh-mcp-proxy
ben7am1n
Context-cheap lazy MCP access for DeepSeek Harness
hyzyn/dsh-plugin-kit
dsh-plugin-kit is a general-purpose plugin collection for the DeepSeek Harness (DSH) Web GUI: environment variable / secret management, MCP server configuration, Prompt management, Profile management, RSS / news aggregation, and a desktop client launcher。
PROJECT TOPICS
PROJECT README
中文 | English
仓库门禁:pnpm typecheck / pnpm build / pnpm aggregate。
DeepSeek Harness(DSH)Web GUI 的插件全家桶
环境变量 · MCP 服务器 · Prompt · Profile · RSS · 全局搜索 · Codegraph 集成 · 插件脚手架
是什么 · 功能插件 · 快速开始 · 开发新插件 · 常见问题 · 已知限制 · 参与贡献
dsh-plugin-kit 是给 DeepSeek Harness(DSH)Web GUI 用的通用插件集合:环境变量 / 密钥管理、MCP 服务器配置、Prompt 管理、Profile 管理、RSS / 新闻聚合、全局搜索、Codegraph 集成,外加一条命令生成新插件的开发脚手架。所有插件都走官方 profile 机制挂载到 dsh web,不改 DSH 源码;可以逐个安装,也可以用聚合包一次装齐。

| 能力 | 原生 dsh web | dsh-plugin-kit 全家桶 |
|---|---|---|
| 环境变量管理 | 命令行 / 手改配置 | Web GUI 卡片,保存即写入 process.env |
| MCP 服务器 | 手改 patch / 命令行 | 可视化卡片 + 连接测试 + 保存后热加载 |
| Prompt 管理 | 手改配置 | 可视化编辑 + 版本管理 / A/B 测试 / 导出分享 |
| Profile 管理 | 命令行 | 可视化创建 / 复制 / 重命名 / 删除 |
| RSS 聚合 | 无 | 多源订阅 + 每日「今日值得读」自动摘要 |
| 全局搜索 | 仅会话标题/内容 | 侧边栏统一搜索历史会话、Prompt、MCP 工具 |
| Codegraph 集成 | 无 | 代码图谱卡片:索引状态 / 符号搜索 / 调用链 / 影响面 / 一键 sync-index |
| 插件开发 | 手写样板 | pnpm create-plugin 脚手架 + @hyzyn/dsh-kit 类型助手 |
process.env,宿主和之后启动的子进程都能读到,无需重启。js: 前缀表达式(如 js:process.env.API_KEY);密钥标记。~/.dsh/env.yml 的托管区块(自动生成,请勿手改)。
mcp__<服务器名>__<工具名> 工具,模型即可直接调用,无需重启。npx -y @modelcontextprotocol/server-filesystem)与 streamable-http(远程服务);js: 前缀表达式(如 js:process.env.GITHUB_TOKEN);启用 / 停用、编辑、删除;状态徽章。~/.dsh/cordis.patch.yml 的托管区块。duplicate loader entry id 直接退出。
~/.dsh/prompts.yml 的托管区块。
~/.dsh/profiles 下的全部 DSH profile,支持创建、复制、重命名、删除,方便维护多套 DSH 环境。--port 的启动命令。web / headless 模板新建;复制排除 node_modules 与锁文件并自动安装依赖;重命名;端口配置与复制启动命令。~/.dsh/profiles/<name> 目录。web 默认 profile 不允许删除,headless 可以删除;新建后首次使用 dsh plugin --profile <name> add ... 时按需安装依赖。

mcp__ 前缀 MCP 工具;单类结果数量可配置;结果关键词高亮。~/.dsh/prompts.yml 的托管区块。sessionQuery / tools 服务;缺失时对应类别返回空列表,不影响其它类别。若 session-query 全文索引配置为 openAt: "never",历史会话会自动降级为逐会话扫描;会话结果会过滤为当前可跳转的可见会话。
codegraph_explore / codegraph explore 查询代码而不是 grep / read。.codegraph/ 目录(由 codegraph index 生成);插件无独立配置文件。
~/.dsh/rss-digest/YYYY-MM-DD.md(可用 DSH_RSS_DIGEST_DIR 覆盖)。

dsh web 可正常启动。dsh plugin --profile web add @hyzyn/dsh-alldsh web,设置 → 插件 里出现全部管理卡片插件已发布到 npm(@hyzyn scope),一条命令装齐:
dsh plugin --profile web add @hyzyn/dsh-all
装完重启 dsh web,打开 设置 → 插件 即可看到全部卡片。只想用某一个插件,见下文「单独安装某个插件」。
插件包已在 npm 发布,仓库安装仅供开发调试(需要 Node.js >= 22.19 与 pnpm 10):
# 1. 克隆仓库
git clone https://github.com/hyzyn/dsh-plugin-kit.git
cd dsh-plugin-kit
# 2. 安装依赖并构建
pnpm install
pnpm build
# 3. 把全家桶链接进 web profile
dsh plugin --profile web add link:$(pwd)/packages/all
# 4. 重启 dsh web
dsh web
只想用某个子包:第 3 步改为
dsh plugin --profile web add link:$(pwd)/packages/<name>即可,例如packages/mcp。
不想装全家桶时,可单独安装任意插件(npm 已发布,直接用包名):
dsh plugin --profile web add @hyzyn/dsh-env # 环境变量 / 密钥管理
dsh plugin --profile web add @hyzyn/dsh-mcp # MCP 服务器配置
dsh plugin --profile web add @hyzyn/dsh-prompt # Prompt 管理
dsh plugin --profile web add @hyzyn/dsh-profile # Profile 管理
dsh plugin --profile web add @hyzyn/dsh-rss # RSS / 新闻聚合
dsh plugin --profile web add @hyzyn/dsh-search # 全局搜索
dsh plugin --profile web add @hyzyn/dsh-codegraph # Codegraph 集成
装好重启 dsh web,打开 设置 → 插件 出现对应卡片就是生效了;也可以用 dsh --profile web --dump-config 确认插件配置层已挂载。卡片没出现,多半是装完没重启 dsh web。
卸载:dsh plugin --profile web remove @hyzyn/dsh-all(或对应的 @hyzyn/dsh-<包名>),然后重启 dsh web。
卡片没出现? 重启
dsh web;确认用的是官方dsh-web-app设置面板(浏览器半体依赖核心 slots 服务)。
MCP 服务器保存后没有工具? 等 1~2 秒 HMR;在卡片里看状态徽章与冲突提示;保存前先点「连接测试」。
报
duplicate loader entry id? 多半是手工往~/.dsh/cordis.patch.yml加了插件行。删掉重复行——插件行只由 bundle 补丁挂载,托管区块只放服务器配置。
npm install/npm view报 EPERM? 本机~/.npm缓存存在 root-owned 文件(历史 npm bug),执行sudo chown -R $(id -u):$(id -g) ~/.npm修复。pnpm 不受影响。
pnpm create-plugin <name> [id]
# 例:pnpm create-plugin timer → packages/timer(@hyzyn/dsh-timer,插件 id: timer)
# 例:pnpm create-plugin pet-tracker pt → packages/pet-tracker(插件 id: pt)
脚本会复制 packages/hello 模板、替换包名与插件 id,并自动更新聚合包。然后:
packages/<name>/src/index.ts 写插件逻辑;pnpm --filter @hyzyn/dsh-<name> build
dsh plugin --profile web add link:$(pwd)/packages/<name>
| 文件 / 字段 | 作用 |
|---|---|
package.json#dsh.bundle.patch |
指向 cordis.patch.yml,声明本包是 bundle 补丁层 |
cordis.patch.yml |
insert 一行,把插件挂进 profile 阵容 |
src/index.ts |
宿主半体:导出 { name, inject, apply } 形状的 Cordis 插件 |
package.json#dsh.client |
可选:声明浏览器半体,Web GUI 以 /plugins/<id>/client.js 加载 |
服务注入两种写法:inject: ['tools', 'webServer'] 后直接 ctx.tools;或运行时 ctx.get('tools') 判空。配置用 schemastery 导出同名 Config schema。
A: 先确认插件装进了 web profile(命令里的 --profile web),再用 dsh --profile web --dump-config 确认插件配置层已挂载;还不行就看上文「安装排障」。注意页面刷新不够,要重启 dsh web 进程。
A: 重新 pnpm build 后重启 dsh web。如果改的是浏览器半体,可能还需要清一下浏览器缓存或硬刷新。
A: 等 1~2 秒 HMR;在卡片里看状态徽章与冲突提示;保存前先点「连接测试」。仍不行就检查服务器进程是否真的能启动、地址是否可达。
A: 多半是手工往 ~/.dsh/cordis.patch.yml 加了插件行。删掉重复行——插件行只由 bundle 补丁挂载,托管区块只放服务器配置。
A: 本机 ~/.npm 缓存存在 root-owned 文件(历史 npm bug),执行 sudo chown -R $(id -u):$(id -g) ~/.npm 修复。pnpm 不受影响。
~/.dsh/cordis.patch.yml 里托管区块只应放服务器配置;手工追加插件行会导致 duplicate loader entry id 启动失败。web profile 受保护,headless 可删。dsh-web-app 的设置面板 slots 服务,非官方 Web GUI 可能不显示管理卡片。pnpm create-plugin <name> [id],避免手写样板。fix(mcp): 修复连接测试超时),用户可见变更请附截图或验证证据。pnpm typecheck && pnpm build && pnpm aggregate。pnpm aggregate 重新生成 packages/all 聚合清单。本仓库以 MIT 授权。
喜欢这个项目?点个 Star。
报告 Bug · 请求功能 · 查看 Releases
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。