Documentación de DeepTask Sandbox

Un sandbox seguro, local-first que conecta tu asistente de IA con tu entorno.
10 min read
Updated

DeepTask Sandbox es una aplicación de escritorio multiplataforma para ejecutar herramientas de automatización en entornos seguros y aislados. Desarrollada con Electron e integrada con un servidor MCP (Model Context Protocol) basado en Go, proporciona a tu asistente de IA un entorno seguro y con herramientas en tu máquina. Mediante conversación natural (vía MCP), tu asistente puede ejecutar herramientas, acceder a capacidades locales aprobadas y orquestar flujos de trabajo de forma fiable, con ejecución opcional en navegador (Puppeteer) cuando una tarea requiera una página real.

Nota: DeepTask Sandbox es gratuito para uso personal y educativo. El uso comercial requiere una licencia de pago con suscripción mensual según el número de usuarios.

Principios fundamentales

  • Privacidad primero: Toda la automatización se ejecuta localmente. Tus datos nunca salen de tu máquina.
  • Listo para asistentes: Creado nativamente para Model Context Protocol (MCP). Funciona de forma fluida con Claude, Cursor y más.
  • Sandbox con herramientas: Ejecuta herramientas Node para automatización backend y herramientas Puppeteer para automatización de navegador y web scraping, cada una en procesos de trabajo aislados.
  • Protecciones integradas: Programación (cron), historial de tareas, límites de recursos (memoria 64–2048 MB, umbrales de CPU), listas de dominios permitidos y ajustes/credenciales cifrados.

01. Inicio rápido

Ponerlo en marcha lleva menos de cinco minutos.

Paso 1: Instalar la aplicación de escritorio

Descarga y ejecuta el instalador para tu sistema operativo.

Descargar DeepTask Sandbox

Paso 2: Conectar tu asistente

DeepTask usa el Model Context Protocol (MCP) para comunicarse con tu IA. Sigue las instrucciones para tu entorno preferido:

OSTipo de instalaciónRuta del comando
WindowsSystem (Default)C:\Program Files\deeptask-sandbox\resources\mcp\deeptask-mcp.exe
WindowsUserC:\Users\<user>\AppData\Local\Programs\deeptask-sandbox\resources\mcp\deeptask-mcp.exe
macOSStandard/Applications/DeepTask Sandbox.app/Contents/Resources/mcp/deeptask-mcp
LinuxStandard/opt/deeptask-sandbox/resources/mcp/deeptask-mcp

Ejemplo de bloque de configuración (Claude Desktop):

{
  "mcpServers": {
    "deeptask": {
      "command": "PASTE_THE_COMMAND_PATH_HERE"
    }
  }
}

Paso 3: Tu primera herramienta

Una vez conectado, pide a tu asistente que cree y ejecute una pequeña herramienta dentro del sandbox.

Prueba este prompt:

"Usando DeepTask, escribe una pequeña herramienta node que obtenga el título de https://example.com y lo devuelva como salida estructurada."


02. Guía de herramientas

Las herramientas de DeepTask son potentes, type-safe y fáciles de crear. Tu IA puede generarlas por ti o puedes escribirlas tú mismo.

Anatomía de una herramienta

Cada herramienta consta de dos partes: Metadata (la configuración) y la función principal (la lógica). Los nombres de herramientas deben usar snake_case (minúsculas, números y guiones bajos únicamente; ej. web_scraper). Las herramientas deben ser módulos ESM (.mjs); se soporta Node.js 24+.

import { browser } from "@deeptask/sandbox";

export const metadata = {
    name: "web_scraper",
    type: "puppeteer", // "node" for pure logic, "puppeteer" when you need a real browser
    description: "Extracts basic info from a webpage",
    networkEnabled: true,
    domainsAllowed: ["example.com"],
    inputSchema: {
        type: "object",
        properties: {
            url: {type: "string", format: "uri"}
        },
        required: ["url"]
    }
};

export async function main({url}) {
    const page = browser.getPage();
    await page.goto(url, {waitUntil: "networkidle0"});

    const title = await page.title();
    return {
        content: [{type: "text", text: `Scraped: ${title}`}],
        structuredContent: {title},
        isError: false
    };
}

Funciones avanzadas

Carga de archivos

Puedes definir entradas que acepten archivos (PDFs, imágenes, etc.) usando JSON Schema: contentEncoding: "base64", contentMediaType (ej. application/pdf) y maxLength para límites de tamaño (base64 es ~33% más grande; ej. ~5MB → maxLength: 6990506).

inputSchema: {
    properties: {
        document: {
            type: "string",
            contentEncoding: "base64",
            contentMediaType: "application/pdf",
            maxLength: 6990506,  // ~5MB file
            description: "Upload a PDF for analysis"
        }
    }
}

En tu herramienta, decodifica con atob(input.document) (o new Uint8Array(atob(input.document).split('').map(c=>c.charCodeAt(0))) para binario) y procesa según sea necesario. Para límites de tamaño: maxLength = Math.ceil(bytes/3)*4 (ej. 1MB → 1398101, 5MB → 6990506).

Ajustes cifrados

Almacena la configuración sensible de forma segura. Se pide a los usuarios estos valores en la UI y se cifran en reposo. Usa format: "password" para campos de contraseña.

settingsSchema: {
    properties: {
        apiKey: {
            type: "string",
            format: "password",
            title: "API Key"
        }
    }
}

03. Seguridad y aislamiento

Todos los planes incluyen estas protecciones. DeepTask está diseñado para fiabilidad y seguridad:

  • Listas de dominios permitidos: Las herramientas no pueden acceder a la red a menos que configures networkEnabled: true y especifiques domainsAllowed (usa ["*"] para permitir todos los hosts). Cuando una URL está bloqueada, fetch() lanza antes de cualquier petición — envuelve fetch() en try/catch.
  • Límites de recursos: Memoria configurable (64–2048 MB; por defecto 256 MB para Node, 512 MB para Puppeteer) y umbral de CPU (50–100%, por defecto 95%). Las herramientas que excedan los límites se terminan automáticamente.
  • Protección por tiempo de espera: Configurable por herramienta vía defaultTimeout (por defecto 5 minutos).
  • Sistema de archivos: Acceso opcional de lectura/escritura a un sistema de archivos virtual (raíz /) con carpetas /Temp, /Documents, /Images, /Videos, /Audios, /Downloads. Sin acceso al sistema de archivos del host; las rutas no pueden escapar de la raíz. Usa fsEnabled y fsWriteEnabled. Usa fs/promises — los métodos síncronos como readFileSync están bloqueados. Los archivos persisten entre invocaciones de herramientas; /Temp se limpia al iniciar la app y cada 24h (máxima antigüedad 48h).

04. Funciones Pro

Programación inteligente

Automatiza tus flujos de trabajo con soporte Cron integrado.

  • Informes diarios: 0 9 * * * (Cada mañana a las 9)
  • Limpieza semanal: 0 0 * * 0 (Cada domingo a medianoche)

05. API y referencia de herramientas

Sandbox API

Importa desde @deeptask/sandbox:

APIDescripción
browser(Puppeteer only) browser.getPage() → primary Page; browser.getPages() → all pages. Use import { browser } from "@deeptask/sandbox";
tooltool.self.settings (encrypted at rest), tool.call(name, params, sandboxId?), tool.chain([{name, params, sandboxId?}, ...]). Use import { tool } from "@deeptask/sandbox";
document, image, audio, video, model, archiveAPIs integradas (ver secciones siguientes). Todas devuelven { files, data, isError, message }.
language, timeZoneLocale y zona horaria del sandbox.
fs / fs/promises(cuando fsEnabled) FS virtual bajo / con /Temp, /Documents, /Images, etc. Usa fs/promises — los métodos síncronos están bloqueados.

Puppeteer: page.goto() acepta solo http/https. Envuelve en try/catch. Usa response.buffer() (no body()) para los bytes de respuesta.

document

import { document } from "@deeptask/sandbox"

Conversión de documentos, manipulación de PDF y búsqueda de texto completo. Todos los métodos devuelven { files, data, isError, message }. Comprueba siempre isError antes de usar files o data.

MethodDescripción
convertDocumentConvertir entre formatos. Pares: md↔html, pdf↔html, docx/pptx/epub↔html, html→docx/pdf/pptx/epub, csv↔xlsx. Las opciones varían por par (ej. html→pdf: format, printBackground; pdf→html: startPage, endPage).
mergePdfFusionar varios PDFs en uno.
splitPdfDividir PDF en páginas. Omite pages para un archivo por página. Las salidas van a /Temp/.
compressPdfComprimir PDF. Opciones: quality (screen, ebook, printer, prepress).
fillPdfFormRellenar campos de formulario PDF. Las claves son nombres de campo PDF crudos (sensible a mayúsculas).
getPdfInfoObtener número de páginas, título, autor, etc.
getPdfFormListar campos de formulario en un PDF.
extractArticleExtraer texto principal del artículo (Readability). Soporta md, pdf, docx, pptx, epub, html. Devuelve data.text; comprueba cadena vacía.
extractPagesExtraer rango de páginas de PDF (1-based inclusivo).
searchFilesBúsqueda de texto completo en archivos indexados. Solo /Documents está indexado. Devuelve data.hits, data.total. Usa limit (por defecto 20).
searchInFileBuscar dentro de un archivo. Soporta texto y tipos de oficina. offset/limit paginan resultados.

Nota: protectPdf no está implementado — no uses.

image

import { image } from "@deeptask/sandbox"

Procesamiento de imágenes con Sharp/libvips. Todos los métodos devuelven { files, data, isError, message }.

MethodDescripción
resizeImageRedimensionar. Opciones: fit (cover, contain, fill, inside, outside), withoutEnlargement.
compressImageRecodificar para reducir tamaño; preserva metadatos.
minifyImageQuitar solo metadatos.
cropImageRecortar por left, top, width, height.
rotateImageRotar por ángulo.
flipImage / flopImageReflejar horizontal o verticalmente.
convertImageConvertir formato. Soporta png, jpeg, gif, tiff, webp, ico, icns; SVG como origen.
removeBackgroundCoincidencia de color simple (no IA). Salida PNG. threshold 0–255 (por defecto 10).
compositeImageSuperponer imágenes en left, top, opcional opacity.
mergeImagesCombinar imágenes. Opciones: layout (horizontal, vertical, grid), gap, columns, maxWidth, maxHeight.
getImageInfoDevuelve data: { width, height, format, channels, hasAlpha, space }.
blurImage, sharpenImageDesenfocar o afilar; sigma controla la intensidad.
grayscaleImage, trimImage, normalizeImage, extendImage, modulateImage, negateImage, tintImageOperaciones de color y diseño.

audio

import { audio } from "@deeptask/sandbox"

Conversión y procesamiento de audio. Todos los métodos devuelven { files, data, isError, message }.

MethodDescripción
convertAudioConvertir formato. Soporta mp3, wav, aac, ogg, flac, m4a, wma, opus.
trimAudioRecortar por start, end o duration (segundos).
concatAudioConcatenar archivos de audio.
setAudioVolumeEstablecer volumen (número).
setAudioTempoTempo 0.5–2.0 (límite FFmpeg).
fadeAudioFundido entrada/salida. Opciones: type, start, duration.
normalizeAudioNormalizar volumen. target LUFS (por defecto -16).
removeAudioSilenceQuitar silencio. threshold dB (por defecto -50), duration segundos (por defecto 0.5).
mixAudioMezclar varios archivos de audio. Opcional volumes.
getAudioInfoDevuelve data: { duration, sampleRate, channels, bitrate, format, codec }.
textToSpeechTexto a voz. Solo macOS/Windows. format: mp3, wav, ogg.

Nota: voiceToText no está implementado — no uses.

video

import { video } from "@deeptask/sandbox"

Conversión, recorte y efectos de vídeo. Todos los métodos devuelven { files, data, isError, message }.

MethodDescripción
convertVideoConvertir formato. Soporta mp4, webm, avi, mov, mkv, m4v, flv, wmv.
compressVideoComprimir. Opciones: crf (18–28, por defecto 23), maxWidth, maxHeight, videoBitrate, audioBitrate.
trimVideoRecortar por start, end o duration.
concatVideosConcatenar archivos de vídeo.
extractAudioTrackExtraer audio a mp3, wav, aac, m4a, ogg, flac.
extractFrameExtraer un solo frame en timestamp.
screenshotVideoExtraer frames en varios timestamps. Devuelve una imagen por timestamp en orden.
videoToGifConvertir vídeo a GIF. Opciones: start, duration, fps, width, height.
generateGifCrear GIF desde secuencia de imágenes. Opciones: fps, width, height, loop.
burnSubtitlesIncrustar archivo de subtítulos en vídeo.
extractSubtitlesExtraer subtítulos a srt o vtt.
cropVideo, rotateVideoRecortar o rotar (90, 180, 270).
setVideoSpeed, setVideoVolume, fadeVideoEfectos de velocidad, volumen y fundido.
getVideoInfoDevuelve data: { duration, width, height, fps, videoBitrate, audioBitrate, format, ... }.

model

import { model } from "@deeptask/sandbox"

Generación de texto LLM, generación de imágenes y vídeo. Requiere networkEnabled y claves API. Guarda apiKey en settingsSchema con format: "password"; accede vía tool.self.settings.apiKey. No hardcodear claves nunca.

MethodDescripción
generateTextCompletar chat. messages, opcional system, options: { provider, apiKey, baseURL }. Proveedores: openai, anthropic, google, cohere, mistral, openrouter, grok, deepseek, groq. Por defecto: openai (gpt-4o-mini).
generateImageGeneración de imágenes. prompt, opcional image (image-to-image). Proveedores: openai, stability, replicate, fal, together, nano-banana, ideogram. Image-to-image solo con fal, nano-banana.
generateVideoGeneración de vídeo. prompt, opcional image. Proveedores: runway, replicate, luma, kling, minimax, seedance, veo3. La resolución es específica del proveedor (ej. ratio, resolution).

archive

import { archive } from "@deeptask/sandbox"

Comprimir y descomprimir archivos. Todos los métodos devuelven { files, data, isError, message }.

MethodDescripción
zipFilesComprimir archivos en un solo archivo. Salida: archive-{timestamp}.zip en /Temp/. Archivos en la raíz del zip (no se preserva la estructura de directorios).
unzipFileDescomprimir. filter: subcadenas de nombre de archivo a incluir. files[] contiene rutas virtuales de archivos extraídos; se preserva la estructura de directorios.

Herramientas MCP para asistentes

Tu asistente de IA interactúa con DeepTask a través de estas herramientas MCP:

  • install_tool — Instalar una herramienta para reutilizar. Ejecutar con call_tool después.
  • uninstall_tool — Eliminar una herramienta instalada.
  • call_tool — Ejecutar una herramienta instalada. Síncrono/asíncrono según defaultTimeout de la herramienta (>60s = async).
  • get_call_tool_result — Consultar resultado de call_tool async (por taskId).
  • eval_tool_script — Ejecutar herramienta una vez sin instalar (de un solo uso). Parámetros: type, content, opcional sandboxId.
  • batch_call_tools — Llamar varias herramientas en una sola petición.
  • list_more_tools — Listar herramientas instaladas. Usa get_tool_script_syntax para la sintaxis de herramientas (secciones: document, image, audio, video, model, archive).

Soporte y recursos