DSH ⇄ ChatGPT Fusion Gateway
DSH ⇄ ChatGPT Fusion Gateway
Минимальный MCP-мост, в котором DeepSeek Harness (DSH) остаётся единственным агентом и средой выполнения, а ChatGPT Web используется только как провайдер рассуждений без состояния и с одним обращением.
DSH владеет агентами, инструментами, разрешениями, сессиями, сжатием контекста, субагентами, рабочими процессами, целями и реальным выполнением файлов и команд. Шлюз просто передаёт один неизменяемый снимок контекста DSH в беседу ChatGPT «Brain» и возвращает ровно одно решение — итоговый ответ, одно предложение действия или ограниченный пакет операций только для чтения. Сам шлюз предложенное действие не выполняет.
User
↓
DSH UI
↓
DSH Native Agent Loop → Context / Compaction
↓
ChatGPT Fusion LLM Adapter
↓
Fusion Reasoning Gateway ← this repository
↓
ChatGPT Brain Worker (a dedicated ChatGPT Web conversation + optional wake extension)
↓
final | action_proposal | readonly_batch
↓
Gateway validation
↓
DSH Permissions / ToolRuntime → DSH Native Tool → Next DSH TickВозможности
Строгий контракт рассуждений с одним результатом — каждый запрос несёт один полный неизменяемый снимок, а Brain возвращает ровно один терминальный результат (
final,action_proposalили ограниченныйreadonly_batchиз read/glob/grep).Восстанавливаемая доставка — запросы журналируются на диск; при сбое шлюз восстанавливает незавершённые заявки, а не теряет их. Повторные попытки идемпотентны за счёт снимка и nonce.
Отказоустойчивость с несколькими воркерами — несколько бесед Brain могут обслуживать один и тот же маршрут модели; застрявшая заявка освобождается и повторно доставляется рабочему резерву с обновлённым nonce.
OAuth 2.0 (loopback) — необязательная авторизация для публичного коннектора ChatGPT (
/brain-mcp) с ротацией access/refresh-токенов.Кроссплатформенность — шлюз и демон Node.js работают на Linux, macOS и Windows.
Необязательное пробуждение браузера — расширение Chrome (
browser-autowake/) опрашивает метаданные очереди через loopback и будит привязанную к маршруту вкладку Brain, когда появляется работа.
Related MCP server: antigravity-with-chatgpt
Требования
Node.js 18+ (использует глобальный
fetch).git(и на Linux — ваш настроенный пользователь команд) для инструментов рабочей области.
Сама DSH должна быть доступна для собственного агентского цикла и среды выполнения инструментов; шлюз автоматически находит поставляемые вместе с DSH node_modules, либо вы можете указать их через переменную окружения DSH_NODE_MODULES.
Быстрый старт
git clone <your-repo-url>
cd dsh-chatgpt-mcp
npm installВпишите реальные учётные данные в config.json и model-bindings.json (все значения поставляются в виде заглушек REDACTED_*), затем запустите:
npm run daemon:start # background, supervised with auto-restart
npm run daemon:status…или запустите на переднем плане:
npm start # node server.strict.cjsШлюз привязывается к http://127.0.0.1:7688. Подробная архитектура и инварианты описаны в ARCHITECTURE.md.
Конфигурация
config.json
Ключ | Описание |
| Адрес привязки loopback (по умолчанию |
| Рабочая область проекта, доступная инструментам. |
| Пароль владельца для авторизации OAuth (≥ 16 символов). |
| Статический Bearer-токен для loopback Brain MCP (≥ 32 символов). |
| Исполняемые файлы, которые инструмент |
| Только Linux: пользователь, под которым выполняются sandbox-команды через |
ownerPassword, staticToken и ключи привязки обязательны и должны быть заполнены перед использованием. На macOS/Windows нет переносимого setuid-хелпера, поэтому sandbox-команды выполняются от текущего пользователя, а commandUser игнорируется.
model-bindings.json
Сопоставляет каждый маршрут modelId + reasoningEffort с ключом bindingKey. bindingKey — это секрет, общий с соответствующим brain-worker-*.txt; держите их в синхронизированном состоянии.
Управление службой
Работает одинаково на Linux, macOS и Windows:
node scripts/daemon.mjs start # start detached supervisor + server
node scripts/daemon.mjs stop
node scripts/daemon.mjs restart
node scripts/daemon.mjs statusОни также доступны как npm run daemon:start|stop|restart|status. Сценарии на основе screen (только Linux) остаются в scripts/ (control.sh, public_quick.sh, …) для quick-tunnel Cloudflare и пулов headless-воркеров Chrome.
Протокол рассуждений (v4)
Шлюз работает со строгим протоколом с ChatGPT «Brain»:
fusion_wait_for_reasoning_request → one immutable snapshot + data-only action catalog
fusion_submit_reasoning_result → exactly one {final} | {action_proposal} | {readonly_batch}
fusion_fail_reasoning_request → terminal failure for the assigned snapshotactionCatalog — это только данные: описание встроенных инструментов DSH, которые никогда не устанавливаются как инструменты ChatGPT/MCP. action_proposal — это рекомендация, которую DSH позже выполняет под собственной политикой разрешений и песочниц; шлюз её не выполняет.
Публичная конечная точка — GET|POST /brain-mcp. Прежние маршруты /mcp и /fusion/tasks… возвращают HTTP 410 (отключены).
Разрешения
Используется встроенная трёхуровневая модель DSH — read-only, workspace-write, danger-full-access — по умолчанию workspace-write.
Структура репозитория
server.strict.cjs active gateway (strict v4; no legacy /mcp)
server.cjs full gateway incl. workspace file/shell tools
config.json runtime configuration (secrets are placeholders)
model-bindings.json modelId → bindingKey map
scripts/daemon.mjs cross-platform daemon (start/stop/restart/status)
scripts/*.sh Linux deployment helpers (screen, cloudflared, Chrome workers)
brain-worker-*.txt per-route prompts for dedicated Brain conversations
browser-autowake/ optional Chrome extension that wakes Brain tabs
tests/ selftests and headless integration workers
state/ logs/ runtime artifacts (gitignored)Тестирование
npm install
node tests/reasoning-contract-v4-selftest.mjs # primary protocol test
# …plus oauth, worker-recovery, failover, context-overflow, payload-limit selftestsПолную матрицу см. в разделе ## Verification заметок по реализации.
Замечания по безопасности
По умолчанию привязка к
127.0.0.1; публичный URL открывает только скрипт quick-tunnel.Не коммитьте
config.jsonиmodel-bindings.jsonс реальными секретами — именно поэтому репозиторий содержит заглушки./bin/setprivиспользуется на Linux для понижения прав sandbox-команд доcommandUser; на других платформах команды выполняются от текущего пользователя.
DSH ≈ ChatGPT Fusion — это общественный мост, не аффилированный с OpenAI или DeepSeek и не одобренный ими. Использование ChatGPT регулируется условиями обслуживания OpenAI.
This server cannot be deployed
Maintenance
Related MCP Connectors
Agent-to-agent reasoning-as-a-service: chain-of-thought, analysis, and decision support.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Let your AI agent operate any website through a real, logged-in browser session.
Web search and page reading for AI agents with zero API credits
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceBridges Cursor IDE Agent with ChatGPT Web for external reasoning, research, and review.16 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables local coding agents to delegate reasoning, planning, review, derivation, and diagnosis tasks to ChatGPT Web through Chrome DevTools Protocol, with security guards and evidence-based verification.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables hosts like Claude Code, Codex, Antigravity, and Grok to dispatch work to full DeepSeek Harness agent sessions that appear as native subagents with live progress, tier/effort presets, failure escalation, and workspace-cycle guardrails. Also lends a text-only harness multimodal abilities by describing pasted images and generating images through DeepSeek's vision model, existing CLIs, or a custom endpoint.354 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables hosts like Claude Code, Codex, Antigravity and Grok to dispatch tasks to DeepSeek Harness agents while still showing them as native subagents with live progress, tier/effort presets, escalation, dispatch guardrails and a jobs board. Also lends text-only harnesses vision and image generation through DeepSeek's VL model or existing CLIs and custom OpenAI-compatible endpoints.354 npmMIT