🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

网页会话桥接 cv588888888888888888888ju/dsh-web-mcp

DeepSeek Harness
cv588888888888888888888ju81 天前有提交已提供中文文档扫描:无法判定

把 DSH 网页会话接入任意 MCP 客户端调用

26.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add cv588888888888888888888ju/dsh-web-mcp
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/8) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 包内无可扫 JS
  • · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/3(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 接入任意MCP客户端
  • 暴露stdioMCP工具
  • 跨轮次复用缓存

README

由 DeepSeek 最新模型翻译生成
dsh-web-mcp 🤖 AI 辅助生成项目 · 大学生学习项目,代码主要由 LLM 编码智能体(Codex CLI + DeepSeek)在人工指导与审查下生成。 License: MIT [Python 3.10+]() [MCP]() DeepSeek Harness (DSH) Web UI 的 MCP 桥接器 —— 把 DSH web 的 cordis RPC API(HTTP /api/)封装成 stdio 形式的 MCP 工具。任何 MCP 客户端(Hermes、Codex CLI、Claude Desktop 等)都可以驱动 DSH 会话,并享受 prompt 前缀缓存复用带来的速度与成本优势。 这个项目解决什么问题? DSH(deepseek-ai/deepseek-harness)是 DeepSeek 官方的 agent harness,对 deepseek-v4-flash(dsf)等自家模型有接近 100% 的 prompt 前缀缓存命中率——同一会话内,system prompt + 工具 schema + 历史对话前缀会反复复用,后续每一轮只需要为「新增的那一点点内容」付费,又快又省。 但 DSH 默认只能通过 Web UI 或 CLI 交互,无法被其他 agent 工具链调用。
展开完整文档(README 剩余 1 节)
dsh-web-mcp

🤖 AI 辅助生成项目 · 大学生学习项目,代码主要由 LLM 编码智能体(Codex CLI + DeepSeek)在人工指导与审查下生成。

License: MIT
[Python 3.10+]()
[MCP]()

DeepSeek Harness (DSH) Web UI 的 MCP 桥接器 —— 把 DSH web 的 cordis RPC API(HTTP /api/)封装成 stdio 形式的 MCP 工具。任何 MCP 客户端(Hermes、Codex CLI、Claude Desktop 等)都可以驱动 DSH 会话,并享受 prompt 前缀缓存复用带来的速度与成本优势。

这个项目解决什么问题?

DSH(deepseek-ai/deepseek-harness)是 DeepSeek 官方的 agent harness,对 deepseek-v4-flash(dsf)等自家模型有接近 100% 的 prompt 前缀缓存命中率——同一会话内,system prompt + 工具 schema + 历史对话前缀会反复复用,后续每一轮只需要为「新增的那一点点内容」付费,又快又省。

但 DSH 默认只能通过 Web UI 或 CLI 交互,无法被其他 agent 工具链调用。这个项目就是把 DSH 的能力以 MCP 标准协议开放出来,让 Codex / Hermes 直接驱动 DSH 会话。

工具清单

八个工具,全部基于 DSH web 的 cordis RPC(HTTP POST /api/):

| 工具 | 用途 |
| dsh_list_workspaces | 列出当前 DSH web UI 已知的所有工作区。 |
| dsh_create_session | 绑定一个目录(缺失时自动创建工作区),创建会话并一次完成模型选择。返回 sessionId。 |
| dsh_send_message | 发送 prompt 并阻塞等待该轮 assistant 回复完成。返回回复文本 + 本轮 token 用量(含 cacheReadTokens / cacheWriteTokens)。agent 请求权限时通过 MCP sampling 回调代为决策(见下),turn 继续跑完。 |
| dsh_wait_turn | 不发新 prompt,只等待当前未完成的 turn 结束。答完 pending 审批后用它续等。 |
| dsh_list_pending_approvals | 列出仍未决的审批请求(approvalId、toolName、callId?、reason?、rpcId),可按 session_id 过滤。 |
| dsh_respond_approval | 答复一个 pending 审批(allowed-once / rejected);返回 DSH 回执(accepted: true = 已被消费)。 |
| dsh_get_session_stats | 获取缓存投影:tokenUsage、sessionStats、contextPressure。 |
| dsh_resume_session | 校验会话仍存活并返回当前模型;后续 dsh_send_message 会复用 prompt 前缀。 |

权限审批回调(approval callback)

DSH 的 agent 在执行敏感操作(如把 sandbox 升级到 danger-full-access)前会请求权限:会话日志里出现 approval/asked,同时 DSH web 事件流里出现可答复的 approval/requested 帧。本桥把它变成双轨回调:

1. sampling 回调(默认,Hermes CN Desktop ≥ 0.18 可用):dsh_send_message / dsh_wait_turn 等待 turn 期间,server 向 MCP 客户端发送 sampling/createMessage 请求,说明工具名与 DSH 给的原因;客户端回答 allowed-once / rejected 后,桥把结果经 POST /api/respond 回传 DSH,turn 继续跑。Hermes 原生支持(sampling 默认开启,见其 Native MCP 文档)。sampling 必须在 MCP 请求上下文内调用,因此只在真实 MCP 传输下生效。
2. 工具兜底(任何 MCP 客户端可用):给 dsh_send_message 传 auto_respond_approvals=false(或 sampling 不可用/失败),调用会立即返回 awaitingApproval: true + pendingApprovals,不再傻等。调用方(或人工)随后决策:

dsh_send_message(...) -> {"awaitingApproval": true, "pendingApprovals": [...]}
dsh_respond_approval(session_id, , "allowed-once") -> {"accepted": true}
dsh_wait_turn(session_id, ...) -> 正常 turn 结果

dsh_list_pending_approvals 随时可列出仍未决的审批(DSH 事件流在连接时会重放所有未答复的审批)。

wire 事实(已对 DSH 源码 + 实测确认):答复必须 echo approval/requested 帧的 rpcId —— 它是宿主 pending 表新建的 UUID,不是审计用的 approvalId;payload 里必须带上匹配的 approvalId。事件流是 WebSocket(GET /api/events.mux,普通 HTTP 会返回 426),所以 websockets 是硬依赖。

环境要求

- Python 3.10+
- 一个正在运行的 dsh web 实例:http://127.0.0.1:3080(可用环境变量 DSH_BASE_URL 覆盖)
- uv(推荐)或 pip
- websockets(uv sync 自动安装;审批事件流需要)

安装

git clone https://github.com/cv588888888888888888888ju/dsh-web-mcp.git
cd dsh-web-mcp
uv sync

作为 stdio MCP server 直接运行:

uv run dsh-web-mcp

接入方式

接入 Hermes(Agent)

用 hermes mcp add 注册:

hermes mcp add dsh --command uv --args --directory C:\Users\chenty\Documents\feishu-bot\dsh-mcp run dsh-web-mcp

⚠️ 踩坑记录(实测):
- --env DSH_BASE_URL=... 这个参数会被 dsh-web-mcp 的 argparse 当成自己的参数而报错(unrecognized arguments: --env ...),导致连接失败。DSH_BASE_URL 请用系统/用户级环境变量设置,不要在 hermes mcp add 里传 --env。
- 注册成功后必须新开一个会话才生效(配置在会话启动时加载)。
- 注册时若提示 Enable all 8 tools? [Y/n/select],输入 Y 回车确认。

验证是否接入成功(新会话中问 agent):列一下可用的 dsh_ 工具——应看到 8 个工具。

接入 Codex CLI

编辑 %USERPROFILE%\.codex\config.toml(其他系统为 ~/.codex/config.toml):

[mcp_servers.dsh]
command = "uv"
args = ["--directory", "C:\\path\\to\\dsh-web-mcp", "run", "dsh-web-mcp"]

可选,缺省为 http://127.0.0.1:3080 [mcp_servers.dsh.env]
DSH_BASE_URL = "http://127.0.0.1:3080"

重启 Codex CLI 后,八个 dsh_ 工具会出现在内置工具旁边。

前提:DSH web 必须先跑着

两种 MCP 接入方式都要求 DSH web UI 在监听 3080 端口:

dsh web --port 3080

配置

环境变量:

| 变量 | 默认值 | 说明 |
| DSH_BASE_URL | http://127.0.0.1:3080 | DSH web 地址。 |
| DSH_TIMEOUT_S | 60 | 单请求超时秒数(放宽一点,一轮 LLM 可能要 ~30s)。 |
| DSH_MCP_LOG | INFO | Python logging 级别(DEBUG 可看 wire 级流量)。 |

CLI flag 与环境变量一一对应:--base-url、--timeout、--check。

自检(probe)

probe.py 是开发者侧的冒烟测试,会端到端调用全部八个工具,并包含审批链路(真实触发一次审批 → dsh_respond_approval 返回 accepted: true → dsh_wait_turn 等到 turn 跑完):

uv run python probe.py

预期输出(每步一个 JSON):

{
"ok": true,
"step": "send_message",
"reply_contains": "TASK_OK",
"cacheReadTokens": 8192
}

审批相关步骤:send_message_awaiting_approval、respond_approval(accepted: true)、wait_turn_after_approval(reply_contains: "APPROVAL_OK")。

cacheReadTokens > 0 即证明缓存复用生效。

故障排查

- DSH web 不可达 —— server 能启动,但每个工具都返回 {"ok": false, "error": "DSH web not reachable at ..."}。确认 dsh web 正在运行(dsh web --port 3080)。
- DSH schema 漂移(rc.X → rc.Y) —— 未知字段错误以 {ok: false, error: "dsh returned : "} 形式返回。models.py 中的模型 schema 刻意设为 extra="allow" 以便透传新增字段;解析异常请对着 models.py 报 issue。
- Prompt 超时 —— dsh_send_message 默认 timeout_s=120;prompt 较长时请调大重试。无人答复的审批也会挂住 turn:用 dsh_list_pending_approvals / dsh_respond_approval(或让 DSH web UI 里的人类批准)后接 dsh_wait_turn。
- sampling 不可用 —— 在 MCP 请求上下文之外(如 probe.py)或客户端未实现 sampling/createMessage 时,dsh_send_message 回退为返回 awaitingApproval: true + pendingApprovals;走上面的工具兜底即可。

为什么值得用(缓存原理)

默认情况下 Codex CLI 直连 OpenAI / Azure provider。当通过 MCP 路由到 DSH 时,DSH 内的 deepseek-v4-flash preset 会让 system prompt + 工具 schema + 会话前缀保持缓存,因此同一会话内的每一轮都能读到 8K+ 的缓存 token,只有新 prompt 与新回复按未缓存计费——详见 dsh_send_message 返回的 tokenUsage.cacheReadTokens 实测值。

项目背景

本项目是一位本科生探索 agent 工具链的学习项目。绝大部分代码由 LLM 编码智能体(Codex CLI + DeepSeek)在人工指导下生成;每一行都经过人工审查,发布前做了端到端行为验证。作者经验有限,bug 可能存在——欢迎提 issue。

状态

Pre-release。API 面跟随 DSH 0.1.0-rc.6 schema(rpc-map.d.ts);如果升级 DSH,请从源码重新生成。

License

MIT
预览分享卡片长什么样 ↓cv588888888888888888888ju/dsh-web-mcp
分享 · DeepSeek Harness Hub
cv588888888888888888888ju/dsh-web-mcp

把 DSH 网页会话接入任意 MCP 客户端调用

这是你的仓库?认领条目

回到顶部