Configuración de DeepSeek Harness
DeepSeek Harness (nombre del comando dsh) es el harness de agentes oficial y de código abierto de DeepSeek, construido sobre una arquitectura en la que todo es un plugin — modelos, herramientas, skills, sesiones, sandboxes y la interfaz son plugins intercambiables. Por defecto llama a la API oficial de DeepSeek; apunta su plugin de modelos a OfoxAI y el mismo harness alcanza más de 100 modelos.
dsh está en vista previa para desarrolladores y sus mantenedores advierten que habrá cambios incompatibles. Esta guía está escrita para @deepseek-ai/dsh 0.1.2-rc.1.
Pasos de configuración
1. Instalar dsh
Instala primero Node.js. dsh se distribuye en npm como @deepseek-ai/dsh y proporciona el comando dsh una vez instalado.
macOS
npm install -g pnpm # omitir si ya está instalado
pnpm add -g @deepseek-ai/dsh
dsh --versionEl directorio bin global de pnpm debe estar en tu PATH; ejecuta pnpm bin -g para localizarlo.
Durante la instalación, pnpm puede mostrar la advertencia Ignored build scripts: node-pty, koffi …. Ignórala — ambos paquetes incluyen binarios precompilados para todas las plataformas y no necesitan compilación local.
Para probarlo sin instalarlo globalmente:
npx @deepseek-ai/dsh web2. Configurar el proveedor OfoxAI
dsh guarda su configuración en $DSH_HOME — ~/.dsh en macOS y Linux, %USERPROFILE%\.dsh en Windows. Elige cualquiera de las dos rutas siguientes.
Elige la Base URL que corresponda a tu red: usa api.ofox.ai en redes internacionales y api.ofox.io desde China continental. Ambos son el espejo del mismo servicio — la misma API Key funciona en los dos y la ruta es /v1 en ambos casos.
Web UI (recomendado)
dsh webLa terminal imprime una URL con token (http://127.0.0.1:3080 por defecto) y abre tu navegador. Haz clic en Settings, en la esquina inferior izquierda:

Cambia a Models en la navegación de la izquierda:

La entrada integrada deepseek-official habla directamente con DeepSeek, así que enrutar a través de OfoxAI implica añadir un proveedor personalizado: haz clic en Add a custom provider:

Rellena los campos siguientes y haz clic en Fetch available models:
| Campo | Valor |
|---|---|
| Provider ID | ofox |
| Display name | ofox |
| Base URL | https://api.ofox.ai/v1 |
| API protocol | openai-completions |
| API key | tu API Key de OfoxAI |

En la captura, API protocol aparece como openai-responses: ese es el valor por defecto del formulario y solo lo aceptan los modelos DeepSeek. Elige openai-completions para cubrir todo el catálogo.
Marca los modelos que quieras, haz clic en Add selected y, de vuelta en el formulario, haz clic en Create provider:

De vuelta en la vista de sesión, la primera vez tendrás que elegir un espacio de trabajo (el directorio del proyecto que dsh puede leer y escribir). Después, todos los modelos del grupo ofox quedan disponibles en el selector de modelos, en la esquina inferior derecha del cuadro de texto:

La clave se escribe en $DSH_HOME/.credentials.yaml (legible solo por tu propio usuario del sistema) y la configuración del proveedor en $DSH_HOME/settings.yaml. Ambas surten efecto de inmediato, sin reiniciar.
Los IDs de modelo deben incluir el prefijo del proveedor — anthropic/claude-sonnet-5, no claude-sonnet-5 a secas, que será rechazado. Explora el catálogo completo en el Mercado de modelos .
3. Configurar la API Key
apiKeyEnv nombra una credencial en lugar de contener la clave. dsh la resuelve en un orden fijo: el entorno en el que se lanzó dsh, luego $DSH_HOME/.credentials.yaml, luego el .env de tu proyecto y por último el .env de tu directorio personal. Si usaste la Web UI, la clave ya está guardada y puedes omitir este paso.
macOS
export OFOX_API_KEY=<tu OFOXAI_API_KEY>4. Verificar
dsh --profile headless "Responde exactamente: OK. No llames a ninguna herramienta."Recibir OK de vuelta significa que la capa de modelos está llegando a OfoxAI. Para el trabajo diario, lanza la interfaz web con dsh web, o ejecuta una sola tarea y sal con dsh --profile headless "run the tests".
Diferencias entre plataformas
El contenido del archivo de configuración es idéntico en las tres plataformas — solo cambian las rutas y la sintaxis de las variables de entorno.
| macOS | Linux | Windows | |
|---|---|---|---|
Raíz de configuración $DSH_HOME | ~/.dsh | ~/.dsh | %USERPROFILE%\.dsh |
| Persistir la API Key | ~/.zshrc | ~/.bashrc | setx |
| Sandbox de la herramienta de shell | Bash | Bash | PowerShell (el sandbox Bash se desactiva automáticamente) |
Solución de problemas
TIMEOUT: Request timed out. — dsh es una aplicación Node y no lee http_proxy / all_proxy, así que tener un proxy de sistema funcionando no implica que dsh pueda conectarse. Si el dominio de baseURL no es accesible en tu red, los usuarios de China continental deberían cambiar al espejo https://api.ofox.io/v1.
MISSING_CREDENTIAL — la credencial indicada por apiKeyEnv no se resolvió a ningún valor. Confirma que la variable de entorno está activa en la terminal desde la que se lanzó dsh, o que la clave está guardada en $DSH_HOME/.credentials.yaml. La otra causa es elegir el modelo equivocado: la ruta integrada deepseek-official lista sus modelos en el selector incluso sin ninguna clave configurada, con nombres muy parecidos a los de tu ruta personalizada.
La respuesta llega vacía y no aparece ningún error — la trampa más fácil de pisar: combinar api: openai-responses con un modelo de Anthropic hace que la solicitud termine con normalidad (finish reason: stop) pero sin contenido. Mueve ese modelo a una ruta openai-completions, o a una ruta anthropic-messages apuntada a https://api.ofox.ai/anthropic.
INVALID_REQUEST / HTTP 400 endpoint_not_supported — el cuerpo de la respuesta dice Model '…' does not support the /v1/responses endpoint on this platform. Please use /v1/chat/completions instead. Los modelos de Google y Qwen hacen esto bajo openai-responses. De nuevo, cambia api a openai-completions.
La carga de plugins falla con un error de ruta duplicada — el mismo nombre de ruta se registró dos veces. Comprueba si tanto $DSH_HOME/cordis.patch.yml como settings.yaml definen ofox.
Avanzado: configurar mediante la capa de parches
settings.yaml contiene los ajustes de usuario en tiempo de ejecución y surte efecto en la siguiente solicitud. Para cambiar la composición de plugins en sí — sustituir o desactivar un plugin — usa la capa de parches en $DSH_HOME/cordis.patch.yml:
- id: llm-pi-ai
config:
providers:
ofox:
apiKeyEnv: OFOX_API_KEY
api: openai-completions
baseURL: https://api.ofox.ai/v1
- id: agent-default-model
config:
provider: ofox
model: deepseek/deepseek-v4-pro-0813Ejecuta dsh web --dump-config para imprimir el árbol de plugins compuesto y confirmar que tu configuración se aplicó.
Modelos recomendados
Para modelos recomendados, consulta el Mercado de modelos .
dsh evoluciona rápidamente y sus campos de configuración pueden cambiar entre versiones. Contrástalo con el repositorio oficial de DeepSeek Harness .