dsh-converter
Конвертация промтов, инструкций и скилов ChatGPT/Claude в формат DeepSeek Harness (DSH)
SKILL.mdskills/dsh-converter/SKILL.md
GitHubDeepSeek Harness Converter
Конвертация промтов, инструкций и скилов ChatGPT/Claude в DeepSeek Harness (dsh). Запуск: npx @deepseek-ai/dsh web.
Прежде чем конвертировать, спроси (или определи по контексту): это скил, инструкция/prompt или GPT-агент. От этого зависит целевой формат.
Таблица соответствия
| Источник | Куда в DSH | Как |
|---|---|---|
Скил (SKILL.md) |
DSH-скил | нормализовать frontmatter → SKILL.md в discovery-root |
| Custom Instructions | AGENTS.md |
глобально ~/.dsh/AGENTS.md или в корне проекта |
| Стиль ответа, persona | persona-строка | пресет @deepseek-ai/dsh-persona |
| Системный промпт | persona prefix или ctx.systemPrompt.section() |
см. «Промпты» |
| GPT (имя + инструкции) | пресет агента или скил | dsh-agent-preset + dsh-persona, либо просто скил |
| GPT со знаниями (файлы) | скил с references/ |
перенести файлы в подкаталог |
| GPT с действиями (API) | плагин (TypeScript) | apply(ctx) + свои инструменты |
Discovery roots (куда класть файлы)
DSH ищет скилы по рангу (меньше — приоритетнее):
| Ранг | Корень |
|---|---|
| 100 | <project>/.dsh/skills |
| 200 | <project>/.agents/skills |
| 300 | пользовательские каталоги (customSkillDirs) |
| 400 | ~/.dsh/skills |
| 500 | ~/.agents/skills |
| 600 | bundled |
- Скил — каталог
<name>/SKILL.md(можно сreferences/,templates/) или плоский<name>.md. - Глобальные инструкции:
~/.dsh/AGENTS.md; проект:AGENTS.md/CLAUDE.mdот корня проекта вниз.
1. Скил → DSH-скил
Правила:
name— строго kebab-case:^[a-z0-9]+(?:-[a-z0-9]+)*$description— краткая «маршрутизирующая» фраза: когда применятьwhenToUse— дополнительная подсказка для маршрутизацииdisable-model-invocationиuser-invocable— булевы (опционально)- Лишние ключи ChatGPT (
allowed-tools,license,metadata,version,compatibility) — выбросить - Тело — Markdown. Ссылки на файлы внутри скила — относительно каталога скила
2. Инструкции → AGENTS.md
- «Что ChatGPT должен знать о тебе» →
~/.dsh/AGENTS.md(глобально, подхватывается автоматически) - Инструкции проекта →
AGENTS.mdв корне проекта - Markdown, инструкции в императиве
3. Persona
Строка в пресете задаёт identity агента:
- name: '@deepseek-ai/dsh-persona'
config:
prefix: You are a terse systems engineer…
suffix: ''
complete: false
prefix— системный промпт/роль (обязательный)suffix— стиль ответа (по умолчанию пусто)complete: true— если нужно полностью заменить системный промптdsh-personaмонтируется только внутри пресета
4. GPT → пресет агента
Пресет = именованный агент с плагинами и персоной:
- id: agent-preset-registry
name: '@deepseek-ai/dsh-agent-preset-registry'
config:
default: standard
- id: preset-sql-expert
name: '@deepseek-ai/dsh-agent-preset'
config:
id: sql-expert
name: SQL Expert
description: Reviews and writes SQL migrations
plugins:
- name: '@deepseek-ai/dsh-persona'
config:
prefix: You are a senior SQL engineer…
config.id— стабильный идентификатор (kebab-case)- Инструкции GPT →
persona.prefix; описание →config.description - Простой GPT без инструментов → просто скил (дешевле)
5. Плагин (только когда нужен код)
Минимальный плагин:
import type { Context } from '@deepseek-ai/cordis'
export const name = 'my-tool'
export function apply(ctx: Context) { /* инструменты, сервисы */ }
Проверка результата
-
name— kebab-case, уникален -
descriptionиwhenToUse— коротко, «когда использовать» - Файл лежит в discovery-root, имя каталога совпадает с
name - Лишние frontmatter-ключи ChatGPT удалены
- Промпт/инструкции — в
AGENTS.mdилиpersona.prefix, не «рассыпаны» -
dsh-personaтолько внутри пресета - Нет секретов/ключей в конвертируемых текстах
- Пользователю сообщены полные пути к созданным файлам