Архитектура DeepSeek Harness: микроядерный плагинный подход на базе Cordis
Безраздельное ядро (privilege-free core)
Традиционные фреймворки ИИ-агентов проектируются как монолитные приложения. В них логика ведения диалога, вызовы инструментов, управление контекстом, сохранение сессий и пользовательский интерфейс жёстко спаяны внутри исходного кода ядра. Если вам требуется изменить фундаментальное поведение — например, поменять политику сжатия контекста или алгоритм главного цикла рассуждений, — приходится делать форк всего проекта и вручную поддерживать свои патчи.
DeepSeek Harness (dsh) кардинально меняет эту парадигму, реализуя архитектуру «безраздельного ядра» (privilege-free core). В dsh абсолютно любая функциональная возможность вынесена в независимый, изолированный и заменяемый плагин, монтируемый на ультра-лёгкое микроядро Cordis. Смысл этой архитектуры отражает фундаментальная инженерная формула проекта:
Агент = Модель + Harness (Среда выполнения)
Модель здесь выступает в роли «разума», а среда выполнения (Harness), динамически собираемая из плагинов, предоставляет «тело» — каналы ввода-вывода, доступ к системе, права и инструменты.
Микроядро Cordis: от чат-ботов к ИИ-инфраструктуре
Инженерный фундамент DeepSeek Harness опирается на мета-фреймворк Cordis. Исторически Cordis на протяжении четырёх лет развивался в open-source сообществе как ядро для создания модульных мультиплатформенных чат-ботов Koishi (для Discord, Telegram, WeChat и др.).
Разработчики DeepSeek во главе с Цуй Тяньи (Cui Tianyi) обнаружили, что сложные чат-боты и современные ИИ-агенты сталкиваются с одинаковым набором архитектурных вызовов:
- Сессия переживает возможности: сессии ИИ-разработчика длятся часами, а сессии групповых чатов — месяцами, при этом инфраструктурные части под ними должны заменяться без сбоя основного процесса.
- Динамическое изменение на лету: инструменты и плагины должны монтироваться и демонтироваться прямо в процессе работы.
- Безопасность состояния: при удалении плагина в памяти не должно оставаться «мусора» (зависших таймеров, открытых WebSocket-портов или обработчиков событий), способного вызвать непредсказуемое поведение системы.
Решая эти проблемы, DeepSeek AI совместно с исследователями из Пекинского университета (Peking University) формализовали концепцию ядра Cordis в научной работе «A Programming Paradigm for Spatiotemporal Composability».
Два столпа Cordis: пространственная и временная компонуемость
Парадигма, описанная в научной работе, делит управление плагинами на две независимые оси:
Пространственная ось (Spatial)
[ Декларация зависимостей: inject ]
│
▼
┌─────────────────────────────────────────────────────────┐
│ Context (ctx) │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ ctx.sessions │ │ ctx.tools │ │ ctx.llm │ │ ──► Временная ось (Temporal)
│ └───────────────┘ └───────────────┘ └───────────────┘ │ [ Reversible Effects ]
└─────────────────────────────────────────────────────────┘
▲
│
[ Откат side-effects при выгрузке ]
Временная компонуемость (Temporal Composability) — безопасный Hot Swapping
В традиционных системах импортировать плагин в рантайме относительно просто, но выгрузить его чисто — крайне сложная задача.
- Реверсивные эффекты (Reversible Effects): Cordis решает эту проблему за счёт концепции обратимых побочных эффектов. При регистрации любого ресурса (вызова API, таймера, слушателя событий, Bash-терминала) Cordis автоматически записывает его инверсию (cleanup-функцию).
- Горячая замена (Hot Swapping) без перезагрузок: когда плагин деактивируется или обновляется, ядро по цепочке раскручивает стек обратных вызовов, гарантируя полное удаление побочных эффектов плагина без утечек памяти и без необходимости перезапускать весь процесс dsh. Вы можете устанавливать плагины из маркетплейса, менять интерфейсы или провайдеров моделей прямо во время работы агента, не прерывая активную сессию рассуждений.
Пространственная компонуемость (Spatial Composability) — реактивные зависимости
Компоненты dsh не должны напрямую ссылаться на реализации друг друга. Вместо этого они общаются через декларативное внедрение зависимостей (Dependency Injection) в рамках общего контекста (Cordis Context).
- Механизм инъекции (
inject): каждый плагин явно объявляет зависимости от ключевых системных сервисов (например,export const inject = ['tools', 'llm']). Cordis разрешает эти связи и строит направленный граф зависимостей при старте. - Реактивный жизненный цикл: если плагин-поставщик (Provider) обновляется или временно отключается, Cordis автоматически приостанавливает работу плагинов-потребителей (Consumers), а затем восстанавливает их связи при появлении новой версии сервиса, не допуская появления «зависших» или сломанных ссылок в памяти.
Карта ключевых системных сервисов (Capability Seams)
Контекст Cordis (ctx) в dsh представляет собой реестр глобальных интерфейсов (Capability Seams), к которым могут подключаться плагины. Ключевые системные пакеты и их API-ключи в контексте:
| Сервис | Пакет | Назначение |
|---|---|---|
ctx.sessions |
core/session |
Управляет append-only логом событий сессии (SessionEvent) и его хранением в оперативной памяти. Отвечает за трассировку траектории рассуждений агента, поддерживая операции сохранения, возобновления (resume) и ветвления (fork). |
ctx.systemPrompt |
core/system-prompt |
Отвечает за динамическую сборку разделов системного промпта и схем инструментов, передаваемых модели на каждом шаге. |
ctx.tools |
core/tools |
Единый реестр инструментов и контролируемый конвейер их выполнения с проверкой разрешений, тайм-аутов и обработкой ошибок. |
ctx.llm |
llm/llm |
Абстракция над вызовами языковых моделей. Позволяет бесшовно подменять провайдеров (DeepSeek, Anthropic, OpenAI, локальный Ollama) через унифицированные API. |
ctx.agents |
core/agent |
Управляет жизненным циклом активных агентов, их иерархией (Spawn/Fork под-агентов) и внутренними событиями. |
ctx.agentLoop |
core/agent-loop |
Самый глубокий уровень кастомизации. В dsh главный управляющий цикл рассуждений (decide-act-observe) сам является плагином. Если вас не устраивает стандартный ReAct-цикл, вы можете заменить его на собственный сложный цикл многоагентной оркестрации просто через yaml-конфигурацию, не меняя ни строчки кода самого фреймворка. |

Конфигурация как сборка: пакеты, профили и патчи
Сборка рабочей среды ИИ-агента в dsh — это задача конфигурации, а не программирования. На физическом уровне архитектура dsh разделена на три сущности:
- Пакет (Bundle): распространяемый NPM-пакет, который несёт в себе конфигурационные строки Cordis и соответствующий код (например,
dsh-base,dsh-web-appилиdsh-headless). - Профиль (Profile): именованная сборка (например,
webилиheadless), хранящаяся в домашней директории$DSH_HOME. Она описывает, какие бандлы и в каком порядке накладываются друг на друга. - Слои патчей (Patch Layers): dsh выстраивает иерархию конфигурации в строго упорядоченном виде:
Пустой корень → Бандлы профиля → cordis.patch.yml профиля → Глобальный cordis.patch.yml → Аргументы CLI (–patch overlays)
Каждый последующий слой может переписать любую строчку конфигурации предыдущего слоя по её уникальному идентификатору.
Вы можете в любой момент вывести полную иерархию плагинов, с которой запускается ваша машина, выполнив команду в терминале:
dsh --profile web --dump-config
Она наглядно подсветит в логах, какая именно конфигурационная строка была добавлена базовым бандлом, а какая — переопределена вашим локальным патчем.

Анатомия плагина Cordis
Любая возможность агента — от адаптера модели до утилиты работы с файлами — это изолированный плагин, который монтируется на общее контекстное ядро. Ниже разобран путь от базового шаблона до реализации плагина, добавляющего новый инструмент (Tool) для ИИ-агента.
Минимальный плагин
Минимальный плагин Cordis представляет собой стандартный TypeScript-модуль, который экспортирует своё уникальное имя и функцию инициализации apply. При загрузке плагин получает объект контекста (ctx), через который он взаимодействует со всей остальной системой.
import type { Context } from "@deepseek-ai/cordis";
// Уникальное имя плагина для идентификации в дереве конфигурации dsh
export const name = "custom-logger-plugin";
// Функция инициализации, вызываемая ядром Cordis при монтировании плагина
export function apply(ctx: Context) {
console.log("Плагин логирования успешно инициализирован в dsh!");
}
Декларация зависимостей и механизм инъекции (inject)
Плагины в dsh не должны импортировать системные модули напрямую. Вместо этого используется пространственная компонуемость (Spatial Composability): плагин объявляет список необходимых ему системных сервисов (например, tools, llm, sessions) через статический массив inject.
Cordis гарантирует, что плагин будет запущен только тогда, когда все перечисленные сервисы будут успешно загружены в рантайме.
import type { Context } from "@deepseek-ai/cordis";
export const name = "my-agent-extender";
// Плагин активируется только после инициализации реестра инструментов и адаптера LLM
export const inject = ["tools", "llm"];
export function apply(ctx: Context) {
// Доступ к системным интерфейсам через объект контекста (ctx)
console.log("Доступные ключи контекста:", Object.keys(ctx));
// Здесь мы можем использовать ctx.tools и ctx.llm напрямую
ctx.tools.register({
/* определение инструмента */
});
}
Обратимые эффекты (ctx.effect)
Главное отличие Cordis от других плагинных платформ — поддержка «обратимых побочных эффектов» (reversible effects). При выгрузке плагина рантайм dsh должен полностью вернуть систему в исходное состояние, удалив таймеры, слушатели событий, WebSocket-соединения или временные файлы.
Для безопасного выполнения операций, требующих очистки, используется метод ctx.effect().
import type { Context } from "@deepseek-ai/cordis";
export const name = "safe-network-listener";
export function apply(ctx: Context) {
// Использование ctx.effect гарантирует автоматический cleanup при удалении плагина
ctx.effect(() => {
const interval = setInterval(() => {
console.log("Мониторинг фоновых процессов агента...");
}, 5000);
// Возвращаем функцию-утилизатор (disposer)
return () => {
clearInterval(interval);
console.log("Интервал мониторинга успешно очищен, утечки памяти нет.");
};
});
}
Практический пример: плагин создания кастомного инструмента (Tool)
Полноценный пример плагина, который подключается к системному сервису ctx.tools и регистрирует новый инструмент разработки для агента dsh — анализатор файлов проекта (Lines of Code Counter). Этот инструмент будет автоматически распознан ИИ-моделью в её системном промпте.
import type { Context } from "@deepseek-ai/cordis";
import * as fs from "fs/promises";
import * as path from "path";
export const name = "dsh-tool-loc-counter";
// Нам необходим сервис управления инструментами 'tools'
export const inject = ["tools"];
export function apply(ctx: Context) {
// Регистрируем инструмент в глобальной системе dsh
ctx.tools.register({
// Имя, которое модель будет использовать для вызова
name: "count_lines_of_code",
// Описание, помогающее ИИ понять, зачем и когда использовать этот инструмент
description: "Подсчитывает количество строк кода в указанном локальном файле.",
// JSON-схема входных аргументов (модель строго валидирует вызов по этой схеме)
parameters: {
type: "object",
properties: {
filepath: {
type: "string",
description: "Относительный путь к файлу внутри рабочего пространства проекта (cwd).",
},
},
required: ["filepath"],
},
// Реальное исполнение логики инструмента на хост-машине
async execute(args: { filepath: string }, session) {
// session.cwd предоставляет изолированный путь к текущему проекту пользователя
const fullPath = path.resolve(session.cwd, args.filepath);
try {
const content = await fs.readFile(fullPath, "utf-8");
const lines = content.split("\n");
// Возвращаем результат. dsh автоматически передаст этот JSON обратно модели
return {
success: true,
filepath: args.filepath,
total_lines: lines.length,
empty_lines: lines.filter(line => line.trim() === "").length,
};
} catch (error: any) {
// Любые ошибки будут бережно перехвачены конвейером и переданы модели для ретрая
return {
success: false,
error: `Не удалось прочитать файл по пути ${args.filepath}: ${error.message}`,
};
}
},
});
console.log("Инструмент 'count_lines_of_code' успешно зарегистрирован.");
}
Что происходит после загрузки такого плагина?
- Реактивное обновление: сервер
ctx.systemPromptобнаруживает регистрацию нового плагина и немедленно включает схему аргументовcount_lines_of_codeв системный промпт при следующем запросе к модели. - Безопасный вызов: когда агент решает вызвать ваш инструмент, вызов проходит через конвейер проверок прав доступа и лимитов (Pipeline), прежде чем код плагина выполнится в системе.
- Traceability: результаты работы функции
executeзаписываются в хронологический трассировочный SQLite-лог сессии (Trajectory View).
Транзакционная отказоустойчивость: защита boot-тракта
Поскольку dsh поощряет глубокую кастомизацию и выполнение сгенерированного ИИ кода, повышается риск сломать систему несовместимым или ошибочным плагином. Для защиты рантайма в Cordis внедрён транзакционный механизм HMR (Hot Module Replacement).
Если во время горячей загрузки или обновления плагина происходит синтаксическая ошибка, сбой инициализации или не удаётся удовлетворить граф зависимостей, Cordis выполняет атомарный откат (rollback) до последней стабильной конфигурации. Это предотвращает зависание или краш процесса dsh, сохраняя работоспособность хост-системы. В случае полного сбоя запуска при старте (например, из-за несовместимого стороннего плагина) пользователю достаточно откатить или вручную отредактировать конфигурационный файл cordis.patch.yml.
Управление плагинами из CLI
-
Добавить плагин из GitHub-репозитория:
dsh plugin --profile web add github:owner/repo -
Вывести список активных плагинов:
dsh plugins list
Предупреждение о безопасности (Supply Chain)
Плагины выполняются непосредственно внутри Node.js-процесса с правами пользователя и имеют доступ к вашей локальной файловой системе. Рекомендуется использовать сканеры уязвимостей, такие как dsh-poison-guard, и не устанавливать плагины из непроверенных источников.
Режимы работы
Выбор режима не делает базовую модель «умнее» или «глупее» сам по себе. Каждый режим кардинально меняет окружение модели: состав активного дерева плагинов, доступный набор инструментов (Tools), правила их оркестрации и уровень системного контроля.
Standard Mode — полнофункциональный ИИ-разработчик
Standard Mode — режим по умолчанию, превращающий языковую модель в автономного программного инженера. Он ориентирован на максимальное содействие модели при выполнении повседневных задач разработки.
- Набор инструментов: полный спектр из 9 базовых агентных возможностей: редактирование файлов, интерактивный терминал (Shell), локальный поиск по файлам, интеллектуальный веб-поиск, база навыков (Skills), долгосрочное планирование (Planning), управление целями (Goals), запуск изолированных дочерних агентов (Subagents) и автоматизированные рабочие процессы (Workflows).
- Принцип работы (ReAct): агент работает по классическому циклу «Рассуждение — Действие — Наблюдение»: анализирует файлы проекта, принимает решение о действии, запрашивает одобрение на выполнение команды, получает результат и планирует следующий шаг.
- Для чего лучше всего подходит: повседневное написание кода, глубокое исследование структуры незнакомых репозиториев, сложный интерактивный рефакторинг и исправление багов в реальном времени.
- Ограничения: из-за обилия инструментов модель вынуждена удерживать в контексте огромные системные промпты и схемы вызовов API. При длинных сессиях это приводит к быстрому раздуванию контекстного окна и удорожанию стоимости токенов.
PTC Mode (Programmatic Tool Calling) — программная автоматизация
PTC Mode (ранее называвшийся в исходном коде Code Mode) полностью меняет парадигму взаимодействия модели с инструментами. Вместо пошагового выполнения команд по очереди модель действует как программист-диспетчер.
- Набор инструментов: все инструменты Standard Mode, но представленные в виде структурированного программного API (Code Mode SDK).
- Принцип работы: вместо того чтобы совершать 10 последовательных раундов «вопрос-ответ» с сервером (например: найти файл → прочитать → изменить → запустить тест → исправить), модель за один шаг генерирует цельный исполняемый скрипт на TypeScript. Этот скрипт пакетно запускается в фоновом worker-потоке среды выполнения Harness, обрабатывая циклы, ветвления и промежуточные данные локально. Модель получает обратно только финальный результат выполнения программы.
- Для чего лучше всего подходит: сложные пакетные операции, автоматизированные сценарии миграции кода, массовый рефакторинг, циклическое тестирование и задачи с чёткой условной логикой.
- Преимущества: колоссальная экономия токенов и времени. Поскольку промежуточные выводы команд и содержимое файлов не гоняются обратно в контекст модели на каждом шаге, контекстное окно остаётся чистым.
Minimal Mode — чистый бенчмаркинг
Minimal Mode — намеренно усечённая, «спартанская» среда выполнения. Вопреки первому впечатлению, это не «облегчённая» версия для слабых компьютеров, а высокоточный инструмент оценки.
- Набор инструментов: среда зажимается в жёсткие рамки — модели доступны только 2 инструмента: персистентный терминал Bash (
persistent bash) и точечный строковый редактор файлов (str_replace_editor). Вся инфраструктурная помощь (планирование, веб-поиск, под-агенты) полностью отключается. - Принцип работы: модель остаётся один на один с кодом и консолью. Ей приходится полагаться исключительно на собственные логические способности.
- Для чего лучше всего подходит: точное бенчмаркинг-тестирование ИИ-моделей (именно в Minimal Mode команда DeepSeek проводила свои официальные тесты моделей V4-Flash и V4-Pro для агентных лидербордов).
- Феномен V4-Pro в Minimal Mode: тесты независимых разработчиков выявили парадоксальный факт — в Minimal Mode модель DeepSeek V4-Pro решает сложные инженерные задачи значительно эффективнее и стабильнее, чем в Standard Mode с полным набором инструментов (например, рост успешности с 91% до 96–99%). Объяснение: окружение Minimal Mode в точности воссоздаёт условия, в которых модель проходила обучение с подкреплением (Reinforcement Learning Alignment). Избыточные системные промпты, инструкции и мета-информация Standard-режима при первом запросе могут перегружать модель «шумом», уводя её рассуждения по ложному пути.
Creator Mode — конструирование агентов
Creator Mode меняет сам объект работы. Если предыдущие три режима созданы для того, чтобы модель писала ваш код, то Creator Mode создан для того, чтобы модель настраивала и изменяла саму среду Harness.
- Набор инструментов: полный комплект инструментов Standard Mode, дополненный средствами динамической инспекции рантайма (runtime inspection), интерактивными тестерами Cordis-плагинов прямо в памяти (in-memory plugin experiments) и мастером генерации кастомных системных пресетов (preset-authoring guidance).
- Принцип работы: агент получает доступ к мета-структуре рантайма. Вы можете попросить агента: «Создай плагин, добавляющий в интерфейс панель со списком моих задач на сегодня», — и модель напишет, протестирует и смонтирует Cordis-плагин на лету, изменив поведение dsh прямо во время активной сессии.
- Для чего лучше всего подходит: разработчики ИИ-инфраструктуры, авторы плагинов для экосистемы dsh, а также инженеры, собирающие специализированных под-агентов под закрытые внутренние контуры (например, агент для администрирования домашних серверов).
- Предупреждение о безопасности: этот режим требует максимального уровня доверия (shell-level trust). Модель генерирует исполняемый JavaScript-код, который работает непосредственно внутри Node-процесса вашего dsh на хост-машине без изоляции. Не запускайте Creator Mode на непроверенных репозиториях.
Сводная сравнительная таблица режимов
| Характеристика | Standard Mode | PTC Mode (Code) | Minimal Mode | Creator Mode |
|---|---|---|---|---|
| Основное назначение | Решение задач общего характера, написание кода и рефакторинг. | Программное выполнение сложных и циклических операций. | Оценка «чистых весов» модели и проведение бенчмарков. | Разработка плагинов и конструирование новых пресетов. |
| Доступные инструменты | Полный спектр (9 категорий: файлы, shell, планирование, под-агенты и др.). | Все инструменты, обёрнутые в локальное API (Code Mode SDK). | Только 2 инструмента: persistent bash и str_replace_editor. | Полный стандартный набор + инструменты инспекции и отладки рантайма. |
| Стиль вызова инструментов | Пошаговый цикл ReAct (запрос LLM → вызов → ответ → новый шаг). | Пакетный. Модель генерирует и запускает скрипт на TypeScript. | Строго пошаговый ReAct в ограниченной среде. | Пошаговый ReAct с возможностью динамического перестроения рантайма. |
| Расход токенов | Высокий (накапливается контекст схем всех инструментов и логов). | Низкий (промежуточные шаги скрипта не расходуют контекст LLM). | Минимально возможный (короткий системный промпт без лишних схем). | Высокий (дополнительно расходуются токены на мета-анализ системы). |
| Уровень безопасности | Средний (ограничен политикой workspace-write и запросами аппрувов). | Средний (все скрипты модели проходят через стандартные фильтры безопасности). | Высокий (минимум точек отказа, нет доступа к сети и веб-поиску). | Низкий / Требует полного доверия (код модели исполняется в контексте ядра). |
| Кому подходит | Прикладным разработчикам для ежедневных задач. | Автоматизаторам и разработчикам сложных пайплайнов. | Исследователям, тестировщикам моделей и фанатам локальных LLM. | Архитекторам ИИ-агентов и разработчикам плагинов. |
Быстрый гид: какой режим выбрать прямо сейчас?
- Если вам нужно починить баг в проекте, написать тесты или разобраться в коде — выбирайте Standard Mode. Это универсальная рабочая лошадка.
- Если перед вами стоит задача провести однотипную операцию над сотней файлов (например, обновить импорты во всём проекте по условию) — используйте PTC Mode. Он сделает это за один проход и сбережёт ваш бюджет на API.
- Если вы хотите сравнить качество работы локальной модели через Ollama с коммерческой API-версией или добиться максимальной точности от V4-Pro на сложной алгоритмической задаче — запускайте Minimal Mode.
- Если вы хотите кастомизировать dsh под себя, написать собственный плагин или изменить тему оформления — переходите в Creator Mode.
Субагенты: оркестрация и декомпозиция задач
Когда задача становится слишком масштабной и грозит перегрузить контекстное окно основного («родительского») агента, dsh позволяет делегировать выполнение специализированным субагентам (Subagents).
На верхнем уровне dsh организует работу в виде классической иерархической структуры «Супервизор — Исполнитель» (Supervisor–Worker), где родительский агент отвечает за планирование, распределение подзадач и сборку результатов, а субагенты занимаются изолированным выполнением конкретных шагов.
Способы создания субагентов (Spawn и Fork)
Родительский агент может порождать дочерние процессы двумя способами:
- Spawn (Порождение): создаёт совершенно нового субагента с чистым, изолированным контекстом и новой сессией.
- Fork (Ветвление): создаёт субагента, наследующего текущую историю диалога и состояние родительской сессии, что позволяет дочернему агенту продолжить работу с накопленным контекстом.
Управление жизненным циклом и режимы выполнения
За логику работы субагентов отвечает плагин @deepseek-ai/dsh-tool-subagent. Он предоставляет следующие настройки управления:
- Режимы фонового выполнения (
backgroundMode):one-shot(однократный): субагент работает на переднем плане и возвращает результат сразу по завершении.continuable(продолжаемый): субагент запускается в фоновом режиме, а родительскому процессу возвращается его уникальный идентификатор (ID), позволяющий отслеживать его и взаимодействовать в дальнейшем.
- Предел глубины рекурсии (
maxDepth): по умолчанию глубина вложенности вызовов субагентов ограничена 3 уровнями (значение0полностью запрещает делегирование), что предотвращает бесконечные циклы вызовов.
Обратная связь и пробуждение родителя (Report Delivery)
Когда субагент завершает свою работу и отправляет отчёт, dsh использует политику доставки reportDelivery (плагин @deepseek-ai/dsh-tool-subagent-report) для координации с родителем:
next-step(по умолчанию): отчёт немедленно «будит» родительского агента и встраивается в его контекст на ближайшей границе шага для немедленной реакции.quiet(тихий): отчёт добавляется в контекст без принудительного пробуждения родителя — родитель ознакомится с ним, когда проснётся от другого внешнего триггера.
Сложная оркестрация: скрипты на лету и Ralph Loop
Для решения нетривиальных сценариев dsh поддерживает динамическое программирование рабочих процессов:
- Модель может на лету генерировать JavaScript/TypeScript-код и организовывать субагентов в параллельные цепочки (
parallel()) или последовательные конвейеры (pipeline()). - Ralph Mode: специальный режим, позволяющий нескольким новым агентам поочерёдно перехватывать и дорабатывать задачу раунд за раундом.
Запуск сторонних агентов (Claude Code и Codex) в качестве субагентов
Уникальная особенность dsh — его модельная нейтральность и открытость. dsh способен оркестрировать работу своих прямых конкурентов:
- Рантайм dsh содержит встроенные провайдеры для запуска Claude Code и OpenAI Codex в качестве субагентов.
- dsh находит исполняемые файлы этих утилит в системной переменной
PATHвашего компьютера и запускает их как изолированные subprocess-процессы. - Это позволяет построить гибридный пайплайн: например, dsh на базе дешёвой и быстрой модели DeepSeek выполняет общую маршрутизацию, но делегирует сложные точечные задачи рефакторинга субагенту Claude Code.
Безопасность и изоляция окружения
При запуске субагента в виде отдельного подпроцесса dsh применяет протокол изоляции среды:
- Дочерний процесс запускается в очищенном от родительских секретов окружении (credential-scrubbed parent environment), чтобы исключить случайную утечку конфиденциальных переменных хоста.
- При необходимости разработчик может явно прокинуть субагенту специфические API-ключи (например, собственный ключ для Claude Code) через конфигурацию
env.