Skip to main content
Glama
2025ashore

DSH ⇄ ChatGPT Fusion Gateway

by 2025ashore

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

Ключ

Описание

host / port

Адрес привязки loopback (по умолчанию 127.0.0.1:7688).

workspaceRoot

Рабочая область проекта, доступная инструментам. . — корень проекта.

ownerPassword

Пароль владельца для авторизации OAuth (≥ 16 символов).

staticToken

Статический Bearer-токен для loopback Brain MCP (≥ 32 символов).

allowedPrograms

Исполняемые файлы, которые инструмент run_command рабочей области может запускать.

commandUser

Только Linux: пользователь, под которым выполняются sandbox-команды через setpriv.

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 snapshot

actionCatalog — это только данные: описание встроенных инструментов 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.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    MIT