把 ChatGPT 网页对话接到本地 DSH 运行时
31.2/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/siddhartha-yz/dsh-mcp-gateway.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 56 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 dsh-chatgpt-web-bridge-plugin/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@siddhartha-yz/dsh-chatgpt-web-bridge(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 01:49:45
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 13 处,展示前 13 条)
- 发起网络请求dsh-browser-session-plugin/index.js:605
state.network.push({ page_id: id, method: response.request().method(), status: response.status(), url: response.url().slice(0, 4000) }) - 读取本地文件dsh-browser-worker/index.js:119
const status = await readFile('/proc/self/status', 'utf8') - 读取本地文件dsh-browser-worker/index.js:122
try { apparmor = (await readFile('/proc/self/attr/current', 'utf8')).trim() } catch {} - 执行外部命令固定命令dsh-browser-worker/index.js:155
const result = spawnSync('/usr/bin/systemctl', ['show', 'dsh-web-host.service', '-p', 'MainPID', '--value'], { - 删除本地文件递归dsh-browser-worker/index.js:194
if (profileDir) await rm(profileDir, { recursive: true, force: true }).catch(() => {}) - 写入本地文件dsh-browser-worker/index.js:240
await mkdir(dirname(profileDir), { recursive: true, mode: 0o700 }) - 写入本地文件dsh-browser-worker/index.js:241
await mkdir(profileDir, { mode: 0o700 }) - 执行外部命令来自配置/变量dsh-browser-worker/index.js:254
child = spawn(spec.argv[0], spec.argv.slice(1), { - 删除本地文件dsh-browser-worker/index.js:314
await rm(socketPath, { force: true }) - 写入本地文件dsh-browser-worker/index.js:326
await chmod(socketPath, 0o600) - 删除本地文件dsh-browser-worker/index.js:338
await rm(socketPath, { force: true }).catch(() => {}) - 发起网络请求dsh-chatgpt-web-bridge-plugin/lib/client.js:25
const response = await fetch(`${config.basePath}${path}`, { ...options, headers, cache: 'no-store' }) - 启用终端会话(PTY)dsh-shell-session-plugin/index.js:163
return await terminals.spawn(owner, request, exec?.signal)
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- MCP对接本地运行时
把 ChatGPT Web 通过 OAuth + MCP 接到本地 DSH 运行时
README
由 DeepSeek 最新模型翻译生成dsh-mcp-gateway
为 ChatGPT Web 提供一个成熟的 DSH Harness。
ChatGPT Web 仍然是唯一的主要推理/模型智能体。本项目通过 MCP 将普通的 ChatGPT 对话连接到 DSH,因此 DSH 管理的工具、技能、任务、会话、策略、MCP 客户端以及兼容的社区扩展都可以成为 ChatGPT 的能力,而无需为每个扩展重建定制的封装。
仓库级架构契约是 AGENTS.md。当较旧的原型代码或文档与该契约冲突时,以契约为准,除非仓库所有者明确更改产品方向。有序的个人开发路线图是 docs/roadmap.md。
目标架构
ChatGPT Web Chat
OAuth + MCP
v
ChatGPT DSH adapter
v
DSH Harness
+-- DSH tools / skills / extensions
+-- sessions / jobs / policy / MCP clients
-- optional execution providers
+-- local machine
-- selected local-shell-mcp capabilities
适配器应尽可能薄且通用。
展开完整文档(README 剩余 1 节)
dsh-mcp-gateway 为 ChatGPT Web 提供一个成熟的 DSH Harness。 ChatGPT Web 仍然是唯一的主要推理/模型智能体。本项目通过 MCP 将普通的 ChatGPT 对话连接到 DSH,因此 DSH 管理的工具、技能、任务、会话、策略、MCP 客户端以及兼容的社区扩展都可以成为 ChatGPT 的能力,而无需为每个扩展重建定制的封装。 仓库级架构契约是 AGENTS.md。当较旧的原型代码或文档与该契约冲突时,以契约为准,除非仓库所有者明确更改产品方向。有序的个人开发路线图是 docs/roadmap.md。 目标架构 ChatGPT Web Chat OAuth + MCP v ChatGPT DSH adapter v DSH Harness +-- DSH tools / skills / extensions +-- sessions / jobs / policy / MCP clients -- optional execution providers +-- local machine -- selected local-shell-mcp capabilities 适配器应尽可能薄且通用。DSH 是 harness/运行时权威;local-shell-mcp 主要是经过验证的公共隧道/OAuth/远程 worker 模式以及选定的差异化执行能力的来源,而不是主要 harness。 与 local-shell-mcp 的关系 local-shell-mcp 在这里不是 harness 核心。它的有用贡献是经过验证的 ChatGPT Remote MCP/OAuth 和公共隧道模式,以及差异化执行能力,例如远程 worker 和浏览器控制。这些能力在有用时可以组合在 DSH 之后。 最近的 LSM 会话/延续工作仍然是有用的参考资料,但本仓库不会将该运行时复制到网关中。DSH 拥有 harness 生命周期和能力组合。 当前状态 第一个直接的 DSH Harness 接缝已实现。一个驻留在 DSH 中的小型 Cordis 插件使用 DSH 自己的 ctx.tools 注册表: DSH tool/community plugin | ctx.tools.register(...) v DSH ToolRuntime | schemas() / execute() v loopback ChatGPT bridge v OAuth MCP gateway v ChatGPT Web 主要兼容性接口被有意设计得小而稳定。ChatGPT 可以保留相同的已批准 MCP 工具,同时 DSH 获得经过审查的社区扩展:dsh_tool_catalog 在 DSH 侧的 chatgpt-external-v1 能力配置文件完成投影后,读取实时的预设范围 ToolRuntime 目录;dsh_tool_call 仅通过 ctx.tools.execute(...) 执行仍被该配置文件批准的工具。因此 DSH 策略/防护仍然是权威的,并且此路径不要求 ChatGPT 刷新或重新批准其 MCP 工具快照。 通用 Harness 操作同时覆盖 DSH 工具和 DSH 社区技能: - dsh_tool_catalog:读取 DSH ToolRuntime 当前的外部 ChatGPT 投影。 - dsh_tool_call:仅当某个工具仍处于已批准状态且存在于该投影中时,才通过 DSH 受保护的 ToolRuntime 流水线执行该工具。 - dsh_skill_catalog:列出 DSH 原生 SkillRegistry 中可供 Harness 工作区模型调用的条目。 - dsh_skill_load:从该注册表加载一个兼容的社区技能的指令。 默认的 chatgpt-external-v1 配置文件涵盖确定性实用工具、文件系统操作、shell/作业、Web 访问、图像读取以及 DSH 插件发现。DSH AgentLoop 生命周期/编排工具(如目标/待办控制、子代理、workflow、ralph、send_message、ask_user_question 和 exit_plan_mode)被排除在发现和猜测名称执行之外。ToolRuntime 的 skill 辅助工具也被排除,因为技能已经有专门的 dsh_skill_catalog / dsh_skill_load 接口。经过审核的社区 ToolRuntime 条目可以通过 DSH 桥接覆盖层中的 allowExtraTools 逐个添加;保留的 AgentLoop 和技能名称无法通过该通用选择加入机制启用。OAuth 网关不包含此策略的任何副本。 仓库中的 task_state 插件是一个经过明确审核的额外能力。它通过 DSH 原生的 storageDomain 存储紧凑的工程任务记录:标题/目标/工作区、当前摘要和计划、候选后续步骤、引用、状态、修订版本以及有界的检查点历史。其 resume 操作仅将暂停的记录改回 active;它不会恢复进程、调用模型、选择操作或继续工作。对现有任务的变更需要最新的 if_revision,因此过期的对话会失败关闭,而不是静默覆盖较新的检查点。 仓库中的 shell_session 插件是另一个经过审核的额外能力。它在隔离的 DSH TerminalSessionService 加上原生 terminal-bash 后端之上暴露 open/list/status/send/read/signal/close。该适配器不包含任何 PTY、进程或沙箱实现:DSH 保留精确 Agent 所有权、持久化的 cwd/环境/进程上下文、有界的回滚/输出、前台信号、超时、进程树清理以及共享沙箱策略。现有的一次性 bash 工具仍可用于更简单的命令。 该仓库的 browser_session 插件是一个经过审查的运行时扩展,用于持久化 Chromium 交互。它暴露 open/list/status/snapshot/act/script/close,且不包含内部模型循环、调度器或自主浏览器任务。浏览器会话严格按 Agent 隔离;在会话存活期间,页面、cookie、DOM 和内存中的浏览器状态在工具调用之间持续存在。Playwright 仅提供协议控制。DSH 仍是文件效果策略的权威:插件解析当前 DSH sandboxPolicy,并要求配置的 DSH 沙箱提供程序以失败关闭(fail-closed)方式对其进行验证。对于 workspace-write,Chromium 随后使用经过审查的 @deepseek-ai/dsh-sandbox-local 0.1.2-rc.1 bwrap 挂载配置(/ 只读,私有 /proc 和 /tmp,工作区以可写方式绑定挂载),因为 DSH 的 Landlock 回退会故意阻止 Chromium 为其自身用户命名空间沙箱所需的 /proc/*/uid_map 写入。一个窄范围的本地 dsh-browser-worker 仅在专用 AppArmor userns 配置文件和 NoNewPrivs=1 下启动该确切的 bwrap+Chromium argv(对于 danger-full-access 则直接启动固定版本的 Chromium)。该 worker 仅通过 Unix SO_PEERCRED 接受来自活动 dsh-web-host.service MainPID 的 spawn 请求,不包含 shell/模型/调度器,并负责浏览器进程树/配置文件的清理。运行时锁固定 playwright-core 以及用于对等凭据查找的小型 Koffi 绑定,而部署则以可复现方式安装匹配的 Chromium 构建。 默认网关模式有意设计为 meta-only:tools/list 仅暴露那四个稳定的 DSH 元工具,各个 DSH ToolRuntime schema 不会投射到 ChatGPT 中,并且网关不会通告现代工具列表变更订阅。这使得冻结快照属性成为强制执行的协议边界,而不是对客户端行为的假设。当操作者希望兼容的 DSH 工具作为一等 MCP 工具出现时,可以显式启用 --tool-surface projected 作为单独的 UX 模式。 桥接直接使用 DSH 的原生预设作用域进行发现。agentPresets.standingKeyFor(presetId) 会解析部署当前的默认预设,而无需启动 Agent、Session 或模型轮次;ToolRuntime.schemas(scope) 和 SkillRegistry 查找都使用该常驻作用域。工具执行通过 ToolRuntime.execute(...) 进行,其 0.1.2-rc.1 API 需要 Agent 来进行 agent 作用域的策略和模态检查。因此,桥接会在首次工具调用时惰性创建那个仅含元数据的执行 Agent。其持久辅助 id 是工作区 cwd、预设 id、解析后的组合路径,以及 DSH 用于检测新常驻代际的相同 mtimeMs/大小文件戳的非可逆哈希,再加上内容摘要以避免大小相等的重写产生别名。只有在那个确切的工作区/预设组合代际仍然适用时,重启才会恢复同一个辅助;不同的工作区、更改的默认预设或编辑过的组合会获得不同的辅助。Setup 在 agentPresets.mount(...) 之后重新检查预设路径/戳,如果热重载与辅助创建发生竞争,则失败关闭。Catalog/skill 读取不会创建辅助会话,普通重启也不再每次启动都累积一个新的持久辅助。 对于执行受路由模型声明模态门控的原生 DSH 工具,惰性执行 Agent 指向一个本地仅含元数据的 ChatGPT Web 路由。该路由声明 text + image 输入,以便 DSH 自己的 read_image 门控可以验证外部 ChatGPT 消费者,但其 stream() 方法总是失败,并且桥接从不向 Agent 提交提示。因此它不执行任何推理,不需要模型 API 密钥,也不可能成为隐藏的第二个模型。0.1.2-rc.1 升级冒烟测试验证了预设作用域的 bash 执行,以及原生 read_image 在未配置提供商凭据的情况下通过桥接返回图像块。 DSH 的 additionalContexts 也在外部 agent 边界上得以保留。DSH 将这些后续用户上下文用于守卫提醒,以及用于嵌套 Code Mode 结果,例如 run_code 返回的图像。桥接会在这些上下文中物化由附件支持的图像,MCP 适配器会将其可见的文本/图像块追加到工具结果中,因此用 ChatGPT Web 替换 DSH 自己的模型循环不会静默丢弃策略或嵌套多模态上下文。 这意味着添加一个兼容的技能无需 Python 包装器、网关重启或 ChatGPT 应用重新发布。新的 ToolRuntime 能力同样无需 Python 包装器,但它必须被 DSH 侧的外部能力配置文件所接纳(默认情况下为内置能力,经过审核的社区工具通过 allowExtraTools 接纳)。固定的元工具会按需发现由此产生的实时投影。仅在可选的 projected 工具表面模式下,DSH 侧桥接会跟踪原生 tools/change 失效事件,网关会发布 MCP tools/list_changed,从而让支持动态刷新的客户端获得一等公民级别的已批准条目。 DSH 侧桥接插件位于 dsh-bridge-plugin/,部署叠加层为 deploy/dsh/chatgpt-bridge.cordis.yml。 OAuth / MCP 保留现有的嵌入式 OAuth 实现。它提供持久化的动态客户端注册、PKCE/公共客户端支持、所有者批准、资源/签发者绑定的令牌、刷新轮换、撤销、有界注册状态,以及针对公共 MCP 端点的 DNS 重绑定防护。 主要 harness 模式不需要模型提供方 API 密钥。使用桥接叠加层运行 DSH Web Host,然后将 OAuth 网关指向其回环桥接: python -m pip install --constraint deploy/server-constraints.txt -e '.[server]' export DSH_MCP_GATEWAY_ADMIN_PIN='choose-a-long-owner-pin' dsh-mcp-gateway \ --public-base-url https://gateway.example.com \ --dsh-harness-url http://127.0.0.1:3080 \ --state-dir .dsh-mcp-gateway 公共端点为: https://gateway.example.com/mcp GET /healthz 检查网关进程。在 harness 模式下,GET /readyz 检查回环 DSH 能力桥接;它从不探测 LLM 提供方。 开发 python -m pip install -e '.[dev]' ruff check src tests scripts python -m unittest discover -s tests -v CI 使用的服务器依赖图固定在 deploy/server-constraints.txt 中。 设计不变量 - ChatGPT 是唯一的主要推理 Agent。 - DSH 是 harness/运行时权威。 - DSH 社区能力应通用地跨越适配器,而不是获取定制的网关包装器。 - 稳定的元工具是扩展发现/调用的正确性路径;动态一等公民工具投影是可选的用户体验。 - 工具执行保持在 DSH 自身受保护的 ToolRuntime 管道内。 - 公共 OAuth/MCP 边界保持在回环 DSH Web Host 之外。 - local-shell-mcp 是可选的执行/访问提供方和参考,而非主要 harness。 - 网关拥有的会话/延续实验是遗留工作,而非当前架构。 许可证 MIT。参见 LICENSE。安全报告指南见 SECURITY.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
siddhartha-yz/dsh-mcp-gateway
把 ChatGPT 网页对话接到本地 DSH 运行时
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个插件,给…
★ 850已汉化DSH
68.9
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 385已汉化DSH
67.9
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1
这是你的仓库?认领条目